第6章傳輸層

Download Report

Transcript 第6章傳輸層

程序對程序
 不管是資料鏈結層或網路層,談的是主機與主機的連
線,但資料通訊的交換則依賴終端應用程式的主從互
動關係,即端對端(end-to-end)的通訊。傳輸層的任務
就是為資料傳送的兩個主機間,提供應用程式間的資
料交換,即程序對程序(process-to-process)間的服務
 傳輸層提供的傳輸協定中,主要的有可靠的連接導向
式TCP和不可靠的非連接導向式UDP。
資料區段中的埠號
埠號與主機
Port 80
WWW
(1341)
用戶A
Port 21
FTP
(6952)
用戶B
傳輸層的多工
 多工(multiplexing)
將多個信號或訊息結合起來後,
以單一通道傳送;反之,解多工(de-multiplexing)則將
單一傳輸通道收到的多種訊息或信號,萃取出來分別
傳送到接收端
熟知埠號
埠號
20、21
服務名稱
FTP,檔案傳輸協定服務
22
SSH,安全的遠端連線伺服器服務
23
TELNET,不安全的遠端連線伺服器服務
25
SMTP,郵件伺服器寄信服務
53
DNS,名稱解析協定伺服器服務
80
WWW,全球資訊網路伺服器
110
POP3,郵件收信協定服務
443
HTTPS,有加密的WWW伺服器
可靠度
 非連接導向
 在不提供可靠的前提下,服務協定不會對封包的損壞、
錯誤的順序或遺失做特殊的處理,其設計的目標就是快
速和效能。
 連接導向
 如果資料傳送要求無誤,而不在於時效上,且資料量較
大,那麼傳輸服務必須提供可靠的機制。付出的代價是
複雜的流量控制機制和錯誤維護措施。
連接導向服務的意義
 資料鏈結層有流量控制和錯誤控制,但它是節點之間
可靠的服務;網路層是不可靠的,它無法確保資料封
包的依序和如實送達,只是盡力而為;但我們需要端
對端,即程序間的可靠服務,這就有賴傳輸層來達成
此目標
TCP表頭
TCP表頭
4 bits
6 bits
6 bits
來源埠標號 source port
資料
8 bits
8 bits
目的地埠標號 destination port
序列編號 sequence number
確認編號 acknowledge number
表頭長度
data offset
保留 reserved
控制碼 code
檢查加總 checksum
視窗 window
警急指標 urgent pointer
選項 options 及 填充 padding
TCP連線建立:三向交握
電腦A
電腦B
1. 建立連線傳送SYN
SYN = 1, seq=X
SYN
, seq=
X
收到SYN
X+1
ack=
,
Y
eq=
CK, s
A
,
SYN
收到SYN
3. 確認無誤, 傳ACK
ACK = 1, ack=Y+1,
seq=X+1
ACK
time
2. 傳送SYN, ACK
SYN = 1, seq = Y
ACK = 1, ack = X+1
, ack=
Y+1,
seq=X
+1
4.確認無誤可開始接收
time
TCP連線終止
電腦A
電腦B
傳送 FIN seq=x
收到 FIN
傳送 ACK x+1
收到ACK
傳送 FIN
seq=y, ACK
x+1
收到 FIN + ACK
傳送 ACK y+1
收到 ACK
time
time
TCP 半閉
使用者
應用程序關閉
伺服器
FIN
傳遞 EOF給
應用程序
ACK
應用程序寫入
data
應用程序讀取
ACK
應用程序關閉
FIN
傳遞 EOF到
應用程序
ACK
time
time
TCP流量控制
 TCP區段的每個位元組都有依序編號(序列號碼),且有
確認回應資料接收狀況,向對方傳送確認seq = x表示
已經收到x – 1個byte,預期接收的資料區段從第x個
byte開始。TCP採用滑動視窗的流量控制。主機從網路
收到的資料會先暫存於緩衝區,應用程式再從緩衝區
讀取資料,緩衝區的空間於是釋放出來,視窗的大小
就是根據緩衝區的可用量而定
 傳送端送出區段後複製一份在佇列中並啟動計時器,
如果逾時而未收到該區段的確認回應,或只收到部份
的確認回應時,那麼得重送該區段或部份區段。
持留計時器
 當傳送端收到視窗值為0的時候,會停止傳送資料,並
啟動持留計時器(persist timer),以防範接收端的視窗
值更新遺失,傳送端一直等待無法傳送資料,而造成
TCP死鎖(deadlock)。如果持留計時器逾時仍然未收到
視窗值的更新,傳送端可以嘗試傳送小資料包,接收
端會再傳送視窗更新值。傳送端傳送小量的區段,這
種現象稱為愚蠢視窗症狀(silly window syndrome)。
錯誤控制
 傳輸層錯誤控制的範疇包含區段的內容有誤、有遺失
的區段、有重複的區段及次序錯誤。除了次序錯誤需
要重新排序之外,這些錯誤的解決方法都要透過重送
來解決,而要偵測錯誤就得依賴檢查加總、確認回應、
序列編號及計時器的TCP滑動視窗傳輸策略。重送使用
的機制是回溯 - n ARQ或選擇性回絕ARQ
重傳計時器
 當有資料區段傳送時就會啟動計時器,收到所有資料
區段的確認後,計時器就會停止計時。網路狀況瞬息
萬變,送出區段直到收到回應的時間,即來回時間
( RTT),不會每次都一樣,其基本原理是取得多次
RTT的平均值以得到平滑的RTT值( SRTT),因此RTO
的值必須是可調適的。如果RTO的值設太小,發生重
送的機率必會很高;如果設太大,效率必不彰,可能
浪費太多時間等待。
造成壅塞的架構
瓶頸點(壅塞發生)
10Mbps
10Mbps
r2
r1
傳送端1
10Mbps
接收端1
10Mbps
傳送端2
10Mbps
傳送端3
10Mbps
接收端2
10Mbps
接收端3
壅塞控制
 壅塞控制使用壅塞視窗(congestion window, cwnd)值來
控制傳輸量,傳送者視窗大小取決於接收端視窗(rwnd)
和cwnd中較小的一個。壅塞控制方式使用慢速啟動
(slow start)、壅塞避免(congestion avoidance)以及快速
重傳和快速回復(fast retransmission & fast recovery)
三種階段的策略。
慢速啟動
 壅塞控制分兩個階段,慢速啟動和壅塞避免。剛開始
連線時,網路的狀況不得而知,沒有資訊提供定義
cwnd的值,因此先從1個最大區塊(Maximum Segment
Size, MSS)開始,536或512個 byte,每次收到ACK後,
即RTT的時間,以指數的方式增加cwnd,cwnd = 1, 2,
4, 8 … ;但必須設定一門檻值(ssthresh)以避免網路壅
塞或異常的提早發生,ssthresh的值一般設定為65,535
byte。當cwnd = ssthresh時,壅塞控制進入壅塞避免階
段。
壅塞避免
 避免壅塞使用的演算法是加法遞增和倍數遞減
( AIMD),並結合慢速啟動來達到目標。慢速啟動與
AIMD是各自獨立的機制,只是它們搭配進行。各系
統最常用的演算法有TCP Tahoe和TCP Reno
壅塞避免:AIMD
 當cwnd = ssthresh時,為避免發生壅塞必須減緩cwnd值增加的速度。
此時cwnd不再以指數的方式成長,當收到ACK後cwnd只增加1直到偵
測到壅塞為止,這種方式稱為加法遞增(AI)。如果沒收到ACK表示發
生壅塞,除了須重送資料區段外,cwnd須降為一半,這種方式稱為倍
數遞減(MD)。
 如果逾時,ssthresh 須設為目前cwnd的一半。但Tahoe將收到3個重覆
的ACK和逾時沒收到ACK視為一樣的意義,此時cwnd設為1並開始慢
速啟動的階段。 Reno則分別處理,當收到3個重覆的ACK時,cwnd調
整為現在的一半,並執行快速重傳且進入快速回復階段:如果得到
ACK的回覆,TCP停留在壅塞避免的階段,如果逾時則進入慢速啟動
階段。快速重傳及回復機制可避免進入慢速啟動階段,充分利用頻寬
增加時效。
壅塞控制與壅塞視窗的變化
慢速啟動
門檻值(24)
壅塞
沒回應
收到3個重複ACK(18)
慢
速
啟
動
階
段
壅塞避免
階段
仍沒回應
timeout
(12)
慢速啟動
門檻值(6)
慢速啟動
階段
壅塞避免
階段
快速重送&
回復機制(9)
壅塞控制流程
慢速啟動
階段
壅塞視窗
值(乘2)
壅塞視窗=1
MSS,
壅塞視窗門檻
值= N
壅塞視窗
門檻值減半
逾時
3個重複
ACK回應
壅塞視窗
門檻值
壅塞視窗
門檻值減半
壅塞避免
階段
快速重送 &
回復階段
壅塞視窗
值(加1)
壅塞視窗
值(加1)
3個重複
ACK回應
壅塞視窗
門檻值減半
壅塞視窗
門檻值減半
逾時
QoS的調節機制
 排程:先進先出、優先佇列、公平佇列、權重公平佇
列
 訊務雕塑
 允入機制
QoS:排程
 先進先出佇列(FIFO)
 依照封包到達的順序依序處理,如果新進的封包到達時佇列已滿,
那麼該新進封包會被捨棄,這種捨棄的準則稱為棄尾
 優先佇列
 將訊務分級,依照優先順序處理封包
 公平佇列
 同時維護多個FIFO資料流,路由器以循環的方式處理封包,棄尾
的情形發生在各獨立的FIFO上
 權重公平佇列
 將公平佇列的每個資料流賦予權重
權重公平佇列
訊務雕塑
 網路上的資料流具多樣性,有即時影音串流,或大量
檔案傳輸,為有效利用網路頻寬,可對某些大量非即
時性訊務在未進入網路之前採取限流(rate limiting)措
施,避免影響其它須滿足服務品質之資料流。
 訊務雕塑可利用漏斗(leaky bucket)原理來平滑其資料
流,避免突爆。流入漏斗的水可以很快,但水則以固
定緩慢的速度自漏斗流出
允入控制
 路由器或交換器在資料流進入之前會根據其規範,如
頻寬需求、資料流速和佇列機制等來決定是否讓資料
流進入。
 決定允入與否是一件困難的工作。資料流的資料封包
是否遵循規範可透過監察(policing)的機制,以決定對
此資料流的處理。
QoS實施:IntServ
 IntServ利用一種資源保留協定(Resource Reservation
Protocol, RSVP)建立虛擬通道來為此專屬通道提供等級
服務,其通道的狀態不若訊框中繼(frame relay)保持不
變的硬狀態(hard state),它是一種柔狀態(soft state),
必須定期更動。
 IntServ將資料流分為三種等級:保證服務(guaranteed
service)、負載控制服務(controlled service)和盡力而為
服務(best effort service)。保證服務等級的資料流決不
會受到延遲;負載控制服務等級的資料流希望能感覺
網路不是壅塞的狀況,資料遺失率須低於10%;而盡
力而為的服務與原來IP的非連接導向式服務是一樣的。
IntServ的RSVP傳訊
接收端3
Resv
Resv
Path
Resv
Resv
Resv
來源端1
R3
Resv
Path
Path
Path
Path
R5
R1
Path
Resv
R2
Path
R4
Resv
Path
接收端2
接收端4
QoS實施:DiffServ
 差別式服務主要是一種分級服務,分級的方法不像IntServ
根據資料流的規範來允入訊務,它利用表頭DS欄位(TOS)中
的6個位元DSCP(differentiated service code point)欄位值來
決定級別。所以DifServ不需要去煩惱訊務的型式,它只根
據DSCP值來決定其行為,即每站行為(Per Hop Behavior,
PHB)
 DSCP可以得到26 = 64個級別,不過一般應用上只使用EF
PHB、AF PHB和DE PHB。EF(expedited forwarding),快速轉
送的意思,專為低遺失率和低延遲的訊務服務;AF(assured
forwarding),確保轉送的意思,在條件之內保證轉送;
DE(default),預設的意思,也就是原來盡力而為的服務
UDP表頭
UDP表頭
資料
16 bits
16 bits
來源埠標號 source port
目的地埠標號 destination port
長度 length
檢查加總 checksum
UDP特性
 是一個不可靠的非連接導向傳輸協定;它之所以不可
靠是因為它沒有確認告知資料的接收情形,資料包也
沒有序號編列,更不用說資料流量或壅塞的控制。
 因為它不講究可靠,所以小資料量,要求傳輸效益高
且需要即時反應的一些服務,例如影音串流的多媒體
即時應用程式反而更適用,因為這種型態的服務可以
容忍資料遺失,而且要求速度。