tcp,udp封包最大長度是怎麼樣的呢?
先來看看各個封包格式:
ip封包

tcp封包
udp封包
ip和udp都有16位的長度字段,是以ip和udp封包的最大負載長度應該為2^16,64KB
網絡層限制:
MTU(Maximum Transmission Unit,最大傳輸單元),這限制了ip封包長度,ip封包長度大于mtu,就需要分片。通常設為1500位元組。
在網絡層,ip提供不可靠傳輸服務,一旦收到的資料報分片丢失部分或部分出現差錯,就會全部丢棄,而不會選擇重傳。
傳輸層限制:
tcp協定中有個MSS,tcp通常将資料分成長度為MSS的若幹塊。
總結:
ip封包由于其長度字段限制,最大負載長度為64KB,而由mtu限制,封包會分片為長度為mtu的若幹段。
udp因沒有序号等字段,是以無法分片,最大負載長度64KB,受制ip封包限制,資料最大負載為64KB-20(ip)-8(udp)
tcp:目前來看,tcp的最大負載限制應該是其分片序号,2^32*mss,如果按MSS=1460來算,接近6TB,但這絕不可能,畢竟還有重傳等操作,不過我覺得可以認為tcp的最大負載很大。(—_—)