2017-01-12 43 views
0

这个问题表明,Node.js的网络模块不处理IP碎片: Node.js how to handle packet fragmentation with net.ServerIP的NodeJS碎片

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

如果不是:谢谢,这对我来说真的很安全:-)。

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

情况: 我有一个与嵌入式系统(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%确定获得整个包装? 溶液I想到:

  • 首先2中的数据包的字节是整个长度的字节长度,我保持直到我收到的字节数concattenating接收的数据。如果我收到的不止是包的大小,我会假设这些连续的字节是后续数据包的开始。

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

在此先感谢!如果缺少任何信息:对不起,请随时索取:-)。

+0

我仍然没有不幸的是找到答案。我会尽快发布答案,以便其他人可以获利。 – Sander

回答

0

我的的NodeJS一个大风扇,但在这种情况下,你应该使用Python和Scapy的:)

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

+0

我的应用程序经过数周的工作后,几乎已准备好发布。只需调整最后的潜在错误。但我会研究它。也许我会在将来使用它。感谢您的建议。 – Sander

+0

但这是否意味着在调用'on事件'之前NodeJS确实不处理ip碎片? – Sander