OSI模型:
网络层由ipv4和ipv6处理
套接字提供顶上三层进入传输层的接口
TCP传输控制协议:
TCP提供客户与服务器的连接
TCP能动态估算RTT
TCP通过给每个字节关联一个序列号来确定发送数据的排序
TCP提供流量控制
TCP是全双工通信
TCP的连接和终止:三次握手四次挥手
常用TCP选项:
MSS:告知对端发送数据的最大分节大小
窗口规模选项:任意一端能够告知对端的最大窗口大小是65535
时间戳选项:防止失而复现的分组可能造成的数据损坏
TIME—WAIT状态:主动关闭的那一端经历了这个状态,最长为2MSL(最长分节生命时间其)
端口号:用来区分进程
端口号的划分
套接字对:一个TCP的套接字对是定义该连接的两端的四元组:本地ip地址,本地tcp端口号,外地IP地址,外地tcp端口号,套接字对唯一的标识一个网络上的TCP连接
TCP与并发服务器:
缓冲区及限制:
TCP的输出
Udp的输出
SCTP的输出
TCP套接字编程有关函数:
Socket函数:
Socket成功时返回一个小的非负整数值,成为套接字描述符
Connect函数:
Bind函数:
把一个本地协议地址和套接字绑定
Listen函数:
仅由TCP服务器调用
两个队列之间的元素可以相互转换,表示不同的状态,backlog参数视为这两个队列总和的最大值,这个参数不能定义为0
Accept函数:
Fork和exec函数:
三个参数排列组合共有六个exec函数,其中只有execve函数调用的是内核函数,其他用的都是execve的库函数
并发服务器:
就是fork一个子进程来服务每个客户
Close函数:
用来关闭套接字,终止TCP连接
IO复用
IO模型:
进程不被投入睡眠
Select可以等待多个套接字描述符准备就绪
异步IO
Select函数:
Timeout参数指定等待的时间
假设使用32位整数,那这个数字第一个元素对应0-31位数字,第二个元素对应32-63
Select的中间三个参数都可以设为空指针
描述符就绪条件:
Select的最大描述符数:
Poll函数:
结构数组中的元素个数由参数nfds指定
Timeout参数指定poll函数返回前等待多久,是一个毫秒数的正值