計算機網絡筆記25 運輸層(運輸層概述、用戶數據報協議UDP、傳輸控制協議TCP)

運輸層概述

運輸層的位置和作用

從通信和信息處理的角度看,運輸層向它上面的應用層提供通信服務,它屬於面向通信部分的最高層,同時也是用戶功能中的最低層

在這裏插入圖片描述
運輸層爲相互通信的應用進程提供了邏輯通信。
在這裏插入圖片描述
和網絡層的區別:
網絡層是爲主機之間提供邏輯通信, 而運輸層爲應用進程之間提供端到端的邏輯通信
在這裏插入圖片描述
• 在一臺主機中經常有多個應用進程同時分別和另一臺主機中的多個應用進程通信。
• 這表明運輸層有一個很重要的功能——複用(multiplexing)和分用 (demultiplexing)。
• 根據應用程序的不同需求,運輸層需要有兩種不同的運輸協議,即面向連接的 TCP無連接的 UDP

基於端口的分用和複用:
在這裏插入圖片描述

屏蔽作用:
運輸層向高層用戶屏蔽了下面網絡核心的細節(如網絡拓撲、所採用的路由選擇協議等),它使應用進程看見的就是好像在兩個運輸層實體之間有一條端到端的邏輯通信信道
在這裏插入圖片描述

兩種協議

TCP/IP 的運輸層有兩個主要協議:
• (1) 用戶數據報協議 UDP (User Datagram Protocol)
• (2) 傳輸控制協議 TCP (Transmission Control Protocol)
在這裏插入圖片描述
• 運輸層這條邏輯通信信道對上層的表現因運輸層使用的不同協議而有很大的差別。
TCP提供面向連接的服務,但不提供廣播或多播服務,儘管下面的網絡是不可靠的(只提供盡最大努力服務),但這種邏輯通信信道就相當於一條全雙工的可靠信道
• 當運輸層採用無連接的 UDP 協議時,這種邏輯通信信道是一條不可靠信道

使用兩種協議的各種應用層協議:
在這裏插入圖片描述

協議端口號

• 運行在計算機中的進程是用進程標識符來標誌的。
但運行在應用層的各種應用進程卻不應當讓計算機操作系統指派它的進程標識符。這是因爲在互聯網上使用的計算機的操作系統種類很多,而不同的操作系統又使用不同格式的進程標識符。
• 爲了使運行不同操作系統的計算機的應用進程能夠互相通信,就必須用統一的方法對TCP/IP 體系的應用進程進行標誌。
• 解決這個問題的方法就是在運輸層使用協議端口號 (protocol port number),或通常簡稱爲端口 (port)。
• 雖然通信的終點是應用進程,但我們可以把端口想象是通信的終點。
• 端口用一個 16 位端口號進行標誌。
• 端口號只具有本地意義,即端口號只是爲了標誌本計算機應用層中的各進程
• 在互聯網中,不同計算機的相同端口號是沒有聯繫的。
由此可見,兩個計算機中的進程要互相通信,不僅必須知道對方的 IP 地址,而且還要知道對方的端口號。

兩大類端口號:
(1) 服務器端使用的端口號
熟知端口,數值一般爲 0-1023。
登記端口號,數值爲 1024-49151,爲沒有熟知端口號的應用程序使用的。使用這個範圍的端口號必須在 IANA 登記,以防止重複。
(2) 客戶端使用的端口號
– 又稱爲短暫端口號,數值爲 49152-65535,留給客戶進程選擇暫時使用。
– 當服務器進程收到客戶進程的報文時,就知道了客戶進程所使用的動態端口號。通信結束後,這個端口號可供其他客戶進程以後使用。

常用的熟知端口號:
在這裏插入圖片描述

用戶數據報協議UDP

• User Datagram Protocol
• 協議傳送單元叫做 UDP 報文用戶數據報
• UDP 只在 IP 的數據報服務之上增加了很少一點的功能:
– 複用和分用的功能
– 差錯檢測的功能
• 雖然 UDP 用戶數據報只能提供不可靠的交付,但 UDP 在某些方面有其特殊的優點。適用於高實時性的場合,比如音視頻播放。

UDP主要特點

• UDP 是無連接的,即發送數據之前不需要建立連接,因此減少了開銷和發送數據之前的時延。
• UDP 使用盡最大努力交付,即不保證可靠交付,同時也不使用擁塞控制。
• UDP 是面向報文的。
• UDP 支持一對一、一對多、多對一和多對多的交互通信。
• UDP 的首部開銷小,只有 8 個字節。

面向報文的UDP:
• 發送方 UDP 對應用程序交下來的報文,在添加首部後就向下交付 IP 層。UDP 對應用層交下來的報文,既不合並,也不拆分,而是保留這些報文的邊界。
• 應用層交給 UDP 多長的報文,UDP 就照樣發送,即一次發送一個報文。
• 接收方 UDP 對 IP 層交上來的 UDP 用戶數據報,在去除首部後就原封不動地交付上層的應用進程,一次交付一個完整的報文。
• 應用程序必須選擇合適大小的報文。
在這裏插入圖片描述

UDP首部格式

用戶數據報 UDP 有兩個字段:數據字段首部字段。首部字段有 8 個字節,由 4 個字段組成,每個字段都是 2 個字節。
在這裏插入圖片描述
在計算檢驗和時,臨時把“僞首部”和 UDP 用戶數據報連接在一起。僞首部僅僅是爲了計算檢驗和。

傳輸控制協議TCP

TCP協議特點

• Transmission Control Protocol
• 協議傳送單元叫做 TCP 報文段
• TCP是面向連接的運輸層協議。
• 每一條 TCP 連接只能有兩個端點(endpoint),每一條 TCP 連接只能是點對點的(一對一)。
• 提供可靠傳輸
• TCP 提供全雙工通信,收發兩端都有緩存。
• 面向字節流

面向字節流的概念:
在這裏插入圖片描述

TCP的連接

• 每一條 TCP 連接有兩個端點。
• TCP 連接的端點不是主機,不是主機的IP 地址,不是應用進程,也不是運輸層的協議端口。
• TCP 連接的端點叫做套接字(socket)或插口
套接字 socket = (IP地址: 端口號)
每一條 TCP 連接唯一地被通信兩端的兩個端點(即兩個套接字)所確定。
TCP 連接 ::= {socket1, socket2} = {(IP1: port1), (IP2: port2)}

• TCP 連接是一條虛連接而不是一條真正的物理連接。
• TCP 對應用進程一次把多長的報文發送到TCP 的緩存中是不關心的。
• TCP 根據對方給出的窗口值當前網絡擁塞的程度來決定一個報文段應包含多少個字節(UDP 發送的報文長度是應用進程給出的)。
• TCP 可把太長的數據塊劃分短一些再傳送。TCP 也可等待積累有足夠多的字節後再構成報文段發送出去。

TCP報文格式

在這裏插入圖片描述
源端口和目的端口字段——各佔 2 字節。端口是運輸層與應用層的服務接口。運輸層的複用和分用功能都要通過端口才能實現。

序號字段——佔 4 字節。TCP 連接中傳送的數據流中的每一個字節都編上一個序號。序號字段的值則指的是本報文段所發送的數據的第一個字節的序號。

確認號字段——佔 4 字節,是期望收到對方的下一個報文段的數據的第一個字節的序號。

數據偏移(即首部長度)——佔 4 位,它指出 TCP 報文段的數據起始處距離TCP 報文段的起始處有多遠。“數據偏移”的單位是 32 位字(以 4 字節爲計算單位)。

保留字段——佔 6 位,保留爲今後使用,但目前應置爲 0。

緊急 URG —— 當 URG = 1 時,表明緊急指針字段有效。它告訴系統此報文段中有緊急數據,應儘快傳送(相當於高優先級的數據)。

確認 ACK —— 只有當 ACK = 1 時確認號字段纔有效。當 ACK = 0 時,確認號無效。

推送 PSH (PuSH) —— 接收 TCP 收到 PSH = 1 的報文段,就儘快地交付接收應用進程,而不再等到整個緩存都填滿了後再向上交付。

復位 RST (ReSeT) —— 當 RST =1 時,表明 TCP 連接中出現嚴重差錯(如由於主機崩潰或其他原因),必須釋放連接,然後再重新建立運輸連接。

同步 SYN —— 同步 SYN = 1 表示這是一個連接請求或連接接受報文。

終止 FIN (FINish) —— 用來釋放一個連接。FIN = 1 表明此報文段的發送端的數據已發送完畢,並要求釋放運輸連接。

窗口字段 —— 佔 2 字節,用來讓對方設置發送窗口的依據,單位爲字節。

檢驗和 —— 佔 2 字節。檢驗和字段檢驗的範圍包括首部和數據這兩部分。在計算檢驗和時,要在 TCP 報文段的前面加上 12 字節的僞首部。

緊急指針字段 —— 佔 16 位,指出在本報文段中緊急數據共有多少個字節(緊急數據放在本報文段數據的最前面)。

選項字段 —— 長度可變。TCP 最初只規定了一種選項,即最大報文段長度 MSS。MSS 告訴對方 TCP:“我的緩存所能接收的報文段的數據字段的最大長度是 MSS 個字節。”

填充字段 —— 這是爲了使整個首部長度是 4 字節的整數倍。

TCP的運輸連接管理

運輸連接三個階段:
• TCP 是面向連接的協議。
• 運輸連接就有三個階段,即:連接建立數據傳送連接釋放
• 連接建立過程中要解決以下三個問題:
– 要使每一方能夠確知對方的存在。
– 要允許雙方協商一些參數(如最大報文段長度,最大窗口大小,服務質量等)。
– 能夠對運輸實體資源(如緩存大小,連接表中的項目等)進行分配。

• TCP連接的建立採用客戶服務器方式
• 主動發起連接建立的應用進程叫做客戶(client)
• 被動等待連接建立的應用進程叫做服務器(server)。

TCP的連接建立

• TCP 建立連接的過程叫做握手
• 握手需要在客戶和服務器之間交換三個 TCP 報文段。稱之爲三報文握手
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

TCP的連接釋放

• TCP 連接釋放過程比較複雜。
• 數據傳輸結束後,通信的雙方都可釋放連接。
• TCP 連接釋放過程是四報文握手
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
MSL——Maximum Segment Lifetime,最長報文壽命
A 必須等待 2MSL 的時間?
• 第一,爲了保證 A 發送的最後一個 ACK 報文段能夠到達 B。
• 第二,再經過時間 2MSL,就可以使本連接持續的時間內所產生的所有報文段,都從網絡中消失。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章