TCP报文段分为TCP首部和TCP数据部分两部分,首部的格式如图4-25所示。TCP报文的数据部分为应用层报文。
图4-25 TCP报文段首部格式
(1)源端口和目的端口:各占2字节,端口是传输层与应用层的服务接口。传输层的复用和分用功能都要通过端口才能实现。
(2)序号:占4字节,TCP连接中传送的数据流中的每一个字节都会有一个序号。序号字段的值指的是本报文段所发送的数据的第一个字节的序号。
(3)确认号:占4字节,是希望收到发送方下一个TCP报文段的数据的第一个字节的序号。
(4)数据偏移:占4bit,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。“数据偏移”的单位不是字节而是32bit字(TCP的首部长度是32bit的整数倍)。
(5)保留字段:占6bit,保留为今后使用,但目前应置为0。
(6)6bit控制位。
URG:置1,表示该段的紧急指针域有效,即该段携带了紧急数据,应尽快传送。
ACK:置1,表示确认序号有效;置0,表示确认序号无效。(www.xing528.com)
PSH:置1,表示本报文请求“推送”,接收到该TCP报文时,要尽快地交付给接收应用进程,而不再等到整个缓存区都填满了后再向上交付。
RST:连接复位。置1,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立传输连接。
SYN:同步位SYN。置1,表示这是一个连接请求或连接接收报文。
FIN:终止位FIN用来释放一个连接。置1,表明此报文段发送方的数据已发送完毕,请求释放连接。
(7)窗口:占2字节。窗口字段用来控制发送方下次发送的数据量,单位为字节。接收方根据设置的缓存空间大小,确定自己的接收窗口大小,然后通知对方以确定发送窗口的上限。
(8)检验和:占2字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。
(9)紧急指针:占16bit。紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。
(10)选项:长度可变。TCP只规定了一种选项,即最大报文段长度MSS。MSS告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节。”
(11)填充:当选项的长度不是32bit的整数倍时,将在TCP首部的末尾填充若干个“0”,以使TCP首部的总长度是32bit的整数倍。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。