TCP/IP 協議體系結構
TCP/IP 協議映射到稱為 DARPA 模型的四概念模型,該模型以最初開發 TCP/IP 的美國政府機構命名。DARPA 模型的四個層是:應用程序、傳輸、互聯網和網絡接口。DARPA 模型中的每一層對應于七層開放系統互連 (OSI) 模型的一層或多層。
網絡接口層
處理在網絡介質上放置 TCP/IP 數據包以及從網絡介質接收 TCP/IP 數據包。
TCP/IP 被設計為獨立于網絡訪問方法、幀格式和介質。
通過這種方式,TCP/IP 可用于連接不同的網絡類型。其中包括局域網(LAN) 介質(如以太網和令牌環)和 WAN 技術(如 X.25 和幀中繼)。獨立于任何特定的網絡介質允許 TCP/IP 適應異步傳輸模式 (ATM) 等新介質。
網絡接口層包含 OSI 模型的數據鏈路和物理層。
TIPS:請注意,Internet 層不利用網絡接口層中可能存在的排序和確認服務。假設網絡接口層不可靠,通過會話建立以及數據包的排序和確認進行可靠通信是傳輸層的功能。
互聯網層
互聯網層處理尋址、打包和路由功能。互聯網層的核心協議是IP、ARP、ICMP、IGMP。
-
互聯網協議 (IP) 是一種可路由協議,用于處理數據包的 IP 尋址、路由以及分段和重組。
-
地址解析協議 (ARP) 處理將互聯網層地址解析為網絡接口層地址,例如硬件地址。
-
互聯網控制消息協議 (ICMP) 處理提供診斷功能和報告由于 IP 數據包傳遞失敗而導致的錯誤。
-
互聯網組管理協議 (IGMP) 處理 IP 多播組成員身份的管理
互聯網層類似于 OSI 模型的網絡層。
傳輸層
傳輸層(也稱為主機到主機傳輸層)負責為應用程序層提供會話和數據報通信服務。傳輸層的核心協議是傳輸控制協議 (TCP) 和用戶數據報協議 (UDP)。
-
TCP 提供一對一、面向連接的可靠通信服務。TCP 處理 TCP 連接的建立、發送數據包的排序和確認,以及傳輸過程中丟失的數據包的恢復。
-
UDP 提供一對一或一對多、無連接、不可靠的通信服務。當要傳輸的數據量較小(例如適合單個數據包的數據)、不希望建立 TCP 連接的開銷或應用程序或上層協議提供可靠傳遞時,將使用 UDP。
TCP/IP 傳輸層包含 OSI 傳輸層的職責。
應用層
應用程序層允許應用程序訪問其他層的服務,并定義應用程序用于交換數據的協議。
廣為人知的應用層協議是用于交換用戶信息的協議:
-
超文本傳輸協議 (HTTP) 用于傳輸構成萬維網網頁的文件。
-
文件傳輸協議 (FTP) 用于交互式文件傳輸。
-
簡單郵件傳輸協議 (SMTP) 用于郵件和附件的傳輸。
-
Telnet 是一種終端仿真協議,用于遠程登錄到網絡主機。
此外,以下應用層協議有助于簡化 TCP/IP 網絡的使用和管理:
-
域名系統 (DNS) 用于將主機名解析為 IP 地址。
-
路由信息協議 (RIP) 是路由器用于在 IP 互聯網絡上交換路由信息的路由協議。
-
簡單網絡管理協議 (SNMP) 在網絡管理控制臺和網絡設備(路由器、網橋、智能集線器)之間用于收集和交換網絡管理信息。
TCP/IP 應用程序的應用程序層接口示例包括 Windows 套接字和 NetBIOS。Windows Sockets 在 Windows Server 2003 下提供標準應用程序編程接口 (API)。NetBIOS 是用于訪問協議服務(如會話、數據報和名稱解析)的行業標準接口。
TCP/IP 應用程序層包含 OSI 會話層、表示層和應用程序層的職責。
TCP/IP 核心協議
安裝在網絡操作系統中的 TCP/IP 協議組件是一系列互連的協議,稱為 TCP/IP 的核心協議。
TCP/IP 協議套件中的所有其他應用程序和其他協議都依賴于以下協議提供的基本服務:IP、ARP、ICMP、IGMP、TCP 和 UDP。
知識產權
IP 是一種無連接、不可靠的數據報協議,主要負責在主機之間尋址和路由數據包。無連接意味著在交換數據之前未建立會話。不可靠意味著不能保證交貨。IP 始終“盡最大努力”嘗試傳遞數據包。IP 數據包可能會丟失、不按順序傳遞、重復或延遲。IP 不會嘗試從這些類型的錯誤中恢復。確認傳送的數據包和恢復丟失的數據包是更高層協議(如 TCP)的責任。IP 在 RFC 791 中定義。
IP 數據包由 IP 標頭和 IP 有效負載組成。下表描述了 IP 標頭中的關鍵字段。
IP 報頭中的關鍵字段
IP 標頭字段 | 功能 |
---|---|
源地址 |
IP 數據報的原始源的 IP 地址。 |
目的地地址 |
IP 數據報的最終目標的 IP 地址。 |
鑒定 |
用于標識特定 IP 數據報,并在發生分段時標識特定 IP 數據報的所有片段。 |
協議 |
通知目標主機上的 IP 是否將數據包傳遞到 TCP、UDP、ICMP 或其他協議。 |
校驗和 |
用于驗證 IP 報頭的位級完整性的簡單數學計算。 |
生存時間 (TTL) |
指定在被路由器丟棄數據報之前允許傳輸的網段數。TTL 由發送主機設置,用于防止數據包在 IP 互聯網絡上無休止地循環。轉發 IP 數據包時,路由器需要將 TTL 至少減少 1。 |
碎片化和重組
如果路由器收到的 IP 數據包對于數據包轉發到的網絡來說太大,IP 會將原始數據包分成適合下游網絡的較小數據包。當數據包到達其最終目標時,目標主機上的 IP 會將片段重新組裝成原始有效負載。此過程稱為分段和重組。碎片可能發生在混合使用網絡媒體(如以太網和令牌環)的環境中。
碎片和重組的工作方式如下:
-
當源發送 IP 數據包時,它會在“標識”字段中放置一個唯一值。
-
路由器接收 IP 數據包。IP 路由器注意到數據包要轉發到的網絡的最大傳輸單元 (MTU) 小于 IP 數據包的大小。
-
IP 將原始 IP 有效負載劃分為適合下一個網絡的片段。每個片段都使用其自己的 IP 標頭發送,其中包含:
-
標識屬于一起的所有片段的原始標識字段。
-
更多片段標志指示其他片段緊隨其后。“更多片段”標志未設置在最后一個片段上,因為沒有其他片段跟隨它。
-
片段偏移字段指示片段相對于原始 IP 有效負載的位置。
-
當遠程主機上的 IP 接收到片段時,“標識”字段會將它們標識為屬于一起。然后,使用片段偏移字段將片段重新組裝到原始 IP 有效負載中。
ARP
在共享訪問、基于廣播的網絡媒體(如以太網或令牌環)上發送 IP 數據包時,必須解析與轉發 IP 地址對應的媒體訪問控制 (MAC) 地址。ARP 使用 MAC 級廣播將已知的轉發或下一躍點 IP 地址解析為其 MAC 地址。ARP 在 RFC 826 中定義。
ICMP
互聯網控制消息協議 (ICMP) 為無法傳遞的數據包提供故障排除功能和錯誤報告。例如,如果 IP 無法將數據包傳遞到目標主機,ICMP 將向源主機發送“目標不可達”消息。下表顯示了最常見的 ICMP 消息。
常見 ICMP 消息
ICMP 消息 | 功能 |
---|---|
回顯請求 |
用于檢查與所需主機的 IP 連接的故障排除消息。ping 實用程序發送 ICMP 回顯請求消息。 |
回聲回復 |
對 ICMP 回顯請求的響應。 |
重定向 |
由路由器發送,用于通知發送主機到目標 IP 地址的更好路由。 |
源淬火 |
由路由器發送,用于通知發送主機由于路由器擁塞而丟棄其 IP 數據報。然后,發送主機會降低其傳輸速率。源淬滅是一種選擇性 ICMP 消息,通常不實現。 |
目的地無法到達 |
由路由器或目標主機發送,以通知發送主機無法傳送數據報。 |
下表描述了最常見的 ICMP 目標無法訪問的 ICMP 消息。
常見的 ICMP 目標無法訪問消息
目標無法到達消息 | 描述 |
---|---|
主機無法訪問 |
當找不到到目標 IP 地址的路由時由 IP 路由器發送。 |
協議無法訪問 |
當 IP 標頭中的協議字段無法與當前加載的 IP 客戶端協議匹配時,由目標 IP 節點發送。 |
端口無法訪問 |
當 UDP 標頭中的目標端口無法與使用該端口的進程匹配時,由目標 IP 節點發送。 |
需要碎片和 DF 集 |
在必須發生分段時由 IP 路由器發送,但由于源節點在 IP 標頭中設置了不分段 (DF)?標志,因此不允許發送。 |
源路由失敗 |
當使用源路由信息(存儲為源路由選項標頭)傳遞 IP 數據包失敗時,由 IP 路由器發送。 |
ICMP 不會使 IP 成為可靠的協議。ICMP 嘗試報告錯誤并提供有關特定條件的反饋。ICMP 報文作為未確認的 IP 數據報傳輸,并且本身不可靠。ICMP 在 RFC 792 中定義。
IGMP
互聯網組管理協議 (IGMP) 是管理網段上 IP 多播組中的主機成員身份的協議。IP 多播組(也稱為主機組)是一組主機,用于偵聽發往特定 IP 多播地址的 IP 流量。IP 組播流量發送到單個 MAC 地址,但由多個 IP 主機處理。特定主機偵聽特定 IP 組播地址,并接收到該 IP 地址的所有數據包。
組播組成員是員工,路由器是領導,員工發送離開或者加入報文來申請加入或離開組播組,領導通過發送特定組查詢或通用組查詢報文了解各組播組成員在線情況,收到查詢的員工通過report回復自己的狀態。當某個組員工離開時,路由器會向其所在組發送特定組查詢來確認此組是否還有別的員工在線,當查詢超時未收到回復時,則在傳發表中刪除此組信息。領導為了掌控全局,還會周期性向所在網段內所有用戶發送通用組查詢,了解組成員在線七年概況,不同的用戶響應不同。非組播用戶不答復,組播用戶在定時器超時時,如果所在組沒有其他用戶響應,則向路由器發送響應報文;否則,則抑制自己的報文
以下是 IP 多播的一些其他方面:
-
主機組成員身份是動態的,主機可以隨時加入和離開組。
-
主機組可以是任意大小。
-
主機組的成員可以跨多個網絡跨越 IP 路由器。這種情況需要 IP 路由器上的 IP 多播支持,并且主機能夠向本地路由器注冊其組成員身份。主機注冊是使用 IGMP 完成的。
-
主機可以將流量發送到 IP 多播地址,而無需屬于相應的主機組。
要使主機接收 IP 多播,應用程序必須通知 IP 它將在指定的 IP 多播地址接收多播。如果網絡技術支持基于硬件的多播,則會告知網絡接口傳遞特定 IP 多播地址的數據包。在以太網的情況下,網絡適配器被編程為響應對應于指定 IP 組播地址的組播 MAC 地址。
主機支持以下級別之一的 IP 多播:
-
級別 0:不支持發送或接收 IP 組播流量。
-
級別 1:支持發送但不接收 IP 組播流量。
-
級別 2:支持發送和接收 IP 組播流量。Windows Server 2003、Windows 2000、Microsoft Windows NT 3.5 及更高版本以及 TCP/IP 支持 2 級 IP 多播。
注冊主機組信息的協議是 IGMP,支持級別 2 IP 多播的所有主機都需要該協議。IGMP 數據包使用 IP 標頭發送。
IGMP 消息采用三種形式。
-
主機成員資格報告。當主機加入主機組時,它會向所有主機 IP 多播地址 (224.0.0.1) 或指定的 IP 多播地址發送 IGMP 主機成員身份報告消息,通過引用 IP 多播地址聲明其在特定主機組中的成員身份。主機還可以指定需要多播流量的特定源。
-
主機成員身份查詢。當路由器輪詢網絡以確保存在特定主機組的成員時,它會向所有主機 IP 組播地址發送 IGMP 主機成員身份查詢消息。如果在多次輪詢后未收到對輪詢的響應,則路由器假定該網絡在該組中沒有成員身份,并停止將該組播組信息通告給其他路由器。
-
集體休假。當主機不再有興趣接收發送到特定 IP 組播地址的組播流量,并且發送了最后一條 IGMP 主機成員身份報告消息以響應 IGMP 主機成員身份查詢時,它會向特定 IP 組播地址發送 IGMP 組保留消息。本地路由器驗證發送 IGMP 組保留消息的主機是否是該子網上該組播地址的最后一個組成員。如果在多次輪詢后未收到對輪詢的響應,則路由器假定該子網在該組中沒有成員身份,并停止將該組播組信息通告給其他路由器。
為了使 IP 多播跨越互聯網絡的路由器,路由器使用組播路由協議來傳達主機組信息,以便支持組播轉發的每個路由器都知道哪些網絡包含哪些主機組的成員。IGMP 在 RFC 1112 和 2236 中定義。
技術合作計劃(TCP
TCP 是一種可靠的、面向連接的交付服務。數據分段傳輸。面向連接意味著必須先建立連接,然后主機才能交換數據。通過為傳輸的每個段分配序列號來實現可靠性。確認用于驗證是否已收到數據。對于發送的每個分段,接收主機必須在指定的時間段內返回接收字節的確認 (ACK)。如果未收到 ACK,則會重新傳輸數據。TCP 在 RFC 793 中定義。