5.5 TCP报文段的首部格式

  • TCP虽然是面向字节流的,但是 TCP传送的数据单元报文段
    一个TCP报文段分为 首部数据 两部分。
    TCP的 全部功能 都体现在它 首部中各字段 的作用。

  • TCP报文段首部的 前20个字节 是固定的,后面有 4n 个字节是根据需要而增设的选项。
    首部最小长度 是20字节,要做到 4字节对齐 ,可以采用填充。

在这里插入图片描述

  • 1、源端口 和 目的端口
    各占两字节,用来实现TCP的 分用功能

  • 2、序号
    占4字节。
    序号从0增加到232 - 1后,下一个序号又回到0。
    TCP是面向字节流的。一个TCP连接中传送的字节流中的每一个字节都按顺序编号。整个要传送的 字节流的起始序号 必须在 连接建立时 设置。
    首部中的 序号字段值 指的是本报文段 所发送的数据的第一个字节的序号
    如:
    一个报文段的序号字段值是301,而携带的数据共有100个字节。
    本报文段第一个字节的序号是301,最后一个字节的序号是400。
    那么下一个报文段(若还有的话)的数据序号应当从401开始,下一个报文段的序号字段值应为401。

  • 3、确认号
    占4字节。
    期望收到对方下一个报文段的第一个数据字节的序号。
    若确认号为N,则表示到序号N-1为止的所有数据都已正确收到。
    如:
    B正确收到了A发送过来的一个报文段,其序号字段值是501,数据长度200字节。(数据内容 501 ~ 700 字节)
    此时B希望收到A的下一个数据序号是701,于是B在发送给A的确认报文段中把确认号置为701。

  • 4、数据偏移
    占4位。
    数据偏移的 单位 是4字节,因此 首部的最大长度 是60字节,那么去掉固定字段,选项长度最多40字节。
    指出TCP报文段的数据起始处距离TCP报文段的起始处有多远(实际指出了TCP报文段的 首部长度 )。

  • 5、保留
    占6位
    暂时未使用,目前置0。

  • 6、紧急URG
    占1位。
    URG=1 ,表明 紧急指针字段 有效。告诉系统此报文段中有 紧急数据 ,应尽快传送(相当于高优先级的数据)而不按照原来的排队顺序来传送。
    UDG置1,发送应用进程 告诉 发送方的TCP 有紧急数据要传送。于是 发送方TCP 就把 紧急数据 插入到本报文段数据的最前面,而在 紧急数据 后面的数据仍是普通数据
    此时也需要和 首部中的紧急指针字段 配合使用。
    如:
    已经发送了很长的一个程序要在远地的主机上运行。但是后来发现了一些问题,需要取消该程序的运行。
    由用户从键盘发出 中断命令 ,若不使用紧急数据,那么这两个字符将存储在 接收TCP的缓存 末尾。只有在所有的数据都被处理完毕之后这个命令才会被交付接收方的应用进程,但如此会浪费很多时间。

  • 7、确认ACK
    占1位。
    仅当ACK=1时确认号字段才有效。
    连接建立后的所有传送的报文段都必须把ACK置1。

  • 8、推送PSH
    占1位。
    两个应用进程在进行通信时,有时一方希望在键入一个命令后立刻就能收到对方的响应。
    此时,TCP就可以使用 推送(push) 操作。
    此时,发送方TCP把PSH置1,并立即创建一个报文段发送出去;接收方收到一个PSH=1的报文段,就尽快交付接收应用进程,而不再等到整个接收缓存满了再向上交付。

  • 9、复位RST
    占1位。
    RST=1时,表明TCP连接中出现 严重差错(如主机崩溃) ,必须释放连接,然后重新建立运输层连接。
    RST=1还用来拒绝一个非法的报文段或拒绝打开一个连接。

  • 10、同步SYN
    占1位。
    在连接建立时用来同步序号。
    SYN=1表示这是一个连接请求或连接接受报文(同步完成开始传数据时,此位被置为0)。
    SYN=1,ACK=0时,表明这是一个 连接请求报文段
    若对方同意建立连接,则应在 响应的报文段 中使用:SYN=1,ACK=1。

  • 11、终止FIN
    占1位。
    FIN=1:表明此报文段的发送的数据已发送完毕,要求释放运输连接

  • 12、窗口
    占2字节。
    发送本报文段的一方的接收窗口 的大小。
    窗口值 :从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量(单位字节)
    之所以要有这个限制,是因为 接收方的数据缓存空间 是有限的。窗口值 作为接收方让发送方设置其发送窗口的依据。

  • 13、检验和
    占2字节。
    检验和字段 检验的范围 包括 首部数据 两部分。
    计算检验和时TCP报文段前面也要加上12字节的伪首部。伪首部格式与UDP类似。

  • 14、紧急指针
    占2字节。
    仅在URG=1时才有意义,指出了 本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据)
    紧急指针 指出了 紧急数据的末尾在报文段中的位置 。当所有紧急数据处理完后,TCP就告诉应用进程恢复到正常操作。
    即使窗口值为0时也可发送紧急数据。

  • 15、选项
    长度可变,最短0字节,最长40字节。
    若要采用可变选项,需要双方在 协商阶段 达成一致。
    如:
    最大报文长度MSS选项:每一个TCP报文段中的数据字段的最大长度。
    窗口扩大选项:为了扩大窗口(早期窗口大小够用,现在可能不够了),双方需要在初始建立TCP连接时进行协商。
    时间戳:
    主要用于计算往返时间RTT;
    处理TCP序号超过232的情况,防止序号绕回,区分新的报文段和迟到很久的同序号报文段。
    选择确认选项:详见 5.6.3

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值