傳輸層
- 傳輸層是OSI模型中第 4 層。
- 傳輸層的主要作用是直接向在不同主機上運行的應用程序進程提供通信服務。
- 傳輸層在不同主機上運行的應用程序進程之間提供邏輯通信。盡管不同主機上的應用程序進程沒有物理連接,但應用程序進程使用傳輸層提供的邏輯通信來相互發送消息。
- 傳輸層協議在終端系統中實現,但不在網絡路由器中實現。
- 計算機網絡向網絡應用程序提供多個協議。例如,TCP和UDP是兩種傳輸層協議,它們為網絡層提供不同的服務集。
- 所有傳輸層協議都提供多路復用/多路分解服務。它還提供其他服務,如可靠的數據傳輸,帶寬保證和延遲保證。
- 應用程序層中的每個應用程序都能夠使用TCP或UDP發送消息。應用程序使用這兩種協議之一進行通信。然后,TCP和UDP都將與互聯網層中的互聯網協議進行通信。應用程序可以讀取和寫入傳輸層。因此,我們可以說溝通是雙向的。
傳輸層提供的服務類似于數據鏈路層的服務。數據鏈路層在單個網絡內提供服務,而傳輸層通過由許多網絡組成的互聯網絡提供服務。數據鏈路層控制物理層,而傳輸層控制所有較低層。
傳輸層協議提供的服務可以分為五類:
- 端到端交付
- 尋址
- 可靠的交付
- 流量控制
- 多路復用
傳輸層將整個消息傳輸到目的地。因此,它確保從源到目的地的整個消息的端到端傳遞。
可靠的交付
傳輸層通過重傳丟失和損壞的數據包來提供可靠性服務。
可靠的交付有四個方面:
- 錯誤控制
- 序列控制
- 損失控制
- 復制控制
- 可靠性的主要作用是錯誤控制。實際上,沒有傳輸將是100%無差錯交付。因此,傳輸層協議被設計為提供無差錯傳輸。
- 數據鏈路層還提供錯誤處理機制,但它確保只有節點到節點的無錯誤傳遞。但是,節點到節點的可靠性并不能確保端到端的可靠性。
- 數據鏈路層檢查每個網絡之間的錯誤。如果在其中一個路由器中引入了錯誤,則數據鏈路層將不會捕獲此錯誤。它僅檢測在鏈接的開頭和結尾之間引入的那些錯誤。因此,傳輸層端到端地執行錯誤檢查,以確保數據包已正確到達。
- 可靠性的第二方面是在傳輸層實現的序列控制。
- 在發送端,傳輸層負責確保較低層可以使用從上層接收的分組。在接收端,它確保可以正確地重新組裝變速器的各個部分。
損失控制
損失控制是可靠性的第三個方面。傳輸層確保傳輸的所有片段到達目的地,而不是其中的一些。在發送端,傳輸的所有片段由傳輸層給出序列號。這些序列號允許接收器的傳輸層識別丟失的段。
復制控制
復制控制是可靠性的第四個方面。傳輸層保證沒有重復數據到達目的地。序列號用于識別丟失的數據包; 類似地,它允許接收器識別并丟棄重復的段。
流量控制
流量控制用于防止發送者壓倒接收器。如果接收器過載了太多數據,則接收器丟棄數據包并要求重傳數據包。這會增加網絡擁塞,從而降低系統性能。傳輸層負責流量控制。它使用滑動窗口協議,使數據傳輸更加高效,并控制數據流,使接收器不會變得不堪重負。滑動窗口協議是面向字節的而不是面向幀的。
多路復用
傳輸層使用多路復用來提高傳輸效率。
多路復用可以通過兩種方式進行:
- 向上多路復用:向上多路復用意味著多個傳輸層連接使用相同的網絡連接。為了更具成本效益,傳輸層沿同一路徑發送綁定到同一目的地的若干傳輸; 這是通過向上多路復用實現的。
尋址
- 根據分層模型,傳輸層與會話層的功能交互。許多協議將會話,表示和應用層協議組合到稱為應用層的單個層中。在這些情況下,傳遞到會話層意味著傳遞到應用程序層。由一臺機器上的應用程序生成的數據必須傳輸到另一臺機器上的正確應用程序。在這種情況下,傳輸層提供尋址。
- 傳輸層提供指定為站或端口的用戶地址。端口變量表示指定站的特定TS用戶,稱為傳輸服務訪問點(TSAP)。每個站只有一個傳輸實體。
- 傳輸層協議需要知道哪些上層協議正在通信。
傳輸層協議
- 傳輸層由兩個協議表示:TCP和UDP。
- 網絡層中的IP協議將數據報從源主機傳遞到目標主機。
- 如今,操作系統支持多用戶和多處理環境,執行程序稱為進程。當主機向其他主機發送消息時,表示源進程正在向目標進程發送進程。傳輸層協議定義了與各個端口的連接,稱為協議端口。
- IP協議是主機到主機協議,用于將數據包從源主機傳送到目標主機,而傳輸層協議是端口到端口協議,它們在IP協議的頂部工作,以便從源端發送數據包端口到IP服務,從IP服務到目標端口。
- 每個端口由正整數地址定義,為16位。
- UDP代表用戶數據報協議。
- UDP是一種簡單的協議,它提供非序列傳輸功能。
- UDP是一種無連接協議。
- 當可靠性和安全性不如速度和大小重要時,使用這種類型的協議。
- UDP是一種端到端傳輸級協議,它將傳輸級地址,校驗和錯誤控制和長度信息添加到來自上層的數據中。
- UDP協議產生的數據包稱為用戶數據報。
用戶數據報(UDP)格式
用戶數據報有一個16字節的標題,如下所示:
- 源端口地址:它定義已傳遞消息的應用程序進程的地址。源端口地址是16位地址。
- 目標端口地址:它定義將接收消息的應用程序進程的地址。目標端口地址是16位地址。
- 總長度:它定義用戶數據報的總長度(以字節為單位)。這是一個16位字段。
- 校驗和:校驗和是一個16位字段,用于錯誤檢測。
UDP協議的缺點
- UDP提供端到端傳輸所需的基本功能。
- 它不提供任何排序或重新排序功能,并且在報告錯誤時不指定損壞的數據包。
- UDP可以發現發生了錯誤,但是沒有指定丟失了哪個數據包,因為它不包含特定數據段的ID或序列號。
傳輸控制協議(TCP)
- TCP代表傳輸控制協議。
- 它為應用程序提供完整的傳輸層服務。
- 它是面向連接的協議,意味著在傳輸的兩端之間建立連接。為了創建連接,TCP在傳輸期間在發送器和接收器之間生成虛擬電路。
TCP協議的特點
流數據傳輸: TCP協議以連續的字節流形式傳輸數據。TCP以TCP段的形式對字節進行分組,然后將其傳遞到IP層以傳輸到目的地。TCP本身將數據分段并轉發到IP。
可靠性: TCP為發送的每個字節分配一個序列號,并期望來自接收TCP的肯定確認。如果在超時間隔內未收到ACK,則將數據重新發送到目的地。
接收TCP使用序列號重新組合段,如果它們無序到達或消除重復段。流控制:當接收TCP時,向發送方發送一個確認,指示它可以接收的字節數,而不會溢出其內部緩沖區。在ACK中以最高序列號的形式發送字節數,它可以毫無問題地接收。該機制也稱為窗口機制。
多路復用:多路復用是一種接受來自不同應用程序的數據并轉發到不同計算機上的不同應用程序的過程。在接收端,數據被轉發到正確的應用程序。此過程稱為多路分解。TCP使用稱為端口的邏輯信道將數據包傳輸到正確的應用程序。
邏輯連接:套接字,序列號和窗口大小的組合稱為邏輯連接。每個連接由發送和接收進程使用的一對套接字標識。
-
全雙工:
TCP提供全雙工服務,即同時在兩個方向上的數據流。要實現全雙工服務,每個TCP都應具有發送和接收緩沖區,以便這些段可以在兩個方向上流動。TCP是面向連接的協議。假設進程A想要從進程B發送和接收數據。發生以下步驟:
- 在兩個TCP之間建立連接。
- 數據在兩個方向上交換。
- 連接已終止。
TCP段格式
- 源端口地址:用于定義源計算機中應用程序的地址。這是一個16位字段。
- 目標端口地址:用于定義目標計算機中應用程序的地址。這是一個16位字段。
- 序列號:數據流分為兩個或多個TCP段。32位序列號字段表示原始數據流中數據的位置。
- 確認號碼: 32字段確認號碼確認來自其他通信設備的數據。如果ACK字段設置為1,則它指定接收器期望接收的序列號。
- 標頭長度(HLEN):它以32位字指定TCP標頭的大小。標題的最小大小為5個字,標題的最大大小為15個字。因此,TCP報頭的最大大小為60字節,TCP報頭的最小大小為20字節。
- 保留:它是一個6位字段,保留供將來使用。
- 控制位:控制字段的每個位單獨和獨立運行。控制位定義段的使用或用作其他字段的有效性檢查。
控制字段中共有六種類型的標志:
URG: URG字段表示段中的數據是緊急的。
ACK:當設置ACK字段時,它驗證確認號。
PSH: PSH字段用于通知發送方需要更高的吞吐量,因此如果可能,必須以更高的吞吐量推送數據。
RST:當序列號中出現任何混淆時,復位位用于復位TCP連接。
SYN: SYN字段用于同步三種類型的段中的序列號:連接請求,連接確認(設置ACK位)和確認確認。
-
FIN:
FIN字段用于通知接收TCP模塊發送方已完成發送數據。它用于三種類型的段中的連接終止:終止請求,終止確認和終止確認確認。
- 窗口大小:窗口是一個16位字段,用于定義窗口的大小。
- 校驗和:校驗和是一個用于錯誤檢測的16位字段。
- 緊急指針:如果URG標志設置為1,則該16位字段是序列號的偏移量,表示它是最后一個緊急數據字節。
- 選項和填充:它定義了將附加信息傳遞給接收器的可選字段。
TCP和UDP差異
比較的基礎 | TCP | UDP |
---|---|---|
定義 | TCP在傳輸數據之前建立虛擬電路。 | UDP將數據直接發送到目標計算機,而無需驗證接收器是否準備好接收。 |
連接類型 | 它是一種面向連接的協議 | 這是一個無連接協議 |
速度 | 慢 | 高 |
可靠性 | 這是一個可靠的協議。 | 這是一個不可靠的協議。 |
標題大小 | 20個字節 | 8個字節 |
承認 | 它等待數據確認,并能夠重新發送丟失的數據包。 | 它既不接受確認,也不重新傳輸損壞的幀。 |