TCP/IP Illustrated Vol1 Second Edition即英文版第二版,TCP部分个人勘误
目前已经有了英文版第二版的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部分个人勘误的更多相关文章
- 【TCP/IP详解 卷一:协议】第二十章 TCP的成块数据流
本章节主要内容: ACK的累积 滑动窗口协议(即 接收方TCP数据报缓存的大小) 流量控制(慢启动 -发送方TCP的 拥塞窗口(cwnd) 以及接受方的 通告窗口) 20.1 引言 在教材的之前章节中 ...
- socket跟TCP/IP 的关系,单台服务器上的并发TCP连接数可以有多少
常识一:文件句柄限制 在Linux下编写网络服务器程序的朋友肯定都知道每一个tcp连接都要占一个文件描述符,一旦这个文件描述符使用完了,新的连接到来返回给我们的错误是"Socket/File ...
- TCP/IP协议(5):传输层之TCP
一.TCP报文 上图为TCP报文的格式,可以看到TCP头部占20个字节,其中红色圆圈中每一项占一位,表示TCP报文的类型,置1表示该项有效. SYN表示建立连接. FIN表示关闭连接. A ...
- 【TCP/IP详解 卷一:协议】第二十四章 TCP的未来与性能
来到了TCP的最后一个章节,未来与性能.在当时(1991年)的未来,如今已经部分变为现实,部分就只是历史中的实验. 主要内容: 路径MTU的发现与TCP的结合. 长肥管道 和 高速千兆比网络. 窗口扩 ...
- 【TCP/IP详解 卷一:协议】第二十一章 TCP的超时与重传
作为TCP的重头戏,本章节涉及了许多关于计算方面的内容,使用了大量的例子来指明一些观点. 我使用的理解方法是:通过别人的博客,以及实例结合进行理解,不然会很吃力. 21.1 引言 reliable T ...
- 【TCP/IP详解 卷一:协议】第二章:链路层
2.1 引言 链路层的三个目的: (1)为IP模块发送和接收IP数据报. (2)为ARP模块发送ARP请求和接收ARP应答.地址解析协议:ARP. (3)为RARP模块发送RARP请求和接收RARP应 ...
- TCP/IP,三次握手四次挥手,TCP/UDP , HTTP/HTTPS
internet:通用名词,由多个计算机网络组成的网络,网络间的通信协议是任意的 Internet:专用名词,当前全球最大的开放计算机网络,采用TCP/IP协议族作为通信的规则.www万维网是广泛应用 ...
- [网络必学]TCP/IP四层模型讲解【笔记整理通俗易懂版】
OSI七层模型 表示层:用来解码不同的格式为机器语言,以及其他功能. 会话层:判断是否需要网络传输. 传输层:识别端口来指定服务器,如指定80端口的www服务. 网络层:提供逻辑地址选路,即发 ...
- TCP/IP详解 卷1 第十九章 TCP的交互数据流
19.1 引言 成块数据:比如ftp.电子邮件.Usenet新闻 交互数据:Telnet.Rlogin 成块数据的报文段基本上都是满长度(full-size)的,而交互数据小的多(Telnet和Rlo ...
随机推荐
- golang 实现海明距离 demo
Simhash的算法简单的来说就是,从海量文本中快速搜索和已知simhash相差小于k位的simhash集合,这里每个文本都可以用一个simhash值来代表,一个simhash有64bit,相似的文本 ...
- 2017-2018-1 20155233 《信息安全系统设计基础》实现mypwd
2017-2018-1 20155233 <信息安全系统设计基础>实现mypwd linux命令pwd介绍 pwd命令以绝对路径的方式显示用户当前工作目录.命令将当前目录的全路径名称(从根 ...
- 20155332 补交ch12课下作业
20155332 补交ch12课下作业 课下测试提交晚了,我课后补做了一遍,答对13题,答错3题. 试题内容如下所示: 课本内容 1.并发(Concurrency) 访问慢I/O设备:就像当应用程序等 ...
- WPF : ListBox的几种Template属性
原文:WPF : ListBox的几种Template属性 属性名 属性的类名 功能 示例 Template ControlTemplate 定义控件自身的外观.其子元素的布局可以自定义,也可以由It ...
- python基础学习1-迭代器
#!/usr/bin/env python # -*- coding:utf-8 -*- #自定义迭代器 需要 重写 __iter__()和__next__() 两个魔法方法 class Fibs: ...
- nginx后端节点健康检查
一.nginx健康检查的三种方式 .ngx_http_proxy_module 模块和ngx_http_upstream_module模块(自带) 官网地址:http://nginx.org/en/d ...
- 洛咕 P2403 [SDOI2010]所驼门王的宝藏
简单tarjan. 一行的横天门如果暴力连边会被卡成平方,所以只要相邻两个横天门连双向边,再随便选一个横天门向整行连边即可.纵寰门同理.ziyou门直接map暴力连边. 然后tarjan直接dp. / ...
- 异步任务(Celery)详解
一.背景 在开发中,我们可能经常会遇到一些需要执行时间很长的任务,如果放在前端,会让用户一直卡在那儿等待或者一直转圈圈,体验非常不好.为了改善这种体验,我赶紧上网搜索,果然,前人早已有解决办法了.那就 ...
- Appium知识积累
1.使用uiautomatorviewer 可以直接在命令行输入uiautomatorviewer,打开获取屏幕截图工具,连接手机,打开所要获取包名的应用,然后获取其截图,根据截图查看package即 ...
- 关于摄像头PCB图设计经验谈
摄像头PCB设计,因为客观原因等.容易引起干扰这是个涉及面大的问题.我们抛开其它因素,仅仅就PCB设计环节来说,分享以下几点心得,供参考交流: 1.合理布置电源滤波/退耦电容:一般在原理图中仅画出若干 ...