服务时间:8:30-18:00

首页 >华为认证网

TCP报文格式

发布时间:2023-03-01 10:55 字数:1579字 阅读:110

TCP报文格式,TCP报文头部(简称报头)是可变长的,最小头部长度为20字节,最大头部长度为60字节。头部长度的计算方法和IP报文的计算方法一致,同样采用4比特来标识TCP报文头部长度。TCP报文结构如图1所示,各字段含义如下所述。

① 源端口字段:16比特,TCP数据发送端的源端口号。

② 目的端口字段:16比特,TCP数据接收端的目的端口号。

TCP报文结构

图1 TCP报文结构

③ 序列号字段:32比特,用来标识从TCP发送端向TCP接收端发送的数据大小统计,单位为字节。通过序列号可以计算出发送者向接收者一共发送了多少字节的数据。序列号是一个32 比特的无符号整数,取值范围为1~232的随机数,序列号到达232-1后会从0开始计算。

④ 确认序列号字段:32比特,用来标识TCP接收端从TCP发送端接收了多少字节的数据。确认序列号的计算方法是,在接收到TCP报文“序列号”的基础上加上接收的数据长度作为确认序列号。在TCP中所有的控制报文算1字节的数据。SYN和FIN报文都是数据控制报文。

⑤ 报头长度字段:4比特。报头长度是可以变的,其范围为20~60字节,标准报头长度为20字节。4比特的报头长度表示的最大值为15,那么如何用来表示20~60字节呢?这是因为这4比特不是用来表示长度的,而是用来表示报头中携带的数据行数。每一行的数据长度固定为4字节,这样可以用行数乘以4计算出TCP头部长度,15乘以4等于60,这就是可以表示的最大TCP的头部长度。

⑥ 标志位字段:12比特,其中,RESV(保留位)为3比特,为将来定义新用途保留,现在一般置0;NS、CWR、ECE标志位各占1 比特,因其不常用,这里不做介绍。我们主要介绍后面6比特位。

●URG:紧急指针标志位,只有当 URG标志位置位时紧急指针字段才会填充数据。

●ACK:确认标志位,用于确认接收到的 TCP报文。

●PSH:PSH标识位置位,表示 TCP报文不进缓冲区,需要提交给应用层尽快处理。

●RST:重建标志位,需要重新建立 TCP会话。

●SYN:建立连接标志位,需要建立 TCP会话。

●FIN:断开连接标志位,需要断开 TCP会话。

⑦ 窗口尺寸字段:16比特,表示窗口大小最大为65535,标识TCP接收者当前可以处理的数据大小。窗口大小是可以滑动的,可以变大也可以变小。这和TCP接收者的处理能力有关系,如果TCP接收者处理能力下降,窗口大小将会被调小,这样TCP发送者发送的数据量大小也会随之变小。如果TCP接收者处理能力变强,窗口大小将会被调大,TCP发送者发送的数据量大小也会随之变大。

⑧ 校验和字段:16比特。TCP发送端对TCP头部和TCP填充数据进行校验,并将结果填充到校验和字段。TCP接收者收到数据后,会重新对TCP头部和TCP填充数据进行校验,并将校验结果与校验和字段的值进行比对,如果一致则接收数据并交给上层处理,不一致则丢弃数据。

⑨ 紧急指针字段:16比特。只有当URG标志位置1时紧急指针才有效,紧急指针是一个正向偏移量,和序列号字段中的值相加表示紧急指针数据最后一个字节的序号。TCP紧急方式是发送者向接收者发送紧急数据的一种方式,紧急指针用于紧急处理TCP的控制数据。

⑩ 选项字段:标准TCP头部中不携带选项字段,选项字段只能按4字节的倍数来填充(用于计算报头长度)。常见的选项字段有MSS和TCP MD5认证,MSS(Max Segment Size,最大段尺寸)用于表示标识TCP数据段可以填充的最大数据长度,使TCP数据分段可以避免IP分片。TCP MD5认证选项用来实现TCP认证功能,在后续学习的BGP、LDP等协议中,可以利用TCP MD5实现认证功能。

数据字段:填充 TCP数据,数据最大只能填充为 MSS的大小。

  • 上一篇ARP报文