socket緩衝區大小

2021-06-08 06:22:31 字數 740 閱讀 6375

socket緩衝區大小預設為64 k

理論上最優大小為 頻寬乘以往返時間(rtt通過ping ip位址的最後一行得到,如下圖所示)

一般把緩衝區大小的最優化設定需要參照頻寬與往返時間rtt得到的頻寬延遲bdp。

假設應用程式是通過乙個 100mbps 的區域網進行通訊,其 rtt 為 10 ms,那麼 bdp 就是:

100mbps * 0.010 sec / 8 = 3.125mb = 3125kb

如要設定socket緩衝區大小為1m(具體根據你的bdp值),有最大接受/傳送與預設接收/傳送4個設定:

但是預設為64kb,要設定超過64kb的緩衝區大小必須啟用 rfc 1323 定義的 window scaling:

/proc/sys/net/ipv4/tcp_window_scaling "1"

因為頻寬是固定的,但rtt受實際影響比較大,如果要精細定義,則必須啟用rfc 1323的如下方法

/proc/sys/net/ipv4/tcp_timestamps "1"

然後是主要的四個引數設定:

//最大接收

sysctl -w net.core.rmem_max=1048576

//最大傳送

sysctl -w net.core.rmem_max=1048576

//預設的話把上面的max改為default即可

檢視緩衝區設定引數,進proc/sys目錄執行:

sysctl -p | grep mem

設定socket緩衝區大小

分類 天上的星 亮晶晶 2008 11 18 16 50 2973人閱讀收藏 舉報socket傳送資料時候先把資料傳送到socket緩衝區中,之後接受函式再從緩衝區中取資料,如果傳送端特別快的時候,緩衝區很快就被填滿 socket預設的是1024 8 8192位元組 這時候我們應該根據情況設定緩衝區...

設定socket緩衝區大小

socket傳送資料時候先把資料傳送到socket緩衝區中,之後接受函式再從緩衝區中取資料,如果傳送端特別快的時候,緩衝區很快就被填滿 socket預設的是1024 8 8192位元組 這時候我們應該根據情況設定緩衝區的大小,可以通過setsockopt函式實現 intsetsockopt sock...

緩衝區設定 套接字緩衝區大小及限制

pv4資料報的最大值是65535位元組,包括ipv4首部。ipv6資料報的最大值是65575位元組,包括40位元組的首部。mtu ip資料報的最大傳輸單元,乙太網的mtu是1500位元組。ipv4要求的最小鏈路mtu是68位元組。ipv6要求的最小鏈路mtu是1280位元組。如果乙個ipv6的資料報...