我的应用程序使用 TCP 连接到服务器并且系统工作正常。使用 Wireshark 我注意到一些 60 字节的 TCP 数据包发送时没有数据。这是正常的吗?
作为 TCP 传输和握手的一部分,是否发送了一些没有数据的数据包?
谢谢 库马尔
最佳答案
ACK
数据包不携带任何数据,只确认接收到的数据。使用 Wireshark 时,它应该在空数据包上显示这些“标志”。
为了更准确,您应该显示 wireshark 捕获的屏幕截图,以便我们知道您的意思是什么大小。 同时,我在这里剖析了一个 IPv4 TCP 流量的 ACK 数据包,这些是我的结果:
Protocol Size Description Ethernet protocol 14 byte 2 MAC adresses (6 byte), Protocoll type (2 byte) Internet protocol 20 byte The default header size TC protocol 32 byte The default header size (20 byte) + options (12 byte) _____________________________________________________________________________________ Total 66 byte without EP 52 byte (Probably the size the OP is talking about) without EP, Opts 40 byte (The size talked about in the comments)
在我的例子中,选项是 2 个 NOP(每个 1 字节)和两个时间戳(每个 5 字节??)。协议(protocol)的顺序与 Wireshark 中的相同。
Wireshark 将信息拆分到每个字段,因此您可以看到哪些占用了多少空间。
关于无数据发送的 60 字节的 Tcp 数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11670779/