【问题标题】:NodeJS ip fragmentationNodeJS ip 分片
【发布时间】:2017-05-28 01:55:26
【问题描述】:

这个问题表明 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 'on data' 事件是否仅在第 8 段之后触发,“data 参数”是否包含整个包,或者可能发生在每个单独接收的段之后触发 'on data' 事件?

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

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

我确实认为这个“解决方案”有些棘手,我希望它不是必需的。

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

【问题讨论】:

  • 很遗憾,我仍然没有找到答案。我会尽快发布答案,以便其他人可以获利。

标签: node.js ip ip-fragmentation


【解决方案1】:

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

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

【讨论】:

  • 经过数周的工作,我的应用程序终于准备好启动了。只是调整最后的潜在错误。但我会调查一下。也许我将来会使用它。感谢您的建议。
  • 但这是否意味着NodeJS在调用'on事件'之前确实没有处理ip碎片?
猜你喜欢
  • 1970-01-01
  • 2018-01-12
  • 2011-04-12
  • 2012-07-21
  • 2013-04-06
  • 1970-01-01
  • 2012-02-05
  • 2014-09-29
  • 1970-01-01
相关资源
最近更新 更多