TCP接收/發送滑動窗口與內核接收/發送緩沖區之間的關系


 

在有關TCP連接的很多配置中,有很多選項有的配置 

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連接的接收/發送的數據


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM