如何修改TCP緩沖區(qū)才能兼顧并發(fā)數(shù)量與傳輸速度?

為什么要修改TCP的緩沖區(qū)?

image.png

為什么TCP傳輸速度不高?

image.png

image.png

數(shù)據(jù)的大小一定要小于MSS。

image.png


并行的發(fā)送網(wǎng)絡(luò)數(shù)據(jù),接收方是否有強大的接受處理能力?


image.png

image.png

當接收方硬件不如發(fā)送方,或者系統(tǒng)繁忙、資源緊張時,是無法瞬間處理這么多報文的。于是,這些報文只能被丟掉,網(wǎng)絡(luò)效率非常低。

怎么限制發(fā)送方的速度呢?


滑動窗口的由來

image.png

image.png

滑動窗口的大小決定了網(wǎng)速,所以想讓網(wǎng)速快,得想辦法讓窗口大。


image.png

讀取網(wǎng)絡(luò)傳來的數(shù)據(jù)需要進程用read()函數(shù)來讀取數(shù)據(jù)。
但是網(wǎng)絡(luò)的傳輸(處理)能力也是有限的,如果超過了承受范圍,路由器會直接丟棄這些報文。

image.png


  • 帶寬時延積
  • 丟包
  • 網(wǎng)絡(luò)時延
  • 發(fā)送和接收緩沖區(qū)大小


    image.png

滑動窗口與緩沖區(qū)
緩沖區(qū)動態(tài)調(diào)節(jié)


image.png

發(fā)送緩沖區(qū)的大小可以根據(jù)待發(fā)送數(shù)據(jù)的大小來自動調(diào)節(jié)
那么接受緩沖區(qū)呢?——根據(jù)空閑內(nèi)存的大小來決定。


image.png

TCP建立新連接的前提條件是內(nèi)核會為TCP分配新內(nèi)存。
讓TCP使用更多的系統(tǒng)內(nèi)存,可以提高并發(fā)能力。(看來并發(fā)需要更大的內(nèi)存)

image.png


小結(jié)

  • 高并發(fā)一定要基于大部分內(nèi)存用于網(wǎng)絡(luò)傳輸上
  • ACK的存在實現(xiàn)了可靠性
  • 滑動窗口的存在提升了網(wǎng)速,也提高了接收方的處理能力
  • 滑動窗口和丟包


    image.png

image.png

評論

  • 帶寬時延積


    image.png
  • MSS和TCP,與,應(yīng)用層


    image.png
  • 傳輸數(shù)據(jù)包的拆包工作是內(nèi)核做的


    image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容