Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Networking IP数据包在接收方具有尾部,但在发送方不具有尾部 我有一个简单的C++代码,它构建Syn包并用原始套接字发送它。 我为此分配了54个字节(以太网14个字节)_Networking_Tcp_Ip_Wireshark - Fatal编程技术网

Networking IP数据包在接收方具有尾部,但在发送方不具有尾部 我有一个简单的C++代码,它构建Syn包并用原始套接字发送它。 我为此分配了54个字节(以太网14个字节)

Networking IP数据包在接收方具有尾部,但在发送方不具有尾部 我有一个简单的C++代码,它构建Syn包并用原始套接字发送它。 我为此分配了54个字节(以太网14个字节),networking,tcp,ip,wireshark,Networking,Tcp,Ip,Wireshark,发送方的Wireshark显示54个字节,但接收方的Wireshark显示60个字节。6个字节作为尾部添加到数据包的末尾 如果我和scapy一起发送数据包,也会发生同样的情况。(发送方54,接收方60) 请给出建议?以太网不能发送小于64字节的帧,其中60字节是有效负载,4字节是校验和(FCS)。FCS被硬件剥离,软件从未见过。这就是为什么应用程序只能看到60个字节 因此,您看到添加的额外字节会被硬件添加,对此您无能为力。拖车应该是全零 Wireshark在他们的wiki上有关于这方面的好信息:

发送方的Wireshark显示54个字节,但接收方的Wireshark显示60个字节。6个字节作为尾部添加到数据包的末尾

如果我和scapy一起发送数据包,也会发生同样的情况。(发送方54,接收方60)


请给出建议?

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

因此,您看到添加的额外字节会被硬件添加,对此您无能为力。拖车应该是全零


Wireshark在他们的wiki上有关于这方面的好信息:

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


假设您正在使用IPv4,请查看以下内容:。我说的是“总长度”字段。

但我得到的是60个字节,不正确,4个字节的FCS被硬件剥离。