有个问题不明白:
在tcp/ip详解卷1第19章,19.4中,
“报文段1 4和1 5看起来似乎是与 N a g l e算法相违背的,但我们需要通过检查序号来观察其中 的真相.因为确认序号是 5 4,因此报文段 1 4是报文段 1 2中确认的应答.但客户在发送该报文 段之前,接收到了来自服务器的报文段 13,报文段15中包含了对序号为 56的报文段 13的确认. 因此即使我们看到从客户到服务器有两个连续返回的报文段,客户也是遵守了 Nagle算法的”
以上说法看不明白
发了14后,马上又发15,书上解释为15是对13的ack,但是这样,就有两个未ack的packet在网络中,是不是与nagle冲突呢?
按我的理解:
服务器用12ack了11,然后发了13;到这里是正常的。
客户端发14同时ack了12。
现在服务器有一个未被ack的13,客户端有一个未被ack的14,那么现在无论哪方发数据包似乎都不对,违背nagle。例子中的15就是这样。
正常似乎应该是14之后,服务器或客户端发一个纯ack确认14或13,然后双方继续?
想不明白。
请指教。
谢谢。 |