TCP输出 下图展示了应用进程写数据到TCP套接口的过程. 每一个TCP套接口有一个发送缓冲区,我们可以用SO_SNDBUF套接口选项来改变这个缓冲区的大小. 当应用进程调用write时,内核从应用进程的缓冲区中拷贝所有数据到套接口的发送缓冲区.如果套接口的发送缓冲区容不下应用程序的所有数据(或是应用进程的缓冲区大于套接口发送缓冲区,或是套接口发送缓冲区还有其他数据),应用进程将被挂起(睡眠).这里假设套接口是阻塞的,这通常也是它的默认设置.直到应用进程缓冲区中的所有数据都拷贝到套接口发送缓冲区…
概述 使用UDP编写的一些流行的应用程序有:DNS(域名系统).NFS(网络文件系统)和SNMP(简单网络管理协议). 如下图所示,给出了典型的UDP客户/服务器程序的函数调用: 客户不与服务器建立连接,而是只管使用sendto函数给服务器发送数据报,其中必须作为参数指定目的地(即服务器)的地址.类似地,服务器不接受来自客户的连接,而是只管调用recvfrom函数,等待来自某个客户的数据到达.recvfrom将与所接收的数据报一道返回客户的协议地址,因此服务器可以把响应发送给正确的客户. rec…
会集中这段时间写UNIX网络编程这本书的读书笔记,准备读三本,这一系类的文章会不断更新,一直会持续一个月多,每篇的前半部分是书中讲述的内容,每篇文章的后半部分是自己的心得体会,文章中的红色内容是很重要的部分. http://blog.csdn.net/yusiguyuan/article/details/11760187 UNIX网络编程---简介…
认知套接口编程接口 理解原始套接口(raw socket)的概念   值得注意的是,客户和服务器是典型的用户进程,而TCP和IP协议则通常是系统内核协议栈的一部分. 上图中在TCP和UDP之间留有间隙,用于指出应用程序可以绕过传输层而直接使用IPv4和IPv6,这称为原始套接口(raw socket). UNIX网络编程中所说的套接口编程接口是应用层到传输层的接口.UNIX网络编程的焦点是:如何使用套接口编写使用TCP或UDP的网络应用程序.…
概述 应用程序可以绕过传输层而直接使用IPv4和IPv6,这称为原始套接口(raw socket).http://www.cnblogs.com/nufangrensheng/p/3583435.html. 原始套接口是一种对原始网络报文进行处理的套接口.原始套接口主要应用在底层网络编程上,同时也是网络黑客的必备手段.例如sniffer.拒绝服务(DoS).IP地址欺骗等都需要在原始套接字的基础上实现. 与原始套接字对应,之前的TCP/UDP的套接字称为标准套接字,如下图所示,为标准套接字与原始…
概述 UNIX域协议并不是一个实际的协议族,而是在单个主机上执行客户/服务器通信的一种方法,所用API与在不同主机上执行客户/服务器通信所用的API(套接口API)相同.UNIX域协议可视为进程间通信(IPC)方法之一. UNIX域提供两类套接口:字节流套接口(类似TCP)和数据报套接口(类似UDP). 使用UNIX域套接口的理由有3个: 在源自Berkeley的实现中,UNIX域套接口往往比通信两端位于同一主机的TCP套接口快出一倍. UNIX域套接口可用于在同一个主机上的不同进程间传递描述字…
第一章: C/C++语言提供两种不同的编程模式:IPL32和PL64.► IPL32 ● 表示integer/pointer/long三种数据类型是32位(4个字节),在这种模式下,提供32位的地址空间,理论的内存使用限制为4G.► PL64 ● 表示pointer/long两种数据类型是64位(8个字节),提供64位地址空间,使用内存超过4G(达2^60bytes=1EB). more infoabout IPL32 and PL64, please refer to http://www-3…
概述 有很多方法来获取和设置影响套接口的选项: getsockopt和setsockopt函数 fcntl函数 ioctl函数 getsockopt和setsockopt函数 这两个函数仅用于套接口. #include <sys/socket.h> int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen); int setsockopt(int sockfd, int level, i…
概述 SCTP是一个较新的传输协议,于2000年在IETF得到标准化(TCP是在1981年标准化的).它最初是为满足不断增长的IP电话市场设计的:具体地说,就是穿越因特网传输电话信令. SCTP是一个可靠的面向消息的协议,在端点之间提供多个流,并为多宿提供传输级支持. 尽管SCTP和TCP之间存在一些本质性的差别,然而SCTP的一到一(one-to-one)接口与TCP提供的应用接口非常接近.这一点允许轻而易举地移植应用程序,不过没法使用SCTP的某些高级特性.SCTP的一到多(one-to-m…
poll函数提供的功能与select类似,不过在处理流设备时,它能够提供额外的信息. poll函数原型 #include <poll.h> int poll(struct pollfd *fdarray, unsigned long nfds, int timeout); 返回:就绪描述字的个数,--超时,---出错 poll函数参数介绍 第一个参数是指向一个结构数组第一个元素的指针.每个数组元素都是一个pollfd结构,用于指定测试某个给定描述字fd的条件. struct pollfd {…