套接字的接受緩衝區及傳送緩衝區

2021-10-25 11:22:07 字數 1151 閱讀 4265

1.套接字的接受緩衝區及傳送緩衝區

net.ipv4.tcp_rmem:這個引數定義了tcp接收緩衝(用於tcp接收滑動視窗)的最小值、預設值、最大值

net.ipv4.tcp_wmem:這個引數定義了tcp傳送緩衝(用於tcp傳送滑動視窗)的最小值、預設值、最大值

netdev_max_backlog:當網絡卡接收資料報的速度大於核心處理的速度時,會有乙個佇列儲存這些資料報。

這個引數表示佇列的最大值

rmem_default:這個引數表示核心套接字接收快取區預設的大小

wmem_default:這個引數表示核心套接字傳送快取區預設的大小

rmem_max:這個引數表示核心套接字接收快取區最大的大小

rmem_max:這個引數表示核心套接字接收快取區最大的大小

滑動視窗的大小與套接字快取區會在一定程度上影響併發連線的資料,每個tcp連線都會為維護tcp滑

動視窗而消耗記憶體,這個視窗會根據伺服器的處理速度收縮或擴張。

這裡想說的是核心緩衝區和滑動視窗之間的區別聯絡:

整個資料的流程中,首先網絡卡接收到的資料存放到核心緩衝區內,然後核心緩衝區存放的資料根

據tcp資訊將資料移動到具體的某乙個tcp連線上的接收緩衝區內,也就是接收滑動視窗內,然後應用

程式從tcp的接受緩衝區內讀取資料,如果應用程式一直不讀取,那麼滑動視窗就會變小,直至為0.

如果網絡卡處理資料的速度比核心處理資料的速度慢,那麼核心會有乙個佇列來儲存這些資料,這

個佇列的大小就是由引數netdev_max_backlog決定的

對於傳送資料來說,應用程式將資料拷貝到各自tcp傳送緩衝區內(也就是傳送滑動視窗),然後

系統的所有tcp套接字上傳送緩衝區(也就是傳送滑動視窗)內的資料都將資料拷貝到核心傳送緩衝區

內,然後核心將核心緩衝區的資料經過網絡卡傳送出去。

tcp的傳送/接受緩衝區(也就是傳送/接受滑動視窗),是針對某乙個具體的tcp連線來說的,每

乙個tcp連線都會有相應的滑動視窗,但是核心的傳送/接受緩衝區是針對整個系統的,裡面存放著整

個系統的所有tcp連線的接收/傳送的資料

2.抓包測試

connect error: no route to host(errno: 113)

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

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

套接字中緩衝區

1 mtu maximum transmission unit 最大傳輸單元,在資料鏈路層中,往往規定了mtu大小,ip層的資料報通過資料鏈路層如果大於mtu,將被分片,到達接收端ip層後再被重組。乙太網的mtu為1500位元組。2 mss maximum segment size 最大報文段,是t...

傳送緩衝區sk wmem queued

sk wmem queued是目前傳送緩衝區的量 tcp trim head 把這快記憶體給去掉,什麼時候會加入到記憶體裡呢?tcp add write queue tail,skb裡的記憶體是啥?是如何確認傳送緩衝區的,傳送緩衝區 sk wmem free skb 當接收到了ack之後,整個skb...