2014-10-29 38 views
-2

據我們所知,TCP數據包大小的絕對限制是64K(65535字節),實際上這遠遠大於您將看到的任何數據包的大小,因爲較低層(例如以太網)具有較低的分組大小。例如,以太網的MTU(最大傳輸單位)爲1500字節。在TCP中發送大於64K的數據包

我想知道,有沒有任何方法或任何工具,發送大於64k的數據包?

我想測試面對數據包大於64k的設備!我的意思是我想看看,如果我發送一個大於64K的數據包,它的行爲如何?它會放棄它的一部分嗎?或者是其他東西。

所以:

1-如何發送這個大包?這是什麼適當的層?

2-接收器的行爲如何?

回答

3

有沒有這樣的事情作爲一個TCP數據包。 TCP數據在段中發送和接收,在您使用的API範圍內可以達到您喜歡的那麼大,因爲它們可以由多個IP數據包組成。在接收端,TCP與字節流無法區分。

NB 與此無關,或其他任何事情。

3

IP數據包格式只有16位的大小的數據包,所以你將無法創建一個大於64k大小的數據包。見http://en.wikipedia.org/wiki/IPv4#Total_Length。由於TCP使用IP作爲底層,因此這裏也適用此限制。

+0

是否有任何方式或設備發送比這更大的數據包?我的意思是沒有辦法通過一起傳送一些字節來創建一個數據包,例如65K數據包並將其連續發送?網卡(NIC)是否將數據拆分爲數據包或應用程序發送數據包? – TheGoodUser 2014-10-29 10:18:20

+3

「物理」網絡數據包甚至比「邏輯」IP數據包小,請參閱http://en.wikipedia.org/wiki/Ethernet_frame和http://en.wikipedia.org/wiki/Jumbo_frame,以便您有限制在數據包格式固有的多層次上,而且這不僅僅是軟件強制限制。 – 2014-10-29 11:10:20