IP数据包在接收方有拖车,但在发送方没有

时间:2012-12-06 06:36:09

标签: networking tcp ip wireshark

我有一个简单的c ++代码,用于构建SYN数据包并通过原始套接字发送它。 我为此分配54个字节(以太网14字节)。

发送方上的Wireshark显示54个字节,但在接收方wiresark上显示60个字节。将6个字节作为预告片添加到数据包的末尾。

如果我发送带有scapy的数据包,也会发生同样的情况。 (发送者为54,接收者为60)

你能告诉我吗?

2 个答案:

答案 0 :(得分:5)

以太网不能发送短于64字节的帧,其中60字节是有效载荷,4字节是校验和(FCS)。 FCS被硬件剥离,软件从未见过。这就是应用程序只能看到60个字节的原因。

因此,您看到添加的额外字节会被硬件添加,并且您无能为力。预告片应该全是零。

Wireshark在他们的维基上有很好的信息:http://wiki.wireshark.org/Ethernet

答案 1 :(得分:1)

正如@Gille所提到的,由于以太网限制,附加数据是填充。但是IP有一个“长度”字段,它会告诉你有多少数据包是真正的有效负载,以及填充多少。你的代码(以及任何适当的代码)必须能够处理填充,这就是'length'字段的用途。

假设您正在使用IPv4,请查看:http://en.wikipedia.org/wiki/IPv4#Packet_structure。我在谈论“总长度”字段。