分类: IT职场
2010-10-12 10:53:45
TCP有两种类型的选项:单字节和多字节。分别在多个RFC中提出,RFC793、RFC2018、RFC1323。
每一个选项有同样的结构:Kind + Length + Data,其中Lenght表示Kind、Lenght、Data三者的总长度,单字节的选项只有Kind。
Kind=0表示选项结束------1字节
Kind=1表示无操作,主要是用来占位从而达到字节对齐的目的-------1字节
Kind=2表示MSS选项------4字节
Kind=3表示窗口大小------3字节
Kind=4表示SACK-Permitted-------2字节
Kind=5表示SACK-----可变长度
Kind=8表示时间戳-----10字节
不同option的使用有各自的限制,例如只有SYN被置位时才能发送Kind=2的option,具体请参阅相关RFC。
当一个TCP连接建立之后,连接双方的任何一方都可以主动关闭连接。
第一步,主动关闭方A发送FIN报文给被动关闭方B;
第二步,B发送一个ACK报文给A;
第三步,B发送一个FIN报文给A;
第四步,A发送一个ACK报文给B。
一些补充解释:
当第二步完成时,只是表示A不再发送数据给B,此时B仍然可以发送数据给A,A也可以正常接收数据;
当第二步完成时,如果B收到FIN报文时B也没有更多的数据要发送给A时,第二步和第三步的报文可以合成一个FIN+ACK报文,所以当关闭一个TCP连接时可能有3个或者4个报文;