我想要澄清一些我在这里读到的东西:
如何计算来自二进制TCPDUMP文件的丢包
第一个答案是,序列号将从客户端到服务器是相同的,从服务器到客户端的确认将是相同的,这将告诉你哪一方正在做转发。 但是,当我得到这样的输出:
10:58:15.317823 IP 1.2.3.4.50245 > 5.6.7.8.443: Flags [P.], seq 3040268:3040385, ack 56380, win 32768, length 117 10:58:15.317841 IP 1.2.3.4.50245 > 5.6.7.8.443: Flags [P.], seq 3040385:3040470, ack 56380, win 32768, length 85 10:58:15.550090 IP 1.2.3.4.50245 > 5.6.7.8.443: Flags [P.], seq 3040268:3040470, ack 56380, win 32768, length 202 10:58:15.811131 IP 1.2.3.4.50245 > 5.6.7.8.443: Flags [P.], seq 3040268:3040470, ack 56380, win 32768, length 202 10:58:16.133386 IP 1.2.3.4.50245 > 5.6.7.8.443: Flags [P.], seq 3040268:3040470, ack 56380, win 32768, length 202
在这个例子中,前两行有不同的序列号和相同的ack,但是它是从客户端到服务器的一个数据包,那么哪边是在这里进行重传呢?
在最后3行中,序列号和ack都是一样的,那么如何知道哪一方正在重发数据包呢? 注意在这个例子中,1.2.3.4是客户机,5.6.7.8是服务器。
这些是从客户端重新传输到服务器。 这是发生了什么事情:
我们知道这些是从客户端重新传输的,因为所有的数据包都是从客户端到服务器的。 我们知道它们是重传的,因为序列号是一样的,即它一遍又一遍地发送相同的数据。