TCP报头讲解

TCP报头讲解

   张吉吉     2019年11月4日 09:23     1756    

image.png

上图便是TCP的报头,

在没有选项的情况下,TCP的报头长160b,也就是20B,这20B是固定的字节,是不会发生改变。

因为选项是可变的,最大的长度是40B,所以TCP报头的长度是从20B~60B。

 

源端口:

链接发送主机的应用所使用的端口号,这个端口号的长度就是0~65535。

目的端口:

链接接收主机所使用的端口号,同样端口号长度是0~65535。

序列号:

因为IP包数据长度是有限的,所以如果TCP携带的数据太大的话,需要将数据进行分段,而给每个封包打上一个编号,这个编号可以使数据按正确的顺序进行排列,重传丢失或者损失的数据保证了传输数据的完整性,保证数据的可靠性。

确认序列号:

确认封包的序号。

首部长度:

首部长度也叫数据偏移量,它规定了报头的长度。数字偏移单位是4字节,而首部长度为4位,能表示的十进制数字为15。所以其能代表的最大长度是15*4为60B。

保留:

目前没有意义,为0。随着功能发展可能会有更多控制位

控制位:

1)URG:此标志位如果为1的话,表明封包使紧急封包,有限处理。

2)ACK:确认序号位,为1时表示确认号有效,否则确认号为0。

3)PSH:push标志位,如果为1时,要求对方立即传送缓冲区的封包。

4)RST:重置连接标志,用于重置由于主机崩溃或其他原因而出现错误的连接。或者用于拒绝非法的报文段和拒绝连接请求。

5)SYN:如果为1时,表示发送端希望双方建立链接。

6)FIN:finish标志,用于释放连接,若为 1 ,表示传送结束,所以通知对方数据传毕, 是否同意断线,只是发送者还在等待对方的响应而已。

窗口大小:

告诉了发送方,目前还允许发送的数据量,窗口值是变化的。

校验和:

CRC循环冗余校验。对TCP的首部和数据进行校验,保证数据的完整性。

紧急指针:

当控制为URG=1时有意义,告知了报文段中紧急数据的字节数。当紧急数据处理完成后,应用程序恢复正常的操作。

选项:

长度可以改变,最多为40字节,没有选项的时候TCP首部长度为20B。

 

下图是用wireshark抓取的TCP的报头信息。和上边描述的一一对应。

1.png


文章评论

0

其他文章