?當用戶使用 TCP/IP 應用層協議的命令時,會啟動一系列事件。用戶的命令或消息通過本地機器上的 TCP/IP 協議棧,然后通過網絡介質到達接收者的協議。發送主機上每一層的協議將信息添加到原始數據中。
(資料圖)
當用戶的命令通過協議棧時,發送主機每一層的協議也與接收主機上的對等方交互。
數據封裝和 TCP/IP 協議棧數據包是通過網絡傳輸的信息的基本單元,至少由包含發送和接收主機地址的標頭和包含要傳輸的數據的主體組成。當數據包通過 TCP/IP 協議棧時,每一層的協議在基本報頭中添加或刪除字段。當發送主機上的協議將數據添加到數據包頭時,該過程稱為數據封裝。此外,每一層對修改后的數據包都有不同的術語,如下圖所示。
本文總結了數據包的生命周期,從用戶發出命令或發送消息到接收主機上的相應應用程序接收到數據包。
應用層——用戶發起通信當一個主機上的用戶發送消息或發出必須訪問遠程主機的命令時,數據包的歷史就開始了。與命令或消息相關的應用協議對數據包進行格式化,以便它可以由適當的傳輸層協議 TCP 或 UDP 處理。
假設用戶發出rlogin命令登錄遠程主機,該rlogin命令使用 TCP 傳輸層協議。TCP 期望以包含命令中信息的字節流的形式接收數據。因此,rlogin將此數據作為 TCP 流發送。
然而,并非所有應用層協議都使用 TCP。假設用戶想在遠程主機上掛載一個文件系統,從而啟動 NIS+ 應用層協議。NIS+ 使用 UDP 傳輸層協議。因此,包含命令的數據包必須以 UDP 期望的方式格式化。這種類型的數據包稱為消息。
傳輸層——數據封裝開始當數據到達傳輸層時,該層的協議啟動數據封裝過程。最終結果取決于 TCP 或 UDP 是否處理了信息。
(1) TCP 分段
TCP 通常被稱為“面向連接”的協議,因為它確保將數據成功傳送到接收主機。上圖顯示了 TCP 協議如何接收來自rlogin命令的流。TCP 將從應用層接收到的數據分成多個段,并在每個段上附加一個標頭。
段標頭包含發送方和接收方端口、段排序信息和稱為校驗和的數據字段。兩臺主機上的 TCP 協議使用校驗和數據來確定數據是否已正確傳輸。
(2) 建立 TCP 連接
TCP 使用段來確定接收主機是否準備好接收數據。當發送 TCP 想要建立連接時,它會向運行在接收主機上的對等 TCP 協議發送一個稱為 SYN 的段。接收 TCP 返回一個稱為 ACK 的段,以確認該段的成功接收。發送 TCP 發送另一個 ACK 段,然后繼續發送數據。這種控制信息的交換被稱為三次握手。
(3) UDP 數據包
UDP 是一種“無連接”協議。與 TCP 不同,它不檢查以確保數據到達接收主機。相反,UDP 接收從應用層接收到的消息并將其格式化為UDP 數據包。UDP 為每個數據包附加一個標頭,其中包含發送和接收主機端口、包含數據包長度的字段和校驗和。
發送 UDP 進程嘗試將數據包發送到接收主機上的對等 UDP 進程。應用層確定接收 UDP 進程是否確認接收到數據包。UDP 不需要接收通知。UDP 不使用三次握手。
互聯網層TCP 和 UDP 都將它們的段和數據包向下傳遞到 Internet 層,由 IP 協議處理它們。IP 通過將它們格式化為稱為 IP 數據報的單元來為交付做好準備。然后 IP 確定數據報的 IP 地址,以便將它們有效地傳遞給接收主機。
(1) IP數據報
除了 TCP 或 UDP 添加的信息之外,IP 還會將 IP 標頭附加到段或數據包的標頭。IP 頭中的信息包括發送和接收主機的 IP 地址、數據報長度和數據報序列順序。如果數據報超過網絡數據包允許的字節大小并且必須分段,則提供此信息。
數據鏈路層——成幀數據鏈路層協議(如 PPP)將 IP 數據報格式化為幀。他們附加第三個頁眉和一個頁腳來“框定”數據報。幀頭包括一個循環冗余校驗(CRC) 字段,用于在幀通過網絡介質傳輸時檢查錯誤。然后數據鏈路層將幀傳遞給物理層。
物理網絡層——為傳輸準備幀發送主機上的物理網絡層接收幀并將 IP 地址轉換為適合網絡介質的硬件地址。然后物理網絡層通過網絡介質將幀發送出去。
接收主機如何處理數據包當數據包到達接收主機時,它會按照與發送方相反的順序通過 TCP/IP 協議棧。上圖說明了這條路徑。此外,接收主機上的每個協議都會剝離發送主機上的對等方附加到數據包的標頭信息。這是發生的事情:
物理網絡層以幀的形式接收數據包。它計算數據包的 CRC,然后將幀發送到數據鏈路層。數據鏈路層驗證幀的 CRC 是否正確,并去除幀頭和 CRC。最后,數據鏈路協議將幀發送到 Internet 層。Internet 層讀取標頭中的信息以識別傳輸并確定它是否是片段。如果傳輸是分段的,IP 將這些分段重新組合成原始數據報。然后它剝離 IP 報頭并將數據報傳遞給傳輸層協議。傳輸層(TCP 和 UDP)讀取標頭以確定哪個應用層協議必須接收數據。然后 TCP 或 UDP 剝離其相關的標頭并將消息或流發送到接收應用程序。應用層接收消息并執行發送主機請求的操作。?X 關閉
X 關閉