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特性
是一個不可靠的非連接導向傳輸協定;它之所以不可
靠是因為它沒有確認告知資料的接收情形,資料包也
沒有序號編列,更不用說資料流量或壅塞的控制。
因為它不講究可靠,所以小資料量,要求傳輸效益高
且需要即時反應的一些服務,例如影音串流的多媒體
即時應用程式反而更適用,因為這種型態的服務可以
容忍資料遺失,而且要求速度。