TCP提供一种面向连接的、字节流服务。
1.TCP header
源端口号和目的端口号,加上IP header里面的源端IP和目的端IP,唯一确定一个TCP连接;
一个IP地址和一个端口号,称为一个插口(socket);
序号标识从发端到收端的数据字节流,它表示在这个报文段中的第一个数据字节,从0开始。
SYN和FIN标志都要占用一个序号。
确认号,是希望收到的下一个序号。因此,确认序号应当是上次已经成功收到数据字节序号加1;Ack bit被设置时,确认号才有效。
头部长度,表示头部32bits的数目,因为选项的长度可变;
标志bit:
URG - 紧急指针(urgent pointer)有效;
ACK - 确认序号有效;
PSH - 接收方应该尽快将这个报文段交给应用层;
RST - 重建连接;
SYN - 用来发起一个连接;
FIN - 发端完成发送任务;
窗口大小,用于流量控制;选项中有窗口扩大因子,比如为3,那么实际的窗口大小为ws*2^3.
检验和覆盖了真个TCP报文段,包括TCP首部和TCP数据。
紧急指针是向对端发送紧急数据的一种方式,序号 + 紧急指针 = 紧急数据的最后一个字节的序号。
最常见的可选项是最长报文大小,即MSS(Maximum Segment Size)。
2.为什么SYN和FIN需要占用一个序号
http://blog.sina.com.cn/s/blog_93b45b0f0101r4ty.html
主要是为了可靠传输。