TCP报文首部详解
-
源端口和目标端口
该字段长度均为16位。TCP协议通过使用端口来标识源端和目标端的应用进程,端口号范围为0~65535。 -
序列号
该字段长度为32位。因此序号范围为[0,223-1]。序号值是进行mod 232运算的值,即序号值为最大值232-1后,下一个序号又回到0。 -
确认号
字段长度为32位。期望收到对方下一个报文端的第一个数据字段的序号。 -
报头长度
报头长度又称为数据偏移字段,长度位4位,单位32位。没有任何选项字段的TCP头部长度为20字节,最多可以有60字节的TCP头部。 -
保留字段
该字段长度为6位,通常设置为0。 -
标记
该字段包含的字段有:紧急(URG)——紧急有效,需要尽快传送;确认(ACK)——建立连接后的报文回应,ACK设置为:1;推送(PSH)——接受方应尽快将这个报文段交给上层协议,无须等缓存满;复位(RST)——重新连接;同步(SYN)——发起连接;终止(FIN)——释放连接。 -
窗口大小
该字段长度为16位。因此序号范围为[0,216-1]。该字段用来进行流量控制,单位为字节,是作为接收方让发送方设置其发送接口的依据。这个值是本机期望下一次接受的字节数。 -
校验和
该字段长度为16位,对整个TCP报文段(即TCP头部和TCP数据)进行校验和计算,并由目标端进行验证。 -
紧急指针
该字段长度为16位。它是一个偏移量,和序号字段中的值相加标识紧急数据最后一个字节的序号。 -
选项
该字段长度可变到40字节。可能包括窗口扩大银子、时间戳等选项。为保证报头长度是32位的倍数,因此还需要填充0。