TCP/IP协议:记(2)
TCP首部格式说明:
- 首部长度占4 bit,此长度表示首部中32bit字的数目。因此TCP首部最长为60字节。若没有任选字段,正常长度为20字节;
即:4bit最大值为:1 + 2 + 4 + 8 = 15 32bit = 4 bytes 15 * 4bytes = 60bytes - TCP首部中有6个标志位:
URG:紧急指针(urgent pointer)有效
ACK:确认序号有效
PSH:接收方应该尽快将这个报文段交给应用层
RST:重建连接
SYN:同步序号用来发起一个连接
FIN:发送端完成发送任务
TCP连接的建立(三次握手)和终止(四次握手)
默认情况下tcpdump只在显示SYN报文段时显示完整的序号,而对其后的序号则显示它们与初始序号的相对偏移值(若要如上图,显示完整序号,需加上 –S选项)。
TCP三次握手说明:
-
最大报文长度(MSS)表示TCP传往另一端的最大块数据的长度;
-
连接建立时,双方都要通告各自的MSS;
-
MSS选项只出现在SYN报文段中;
-
若一方不接收来自另一方的MSS值,则MSS就定为默认值:536字节(这个默认值允许20字节的IP首部和20字节的TCP首部以适合576字节IP数据);
-
MSS值可设置为外出接口上的MTU长度减去固定的IP首部和TCP首部的长度,以太网MSS值可达1460字节;IEEE802.3的封装,MSS值可达1452字节。
-
初始端发出FIN报文段,另一端发出对这个FIN的ACK报文段;
-
与正常终止的区别:接收半关闭的一方仍能发送数据。
TCP状态变迁说明:
- TIME_WAIT状态也称为2MSL等待状态;
- 每个具体TCP实现必须选择一个报文段的最大生存时间MSL(Maximum Segment Lifetime),即报文段被丢弃前在网络内的最长时间;
- 因TCP报文段以IP数据报在网络内传输,而IP数据报则有限制生存时间的TIL字段,实现中常用值是30秒、1分钟、2分钟。