路径MTU发现
TCP的路径MTU发现按照如下方式进行:
在建立连接时,TCP使用输出接口或对端声明的MSS中的最小MTU作为起始的报文段大小。路径MTU发现不 允许TCP超过对端声明的MSS,如果对端没有指定一个MSS,默认为536。
所有的TCP发送的IP数据报都被设置了DF比特,不可分片,如果中间路径的MTU小于这个值就会发送一个
ICMP差错报文,表示“不可分片”。发送端收到这个差错报文后减小MTU的大小后重新发送。
默认情况下每10分钟后会尝试使用一个较大的MTU值发送数据。
分组并不是越大越好,大的分组每经过一个路由的时间都会增加,但是传输量会减少
而小分组每经过一个路由的时间会减少,但是传输量会增加。
而这些跟网络(分组首部负荷),路由器(选路的决定),和主机(协议处理和设备中断)
长肥管道
我们把一个连接的容量表示为:
capacity(b) = bandwidth(b/s) * round-trip-time(s)
并称之为带宽延迟乘积,也可称它为两端的管道大小,当这个乘积变得越来越大时,TCP的某些局限性就会暴露出来。
具有大的带宽延迟乘积的网络被称为长肥网络(Long Fat Network,即LFN)。一个运行在LFN上的TCP连接被称为长肥管道。管道可以被水平拉长(一个长的RTT),或者被垂直拉高(较高的带宽),或向两个方向拉升,使用长肥管道会遇到多种问题:
1)TCP首部中窗口大小为16bit,从而将窗口大小限制为65535字节内,但是现在的网络需要一个更大的窗口来提供最大的吞吐量
2)一个长肥网络LFN内的分组丢失会使吞吐量急剧减少。如果只有一个报文段丢失,需要用快速恢复算法来避免管道被耗尽(如果管道被耗尽了,慢启动会渐渐填满,但这个过程需要经过多个RTT)
3)许多TCP实现对每个窗口的RTT仅进行一次测量,他们并不对每个报文段进行RTT测量,在一个长肥网络上需要更好的RTT测量机制
4)TCP对每个字节数据使用一个32bit无符号的序号来进行标识。如果在网络中有一个被延迟一段时间的报文段,它所在的网络连接已被释放,而一个新的连接在这两个主机之间又建立了,怎么才能防止专业的报文段再次出现呢?
IP首部中定义了TTL,最大上限是255跳或者是255秒。TCP定义了MSL推荐值为2分钟,也有许多实现为30秒,序号是32bit,也就是传输了2^32个字节后会被重用,如果一个包含序号N字节数据的报文段在网络上被延迟并在仍然有效时又出现,会发生什么情况?这里主要取决于网速是否够快,如果是一个千兆网络,只需要34秒序号就会发生回绕(也就是序号从0开始一直增加到2^32之后又回到了0),这里会使用一个时间戳的方式来解决这个问题。
窗口扩大选项
TCP首部仍然使用16bit不做修改,通过定义一个选项来扩大完成的
这是一个移位标记,0表示没有扩大,1表示扩大2^1倍,也就是2倍。
这个选项只能出现在SYN报文段中
如果这个值为14,则表示65535 * 2^14 字节
如果一方发送一个非0的窗口扩大因子,但没有从另一端接收一个窗口扩大选项,就将移位技术器设置为0,这就允许较新的系统能够与较旧的、不理解新选项的系统进行互操作。
这里可以看到接收方的SYN报文段中,有一个窗口扩大选项,被设置为7。
时间戳选项
时间戳是一个单调递增的值。由于接收方只需要回显收到的内容,因此不需要关注时间戳单元是什么。这个选项不需要再两个主机之间进行任何形式的时钟同步。
BSD系统在启动时将时间戳设置为0,之后每经过500毫秒将时间戳时钟加1。
为了减少任意一端维持的状态数量,对于每个连接只保持一个时间戳的数值。更新这个数值的算法非常简单:
1)TCP跟踪下一个ACK中将要发送的时间戳的值(一个名为tsrecent的变量)以及最后发送的ACK中确认序号(一个名为lastack的变量)。这个序号就是接收方期望的序号。
2)当一个包含有字节号lastack的报文段达到时,则该报文段中的时间戳被保存在tsrecent中。
3)无论何时发送一个时间戳选项,tsrencent就作为时间戳回显应答字段被发送,而序号字段被保存在lastack中。
这个算法能处理下面两种情况:
1)如果ACK被接收方延迟,则作为回显值的时间戳值应该对应于最早被确认的报文段。如发送了1~1024和1025~2048字节的报文段达到,接收方产生一个2049的ACK来对它进行确认。此时ACK中的时间戳应该是1~1024报文段中的时间戳。因为发送方在进行重传超时时间的计算时,必须将延迟的ACK也考虑在内。
2)如果一个受到的报文段虽然在窗口范围内但同时又是失序,这就表明前面的报文段已经丢失。当那个丢失的报文段达到时,它的时间戳(而不是失序报文段的时间戳)将被回显。
假设有1~1024报文段A
1025~2048报文段B
2049~4072报文段C
如果达到接收方的顺序为A,C,B。那么接收方返回的时间戳ACK应该是对A回复1(报文段A的时间戳),
之后是报文段2(回显的时间戳还是报文段A的),之后是正常的回显报文段C。
PAWS:防止回绕的序号
32bit的序号在一个带宽很大RTT很长的连接内可能会出现回绕,当旧的报文段A没有及时达到,此时发送方又重传了这个报文段标记为B,那么A的时间戳就是1,B的时间戳是2。
当接收方收到2后,一段时间(可能A只是被中间路由延迟了)报文段A又达到了,此时发现最新的时间戳比A要大,于是将A报文段丢弃。
PAWS算法不需要再发送方和接收方中间进行任何形式的时间同步。接收方所需要的就是时间戳的值应该单调自增,并且每个窗口至少增加1。
T/TCP;为事务用的TCP扩展
TCP的扩展,但因为存在安全性问题,并没有成为标准,也没有被应用。
TCP的性能
下面这些实际限制适用于任何的实际情况
1)不能比最慢的链接运行得更快
2)不能比最慢的机器的内存运行的更快
3)不能够比接收方提供的窗口大小除以往返时间所得结果运行的更快(这就是带宽延迟乘积公式)。
参考:
...
相关推荐
从给定的文件标题“有关TCP性能的一个很有名的论文”和描述“高速TCP网络传输的队列模型及其相关拥塞现象...通过持续的理论研究和实践经验积累,我们可以期待未来TCP在更复杂、更高性能的网络环境中的表现会更加出色。
在本文中,我们将深入探讨如何使用Apache JMeter进行TCP长连接性能测试,特别是在模拟1万个终端设备场景下。首先,我们需要了解的是物联网(IoT)背景下的设备通信协议,这通常涉及身份认证、数据传输等多个步骤。在这...
### 改进无线网络TCP性能的研究 #### 一、引言与背景 ...未来的研究可以进一步探索链路层与传输层之间的协同优化,以及在不同无线网络环境下的适应性和扩展性,以期在更广泛的场景中提升无线网络的性能。
3. **内存管理开销**:TCP数据包处理过程中涉及大量的内存分配和回收操作,不合理的内存管理策略可能导致性能下降。 4. **队列管理**:TCP队列管理不当也会成为瓶颈之一,比如队列长度设置不合理、拥塞控制算法不够...
未来,随着无线通信技术的不断进步和嵌入式设备的日益普及,CW-TCP/IP有望成为此类设备的标准网络协议栈,推动无线互联网在更广泛的场景下得到应用和发展。 关键词:嵌入式TCP/IP;嵌入式系统;无线通信 通过上述...
在本文中,我们将探讨异数OS的TCP协议栈性能测试,着重关注其数据传输的IO性能。测试主要针对建立连接后的收发数据能力,并通过不同的测试方案...未来的研究和优化工作需要进一步探索如何平衡这些因素以实现最佳性能。
VC++实现Modbus TCP协议的核心知识点如下: 1. Modbus TCP协议概述: ...以上内容详细介绍了基于VC++实现Modbus TCP协议的相关知识点,涵盖了协议特性、实现方式、应用范围和未来趋势等多个方面。
主要原因是MANET特有的高比特误码率(BER)和节点移动性导致的数据包丢失,这些并非由网络拥塞所引发,却被TCP误判为拥塞信号,进而触发不必要的拥塞控制动作,严重影响了TCP在MANET中的性能。 ### TCP存在的问题 ...
随着网络技术的发展和应用需求的增长,优化TCP/IP参数成为提升网络性能的关键手段之一。 ### 1.2 TCP/IP调优的目标 TCP/IP调优的目标主要是通过调整TCP/IP协议栈中的参数来最大化网络吞吐量,同时保证良好的网络...
第24章 TCP的未来和性能 256 第25章 SNMP:简单网络管理协议 270 第26章 Telnet和Rlogin:远程登录 293 第27章 FTP:文件传送协议 316 第28章 SMTP:简单邮件传送协议 332 第29章 网络文件系统 347 第30章 其他的TCP...
TCP拥塞控制算法经历了从reno到bic再到cubic的演变,每一代算法都在前一代的基础上针对性能和公平性进行优化。本文将概述TCP拥塞控制算法reno、bic和cubic,并对比它们之间的不同。 首先,TCP拥塞控制的必要性在于...
3. 负载均衡:分散客户端请求到多个服务器,提高服务可用性和性能。 4. 数据代理:例如,允许内网设备通过网关访问公网资源。 总的来说,TCP网关程序是网络通信领域的重要工具,它的学习有助于深入理解TCP协议和...
本研究主要探讨了TCP吞吐量的测量方法,以帮助优化网络配置和性能分析。 首先,TCP吞吐量的测量通常涉及以下步骤: 1. **连接建立**:TCP连接始于三次握手。客户端发送SYN(同步)包,服务器响应SYN+ACK(同步确认...
第24章 TCP的未来和性能 256 第25章 SNMP:简单网络管理协议 270 第26章 Telnet和Rlogin:远程登录 293 第27章 FTP:文件传送协议 316 第28章 SMTP:简单邮件传送协议 332 第29章 网络文件系统 347 第30章 其他的TCP...
tcpcopy可以用于实时和离线回放领域,并且tcpcopy支持mysql协议的复制,开源二年以来,功能上越来越完善。 如果你对上线没有信心,如果你的单元测试不够充分,如果你对新系统不够有把握,如果你对未来的请求压力...
书中通过对比UDP和TCP的客户-服务器程序,展示了T/TCP如何在保持TCP可靠性的前提下,提升性能。 2. UDP上的客户-服务器 UDP(User Datagram Protocol)是一种无连接的传输层协议,适用于对实时性要求高的应用,如...