1. 程式人生 > >TCP和UDP的區別與流量控制、擁塞控制

TCP和UDP的區別與流量控制、擁塞控制

1、TCP面向連線(如打電話要先撥號建立連線);UDP是無連線的,即傳送資料之前不需要建立連線
2、TCP提供可靠的服務。也就是說,通過TCP連線傳送的資料,無差錯,不丟失,不重複,且按序到達;UDP盡最大努力交付,即不保證可靠交付
3、TCP面向位元組流,實際上是TCP把資料看成一連串無結構的位元組流;UDP面向報文,UDP沒有擁塞控制,因此網路出現擁塞不會使源主機的傳送速率降低(對實時應用很有用,如IP電話,實時視訊會議等)
4、每一條TCP連線只能是點到點的;UDP支援一對一,一對多,多對一和多對多的互動通訊
5、TCP首部開銷20位元組;UDP的首部開銷小,只有8個位元組

6、TCP的邏輯通訊通道是全雙工的可靠通道,UDP則是不可靠通道

流量控制(點對點通訊控制)

讓傳送方傳送速率不要太快,使接收方來得及接收。

基於滑動視窗的流量控制機制:接收方根據接收快取的大小動態控制傳送方的傳送視窗大小(調整TCP首部“視窗”欄位值),限制傳送方網路注入報文的速率,同時根據網路擁塞程度估計視窗值。

擁塞控制(全域性,涉及全網路主機、路由器等)

防止過多的資料注入網路,可以使網路中的路由器或鏈路不致於過載。

演算法:慢開始、擁塞避免、快重傳、快恢復

慢開始與擁塞避免

傳送方維持一個擁塞視窗(cwnd)的狀態變數,該大小取決於網路擁塞程度,並動態變化

變化原則:網路無擁塞,視窗增大;網路擁塞則減小

慢開始(cwnd指數型增長)

新建立的連線不能夠一開始就大量傳送資料包,而是根據網路情況逐步增加每次傳送的數量。

為防止cwnd增長過大引起網路阻塞,設定慢開始門限ssthresh狀態變數

選擇慢開始演算法與擁塞避免演算法

擁塞避免(cwnd線性增長)

擁塞視窗緩慢增長,每經過一個往返時間RTT就把傳送發的擁塞視窗+1,而不是加倍。

(以上兩個階段若出現擁塞,門限設定為出現擁塞時傳送視窗的一半,視窗值設為1,執行慢開始演算法)

快重傳與快恢復

快重傳

接收方在收到一個失序的報文段後立即發出重複確認,傳送方只要收到三個重複確認就應當立即重傳尚未收到的報文段,不必等待設定的重傳計時器時間到期。

快恢復

傳送方收到三個重複確認時,ssthresh門限減半,然後執行擁塞避免演算法。