21.TCP協議-擁塞控制概述

前言

       假設,接收方有足夠的緩存空間,接收方的接收窗口大小很大;也就是說接收方對數據來者不拒;

       在上述的這種情況下,如果發送方發送的數據,接收方沒有收到,那麼就可以認爲網絡出現了擁塞;

網絡爲什麼會發生擁塞

這裏寫圖片描述

        上圖所示的是一個典型的小型局域網,SW 表示交換機,R 表示路由器;

        基於前言中的假設,如果 PC1 給主機 PC3 發送 TCP 報文的時候,出現了丟失,我們大抵上就可以猜測:PC1—SW1—R1—R2—PC3 這條網絡路徑,出現了擁塞;

        爲什麼會出現這種情況呢?可能是:PC1 發送數據的速度太快了,導致了 SW1、R1、R2 忙不過來;

        實際上,無論是交換機也好,路由器也好,他們轉發數據都是按照“存儲+轉發”的方式進行的,即接收到數據後先保存到自己的緩存,然後再挨個處理,發送到對應的接口。

        所謂的 SW1、R1、R2 忙不過來,就是指這些設備的緩存有限,你發送太快,我沒地方進行緩存,導致的結果就是將數據丟棄;

如何避免擁塞

從上圖中可以看到,路徑上的任意一個節點都有可能“忙不過來”,那麼發送方如何才能知道按照什麼樣的速度發送數據呢?

唯一的方法就是嘗試各種不同的發送速度。比如一開始以100kb/s 的速率發送數據,如果沒問題,再將速率提高到200kb/s,再沒問題繼續提升發送速率。一旦達到某個上限後,便開始出現丟包現象,發送方就可以認爲,網絡已經擁塞了,於是降低發送速率,減輕網絡負擔。

我們將上面這種探測網絡擁塞的方法稱爲擁塞控制。當然了,上面這種方法實在是太簡單了。

早在 1999 年,RFC 2581 就定義了四種擁塞控制算法:

  • 慢啓動(slow-start)
  • 擁塞避免(congestiono avoidance)
  • 快重傳(fast retransmit)
  • 快恢復(fast recovery)
發佈了319 篇原創文章 · 獲贊 29 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章