NodeJS ip碎片

时间:2017-01-12 20:04:30

标签: node.js ip ip-fragmentation

这个问题表明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寄存器时说的话)是否属于ip片段? 因此,如果我必须发送4000byte(即有效载荷)并且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'事件,'data argument'是否包含整个包,或者可能是在每个单独接收的段之后触发'on data'事件?

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

  • 数据包的前2个字节是整个长度的字节长度,我一直在连接收到的数据,直到我收到了很多字节。如果我收到的不仅仅是包大小,我会假设这些连续的字节是后续数据包的开头。

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

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

1 个答案:

答案 0 :(得分:0)

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

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