260 likes | 643 Views
網路概論. 第 12 章 TCP 與 UDP 通訊協定. 大 綱. 12-1 TCP/IP 傳輸層簡介 12-2 TCP 通訊協定的運作原理 12-3 UDP 通訊協定簡介. 12-1 TCP/IP 傳輸層簡介. 12-1-1 傳輸層的功能 提供終端使用者 (End-to-End) 應用程式間可靠的資料傳送或快速的資料傳遞。 傳輸層提供的功能有: 連線導向式 (Connection Oriented) 及非連線導向式 (Connectionless) 傳輸
E N D
網路概論 第12章 TCP與UDP通訊協定
大 綱 • 12-1 TCP/IP傳輸層簡介 • 12-2 TCP通訊協定的運作原理 • 12-3 UDP通訊協定簡介
12-1 TCP/IP傳輸層簡介 12-1-1 傳輸層的功能 • 提供終端使用者(End-to-End)應用程式間可靠的資料傳送或快速的資料傳遞。 • 傳輸層提供的功能有: • 連線導向式(Connection Oriented)及非連線導向式(Connectionless)傳輸 • 資料分段(Segmentation)、依序傳送(In-order Delivery)及重新組合(Reassembly) • 多工(Multiplex)及解多工(Demultiplex)傳送 • 接收確認(Acknowledgement)及重新傳送(Retransmission) • 全雙工(Full-duplex)及多管線(Pipelining)的資料傳送 • 錯誤控制(Error Control) • 流量控制(Flow Control) • 擁塞控制(Congestion Control)
12-1 TCP/IP傳輸層簡介 12-1-1 傳輸層的功能 • 彈性運用傳輸層所提供的功能 • 成本及效率因素:不一定要包含所有傳輸層定義的功能。 • 依據應用使用不同的協定,沒有提供的功能交由應用層處理。 • 網際網路在TCP/IP傳輸層上運作的兩個最基本協定:TCP及UDP協定。
12-1 TCP/IP傳輸層簡介 12-1-2 傳輸層的定址方式 • 連接埠的功能 • 16-bit的連接埠編號(由IANA負責管理) • 保留的連接埠:0至1023 • 登錄的連接埠:1024至49151 • 私人的連接埠:49152至65535 • 多工處理:主從架構下,不同應用程式使用不同的連接埠交換資料使得電腦可以同時執行多個程式 • 應用程式可以使用一個或多個連接埠 • 短暫的連接埠(Ephemeral Port):用戶端隨機產生用來接收伺服器的回應訊息 • 應用程式間傳遞資料的「邏輯連線通道」
12-1 TCP/IP傳輸層簡介 12-1-2 傳輸層的定址方式 • 插座的概念 • 又稱為Internet Socket或Network Socket,是應用程式的程序識別碼(Process Identification),為<IP位址>:<連接埠編號>的組合。 • 來源及目的端的IP位址:雙方在網路上的位址 • 來源及目的端的連接埠:資料傳送建立的管道 • 插座對(Socket Pair):一個Session連線期間應用程式管理的辨識碼 • 在實作上多為作業系統的函式庫(Library),而支援應用程式的入口稱為API,例如Unix的Berkeley Sockets及Windows的Winsock。 • 用戶端及伺服器應用程式間用來辨識雙方以及交換資訊的識別位址
12-2 TCP通訊協定的運作原理 12-2-1TCP的功能 • 連線導向式傳輸 • 先建立連線確認溝通方式再傳送資料。 • 訊息分段編號依序傳送接收重組 • 使用傳送視窗(Sending Window)依序傳送訊息。 • 資料錯誤檢查 • 封包加入錯誤檢查碼(Checksum)以確認收到正確的資料。 • 多工與雙向的訊息傳送。 • 流量控制 • 使用接收視窗(Receiving Window)控制資料流量避免漏失。 • 擁塞控制 • 運用擁擠視窗、臨界點、緩啟動及擁塞避免機制,避免因傳送過多資料造成網路擁擠。 • 複雜但可靠性高的傳送協定。
12-2 TCP通訊協定的運作原理 12-2-2 訊息切割分段 • 切割後打包傳送的資料-封包(Packet)。 • 將應用層傳下來的資料若過大則會切割分段。 • 切割成以位元組串流(Byte Stream)的單位。 • 加上表頭形成封包再編序號(Sequence no.)傳送,接收端再依序號接收重組上傳應用層。
12-2 TCP通訊協定的運作原理 12-2-3TCP的連線管理 • 傳輸控制區塊(Transmission Control Block, TCB) • 每一個連線有一個MSB,在建立連線時設置關閉連線時刪除。 • 儲存連線資料:Socket Pair、滑動視窗機制運作 • 三向交握3-way Handshaking建立連線 • 雙向傳輸:必須確認雙方都收到初始資訊 • 三個步驟達到同步:A端 → B端 → A端 → B端 • 初始資訊:IP位址、連接埠、起始序號(ISN)、接收視窗大小等 • 兩個單向的「結束/回應」關閉連線 • 單方向的結束傳輸不代表連線關閉 • 任一方都可以先提起關閉連線的需求 • 因為雙向傳輸,所以有較複雜的建立與關閉連線機制。
12-2 TCP通訊協定的運作原理 12-2-3TCP的連線管理 TCP以兩個雙向交握關閉連線 TCP協定的三向交握建立連線
12-2 TCP通訊協定的運作原理 12-2-4TCP的資料傳送機制 「傳送/確認」的封包傳輸方式 • 傳送端送出封包,接收端必須回覆確認。 • 確保資料完整與正確:未獲得確認則重送。 • 增加假表頭(Pseudo Header)連同TCP封包計算Checksum值,再填回”Checksum”欄位。 • 接收端丟棄檢查碼錯誤的封包,傳送端則重送。
12-2 TCP通訊協定的運作原理 12-2-4TCP的資料傳送機制 TCP協定的資料傳送/確認機制
12-2 TCP通訊協定的運作原理 12-2-4TCP的資料傳送機制
12-2 TCP通訊協定的運作原理 12-2-5TCP的滑動視窗 • 控制傳送及接收端封包送與收的容量。 • 雙向傳輸:兩端都有傳送視窗及接收視窗。 • 傳送及接收視窗功能 • 「邏輯上」用來控制封包傳送接收的虛擬物件。 • 傳送端確認接收端收到封包後才移出傳送視窗。 • 接收端確認依據順序收到封包後才送至緩衝區。 • 達到Pipelining傳送的功能。 • 調整接收視窗可用來控制封包的傳送流量。 • 傳送與接收視窗是以位元組為單位設定大小。
12-2 TCP通訊協定的運作原理 12-2-5TCP的滑動視窗
12-2 TCP通訊協定的運作原理 12-2-6 流量控制 • 由接收端控制資料的傳輸量。 • 彈性調整接收視窗大小 • 接收端視緩衝區的運作調整可以接受的封包數量。 • 傳送端配合調整傳送視窗,增減封包傳送量。 • 傳送視窗通常依據接收視窗設為相同大小。 • 視窗大小的影響 • 視窗調小資料流量變小:傳送效率變差。 *視窗為1時,傳送效率最差。 *視窗變為0時稱為關閉視窗(Close Window)。 • 視窗調大資料流量變大:使用較多資源。 *緩衝區大小須加大但耗用上傳至應用層的資源。
12-2 TCP通訊協定的運作原理 12-2-7 擁塞控制 • 主動降低資料傳送量避免造成網路擁擠。 • 擁塞控制的機制 • 緩啟動(Slow Start)傳送:指數漸增 • 擁塞避免(Congestion Avoidance):線性漸增 傳送端的擁擠視窗(Congestion Window) 臨界點(Threshold)的設定 發生回應逾時(Timeout)則重新開始
12-2 TCP通訊協定的運作原理 12-2-7 擁塞控制
12-2 TCP通訊協定的運作原理 12-2-8TCP封包的格式 • 定址使用:來源及目的地的連接埠編號。 • 滑動視窗機制:傳送封包序號、回應確認序號、接收視窗大小。 • 連線管理控制用:SYN、FIN、ACK、RST、PSH、UGR等6個控制位元、緊急指標 (配合UGR使用於優先傳送的場合)。 • 傳送的資料:TCP資料部份,為應用層的訊息 • 其他用途:如Checksum欄位以及選項欄位。
12-2 TCP通訊協定的運作原理 12-2-8TCP封包的格式
12-3 UDP通訊協定簡介 12-3-1UDP通訊協定的特性 • 以快速傳送訊息為主要目的且較簡單的協定 • UDP的特性 • 協定簡單:在傳輸層能快速處理 • 非連線導向式(Connectionless)傳輸:可用於廣播(Broadcast)或多點傳送(Multicast) 的環境 • 適用於無需可靠資料及需要快速傳送的場合 • 多使用於DNS查詢、DHCP、串流媒體(Streaming Media)、網路電話(VoIP)、線上遊戲等應用
12-3 UDP通訊協定簡介 12-3-1UDP通訊協定的特性 • UDP協定的改善 • 改善可能造成的網路擁擠 • RFC4340的DCCP (Datagram Congestion Control Protocol) • 增加擁塞管制機制 • 傳輸兩端的確認機制著重於網路流量而不在於資料內容 • 改善資料的可靠性 • 尚未成為標準的RUDP (Reliable UDP),但IETF已有規格草案。 • 增加的機制有:接收回應、封包遺失重傳,滑動視窗功能,擁塞管制、比即時串流資料還快的緩衝處理功能等。
12-3 UDP通訊協定簡介 12-3-2UDP封包的格式 • 來源及目的地連接埠是用來定址,而使用的是UDP連接埠。 • 表頭及資料總長度的計算單位為位元組,所以這個欄位的最小值為8,也就是只有UDP表頭而沒有UDP資料。 • 錯誤檢查碼