第4章 OSI傳輸層
學習目標 在學習本章之後,讀者將可以回答下列的問題: 為何需要傳輸層? 在端點對端點的資料傳遞中,傳輸層的角色為何? 在TCP/IP傳輸層中,TCP與UDP協定的角色為何? 傳輸層的主要功能:可靠度、連接埠位址和分割等是如何運作? TCP與UDP是如何處理各項主要功能? TCP或UDP的使用時機為何?
圖4-1 OSI傳輸層
傳輸層的角色 傳輸層可以在終端使用者之間進行資料的傳輸,並且提供較高層協定可靠的資料傳輸服務
傳輸層的角色(續) 傳輸層的目的 支援可靠的通訊 TCP與UDP 連接埠位址 分割與重組:分解與結合
傳輸層的目的 在來源端和目的端主機的應用程式之間,追蹤個別的通訊 分割資料並且管理每個資料段 將資料段重組為資料流 辨別不同的應用程式 在終端使用者之間執行流量控制 啟動「錯誤恢復」(error recovery)機制 啟始一個會談(session)
傳輸層的目的(續) 圖4-2 啟動設備上的應用程式進行通訊
傳輸層的目的(續) 圖4-3 追蹤對話
傳輸層的目的(續) 圖4-4 分割
傳輸層的目的(續) 重組資料段:資料很可能會以不同的順序抵達。傳輸層主要是將資料段加以編號和排序,以確保資料段能夠重組成原本正確的順序 識別應用程式:TCP/IP協定稱此識別碼為「埠號」(port number)。凡是存取網路的軟體程序,都會被賦予一個唯一的埠號
傳輸層的目的(續) 流量控制:限制來源端所傳送的資料量是傳輸層的工作 錯誤恢復機制:傳輸層可以確保所有片段資料會順利抵達目的地 啟始一個會談:傳輸層可以透過連線導向的方式,在應用程式間建立一個會談(session)
傳輸層的目的(續) 資料需求的差異 為滿足各種不同應用的需求,必須要有多種的傳輸層協定 UDP(User Datagram Protocol),只能在應用程式間傳遞資料片段的基本功能 如TCP(Transmission Control Protocol),則具備一些附加的功能,如確保資料在應用程式間可靠的傳遞
支援可靠的通訊 追蹤所傳輸的資料 收到資料後發出回應 重傳任何未收到回應的資料
支援可靠的通訊(續) 圖4-5 傳輸層協定
TCP與UDP 「傳輸控制協定」(TCP)和「使用者資料包協定」(UDP)
TCP與UDP(續) 使用者資料包協定(UDP) UDP傳輸的資料單位,稱為「資料包」(datagram) 應用程式包括:網域名稱系統(DNS)、視訊串流、IP語音電話(VoIP)
TCP與UDP(續) 傳輸控制協定(TCP) TCP是一種連線導向(connection-oriented)的通訊協定 應用程式包括:Web瀏覽器、電子郵件、檔案傳輸 圖4-7 TCP資料包
連接埠位址 圖4-8 辨識各種交談
連接埠位址(續) 埠號位址型態與工具 周知埠號(數字0到1023) 註冊埠號(數字1024到49151) 動態或私有埠號(數字49152到65535)
連接埠位址(續) 表4-1 周知埠號
連接埠位址(續) 表4-2 註冊埠號
連接埠位址(續) 動態或私有連接埠:動態或私有連接埠(數字49152到65535)也稱為Ephemeral連接埠 表4-3 TCP/UDP共用埠號
連接埠位址(續) netstat命令:有時候,必須知道在網路主機中,哪個運作中的TCP連線是處於開啟狀態。Netstat是一個重要的網路公用程式,可用於確認這些連線
連接埠位址(續)
分割與重組:分解與結合 圖4-9 傳輸層功能
TCP通訊協定:可靠的通訊 TCP經常被稱作是連線導向的協定,是一種保證可靠度,並依序由傳送端至接收端發送資料的協定。 連線的建立和終止 「三向信號交換」(three-way handshake)方法 流量控制、視窗的擁擠控制以及資料的重傳
TCP通訊協定:可靠的通訊(續) 進行可靠的交談 TCP伺服器程序 建立和終止TCP連線 TCP三向信號交換 終止TCP會談
進行可靠的交談 採用連線導向的會談(session)
TCP伺服器程序 於伺服器上執行的每個應用程式,都會有一個對應的埠號,是由系統管理員手動方式設定或為預設值 圖4-10 用戶端傳送TCP請求
建立和終止TCP連線 在通訊完成後,則須關閉會談並終止連線
TCP三向信號交換 確認目的設備存在於網路上 驗證目的設備中有一個運作中的服務,可以接受目的埠號的請求,以建立與用戶端的會談 通知目的設備,來源用戶端嘗試在該埠號上建立一個通訊會談
TCP三向信號交換(續) 圖4-11 建立TCP連線:SYN ACK
終止TCP會談 圖4-12 TCP連線終止:FIN ACK
採用視窗技術的TCP回應 TCP傳送資料段中的回應編號至來源端,告知接收端正期望接收下一個位元組,此類回應稱之為「期望回應」(expectational acknowledgement) 在接收到回應值之前,啟始端可以傳送的資料量,稱之為「視窗長度」(window size)。「視窗長度」是TCP標頭中的一個欄位
採用視窗技術的TCP回應(續) 圖4-13 TCP資料段的回應
TCP重新傳輸 TCP提供一些管理資料段遺失的方法,其中的一項機制是重新傳輸未獲回應的資料段
TCP擁擠控制:資料段遺失的最小化 TCP標頭中的「視窗長度欄位」(window size field),可指定在獲得回應前所能傳輸的資料量
TCP擁擠控制:資料段遺失的最小化(續) 動態視窗長度:若接收端因緩衝區記憶體限制而需要降低通訊速率時,它可以傳送較小的視窗長度值做為回應 圖4-15 TCP擁擠和流量控制
UDP通訊協定:低虛工通訊 提供基本傳輸層功能的簡單通訊協定 非連線導向的運作方式 不提供複雜的重新傳輸、排序和流程控制機制
UDP通訊協定:低虛工通訊(續) UDP:低虛工與可靠度的比較 UDP資料包重組 UDP伺服器程序與請求 UDP用戶端程序
UDP:低虛工與可靠度的比較 因為UDP的額外虛工較低,且不必如TCP提供一些可靠度功能
UDP資料包重組 圖4-16 UDP資料組合
UDP伺服器程序與請求 以UDP為基礎的伺服器應用程式,會有對應的已知或註冊的埠號
UDP用戶端程序 主從式通訊是由用戶端的應用程式所啟始,由該應用程式向伺服器程序發出資料請求 目的連接埠(destination port)通常是眾所周知或用於伺服器程序的已註冊埠號
UDP用戶端程序(續) 圖4-17 用戶端傳送UDP請求
摘要 傳輸層藉由下列方式提供資料網路的需求: UDP和TCP是常見的傳輸層協定 在來源和目的主機上的應用程式之間,追蹤個別的通訊 分割資料並且管理每個資料段 組合資料段成為應用程式的資料流 識別不同的應用程式 在使用者之間執行流量控制 啟用「錯誤回復原」機制 啟始一個會談 UDP和TCP是常見的傳輸層協定