专栏首页cwl_Java速读原著-TCP/IP(TCP的未来和性能)

速读原著-TCP/IP(TCP的未来和性能)

第24章 TCP的未来和性能

24.1 引言

T C P已经在从1200 b/s的拨号S L I P链路到以太数据链路上运行了许多年。在 8 0年代和9 0年代初期,以太网是运行 T C P / I P最主要的数据链路方式。虽然 T C P在比以太网速率高的环境(如T 2电话线、F D D I及千兆比网络)中也能够正确运行,但在这些高速率环境下, T C P的某些限制就会暴露出来。

本章讨论T C P的一些修改建议,这些建议可以使 T C P在高速率环境中获得最大的吞吐量。首先要讨论前面已经碰到过的路径 M T U发现机制,本章主要关注它如何与 T C P协同工作。这个机制通常可以使T C P为非本地的连接使用大于5 3 6字节的M T U,从而增加吞吐量。

接着介绍长肥管道(long fat pipe),也就是那些具有很大的带宽时延乘积的网络,以及 T C P在这些网络上所具有的局限性。为处理长肥管道,我们描述两个新的 T C P选项:窗口扩大选项(用来增加 T C P的最大窗口,使之超过 6 5 5 3 5字节)和时间戳选项。后面这个选项可以使T C P对报文段进行更加精确的 RT T测量,还可以在高速率下对可能发生的序号回绕提供保护。这两个选项在RFC 1323 [Jacobson, Braden, and Borman 1992]中进行定义。

我们还将介绍建议的T / T C P,这是为增加事务功能而对 T C P进行的修改。通信的事务模式以客户的请求将被服务器应答的响应为主要特征。这是客户服务器计算的常见模型。 T / T C P的目的就是减少两端交换的报文段数量,避免三次握手和使用 4个报文段进行连接的关闭,从而使客户可以在一个RT T和处理请求所必需的时间内收到服务器的应答。

这些新选项(路径 M T U发现、窗口扩大选项、时间戳选项和 T / T C P)中令人印象最深刻的就是它们与现有的 T C P实现能够向后兼容,即包括这些新选项的系统仍然可以与原有的旧系统进行交互。除了在一个 I C M P报文中为路径M T U发现增加了一个额外字段之外,这些新的选项只需要在那些需要使用它们的端系统中进行实现。

我们以介绍近来发表的有关 T C P性能的图例作为本章的结束。

24.9 小结

本章已经讨论了五个新的 T C P特征:路径M T U发现、窗口扩大选项、时间戳选项、序号回绕保护以及使用改进的 T C P事务处理。我们观察到中间的三个特征是为在长肥管道——具有大的带宽时延乘积的网络—上优化性能所需要的。

路径M T U发现在M T U较大时,对于非本地连接,允许 T C P使用比默认的 5 3 6大的窗口。这样可以提高性能。

窗口扩大选项使最大的 T C P窗口从6 5 5 3 5增加到1千兆字节以上。时间戳选项允许多个报文段被精确计时,并允许接收方提供序号回绕保护( PAW S)。这对于高速连接是必须的。这些新的T C P选项在连接时进行协商,并被不理解它们的旧系统忽略,从而允许较新的系统与旧的系统进行交互。

为事务用的T C P扩展,即T / T C P,允许一个客户/服务器的请求-应答序列在通常的情况下只使用三个报文段来完成。它避免使用三次握手,并缩短了 T I M E _ WA I T状态,其方法是为每个主机高速缓存少量的信息,这些信息曾用来建立过一个连接。它还在包含数据报文段中使用S Y N和F I N标志。

由于还有许多关于T C P能够运行多快的不精确的传闻,因此我们以对 T C P性能的分析来结束本章。对于一个使用本章介绍的较新特征、协调得非常好的实现而言, T C P的性能仅受最大的1千兆字节窗口和光速(也就是往返时间)的限制。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 速读原著-TCP/IP(TCP 选项)

    T C P首部可以包含选项部分(图 1 7 - 2)。仅在最初的T C P规范中定义的选项是选项表结束、无操作和最大报文段长度。在我们的例子中,几乎每个 S Y...

    cwl_java
  • 速读原著-TCP/IP(窗口扩大选项)

    窗口扩大选项使T C P的窗口定义从16 bit增加为32 bit。这并不是通过修改T C P首部来实现的, T C P首部仍然使用 16 bit ,而是通过定...

    cwl_java
  • 速读原著-TCP/IP(sock程序)

    在本书中一直使用一个称为 s o c k的小测试程序,用来生成 T C P和U D P数据。它既可以用作一个客户进程,也可以用作一个服务器进程。有这样一个可以从...

    cwl_java
  • 【划重点!】上周机器学习与量化投资论坛精华锦集

    量化投资与机器学习微信公众号
  • FCOS: Fully Convolutional One-Stage Object Detection

    我们提出一种全卷积的单阶段目标检测器(FCOS),以逐像素预测的方式解决目标检测问题,类似于语义分割。几乎所有最先进的目标探测器,如RetinaNet、SSD、...

    于小勇
  • java获取过去12个月日期

    如有你有个需求,查询过去12个月的税收走势图,不建议你在sql中拼接返回12个月的数据,这样很可能会导致慢sql,建议在java代码中获取日期,然后传入到sql...

    IT云清
  • JVM笔记-HotSpot的算法细节实现

    迄今为止,所有收集器在根节点枚举这一步骤都是必须暂停用户线程的。即便是号称停顿时间可控、或者(几乎)不会发生停顿的 CMS、G1、ZGC 等收集器,枚举根节点时...

    WriteOnRead
  • 列表排序其实不难

    借助命令lsort可对列表进行排序。该命令可提供多个选项,从而实现不同的排序方式。lsort接受一个列表作为参数,返回值为排序后的结果,默认情形下,返回的新列表...

    Lauren的FPGA
  • ElasticSearch(7.2.2)-es之批量导⼊数据

    cwl_java
  • 使用Dockerfile构建镜像-Docker for Web Developers(5)

    1.理解Dockerfile语法 语法命令 命令功能 举例 FROM 所有的dockerfile都必须以FROM命令指定镜像基于哪个基础镜像来制...

    八哥

扫码关注云+社区

领取腾讯云代金券