45、TCP的几个常用选项

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

前面用两节内容的篇幅介绍了TCP协议首部格式,TCP的基本功能都是靠其首部这些字段的支持。那么在固定首部之后,还有长度可变的选项字段,可以提供一些附加功能。既然是长度可变,说明选项肯定不止一个,这里面有些比较重要的,也是常用的选项,我们也有必要学习一下。


最大报文段长度(MSS)

MSS是TCP最初规定的一种选项,该字段的值规定了TCP报文数据部分的最大长度。这是一个值得注意的点,虽然它的名字是报文段长度,但实际上它是指去除了首部的数据部分的最大长度,我们是不是可以把它理解成是一种传输层TCP的“MTU值”呢。

从数据链路层的角度来看,我们知道以太网最初规定最小帧长的目的是:为了能在争用期时间之内检测到数据帧的是否发生碰撞的情况。如果是很短的帧,那么在检测碰撞的时候有可能就会发生问题。那如果我们从另一方面来看,如果是数据部分很短的帧,只有1个字节的数据,加上帧首部和帧尾部等开销,那么整体的网络利用率就不高,因为大部分的网络资源都用在传输开销上面。

类似的道理,传输层TCP要设置一个最大报文段长度也是为了解决网络利用率不高的问题。我们可以想一下这种情况:

如果在极端情况下,应用层传递下来的数据只有1个字节,传输层TCP要给它加上首部(最少20字节),到了网络层加上IP首部(最少20字节),到了数据链路层还要加上帧首部。这样来看的话,利用率就很低。相当于是用了一个大盒子里面装了一个小的瓜子。

所以从这个角度看,MSS应该设置的尽量大一些,尽量提高网络利用率。那么应该设置到什么样的程度呢?当然不能设置的太大,因为还要考虑到数据链路层规定了MTU值,如果在传输层把MSS设置的太大,那么整个的TCP报文就大,到了网络层之后这些都变成了IP包的数据部分,太大的数据部分通不过数据链路层的MTU,所以IP就要进行数据包的分片,分的片太多就有一定的安全隐患,因为只要接收端少收到其中一个片,整个的IP包就组装不成,无法向上层交付。

所以把MSS要设置为一个合适的大小,需要通信双方在TCP连接建立时进行确定,双方都把自己能够支持的MSS写入这一字段,以后就按照这个数值传送数据。但如果没有对这个值做出设置,那MSS就取默认值:536字节


选择确认(SACK)

“选择确认”要和我们前面学习过的“连续ARQ的选择重传”联想起来,选择确认的意思是说:如果数据传输中,丢失了一些报文段,使得接收方接收的时候“缺少”中间的一些报文段,这时候接收方可以不把它们全部丢弃,而是可以先暂存下来,但是要告诉发送方丢失了哪些数据。这种“告诉”的方法就是使用选择确认。

我们前面学习确认号的时候,知道了确认号的意思是我期望接下来收到的数据序号,选择确认也是这样的。比如发送的是序号为1~4000的数据,但是接收方只收到了1~1000、1500~3000、3500~4000。那么接收方就要发送确认号为1001、3001、4001的选择确认,以便让发送方知道哪些数据是正常收到的。

如果使用选择确认,那么原来首部中的“确认号”字段用法仍然不变,只是增加了SACK选项。所以在建立TCP连接的时候,通信双方必须都约定好“允许SACK”。


用户超时(UTO)

“用户超时”选项用来设置TCP“超时定时器”的超时时间。前面在学习ARQ自动重传的时候,我们分析过,超时定时器的时间应该设置的比平均往返时间长一点是比较合理的。但这并不是固定的,TCP通信双方可以通过“用户超时”选项设置一个超时数值,并将设置的这个数值告诉对方。这个数值指出了:发送方愿意等待对方发来ACK的时间,也就是超时的时间


窗口缩放(WSOPT)

在学习TCP报文首部格式的时候,我们知道了“窗口”的概念,窗口值指的是接收窗口的大小,实际上也就是接收缓存能够容纳对方发来多少数据。

那么,“窗口缩放”选项,顾名思义就是可以扩大接收窗口的大小,也可以将扩大后的窗口缩小回来。TCP首部“窗口值”字段长度是16位,也就意味着窗口最大是2^16大小,如果使用窗口缩放选项,则允许窗口可以扩大为2^30的大小。

当然,是否使用“窗口缩放”选项,由通信双方在TCP建立连接时进行协商,如果有一方使用了窗口扩大,当它不再需要扩大其窗口时,可以使窗口大小再回到2^16。


以上就是TCP首部中常用的几个选项,当然我们前面还学过一个“时间戳”的选项,具有防止序号绕回的功能,这也是一种选项。到这里,TCP首部就基本学完了(但是还没全部学完,“检验和”放到后面和UDP一起学习)。下一节我们学习TCP建立连接的过程。

参考教材:W.Richard Stevens《TCP/IP详解   卷一:协议》文章来源地址https://www.toymoban.com/news/detail-661985.html

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

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

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

相关文章

  • 【计算机网络】TCP协议详解

    目录 1. TCP协议头部格式 2. TCP协议原理  2.1 可靠传输机制 2.1.1 确认应答机制 2.1.2 超时重传机制 2.1.3 连接管理机制(三次握手,四次挥手) 2.1.4 流量控制 2.1.5 拥塞控制  2.2 效率机制  2.2.1 滑动窗口  2.2.2 延迟应答  2.2.3 捎带应答  3. 粘包问题  4. TCP的异常情况  5. TCP协议特

    2024年01月18日
    浏览(50)
  • 【计算机网络篇】TCP协议

    ✅作者简介:大家好,我是小杨 📃个人主页:「小杨」的csdn博客 🐳希望大家多多支持🥰一起进步呀! TCP(Transmission Control Protocol)是一种在计算机网络中广泛使用的传输层协议,用于在网络上可靠地传输数据。 TCP 提供了可靠的、面向连接的通信,并负责数据的划分、排

    2024年02月11日
    浏览(52)
  • 【计算机网络-传输层】TCP 协议

    端到端通信 :提供应用进程间的端到端通信(逻辑通信)。因此传输层又称为端到端协议。 差错检测 :对首部和数据部分进行检测。 两种协议 :面向连接的 TCP、无连接的 UDP。 复用和分用 : 概念 解释 传输层 TCP 复用 发送方的部分应用进程的报文在传输层使用 TCP 协议进

    2023年04月13日
    浏览(51)
  • 【计算机网络】UDP/TCP 协议

    端口号(Port)标识了一个主机上进行通信的不同的应用程序。在 TCP/IP 协议中, 用 “源IP”, “源端口号”, “目的IP”, “目的端口号”, “协议号” 这样一个五元组来标识一个通信(可以通过netstat -n查看)。 0 - 1023: 知名端口号,HTTP, FTP, SSH 等这些广为使用的应用层协议,它们的

    2024年03月14日
    浏览(63)
  • 计算机网络:传输层(TCP详解)

    TCP报文段结构、可靠数据传输、TCP连接管理(三次握手、四次挥手)、拥塞控制。 点对点: —个发送方,一个接收方 可靠的、按顺序的字节流: 没有报文边界 管道化(流水线): TCP拥塞控制和流量控制设置窗口大小 发送和接收缓存 全双工数据: 在同一连接中数据流双向

    2024年02月04日
    浏览(56)
  • 【计算机网络】UDP/TCP协议

    我们先来看一张图; 在研究UDP前我们先来回答两个问题: 有效载荷如何与报头分离? 如何将有效载荷交付? 第一个问题由于在报头里面有16位UDP长度(表示的是有效载荷+报头长度),而报头长度8字节是固定的,所以分离时我们只需要用整个报文的大小减去固定的8字节报头数据即

    2024年02月08日
    浏览(66)
  • 【计算机网络】TCP|IP协议

    目录 前言 什么是TCP/IP协议? TCP/IP协议的层次结构 TCP/IP协议的工作原理 TCP/IP协议的重要性 结语   TCP/IP协议是当今互联网世界中最重要的网络协议之一,它是网络通信的基石,为数据在网络中的传输提供了可靠性和有效性。本文将深入探讨TCP/IP协议的重要性、基本原理以及其

    2024年02月03日
    浏览(60)
  • 【计算机网络】 TCP——四次挥手

    主动方打算关闭连接,此时会发送一个TCP首部FIN标志位被置为1的报文,也即FIN报文,之后主动方进入FIN_WAIT_1状态。 被动方收到该报文后,就向主动方发送ACK应答报文,接着被动方进入CLOSE_WAIT状态。 主动方收到被动方的ACK应答报文后,进入FIN_WAIT_2状态。 等待被动方处理完数

    2024年02月09日
    浏览(41)
  • 【计算机网络】简易TCP网络小程序

    1.1.1 服务端创建套接字 我们将TCP服务器封装成一个类,当我们定义出一个服务器对象后需要马上对服务器进行初始化,而初始化TCP服务器要做的第一件事就是创建套接字。 TCP服务器在调用socket函数创建套接字时,参数设置如下: 协议家族选择 AF_INET ,因为我们要进行的是网

    2024年02月16日
    浏览(83)
  • 计算机网络TCP篇之流量控制

    今天谈一谈我对于tcp流量控制的看法 在网络拓扑中如果发送方节点的发送速率大于接受方节点的接受速率,数据会不断在接受方的缓冲区累积,直到接受方的缓冲区满的时候,发送方继续发送数据,这时候接受方无法存放这些数据,就只能将数据包丢掉,这样就消耗了网络资

    2024年02月07日
    浏览(51)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包