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 ...
随机推荐
- vba 语法
VBA语言基础 第一节 标识符 一.定义 标识符是一种标识变量.常量.过程.函数.类等语言构成单位的符号,利用它可以完成对变量.常量.过程.函数.类等的引用. 二.命名规则 1) 字母打头,由字母.数 ...
- jQuery学习- 表单事件
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- C#中如果类的扩展方法和类本身的方法签名相同,那么会优先调用类本身的方法
新建一个.NET Core项目,假如我们有如下代码: using System; namespace MethodOverload { static class DemoExtension { pub ...
- [HNOI2016]网络 树链剖分,堆
[HNOI2016]网络 LG传送门 表示乱搞比正解难想. 整体二分很好想吧. 但是为了好写快乐,我们选择三个\(\log\)的乱搞. 先树剖,线段树套堆维护区间最大值.对于一次修改,如果是插入,就把 ...
- P4047 [JSOI2010]部落划分
显然二分答案\(mid\),然后距离\(\leq mid\)的点对只能放在一个部落里.然后可以并查集\(O(n^2)\)算出有多少个部落. // luogu-judger-enable-o2 #inc ...
- P1402 酒店之王
P1402 酒店之王 每个人要匹配一个A和一个B,所以这样连边: S向每个房间连边. 每个房间向喜欢这个房间的人连边. 每个人向喜欢的菜连边. 每道菜向T连边. 边权均为1. 注意人要限流. // I ...
- [CF1027F]Session in BSU[最小基环树森林]
题意 有 \(n\) 门课程,每门课程可以选择在 \(a_i\) 或者 \(b_i\) 天参加考试,每天最多考一门,问最早什么时候考完所有课程. \(n\leq 10^6\). 分析 类似 [BZOJ ...
- tcp三次握手四次挥手那些事
建立TCP需要三次握手才能建立,而断开连接则需要四次挥手.三次握手,四次挥手流程图如下: 一.首先看下如何通过三次挥手----------建立连接 首先客户端发送连接请求报文,服务端接受连接后回复AC ...
- SQL Server 小数类型(float 和 decimal)
在SQL Server中,实际上小数数值只有两种数据类型:float 和 decimal,分别是近似数值和精确数值.其他小数类型,都可以使用float和decimal来替代,例如,双精度(double ...
- [Vue warn]:vue-Failed to resolve directive: clipboard
前言 需求:移动端需要一个按钮,复制到剪切板,分享给好友(没有调用微信内置的分享接口) 插件 vue-clipboard2 环境:vue,node 安装:npm install --save vue- ...