首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Wireshark和NodeJS对数据包的内容有不同意见?

为什么Wireshark和NodeJS对数据包的内容有不同意见?
EN

Stack Overflow用户
提问于 2022-11-15 16:00:52
回答 1查看 23关注 0票数 0

我正在使用生插座 (用于在网络上发送原始数据的节点模块),并使用他们的Ping示例。

我让Wireshark来监视交通。我可以看到我的ICMP包出了,一个回复回来了。

事情变得怪怪的。

Wireshark显示了以下数据包:

代码语言:javascript
复制
IP:   4500003c69ea00004001e2fec0a85647c0a85640
ICMP: 00004b5200010a096162636465666768696a6b6c6d6e6f7071727374757677616263646566676869

但是,当数据进入时触发的节点事件处理程序显示:

代码语言:javascript
复制
IP:   4500280069ea00004001e2fec0a85647c0a85640
ICMP: 00004b5200010a096162636465666768696a6b6c6d6e6f7071727374757677616263646566676869

ICMP组件匹配。但是,字节0x02和0x03 (长度字节)不同。Wireshark显示0x003c或60个字节(如预期的那样)。节点显示0x2800或10 or .这并不是人们所期望的。

值得注意的是,校验和(字节0x18和0x19)在每种情况下都是相同的,尽管它只对Wireshark数据包有效。

所以,问题是:什么会导致这种差异?我倾向于相信Wireshark是正确的,因为60个字节对于ICMP答复来说是正确的,但是为什么Node在这里是错误的呢?

OSX注记

这个模块的文档指出,在OSX上,如果不允许使用SOCK_DGRAM,它将尝试使用SOCK_RAW。我在禁用该函数并使用sudo的情况下尝试了这个方法,并得到了与以前相同的响应。

Github问题

看起来https://github.com/nospaceships/node-raw-socket/issues/60对这个问题是开放的,但尚不清楚这是代码错误还是使用问题……

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-12-04 22:04:03

这是由于FreeBSD错误(特性?)它从IP长度标头字段中减去IP报头的长度,并将其翻转到主机字节顺序。

https://cseweb.ucsd.edu//~braghava/notes/freebsd-sockets.txt

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74448657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档