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