TCP的分组构成 称为 报文段(segment)

格式

file

这个报文段包含了20~60字节的首部,紧随其后的是从应用程序传来的数据
首部在没有选项时是20字节,如果有选项则最多可达60字节

细看这个首部:
file

  • 源端口地址 : 这是一个16位的字段,定义了发送这个报文段的主机中的应用程序的端口号。(这和UDP首部中的源端口地址的作用是一样的)

  • 目的端口地址: 这是一个16位的字段,定义了接收这个报文段的主机中的应用程序的端口号(这和UDP首部中的目的端口地址的作用是一样的)

  • 序号: 这是一个32位的字段,定义了指派给本报文段第一个数据字节的编号。TCP是流运输协议,为了保证连接性,要发送的每一个字节都要编上号。序号可以告诉终点,报文段中的第一个字节是这个序列中的哪一个字节。在连接建立时,双方使用各自的随机数产生器产生一个初始序号(ISN)。通常,两个方向上的ISN是不同的。

  • 确认号: 这个32位字段定义了报文段的接收方期望从对方接收的字节编号。如果报文段的接收方成功地接收了对方发来的编号为x的字节,那么它就返回x+1作为确认号。确认可以和数据捎带在一起发送。

  • 首部长度HLEN:这个4位字段指出TCP首部一共有多少个4字节字。首部长度可以在20~60字节之间。因此,这个字段的值可以在5(5x4=20)到15(15x4=60)之间。

  • 保留: 这是一个6位字段,保留为今后使用。

  • 控制: 这个字段定义了6种不同的控制位或标志,如图
    file
    在同一时间可设置一位或多位标志。这些位用在TCP的流量控制、连接建立和终止、连接异常终止以及数据传送方式等方面。

  • 窗口大小: 这个字段定义的是发送TCP的窗口大小,以字节为单位。这个字段是16位的,也就是说窗口的最大长度是65535字节。这个值通常被称为接收窗口(rwnd),并由接收方来决定。在这种情况下,发送方必须服从接收方的指示。

  • 检验和: 这个16位字段包含的是检验和。TCP的检验和是强制性的。在计算检验和时报文段要附加相同的伪首部。但对于TCP的伪首部,协议字段的值是6,如图:
    file

  • 紧急指针: 只有当紧急标志置位时,这个16位的字段才有效,此时报文段中包含了紧急数据。紧急指针定义了一个数值,把这个数值加到序号上就得出报文段数据部分中最后一个紧急字节的编号

  • 选项: 在TCP首部中可以有多达40字节的可选信息

封装

TCP报文段封装了从应用层接收到的数据,它本身被封装在IP数据报中,然后再封装成数据链路层中的帧
file

最后修改:2022 年 03 月 08 日
如果觉得我的文章对你有用,请随意赞赏