340 likes | 613 Views
第 6 章 傳輸層. 程序對程序. 不管是資料鏈結層或網路層,談的是主機與主機的連線,但資料通訊的交換則依賴終端應用程式的主從互動關係,即 端對端 (end-to-end) 的通訊。傳輸層的任務就是為資料傳送的兩個主機間,提供應用程式間的資料交換,即 程序對程序 (process-to-process) 間的服務 傳輸層提供的傳輸協定中,主要的有可靠的連接導向式 TCP 和不可靠的非連接導向式 UDP 。. 資料區段中的埠號. 埠號與主機. 傳輸層的多工.
E N D
程序對程序 • 不管是資料鏈結層或網路層,談的是主機與主機的連線,但資料通訊的交換則依賴終端應用程式的主從互動關係,即端對端(end-to-end)的通訊。傳輸層的任務就是為資料傳送的兩個主機間,提供應用程式間的資料交換,即程序對程序(process-to-process)間的服務 • 傳輸層提供的傳輸協定中,主要的有可靠的連接導向式TCP和不可靠的非連接導向式UDP。
傳輸層的多工 • 多工(multiplexing)將多個信號或訊息結合起來後,以單一通道傳送;反之,解多工(de-multiplexing)則將單一傳輸通道收到的多種訊息或信號,萃取出來分別傳送到接收端
可靠度 • 非連接導向 • 在不提供可靠的前提下,服務協定不會對封包的損壞、錯誤的順序或遺失做特殊的處理,其設計的目標就是快速和效能。 • 連接導向 • 如果資料傳送要求無誤,而不在於時效上,且資料量較大,那麼傳輸服務必須提供可靠的機制。付出的代價是複雜的流量控制機制和錯誤維護措施。
連接導向服務的意義 • 資料鏈結層有流量控制和錯誤控制,但它是節點之間可靠的服務;網路層是不可靠的,它無法確保資料封包的依序和如實送達,只是盡力而為;但我們需要端對端,即程序間的可靠服務,這就有賴傳輸層來達成此目標
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的值設太小,發生重送的機率必會很高;如果設太大,效率必不彰,可能浪費太多時間等待。
壅塞控制 • 壅塞控制使用壅塞視窗(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停留在壅塞避免的階段,如果逾時則進入慢速啟動階段。快速重傳及回復機制可避免進入慢速啟動階段,充分利用頻寬增加時效。
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的非連接導向式服務是一樣的。
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特性 • 是一個不可靠的非連接導向傳輸協定;它之所以不可靠是因為它沒有確認告知資料的接收情形,資料包也沒有序號編列,更不用說資料流量或壅塞的控制。 • 因為它不講究可靠,所以小資料量,要求傳輸效益高且需要即時反應的一些服務,例如影音串流的多媒體即時應用程式反而更適用,因為這種型態的服務可以容忍資料遺失,而且要求速度。