上兩章講了tcp連線和關閉,今天講講傳輸過程中的問題:擁塞控制。
首先講講什麼是擁塞:一段時間內,當網路中的資源已經不足以供網路當前執行需求的資源時,網路的效能就會下降。
這些資源包括:頻寬,節點快取
擁塞避免就是為了將資源的消耗得到控制,避免網路效能下降。
擁塞控制分為:
快速重傳:傳送方盡快重傳而不等待超時重傳。當傳送方傳送了1,2,3,三個包之後。連續收到了3個1的ack包。這時傳送包認為2,3的包都丟失了,會馬上重傳2,3兩個包,而不是等待超時重傳。快速重傳的作用是避免連線因為長時間等待超時重傳而消耗資源。
快恢復:當出現了連續的3個ack包時,認為要進入快恢復。這時並不是所有的包都丟失,而是部分丟失。這時將cwnd和ssthresh都設定為當前的一半,並進入擁塞避免。這裡的作用是當出現了擁塞的前兆時,及時調整但又不需要從1開始。比慢開始的效能要好一點。
還是用ab兩個水罐之間的水管來舉例喲!
擁塞:當水管裡面的水流太大的時候可能會在一些連線不緊密的地方漏出一些水出來。
**擁塞控制:**避免水流太大,導致太多的水流出來,對方接收不到。
慢開始:當a水管要放水時,剛開始慢慢的擰開水龍頭(cwnd)。當b水管管理員告訴a管理員收到時,a管理員則逐步將水龍頭擰大。
擁塞避免:之前的管理員記錄有乙個水龍頭的刻度,超過這個刻度就只能慢慢的擰,避免水太大。
快重傳:當a水管這邊放了三種顏色的水過去時,而b那邊只收到一種顏色,當b管理員回了三遍只收到了紅色的水,則a管理員就認為水漏出去了只能重新再把其他的水再發一遍。
**快恢復:**當收了三遍同樣的確認時,a管理員就認為水管開始漏水了,這個時候必須把水龍頭擰小一點,並且把刻度也變小,然後又開始慢慢擰。
當cwnd==ssthresh時既可進入慢開始又可進入擁塞避免。
入門:《**tcp/ip》,《tcp/ip網路程式設計》
深入:《unix 高階環境程式設計》,《unix 網路程式設計》 第 1 卷 套介面 api 、第 2 卷 程序間通訊
tcp引數控制
10分鐘 深入less
三種方式引用less 瀏覽器引用 less.js link type text lesss node中使用 工程中使用 變數 key value在js中,條件語句中 可以使用 if,else,switch定義,less中語句中跟switch中case比較像。less 沒有像js中這樣的關鍵字,但是也...
10分鐘了解ZooKeeper
zookeeper是乙個開放原始碼的分布式應用程式協調服務,它包含乙個簡單的原語集,分布式應用程式可以基於它實現同步服務,配置維護和命名服務等。1.最終一致性 client不論連線到哪個server,展示給它都是同乙個檢視,這是zookeeper最重要的功能。2.可靠性 具有簡單 健壯 良好的效能,...
每天10分鐘 10 25
1.hadoop一般廣義和狹義分別指什麼 hadoop生態圈,hadoop軟體2.hadoop軟體哪三個組成 hdfs yarn mapreduce3.hdfs偽分布式的程序簡寫分別是什麼?nn,dn,snn4.yarn偽分布的程序簡寫分別是什麼?nm,rm5.nn節點是幹什麼的 記錄資料節點,維護...