目前已经有了英文版第二版的TCPIP详解,中文版暂时还没有,但是英文版还是有好几处错误,作者和官方竟然没有维护一个勘误表。

个人阅读过程中针对TCP部分可能有问题的地方简单勘误一下

P596:示意图中最后一条TCP消息,Seq=K+1,作者写成了Seq=K。

P600:TCP同关示意图中最后一条TCP消息Seq=K+1,作者写成了Seq=K。

P609:第二行应该为Timestamp Echo Reply。

P650:tcp_retries1和tcp_retries2这两个参数控制的是重传总时间,而不是重传次数。这两个参数man page里面也错误的描述为控制重传次数了,网上的错误描述也很多。另外SYNACK的重传次数除了受到tcp_synack_retries影响外,还会受到SOCKET选项TCP_SYNCNT、TCP_DEFER_ACCEPT等的影响。

P737:Tahoe是4.3版本的BSD发布的,慢启动和拥塞避免也是4.3版本的BSD发布的。作者都描述为4.2版本了。

P768:在linux中关闭TCP连接的时候,rttvar、cwnd确实会保存到TCP metrics中,但是tcp建立连接时候并不会使用rttvar,而cwnd是拥塞窗口的最大值,并不是拥塞窗口,而且只有在lock情况才会使用到cwnd。

P742:对于limited transmit,作者描述是每一对dup ACK发送一个unsent数据,协议描述的是对于收到的前两个dup ACK,每个dup ACK都可以触发一个unsent数据包的发送。实际上limited transmit可以扩展为对于收到的前(dupthresh-1)个dup ACK,每个dup ACK都可以触发unsent数据包的发送,这个对应linux中disorder状态。[RFC3042]

P743:对于application-limited发送端,作者解释为发送端有数据需要发送,但是受限于底层协议或者计算机忙于处理其他任务而没有发出去,显然正好理解错了,协议中application-limited状态就是指发送端没有更多数据等待发送的场景。[RFC2861]

P769:TFRC中发送端的速率公式给错了,参考RFC5348及论文<Modeling TCP Throughput:A Simple Model and its Empirical Validation>的section 2.2,实际的速率计算公式为:

                                s
X_Bps = ----------------------------------------------------------
R*sqrt(2*b*p/3) + (t_RTO * (3*sqrt(3*b*p/8)*p*(1+32*p^2)))

即书中公式[2]应该给分母添加一个括号。

P775:在计算K的时候作者首先说β默认是0.2,然后按照β=0.8给出一组K、Wmax、C的示例参数,紧接着下一段又说CUBIC中β默认值为0.8。实际上β叫做multiplicative decrease factor,CUBIC中β默认值确实是0.2,但是在具体代码实现上一般使用一个beta变量保存(1-β)的值,因此beta=0.8。一般讨论代码实现的时候我们可以说beta为0.8,但是讨论协议或者论文中的拥塞控制的时候我们一般说β为0.2。所以作者这里举例给出的K、Wmax、C的参数也就有问题了。另外linux内核cubic实现上beta=0.7,β=0.3。另外作者前面介绍的rate halving相关内容,应该更新为PRR才和这里相匹配

P776:Figure 16-20这个图右上角W(t)的公式中第一个系数应该为0.4。另外Wtcp的计算公式中β实际上又混为(1-β)的值了,我在ncsu cubic主页上看到过作者给出的那个公式,估计作者直接copy过来的。改为下面的计算公式更为合理。可以参考<CUBIC: A New TCP-Friendly High-Speed TCP Variant>,感兴趣的可以自己推导一下下面的这个公式

P777:倒数第二行括号里面应该改为"up to 3, the value for β",这段对于buffer的描述比较简略,看不懂的可以参考Vegas原始论文<TCP Vegas: End to End Congestion Avoidance on a Global Internet>的 Section III-B。

TCP/IP Illustrated Vol1 Second Edition即英文版第二版,TCP部分个人勘误的更多相关文章

  1. 【TCP/IP详解 卷一:协议】第二十章 TCP的成块数据流

    本章节主要内容: ACK的累积 滑动窗口协议(即 接收方TCP数据报缓存的大小) 流量控制(慢启动 -发送方TCP的 拥塞窗口(cwnd) 以及接受方的 通告窗口) 20.1 引言 在教材的之前章节中 ...

  2. socket跟TCP/IP 的关系,单台服务器上的并发TCP连接数可以有多少

    常识一:文件句柄限制 在Linux下编写网络服务器程序的朋友肯定都知道每一个tcp连接都要占一个文件描述符,一旦这个文件描述符使用完了,新的连接到来返回给我们的错误是"Socket/File ...

  3. TCP/IP协议(5):传输层之TCP

    一.TCP报文 上图为TCP报文的格式,可以看到TCP头部占20个字节,其中红色圆圈中每一项占一位,表示TCP报文的类型,置1表示该项有效. SYN表示建立连接.    FIN表示关闭连接.    A ...

  4. 【TCP/IP详解 卷一:协议】第二十四章 TCP的未来与性能

    来到了TCP的最后一个章节,未来与性能.在当时(1991年)的未来,如今已经部分变为现实,部分就只是历史中的实验. 主要内容: 路径MTU的发现与TCP的结合. 长肥管道 和 高速千兆比网络. 窗口扩 ...

  5. 【TCP/IP详解 卷一:协议】第二十一章 TCP的超时与重传

    作为TCP的重头戏,本章节涉及了许多关于计算方面的内容,使用了大量的例子来指明一些观点. 我使用的理解方法是:通过别人的博客,以及实例结合进行理解,不然会很吃力. 21.1 引言 reliable T ...

  6. 【TCP/IP详解 卷一:协议】第二章:链路层

    2.1 引言 链路层的三个目的: (1)为IP模块发送和接收IP数据报. (2)为ARP模块发送ARP请求和接收ARP应答.地址解析协议:ARP. (3)为RARP模块发送RARP请求和接收RARP应 ...

  7. TCP/IP,三次握手四次挥手,TCP/UDP , HTTP/HTTPS

    internet:通用名词,由多个计算机网络组成的网络,网络间的通信协议是任意的 Internet:专用名词,当前全球最大的开放计算机网络,采用TCP/IP协议族作为通信的规则.www万维网是广泛应用 ...

  8. [网络必学]TCP/IP四层模型讲解【笔记整理通俗易懂版】

    OSI七层模型     表示层:用来解码不同的格式为机器语言,以及其他功能. 会话层:判断是否需要网络传输. 传输层:识别端口来指定服务器,如指定80端口的www服务. 网络层:提供逻辑地址选路,即发 ...

  9. TCP/IP详解 卷1 第十九章 TCP的交互数据流

    19.1 引言 成块数据:比如ftp.电子邮件.Usenet新闻 交互数据:Telnet.Rlogin 成块数据的报文段基本上都是满长度(full-size)的,而交互数据小的多(Telnet和Rlo ...

随机推荐

  1. 从0开始学golang--1.1--连接ms sql server数据库

    package main import (     "database/sql"     "fmt"     "strings" ) imp ...

  2. linux下centos7中mysql崩溃问题的解决

    ---恢复内容开始--- 出现错误: 尝试解决: 错误解释是说系统运行过程中丢失了pid:我最先想到是 可能磁盘满了:于是 df -h 检查了一下:磁盘并没有满! 于是我对/etc/my.cnf [m ...

  3. Redis架构之防雪崩设计:网站不宕机背后的兵法

    互联网系统中不可避免要大量用到缓存,在缓存的使用过程中,架构师需要注意哪些问题?本文以 Redis 为例,详细探讨了最关键的 3 个问题. 一.缓存穿透预防及优化 缓存穿透是指查询一个根本不存在的数据 ...

  4. mvn本地部署命令行

    ---创建mvn项目 mvn archetype:generate 运行结果如下: ---调试mvn仓库 mvn archetype:generate –X 运行结果如下: ---创建依赖 mvn a ...

  5. Xming 多屏选项

    最早接触xming是从GrADS软件弹出的那个窗口开始的.到后来发现它是一个显示图形界面的软件,设置multiwindow 选项,xshell+xming连远程服务器,屡试不爽.随着设备升级,用上了双 ...

  6. TCP/IP理解

    目录 1.概述 2.TCP/IP寻址及其协议族 3.TCP/IP 邮件 1.概述 介绍:什么是TCP/IP? TCP/IP协议是对计算机必须遵守的规则的描述,遵守了规则才能通信. 应用: 浏览器与服务 ...

  7. jmeter功能按钮介绍

    Jmeter本来是做性能测试的,所以有很多监听器都是针对性能的,随后边的不断发展,可以应用到接口自动化等测试工作上. 面板的文件菜单中一般都是打开.保存.新建测试的,如下图: 保存时可以直接ctrl+ ...

  8. NO 18---- webpack 4.x 使用遇到的问题以及开发配置

    最近在项目中用webpack的过程中老是出现问题,很是纳闷,按理说一直这样使用没有问题啊,经过我研究后发现,是因为在webpack更新到4.x之后,操作方式与之前相比变化很大.而我们使用npm默认安装 ...

  9. FFM原理及公式推导

    原文来自:博客园(华夏35度)http://www.cnblogs.com/zhangchaoyang 作者:Orisun 上一篇讲了FM(Factorization Machines),说一说FFM ...

  10. CF100015C

    主要找到环上任意一条边,有比较dis(u,v),dis(u,a)+w+dis(b,v),dis(u,b)+w+dis(a,u) 然后,然后没了 lca求dis(u,v):dis(u,v)=dis[u] ...