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

image.png
為什么TCP傳輸速度不高?

image.png
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
評論
-
帶寬時延積
image.png -
MSS和TCP,與,應(yīng)用層
image.png -
傳輸數(shù)據(jù)包的拆包工作是內(nèi)核做的
image.png




