读取TCP / IP时出现问题第1卷,第1版:第19.4节

时间:2018-05-25 11:16:21

标签: tcp-ip

电子书链接: TCP/IP illustrated Volume 1: 19. TCP Interactive Data Flow

图19.6图19.5的时间线(观察Nagle算法) Figure 19.6 Time line for Figure 19.5 (watching the Nagle algorithm)

  

我们注意到的第一个更改是所有3个字节在准备就绪时发送(段1,2和3)。没有延迟 - Nagle算法已被禁用。

     

我们在tcpdump输出(段4)中看到的下一个数据包包含来自服务器的带有ACK 4的字节5.这是错误的。客户端立即响应ACK 2(它没有被延迟),而不是ACK 6,因为它不期望字节5到达。看来数据段丢失了。我们用图19.8中的虚线显示了这一点。

     

我们如何知道这个丢失的段包含字节2,3和4以及ACK 3?我们期望的下一个字节是字节编号2,如段5所公布的。(每当TCP接收到超出下一个预期序列号的无序数据时,它通常会响应一个确认,指定下一个字节的序列号)期望收到。)此外,由于缺少的段包含字节2,3和4,这意味着服务器必须已收到段2,因此丢失的段必须指定ACK 3 (序列服务器期望接收的下一个字节的数量。)最后,注意重传段6包含来自丢失段和段4的数据。这称为重新包装,

作者让我感到困惑,来自服务器(vangogh.login)的ACK 2在哪里? 我认为该语句应该是“这意味着服务器必须已经收到了段1,所以丢失的段必须指定了ACK 2”

1 个答案:

答案 0 :(得分:0)

首先,slip期望从vangogh.login获取第二个字节,但它得到第5个字节;

其次,我们可以得出结论,从vangogh.login到slip的传输中丢失了第2,第3,第4个字节;

第三个,第二个,第三个字节被转移形式的段1()通过slip发送,第4个字节被转移为段2,而段1,段2被vangogh.login接收。

第四,所以缺失的段必须根据段2(2:3(1))指定ACK 3.