本文介紹一些影響ip資料報大小的限制,我們先介紹這些限制,然後就他們如何影響應用程序傳遞的資料綜合分析
tcp與udp的輸出
每個tcp套介面有乙個傳送緩衝區,可以用so_sndbuf套介面選項來改變這一緩衝區的大小。當應用程序呼叫write往套介面寫資料時,核心從應用程序緩衝區中拷貝所有資料到套介面的傳送緩衝區,如果套介面傳送緩衝區容不下應用程式的所有資料,或者是應用程序的緩衝區大於套介面的傳送緩衝區,或者是套介面的傳送緩衝區中有別的資料,應用程序將被掛起。核心將不從write返回。直到應用程序緩衝區中的所有資料都拷貝到套介面傳送緩衝區。所以,從寫乙個tcp套介面的write呼叫成功返回僅僅表示我們可以重新使用應用程序緩衝區,它並不是告訴我們對方收到資料。
tcp發給對方的資料,對方在收到資料時必須給矛確認,只有在收到對方的確認時,本方tcp才會把tcp傳送緩衝區中的資料刪除。
udp因為是不可靠連線,不必儲存應用程序的資料拷貝,應用程序中的資料在沿協議棧向下傳遞時,以某種形式拷貝到核心緩衝區,當資料鏈路層把資料傳出後就把核心緩衝區中資料拷貝刪除。因此它不需要乙個傳送緩衝區。
寫udp套介面的write返回表示應用程式的資料或資料分片已經進入鏈路層的輸出佇列,如果輸出佇列沒有足夠的空間存放資料,將返回錯誤enobufs.
緩衝區設定 套接字緩衝區大小及限制
pv4資料報的最大值是65535位元組,包括ipv4首部。ipv6資料報的最大值是65575位元組,包括40位元組的首部。mtu ip資料報的最大傳輸單元,乙太網的mtu是1500位元組。ipv4要求的最小鏈路mtu是68位元組。ipv6要求的最小鏈路mtu是1280位元組。如果乙個ipv6的資料報...
TCP之資料緩衝區大小及其限制
1.ipv4資料報文的最大大小為2的16次方,即65535位元組,包括ipv4首部 原因ipv4頭中的資料總長度欄位佔16位 2.ipv6資料報文的最大大小為2的16次方 40位元組的ipv6首部 因為ipv6頭中的淨荷長度欄位佔16位,這個淨荷長度欄位不包括ipv6首部的,而ipv4的總長度字段包...
tcp與udp緩衝區大小總結
1.tcp收發緩衝區預設值 root localhost cat proc sys net ipv4 tcp rmem 4096 87380 4194304 87380 tcp接收緩衝區的預設值 root localhost cat proc sys net ipv4 tcp wmem 4096 1...