无法理解wireshark中的数据包

时间:2017-10-13 09:11:35

标签: networking wireshark packets

下一个数据包的序列号是否得到ack nr加上长度?

OR

下一个数据包的序列号是否为seq nr加上前一个

的长度

数据包可以按随机顺序排列吗?如果是这样,为什么以及如何知道数据包丢失了?

1 个答案:

答案 0 :(得分:0)

首先,有两组序列和确认号对,一组用于会话的每一侧。序列号是发送者的当前号码,确认号码是接收者对发送者的“下一个预期序列号”的想法。一般来说,他们的工作方式就是这样......

假设: HostA的初始序列号为100,HostB的初始序列号为200(这些数字是随机的,它们的起始值根本不重要,但它们是在TCP 3次握手期间建立的。)

场景:HostA向HostB发送1000字节的TCP有效负载:

Seq #  Ack #  TCP Payload (bytes)  Next Seq #
-----  -----  -------------------  ----------
100    200                   1000        1100

这里,HostA的初始序列号假定为100,因为我们假设它正在发送1000字节的TCP有效载荷,我们计算下一个预期的序列号为100 + 1000 = 1100.这就是ACK#we从HostB寻找,这将向HostA表明HostB收到了所有1000字节的有效载荷,并期望HostA的下一个TCP段的序列号为1100.

HostB确认从HostA收到上述TCP段:

Seq #  Ack #  TCP Payload (bytes)  Next Seq #
-----  -----  -------------------  ----------
200    1100                     0         200

这是HostB的序列和确认号码集。请注意,此集完全独立于HostA的集合。这里,HostB通过向HostA发送ACK#1100(初始序列号为100加上额外1000字节的有效载荷),向HostA承认发送方在前一个数据包中发送的所有1000字节数据的接收。 HostB自己的序列号200在这种数据传输中不起作用,除了向HostA指示HostB没有数据反向发送回HostA。

如果HostB确实 NOT 从HostA接收到此段,则ACK HostB最终将发送回HostA将仅携带100的ACK#,因此HostA将知道HostB未收到该段携带1000字节的有效载荷,因此应重新发送。

我希望有帮助吗?

有关详细信息和更多详细信息,请参阅RFC 793