`

TCP的未来和性能

 
阅读更多

 

路径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)不能够比接收方提供的窗口大小除以往返时间所得结果运行的更快(这就是带宽延迟乘积公式)。

 

 

 

 

 

参考:

路径MTU发现

T/TCP

 

 

 

 

 

 

 

...

  • 大小: 445.7 KB
分享到:
评论

相关推荐

    《TCP/IP详解,卷1:协议》

    第24章 TCP的未来和性能 256 第25章 SNMP:简单网络管理协议 270 第26章 Telnet和Rlogin:远程登录 293 第27章 FTP:文件传送协议 316 第28章 SMTP:简单邮件传送协议 332 第29章 网络文件系统 347 第30章 其他的TCP...

    tcp/ip 卷1

    第24章 TCP的未来和性能 256 第25章 SNMP:简单网络管理协议 270 第26章 Telnet和Rlogin:远程登录 293 第27章 FTP:文件传送协议 316 第28章 SMTP:简单邮件传送协议 332 第29章 网络文件系统 347 第30章 其他的TCP...

    分布式TCP压力测试工具 tcpcopy

    tcpcopy可以用于实时和离线回放领域,并且tcpcopy支持mysql协议的复制,开源二年以来,功能上越来越完善。 如果你对上线没有信心,如果你的单元测试不够充分,如果你对新系统不够有把握,如果你对未来的请求压力...

    TCP-IP技术大全

    TCP/IP和Internet 8 2.1 一段历史 8 2.1.1 ARPANET 8 2.1.2 TCP/IP 9 2.1.3 国家科学基金会(NSF) 9 2.1.4 当今的Internet 12 2.2 RFC和标准化过程 12 2.2.1 获得RFC 13 2.2.2 RFC索引 13...

    TCPIP入门教程视频(全套共18集).rar

    01TCP-IP基础视频教程概述.wmv 02TCPP基础视频教程 Datalink Layer. wm 03TCPP基础视频教程IPwm 04TCP-IP基础视频教程ARP.wm 05TCP-IP基础视频教程ICMP.Wmv ...18TCPP基础视频教程tcp的未来和性能wmv

    TCP/IP教程TCP/IP基础

    第2章 TCP/IP和Internet 8 2.1 一段历史 8 2.1.1 ARPANET 8 2.1.2 TCP/IP 9 2.1.3 国家科学基金会(NSF) 9 2.1.4 当今的Internet 12 2.2 RFC和标准化过程 12 2.2.1 获得RFC 13 2.2.2 RFC索引 13 2.2.3 有关RFC的幽默 ...

    TCP/IP技术大全

    第2章 TCP/IP和Internet 8 2.1 一段历史 8 2.1.1 ARPANET 8 2.1.2 TCP/IP 9 2.1.3 国家科学基金会(NSF) 9 2.1.4 当今的Internet 12 2.2 RFC和标准化过程 12 2.2.1 获得RFC 13 2.2.2 RFC索引 13 2.2.3 有关RFC的幽默 ...

    TCP-IP详解卷1:协议

    第24章 TCP的未来和性能 256 24.1 引言 256 24.2 路径MTU发现 256 24.2.1 一个例子 257 24.2.2 大分组还是小分组 258 24.3 长肥管道 259 24.4 窗口扩大选项 262 24.5 时间戳选项 263 24.6 PAWS:防止回绕的序号 265 ...

    TCP-IP详细协议

    第24章 TCP的未来和性能 256 24.1 引言 256 24.2 路径MTU发现 256 24.2.1 一个例子 257 24.2.2 大分组还是小分组 258 24.3 长肥管道 259 24.4 窗口扩大选项 262 24.5 时间戳选项 263 24.6 PAWS:防止回绕的序号 265 ...

    TCP-IP详解卷1

    第24章 TCP的未来和性能 第25章 SNMP:简单网络管理协议 第26章 Telnet和Rlogin:远程登录 第27章 FTP:文件传送协议 第28章 SMTP:简单邮件传送协议 第29章 网络文件系统 第30章 其他的TCP/IP应用程序 附录A ...

    TCP/IP详解(卷一)

    第24章 TCP的未来和性能 256 第25章 SNMP:简单网络管理协议 270 第26章 Telnet和Rlogin:远程登录 293 第27章 FTP:文件传送协议 316 第28章 SMTP:简单邮件传送协议 332 第29章 网络文件系统 347 第30章 其他的TCP...

    TCP/IP详解 卷1完整版

    第24章 TCP的未来和性能 256 24.1 引言 256 24.2 路径MTU发现 256 24.2.1 一个例子 257 24.2.2 大分组还是小分组 258 24.3 长肥管道 259 24.4 窗口扩大选项 262 24.5 时间戳选项 263 24.6 PAWS:防止回绕的序号 265 ...

    TCP/IP详解卷 pdf格式

    第24章 TCP的未来和性能 256 24.1 引言 256 24.2 路径MTU发现 256 24.2.1 一个例子 257 24.2.2 大分组还是小分组 258 24.3 长肥管道 259 24.4 窗口扩大选项 262 24.5 时间戳选项 263 24.6 PAWS:防止回绕的序号 265 ...

    TCP_IP协议详解卷一

    第24章 TCP的未来和性能 256 24.1 引言 256 24.2 路径MTU发现 256 24.2.1 一个例子 257 24.2.2 大分组还是小分组 258 24.3 长肥管道 259 24.4 窗口扩大选项 262 24.5 时间戳选项 263 24.6 PAWS:防止回绕的序号 265 ...

    TCP/IP协议详解:卷1协议

    第24章 TCP的未来和性能 第25章 SNMP:简单网络管理协议 第26章 Telnet和Rlogin:远程登录 第27章 FTP:文件传送协议 第28章 SMTP:简单邮件传送协议 第29章 网络文件系统 第30章 其他的TCP/IP应用程序 附录A ...

    TCP-IP详解试题

    第24章 TCP的未来和性能 256 24.1 引言 256 24.2 路径MTU发现 256 24.2.1 一个例子 257 24.2.2 大分组还是小分组 258 24.3 长肥管道 259 24.4 窗口扩大选项 262 24.5 时间戳选项 263 24.6 PAWS:防止回绕的序号 265 ...

    分布式TCP压力测试工具 tcpcopy.zip

    tcpcopy可以用于实时和离线回放领域,并且tcpcopy支持mysql协议的复制,开源二年以来,功能上越来越完善。 如果你对上线没有信心,如果你的单元测试不够充分,如果你对新系统不够有把握,如果你对未来的请求压力...

    TCP/IP详解 卷1:协议--源代码

    第24章 TCP的未来和性能 256 24.1 引言 256 24.2 路径MTU发现 256 24.2.1 一个例子 257 24.2.2 大分组还是小分组 258 24.3 长肥管道 259 24.4 窗口扩大选项 262 24.5 时间戳选项 263 24.6 PAWS:...

Global site tag (gtag.js) - Google Analytics