node.js - NodeJS ip 分片

标签 node.js ip ip-fragmentation

这个问题表明 Node.js Net 模块不处理 ip 碎片: Node.js how to handle packet fragmentation with net.Server

我几乎无法想象这是真的,但我找不到任何有关此的文档(如果找到有关此的信息不是太难,请原谅我:-))。这是真的吗?

如果没有:谢谢,这对我来说真的是安全的一天:-)。

如果是这样:如果我不知道整个数据报有多大,如何处理这个问题?

情况: 我与嵌入式系统 (Wiznet W5500) 有 TCP 连接。 MSS(最大段大小,通常等于 MTU - 40)将设置为 536,数据包的大小可变,大小可能超过 4kb。所以数据包会分多段发送。一旦收到一个数据段,还是仅在收到整个数据包时,才会触发“on data”事件?

附带问题:数据段(关于 Wiznet 在 MSS 寄存器的解释中所说的内容)等于 ip 片段,我说得对吗? 因此,如果我必须发送 4000 字节(即有效负载)并且 MSS 设置为 536,我将连续接收: 段 1:536 字节有效负载 段2:536字节有效负载 段3:536字节有效负载 段4:536字节有效负载 段 5:536 字节有效负载 段 6:536 字节有效负载 段 7:536 字节有效负载 段 8:248 字节有效负载 “on data”事件只能在第 8 段之后触发吗?“data argument”是否包含整个数据包,或者“on data”事件是否会在每个单独接收的段之后触发?

如何在继续处理之前 100% 确定我收到整个包裹? 我想到的解决方案:

  • 数据包的前2个字节是整个长度的字节长度,我不断连接接收到的数据,直到接收到尽可能多的字节。如果我收到的数据超过了数据包的大小,我将假设这些连续的字节是后续数据包的开始。

我确实相信这个“​​解决方案”有点棘手,我希望它不是必需的。

提前致谢!如果缺少任何信息:很抱歉,请随时询问:-)。

最佳答案

我是 nodeJS 的忠实粉丝,但在这种情况下,您应该将 python 与 scapy 一起使用:)

http://www.secdev.org/projects/scapy/

关于node.js - NodeJS ip 分片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41621984/

相关文章:

tcp - 视频流协议(protocol)——处理碎片

networking - IP 分段中的额外字节

tcp - 我们在互联网上使用的是 TCP/IP 还是 OSI?

php - 获取ip位置和操作系统

json - 从 json 数据中解析出值

javascript - Angular 9 ng新安装程序包卡住

linux - 如何通过互联网访问Kubernetes服务?

.net - Socket 是否会将 IP 分段数据包作为一个重组的 UDP 数据包传送?

javascript - jQuery 和 Node.js 有什么区别?

node.js - 如何使用 exits 和 actions2 在 sails 1.0 中设置动态 viewTemplatePath?