关于TCP/IP详解 卷1中 图19-4 Nagle算法的一个疑问
本帖最后由 Huntsmen 于 2013-08-28 22:44 编辑Nagle算法是讲 一个新的小报文要发送,必须等前一个小报文的ack收到之后才能发送;
在卷1的P204页图19-4讲解Nagle算法时,举的例子
图中报文14的ack还没有收到,报文15就发送出去了,感觉是违背了Nagle算法,书中还专门这对这个做了解释说没有违背Nagle算法:
报文段 14和15看起来似乎是与 Nagle算法相违背的,但我们需要通过检查序号来观察其中 的真相。因为确认序号是 54,因此报文段 14是报文段 12中确认的应答。但客户在发送该报文 段之前,接收到了来自服务器的报文段 13,报文段 15中包含了对序号为 56的报文段 13的确认。 因此即使我们看到从客户到服务器有两个连续返回的报文段,客户也是遵守了 Nagle算法的。
但是看了这个解释,还是迷迷糊糊的,有看懂了得帮忙指点一下,多谢 这个我也没看明白,这解释简直就跟没解释一样。 顺便吐槽一下,这本书的中译版翻译质量真心不咋滴。 顺便吐槽一下,这本书的中译版翻译质量真心不咋滴。 以下是个人理解,供参考:
这个图是为了解释Nagle算法的一个现象(确切的说是本意):在TCP连接上,最多只有一个未被确认的未完成的小分组。(如果Nagle算法开启,在一个未被确认的未完成的小组得到确认之前,是不可能再发出请求报文的)
除去上下文关系:如果只看14,15两报文,显然与Nagle的算法相为违背的。(因为现象上看,客户端连续发了两个分组出去),但是,通过上下文关系,查看到这两个报文发出之前,均已收到了确认的ACK,所以并没有未被Nagle算法。
注:如果把13号报文拿掉,就有问题了。
页:
[1]