提示:
TCP报文段的首部格式
TCP报文段首部前20个字节是固定的,后面4n字节是根据需要增加的选项。因此,TCP首部最小长度为20字节。
字段 | 大小 | 功能 |
---|---|---|
源端口和目的端口 | 各占2字节 | 源端口号和目的端口号 |
序号 | 4字节 | 序号使用mod223运算,每一个字节都编号,首部序号是本报文段所发送数据的第一个字节的序号,所以也叫报文段序号 |
确认号 | 4字节 | 期望收到对方下一报文段的第一个数据字节的序号。同时,反馈确认号之前的数据都正确收到 |
数据偏移 | 4位 | TCP报文段首部长度,因为选项字段是不确定的,限制了首部最大60字节 |
保留 | 6位 | 保留为之后使用,下面有六个控制位,说明报文段性质,后面表格介绍 |
窗口 | 2字节 | 窗口值是接收方让发送方设置其发送窗口的依据。从确认号开始,接收方目前允许对方发送的数据量(字节) |
检验和 | 2字节 | 计算时加伪首部,类似UDP,第四部分17改为6(协议号) |
紧急指针 | 2字节 | URG=1时有效(下方表格),指出紧急数据字节数。指针指出紧急数据末尾在报文段的位置。窗口为0也能发送 |
选项 | 最长40字节 | 可以为0字节。MSS是TCP报文段数据字段最大长度;默认536字节,因此所有在互联网上的主机都能接受报文段长度536+20=556字节。后文加扩展 |
保留下面的控制位及其功能:
控制位 | 功能 |
---|---|
紧急URG | =1时,表示紧急指针字段有效。此报文段不用按原来排队顺序传送,把紧急数据插入到本报文段数据最前面。要与紧急指针搭配使用 |
确认ACK | =1时,确认号字段生效。在建立连接后所有传送的报文必须置1 |
推送PSH | 发送方将PSH置1,并立即创建一个报文段发送,接收方收到后尽快交付接受应用进程 |
复位RST | =1时,表示TCP连接中出现严重差错,必须释放连接,重新连接。还用来拒绝一个非法报文或拒绝打开一个连接。重置位或重建位 |
同步SYN | 在建立连接时用来同步序号。当SYN=1而ACK=0时,表明连接请求。同意链接ACK=1。SYN=1表示这是一个连接请求或链接接收报文。 |
终止FIN | 释放一个连接。=1时,表明数据发送完毕,并要求释放连接 |
选项扩展:
随着互联网发展,陆续增加了几个选项。
窗口扩大选项:
时间戳选项:
紧急指针
选项字段: