1. 程式人生 > 其它 >計算機網路面試

計算機網路面試

OSI:物理層,資料鏈路層,網路層,傳輸層,會話層,表示層和應用層

TCP/IP:資料鏈路層,網路層,傳輸層,應用層

TCP與UDP區別:

1、基於連線與無連線;
2、對系統資源的要求(TCP較多,UDP少);
3、UDP程式結構較簡單;
4、流模式與資料報模式 ;
5、TCP保證資料正確性,UDP可能丟包;
6、TCP保證資料順序,UDP不保證。

Reno:一種TCP擁塞控制演算法

Reno 被許多教材(例如:《計算機網路——自頂向下的方法》)所介紹,適用於低延時、低頻寬的網路,它將擁塞控制的過程分為四個階段:慢啟動、擁塞避免、快重傳和快恢復,對應的狀態如下所示:

  • 慢啟動階段思路是不要一開始就傳送大量的資料,先探測一下網路的擁塞程度,也就是說由小到大逐漸增加擁塞視窗的大小,在沒有出現丟包時每收到一個 ACK 就將擁塞視窗大小加一(單位是 MSS,最大單個報文段長度),每輪次傳送視窗增加一倍,呈指數增長,若出現丟包,則將擁塞視窗減半,進入擁塞避免階段;
  • 當視窗達到慢啟動閾值或出現丟包時,進入擁塞避免階段,視窗每輪次加一,呈線性增長;當收到對一個報文的三個重複的 ACK 時,認為這個報文的下一個報文丟失了,進入快重傳階段,要求接收方在收到一個失序的報文段後就立即發出重複確認(為的是使傳送方及早知道有報文段沒有到達對方,可提高網路吞吐量約20%)而不要等到自己傳送資料時捎帶確認;
  • 快重傳完成後進入快恢復階段,將慢啟動閾值修改為當前擁塞視窗值的一半,同時擁塞視窗值等於慢啟動閾值,然後進入擁塞避免階段,重複上述過程。

總結

目前有非常多的 TCP 的擁塞控制協議,例如:

  • 基於丟包的擁塞控制:將丟包視為出現擁塞,採取緩慢探測的方式,逐漸增大擁塞視窗,當出現丟包時,將擁塞視窗減小,如 Reno、Cubic 等。
  • 基於時延的擁塞控制:將時延增加視為出現擁塞,延時增加時增大擁塞視窗,延時減小時減小擁塞視窗,如 Vegas、FastTCP 等。
  • 基於鏈路容量的擁塞控制:實時測量網路頻寬和時延,認為網路上報文總量大於頻寬時延乘積時出現了擁塞,如 BBR。
  • 基於學習的擁塞控制:沒有特定的擁塞訊號,而是藉助評價函式,基於訓練資料,使用機器學習的方法形成一個控制策略,如 Remy。