2017-01-12 23 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