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日
    浏览(53)
  • vlc option以及常见问题解决方案

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

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

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

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

    2024年02月09日
    浏览(44)
  • TCP之报文格式解析

    TCP网络协议是较常用的,也基本上都会接触,那么来简单了解下它吧。TCP 是一种面向连接的、可靠的传输协议,它能够将数据分成一些小块,并通过 Internet 进行传输。在 TCP 中,数据被分割成一些称为 TCP 报文段(TCP segment)的小块,每个 TCP 报文段携带了一部分数据,以及一

    2024年02月03日
    浏览(57)
  • 【网络协议】TCP报文格式

    1.源端口和目的端口 源端口字段占16比特,用来写入源端口号。源端口号用来标识发送该TCP报文段的应用进程。 目的端口字段占16比特,用来写入目的端口号。目的端口号用来标识接收该TCP报文段的应用进程。 2.序号 当序号增加到最后一个时,下一个序号又回到0。序号字段的

    2024年02月07日
    浏览(132)
  • 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日
    浏览(33)
  • TCP 协议报文

    TCP 协议(一)报文结构 TCP 协议(二)连接与断开 TCP 协议(三)十种核心机制 TCP 协议(四)传输异常 TCP 提供面向连接的通信传输,面向连接是指在传送数据之前必须先建立连接,数据传送完成后要释放连接。无论哪一方向另一方发送数据之前,都必须先在双方之间建立一

    2024年02月12日
    浏览(35)
  • TCP报文的交互过程

     TCP建立连接和断开连接的过程如下图所示,在TCP 协议提供可靠的连接服务时,采用三次握手建立一个连接,采用四次握手来关闭一个连接。 建立TCP连接的三次握手: 第一次握手:建立连接时,客户端发送 SYN 包到服务器,等待服务器确认。  第二次握手:服务器收到 SYN 包

    2023年04月09日
    浏览(31)
  • TCP协议报文结构

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

    2024年02月11日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包