第五章.运输层:5.5TCP报文段的首部格式


1. TCP报文段首部包含的字段及其含义

  • TCP虽然是面向字节流的,但TCP传送的数据单元却是报文段。
  • 一个TCP报文段分为首部和数据两部分,而TCP的全部功能都体现在它首部中各字段的作用。
  • TCP报文段首部的前20个字节是固定的,后面有4n字节是根据需要而增加的选顶(n是整数)。因此TCP首部的最小长度是20

在这里插入图片描述

首部中各字段含义:

  • 源端口和目的端口:各占2字节。端口是运输层与应用层的服务接口。 运输层的复用和分用功能通过端口实现。

  • 序号:占4字节。TCP连接中传送的数据流中的每一个字节都有一个序号。序 号字段的值则指的是本报文段所发送的数据的第一个字节的序号。

    在这里插入图片描述

  • 确认号:占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。

    记住:若确认号=N,则表明:到序号N-1为止的所有数据都已正确收到。

  • 数据偏移(即首部长度):占4位,指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。单位是32位字(以4字节为计算单位)。

  • 保留:占6位,保留为今后使用,但目前应置为0。

  • 紧急URG:控制位。当URG=1时,表明紧急指针字段有效,告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。

  • 确认ACK:控制位。只有当ACK=1时,确认号字段才有效。当 ACK=0时,确认号无效。

  • 推送PSH(PuSH):控制位。接收TCP收到PSH=1的报文段后, 就尽快(即’'推送"向前)交付接收应用进程,而不再等到整个缓存都填满后再交付。

  • 复位RST(ReSeT):控制位。当RST=1时,表明TCP连接中出现严重差错 (如主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。

  • 同步SYN(SYNchronization):控制位。同步SYN=1表示这是一个连接请求或连接接受报文。当SYN=1,ACK=0时,表明这是一个连接请求报文段。 当SYN=1,ACK=1时,表明这是一个连接接受报文段。

  • 终止FIN(FINish): 控制位。用来释放一个连接。FIN=1表明此报文段的发送端的数据已发送完毕,并要求释放运输连接.

  • 窗口:占2字节。 窗口值告诉对方:从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量(以字节为单位)。

    记住:窗口字段明确指出了现在允许对方发送的数据量。窗口值经常在动态变化。

  • 检验和:占2字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。

    在这里插入图片描述

  • 紧急指针:占2字节。在URG=1时,指出本报文段中的紧急数据的字节数 (紧急数据结束后就是普通数据),指出了紧急数据的末尾在报文段中的位置。

  • 选项:长度可变,最长可达40字节。

  • 填充:使整个TCP首部长度是4字节的整数倍。

2. 选项:最大报文段长度MSS

  • TCP最初只规定了一种选项,即最大报文段长度MSS。MSS告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节。”

  • MSS是TCP报文段中的数据字段的最大长度。数据字段加上TCP首部才等于整个的TCP报文段。 所以,MSS是“TCP报文段长度减去TCP首部长度”。

  • 与接收窗口值没有关系。

在这里插入图片描述

  • MSS长度大小:

    在这里插入图片描述

3. 选项:窗口扩大

在这里插入图片描述

TCP窗口字段长度=16位,最大窗口大小=64K字节。对于传播时延和带宽都很大的网络,为获得较高吞吐率,需要更大的窗口。

窗口扩大选顶:占3字节,其中一个字节表示移位值S。新的窗口值位数从16增大到(16+S),相当于把窗口值向左移动S位。

移位值允许使用的最大值是14,窗口最大值增大到2(16+14)-1=230-1。

窗口扩大选顶可以在双方初始建立TCP连接时进行协商。

在这里插入图片描述

4. 选项:时间戳

  • 占10字节。最主要的2个字段:

    时间戳值字段(4字节)和时间戳回送回答字段(4字节)。

  • 2个主要功能:

    1. 计算往返时间RTT

    2. 防止序号绕回PAWS。

      序号重复时,为了使接收方能够把新报文段和迟到很久的旧报文段区分开,可以在报文段中加上时间戳。


参考资料:《计算机网络(第8版)》—— 谢希仁。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值