TCP选项字段(options)

这篇具有很好参考价值的文章主要介绍了TCP选项字段(options)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

TCP头部的最后一个选项字段(options)是可变长的可选信息。这部分最多包含40字节,因为TCP头部最长是60字节(其中还包含前面讨论的20字节的固定部分)。典型的TCP头部选项结构如图所示。

选项的第一个字段kind说明选项的类型
有的TCP选项没有后面两个字段,仅包含1字节的kind字段
第二个字段length指定该选项的总长度
该长度包括kind字段和length字段占据的2字节
第三个字段info是选项的具体信息
常见的TCP选项有7种,如图所示

1、kind=0,选项表结束(EOP)选项

一个报文段仅用一次。放在末尾用于填充,用途是说明:首部已经没有更多的消息,应用数据在下一个32位字开始处

2、kind=1,空操作(NOP)选项

没有特殊含义,一般用于将TCP选项的总长度填充为4字节的整数倍

3、kind=2,最大报文段长度(Max Segment Size, MSS)选项
TCP连接初始化时,通信双方使用该选项来协商最大报文段长度。TCP模块通常将MSS设置为(MTU-40)字节(减掉的这40字节包括20字节的TCP头部和20字节的IP头部)。这样携带TCP报文段的IP数据报的长度就不会超过MTU(假设TCP头部和IP头部都不包含选项字段,并且这也是一般情况),从而避免本机发生IP分片。对以太网而言,MSS值是1460(1500-40)字节。

4、kind=3,窗口扩大因子选项
TCP连接初始化时,通信双方使用该选项来协商接收窗口的扩大因子。在TCP的头部中,接收窗口大小是用16位表示的,故最大为65535字节,但实际上TCP模块允许的接收窗口大小远不止这个数(为了提高TCP通信的吞吐量)。窗口扩大因子解决了这个问题。
假设TCP头部中的接收通告窗口大小是N,窗口扩大因子(移位数)是M,那么TCP报文段的实际接收通告窗口大小是N*2^M,或者说N左移M位。注意,M的取值范围是0~14。我们可以通过修改 /proc/sys/net/ipv4/tcp_window_scaling 内核变量来启用或关闭窗口扩大因子选项。
和MSS选项一样,窗口扩大因子选项只能出现在同步报文段中,否则将被忽略 但同步报文段本身不执行窗口扩大操作,即同步报文段头部的接收窗口大小就是该TCP报文段的实际接收窗口大小。当连接建立好之后,每个数据传输方向的窗口扩大因子就固定不变了。

5、kind=4,选择性确认(Selective Acknowledgment,SACK)选项
TCP通信时,如果某个TCP报文段丢失,则TCP会重传最后被确认的TCP报文段后续的所有报文段,这样原先已经正确传输的TCP报文段也可能重复发送,从而降低了TCP性能。SACK技术正是为改善这种情况而产生的,它使TCP只重新发送丢失的TCP报文段,而不用发送所有未被确认的TCP报文段。选择性确认选项用在连接初始化时,表示是否支持SACK技术。我们可以通过修改 /proc/sys/net/ipv4/tcp_sack 内核变量来启用或关闭选择性确认选项。

6、kind=5,SACK实际工作的选项
该选项的参数告诉发送方本端已经收到并缓存的不连续的数据块,从而让发送端可以据此检查并重发丢失的数据块。每个块边沿(edge of block)参数包含一个4字节的序号。其中块左边沿表示不连续块的第一个数据的序号,而块右边沿则表示不连续块的最后一个数据的序号的下一个序号。这样一对参数(块左边沿和块右边沿)之间的数据是没有收到的。因为一个块信息占用8字节,所以TCP头部选项中实际上最多可以包含4个这样的不连续数据块(考虑选项类型和长度占用的2字节)。

7、kind=8,时间戳选项。
该选项提供了较为准确的计算通信双方之间的回路时间(Round Trip Time,RTT)的方法,从而为TCP流量控制提供重要信息。我们可以通过修改 /proc/sys/net/ipv4/tcp_timestamps 内核变量来启用或关闭时间戳选项。文章来源地址https://www.toymoban.com/news/detail-692915.html

到了这里,关于TCP选项字段(options)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【网络基础】TCP协议之三次握手&四次挥手--详解与常见问题解答

    目录 TCP 的特性 三次握手与四次挥手 三次握手:  灵魂拷问: 四次挥手: 灵魂拷问: 三次握手: 所谓 三次握手 (Three-way Handshake),是指建立一个 TCP 连接时,需要客户端和服务器总共发送3个包。 三次握手的目的是连接服务器指定端口,建立 TCP 连接,并同步连接双方的序列

    2024年01月20日
    浏览(49)
  • vlc option以及常见问题解决方案

    2024年02月08日
    浏览(265)
  • 详解TCP报文格式以及TCP相关特性

    ✏️✏️✏️今天给大家分享的是TCP报文格式的解释以及TCP协议的一些重要特性。 清风的CSDN博客 🛩️🛩️🛩️希望我的文章能对你有所帮助,有不足的地方还请各位看官多多指教,大家一起学习交流! ✈️✈️✈️动动你们发财的小手,点点关注点点赞!在此谢过啦!哈

    2024年02月04日
    浏览(36)
  • 以太网的帧长,MTU, IP报文长度,TCP报文长度,TCP MSS之间的关系

    本文不考虑巨型帧(jumbo frames)的情况下,我们来理几个概念。在日常讨论中,这几个长度经常会容易被混淆起来。64字节,1518字节,1500字节,1460字节,我们接下来会来介绍一下这几个常见,易混淆的长度值的来源。 数据帧的长度,代表二层以太帧长。如下图所示,IEEE80

    2024年02月09日
    浏览(41)
  • tcp 报文详细说明

    第一行 源端口(source port ),16位 目的端口(destination port),16位 第二行 seq number,32 位;报文段第一个字节编号,TCP 报文中每个字节流 被编号。 数据段在网络中传输时,顺序可能会错位;接收端依据序列号,可正确重组数据,保证数据的有序性 第三行 ack number, 32 位;对收到的

    2024年02月05日
    浏览(27)
  • TCP报文结构

    注:内容整理自B站UP主《牛兮兮的书》的系列视频,视频讲解非常好。 TCP:面向连接的传输层协议,采用客户端(发出请求)+服务端(回应请求)的工作模式。 客户端监听一个通信端口,服务端监听一个通信端口,建立一个双向的连接。 客户端:数据的发送方/数据的接收

    2024年02月04日
    浏览(31)
  • UDP TCP 报文内容

    目录 1.UDP 2.TCP  3.TCP的可靠性 1.确认应答(ACK)机制 2.超时重传机制   3.连接管理机制 4.面向字节流  5.粘包问题 源/目的端口号: 表示数据是从哪个进程来,到哪个进程去; 32位序号/32位确认号: 后面详细讲; 4位TCP报头长度: 表示该TCP头部有多少个32位bit(有多少个4字节);所以TCP头

    2024年02月12日
    浏览(31)
  • TCP协议报文结构

    TCP(传输控制协议)是一种面向连接的、可靠的、全双工的传输协议。它使用头部(Header)和数据(Data)来组织数据包,确保数据的可靠传输和按序传递。 下面详细阐述TCP协议的结构: 源端口号 和 目的端口号 :占用2个字节,分别表示发送方和接收方的端口号。 序列号 :

    2024年02月11日
    浏览(36)
  • TCP报文详解

    目录 🐇今日良言:但尽全力,且让心安      🐼一、TCP协议特点      🐳二、TCP协议段格式 🐯三、TCP的10个核心机制 🐝四、三次握手和四次挥手 TCP : Transmission Control Protocol ,传输控制协议. 在之前已经介绍过了TCP协议的特点,简单回顾一下: 有连接 可靠传输 面向字节流 全双

    2024年02月05日
    浏览(32)
  • TCP报文段结构

    TCP报文段结构 源端口号和目的端口号: 含义从名字就能看出来。 序号和确认号: 这二个字段被 TCP 发送方和接收方用来实现可靠数据传输服务,每个字段都是32比特。 接收窗口: 该字段用于流量控制,大小为16比特。 首部长度: 该字段指示了以 32 比特的字为单位的 TCP 首

    2024年02月08日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包