计算机网络——TCP报文段的首部格式

在这里插入图片描述
    为了实现可靠传输,TCP采用了面向字节流的方式。但TCP在发送数据时,是从发送缓存取出一部分或全部字节并给其添加一个首部使之成为TCP报文段后进行发送。

  • 一个TCP报文段由首部数据载荷两部分组成。
  • TCP的全部功能都体现在它首部中各字。
    在这里插入图片描述
        下面来介绍报文段中首部的具体格式:
  • 源端口:占16比特,写入端口号,用来标识发送该TCP报文段的应用进程
  • 目的端口:占16比特,写入目的端口号,用来标识接收该TCP报文段的应用进程
  • 序号:占32比特,取值范围[0,232-1],序号增加到最后一个后,下一个序号就回到0。用来指出本TCP报文段数据载荷的第一个字节的序号
  • 确认号:占32比特,取值范围[0,232-1],确认号增加到最后一个后,下一个确认号就又回到0。用来指出期望收到对方下一个TCP报文段的数据载荷的第一个字节的序号,同时也是对之前收到的所有数据的确认
  • 确认标志位ACK:取值为1时确认号字段才有效;取值为0是确认号字段无效。TCP规定连接建立后,所有传送的TCP报文段都必须把ACK置1。
  • 数据偏移:占4比特,并以4字节为单位。用来指出TCP报文段的数据载荷部分的起始处距离TCP报文段的起始处有多远,这个字段实际上是指出了TCP报文段的首部长度。
  • 保留:占6比特,保留为今后使用,但目前置0。
  • 窗口:占16比特,以字节为单位。指出发送本报文段的一方的接收窗口。也是流量控制的实现方式。
  • 校验和:占16比特,检查范围包括报文段的首部和数据载荷两部分。
  • 同步标志位SYN:在TCP连接建立时用来同步序号。
  • 终止标志位FIN:用来释放TCP连接(这两个标志位的使用前面的文章有详细的说明)。
  • 复位标志位RST:用来复位TCP连接。RST=1时,表明TCP连接出现了异常,必须释放连接,重新建立。RST置1还可以用来拒绝一个非法的报文段或拒绝打开一个TCP连接。
  • 推送标志位PSH:接收方的TCP收到该标志位为1的报文段会尽快上交应用进程,而不必等到接收缓存都填满后再交付。
  • 紧急标志位URG:取值为1时紧急指针字段有效,为0时无效。
  • 紧急指针:占16比特,以字节为单位,用来指明紧急数据的长度。当发送方有紧急数据时,可将紧急数据插队到发送缓存的最前面,并立刻封装到一个TCP报文段中进行发送。紧急指针会指出本报文段数据载荷部分包含了多长的紧急数据。

    增加选项可以增加TCP的功能,其长度是可变的:

  • 最大报文段长度MSS选项:TCP报文段数据载荷部分的最大长度。
  • 窗口扩大选项:用于扩大窗口,提高吞吐率。
  • 时间戳选项:用来计算往返时间RTT;用来处理序号超范围的情况,又称为防止序号绕回PAWS。
  • 选择确认选项
  • 填充:使用填充来确保报文段首部能被4整除
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值