這個問題表明,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接收的數據。如果我收到的不止是包的大小,我會假設這些連續的字節是後續數據包的開始。
我確實相信這個'解決方案'有點棘手,我希望這不是必需的。
在此先感謝!如果缺少任何信息:對不起,請隨時索取:-)。
我仍然沒有不幸的是找到答案。我會盡快發佈答案,以便其他人可以獲利。 – Sander