TCP报文结构的简单介绍

TCP 面向字节流,传送的数据单元却时报文段。

TCP报文结构

TCP报文结构图

源端口和目的端口

各占2个字节,分别写入源端口和目的端口。告诉主机该报文段从哪里来以及传送到哪去(端口)。

序列号

占4个字节,使用mod运算,在一个TCP连接中按照传送的字节流的每一个字节进行顺序编号。

确认序号

占4个字节,确认收到对方下一个发送报文段的第一个数据字节的序号。例如:若确认序号 = N +1,表示截止到N的所有数据都已经正常收到。

TCP的可靠性是建在每个数据报文都需要确认收到的基础之上的。

数据偏移

占4位,表示TCP报文段的首部长度。指出TCP报文的起始位置与TCP报文段的数据起始位置之间的距离。

保留

占6位,保留为今后使用,当前置为0.

紧急URG

当URG = 1,表示紧急指针字段有效。此时发送方TCP就将紧急数据插入到本报文的数据的最前面,后面顺序不变,保证将紧急需要发送的最先发送。与最后的紧急指针配合使用。

确认ACK

当ACK = 1时,确认字段有效,当ACK = 0时,确认字段无效。TCP规定,在连接创建后所有传送的报文段须将ACK置为1

推送PSH

接受方TCP接收到PSH  = 1,表示该报文段高于优先级,需要尽快地交付给接受应用程序,不需要等到整个TCP缓存都填满了后在交付。

复位RST

当RST = 1时,表示TCP连接发生严重错误,必须马上释放连接,重新建立新连接。

同步SYN

若SYN  = 1,则表示这是请求建立连接。

终止FIN

释放连接。当FIN = 1时,表示此报文段的发送方需要发送的数据已经全部发送完毕,请求断开连接。

窗口

占2个字节,该字段表明明确指出现在允许对方发送的数据量,它告诉对方本端的TCP接收缓存区还能容纳多少字节的数据,这样发送方就能控制发送数据的速度。

检验和

占2个字节,有发送端填充,接受端对TCP报文段执行CRC算法,以检验TCP报文段在传输过程中是否损坏。如果损坏则丢弃,检验和检验首部和数据两部分,这也是TCP可靠传输的一个重要保障。在计算检验和时,在报文段前需要加12字节的伪首部。

紧急指针

占2字节。当URG = 1时,紧急指针才有意义,指出本报文段中的紧急数据的字节数。

 

发布了19 篇原创文章 · 获赞 16 · 访问量 3648

猜你喜欢

转载自blog.csdn.net/O9A0MA/article/details/90368767