1. 程式人生 > >TCP/IP可靠性傳輸的重點

TCP/IP可靠性傳輸的重點

1. TCP建立連線(3次)和連線釋放(4次)的圖

(1)建立TCP連線(三次握手)

(2)釋放TCP連線(四次握手)



2. TCP和UDP的特點 2.1 TCP的特點 (1)面向連線的運輸層協議 (2)每條TCP連線是點對點的(一對一) (3)提供可靠支付的服務 (4)面向位元組流
  • 說明
    • 雖然應用程序和TCP的互動是一次一個資料塊,但TCP把應用程式交下來的資料看成僅僅是一連串的無結構的位元組流。
    • TCP根據對方給出的視窗值和當前網路擁塞的程度來決定一個報文段應該包含多少個位元組,並不關心應用程序一次把多長的報文傳送到TCP的快取中。
2.2 UDP的特點 (1)無連線的運輸層協議 (2)支援一對一、一對多、多對一、多對多的互動通訊 (3)使用盡最大努力支付,即不保證可靠支付 (4)面向報文的 (5)沒有擁塞控制

3 以位元組為單位的滑動視窗機制 (1)指一個指定大小的視窗,包括髮送視窗和接收視窗。其中傳送視窗是通過接收視窗設定的。 (2)對於傳送方:有三個指標(P1:指向傳送視窗的起始點;P2:指向已傳送但未收到確認資料點;P3:指向傳送視窗的結束點) (3)對於接收方:沒有指標,但會向傳送方傳送自己收到的按序的最後的確認點 (4)傳送快取和接收快取
4. 流量控制
(1)流量控制:通過控制滑動視窗的大小來控制傳送端的傳送速率,讓接收方來得及接收。 (2)有時會出現死鎖的情況。如:
  • 接收方對傳送方進行流量控制,傳送了一個滑動視窗為0的設定報文,這時傳送端接收到此報文,並設定滑動視窗為0。
  • 接收方此時有快取空間了,傳送一個滑動視窗為300的設定報文,但這個報文中斷丟失了,傳送端並沒有接收到,這就造成了雙方都無動作的死鎖狀態。
(3)解決思路:當0視窗的報文被髮送端接收到時,此時會有一個持續計時器,到時間會向對方傳送視窗為0的確認報文,此時對方返回的如果是0,繼續重置計時器,否則將設定滑動視窗為給定值。
5. TCP的擁塞控制
5.1 擁塞視窗的定義
  • 傳送方維持一個擁塞視窗cwnd,並讓傳送視窗等於擁塞視窗。
5.2 出現網路擁塞的條件
  • 對資源的需求總量 > 可用資源
5.3 傳送方如何知道網路發生擁塞?
  • 當網路傳送擁塞時,路由器就丟棄分組。
5.4 擁塞控制的方法
  • 慢開始門限ssthresh:表示一個臨界點,是慢開始演算法和擁塞避免演算法的臨界點
(1)慢開始
  • 為了探測一開始的網路狀況,最初將從很小的流量開始,每接收一個確認,擁塞視窗大小+1,也就是說每過一個輪次,擁塞視窗大小翻倍。
(2)擁塞避免
  • 當擁塞視窗到達一定值(ssthresh)時,不再以指數形式增長,而改為線性形式增長。
(3)快重傳
  • 接收方每收到一個失序報文的時候就進行重複確認,當重複確認次數達到3次時,傳送方將不等待超時計時器,而會立即發起對確認位置的下一位置的資料重傳。
  • 舉例:如傳送M1 M2 M3 M4 M5,先後到達M1 M3 M4 M5,M2丟失了,那麼按照快重傳的原則,接收方將在確認M1後,接收到的M3 M4 M5都將發起重複確認M1的報文,當M5到達的重複確認M1的報文到達傳送端時,傳送端立即重傳M2的資料,不會再等到超時計時器的完整時長。
  • 好處:增加了網路吞吐量
(4)快恢復
  • 傳送端在連續收到三個重複確認後,將ssthresh閾值減半,擁塞視窗設定為ssthreash減半後的數值,並執行擁塞避免演算法。
  • 如果不使用快恢復演算法:則當網路出現超時,ssthresh閾值減半,擁塞視窗重新設定為1,並執行慢開始演算法。

6. 流量控制 & 擁塞控制 (1)區別
  • 流量控制
    • 是點對點通訊量的控制(端對端的問題)
    • 目的:抑制傳送端傳送資料的速率,以使接收端來得及接收。
  • 擁塞控制
    • 是一個全域性性的過程(對於整個網路而言)
    • 目的:防止過多的資料注入到網路中,使網路中的路由器或鏈路不至於過載。