1

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

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

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

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

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

附带问题:数据段(关于 Wiznet 在 MSS 寄存器的解释中所说的)equel 是 ip-fragment 对吗?因此,如果我必须发送 4000 字节(即有效负载)并且 MSS 设置为 536,我将连续收到: segment1: 536bytes payload segment2: 536bytes payload segment3: 536bytes payload segment4: 536bytes payload segment5: 536bytes payload segment6: 536bytes payload segment7: 536bytes payload segment8: 248bytes payload 可能仅在第 8 段之后触发“数据参数”事件,“数据参数”是否包含整个包是否会在每个单独接收的段之后触发“on data”事件?

在继续处理之前,我怎样才能 100% 确定我得到了整个包裹?我想到的解决方案:

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

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

提前致谢!如果缺少任何信息:对不起,请随时询问:-)。

4

1 回答 1

0

我是 nodeJS 的忠实粉丝,但在这种情况下,你应该使用 python 和 scapy :)

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

于 2017-01-12T20:27:15.777 回答