TCP/IP協議同ISO/OSI模型同樣,也能夠安排成棧形式。但這個棧不一樣於ISO/OSI版本,比ISO/OSI棧少,因此又稱之爲短棧。另外,須要知道的是:TCP/IP協議棧只是許多支持ISO/OSI分層模型協議棧的一種,是一個具體的協議棧。編程
對於TCP/IP協議棧劃分爲幾層更合適,多年來專家們一直未達成共識,大部分對TCP/IP協議棧的描述都假定它佔據了協議結構的4到5個功能層。下面咱們對這兩種主流的分層方法分別進行描述。網絡
1 基於4層的TCP/IP協議棧基本描述spa
基於4層的TCP/IP協議棧最具說服力的是:這一觀點是由TCP/IP原始標準的創立者——美國國防部提出的,它與ISO/OSI參考模型的對應關係以下圖:設計
圖1 TCP/IP協議棧層次結構與ISO/OSI參考模型的對應關係接口
如圖1所示,TCP/IP協議棧從低層開始,依次爲網絡存取層、網絡互連層、傳輸層和應用層,具體描述以下:路由
1.1 網絡存取層(Network Access Layer)網絡編程
網絡存取層(又稱網絡層),位於TCP/IP協議棧的最低層,該層中的協議提供了數據傳送的方法,使得系統能夠經過鏈接的網絡將數據傳送到其它設備,並定義瞭如何利用網絡來傳送IP數據報。它基本上包括了ISO/OSI模型中的數據鏈路層和物理層的全部功能。TCP/IP網絡存取層定義了網絡傳送IP數據報的方式(即流與分組),使得系統可以把數據傳送給與網絡直接相連的設備。io
網絡存取層的協議與較高層協議不同,它必須知道物理網絡的各類細節,以便準確地格式化傳輸的數據,使其遵照網絡規定。所以,網絡存取層的協議種類繁多,每個協議都對應一種物理網絡標準。這些協議經常由設備驅動程序和相關的程序結合而成,其內含的API除將IP數據封裝成能在網絡中傳送的單元——幀外,還能將IP地址轉換成爲網絡使用的物理地址。典型的協議實例有RFC 826(地址轉換協議 ARP)、RFC 894(以太網上IP數據報傳輸標準)等。class
1.2 網絡互連層 (Internet Layer)登錄
網絡互連層(又稱網際層)位於網絡存取層之上,由互連網協議(IP)、互連網控制報文協議(ICMP)和互連網組管理協議(IGMP)等協議組成。IP是TCP/IP的核心,也是網絡互連層中最重要的協議,它提供基本的分組傳送服務,是構建TCP/IP網絡的基礎。由於,不管是IP上層仍是IP下層的協議,也無論數據是輸入仍是輸出,目的地在何方,它們都使用IP來傳遞數據。歸納起來,IP主要完成如下任務:
IP是一個「無鏈接協議」,它在傳輸數據以前不交換控制信息來創建端到端的鏈接,並且還要依靠其它層的協議提供錯誤檢測和錯誤恢復。但這並不能說明IP協議是不可信賴的,事實上,它能夠正確的將數據傳送到已鏈接的網絡,只是它並不能檢驗數據是否被正確地接收。
1.3 傳輸層( Transport Layer)
傳輸層也稱主機到主機的傳輸層,位於TCP/IP棧的第3層,它爲應用層提供可靠的或不可靠的端到端服務。TCP(傳輸控制協議)和UDP(用戶數據報協議)是傳輸層中兩個最重要的協議。它們都爲應用層和網絡互連層傳送數據,兩者的區別在於:TCP是一種可靠的、面向鏈接的、字節流協議,它利用端到端錯誤檢測與糾正功能提供可靠的數據傳輸服務,由於它能驗證數據在網絡上是否以合適的序列正確地傳輸;而UDP是一個不可靠的無鏈接數據報協議,就像IP同樣,它能爲應用程序提供低開銷的無鏈接數據報傳輸服務。
總之,TCP的優點在於可靠,但開銷大;而UDP比較適合於傳輸的數據量少及使用「查詢——響應」方式的應用程序的服務。
1.4 應用層(Application Layer)
應用層位於TCP/IP協議棧的頂層,它爲用戶提供各類網絡服務,如文件傳輸、遠程登陸、電子郵件等。同時,應用層包含與具體應用程序相關的全部細節。
對於網絡軟件工程師而言,你在應用層的工做是將信息傳到協議棧的下一合適層。協議棧的每一層要完成各自的功能。也就是說,TCP/IP協議將共同工做,完成地址轉換、尋址和數據傳輸工做。爲了和協議棧上的協議通訊,必須知道有哪些協議可用,並知道它們在協議棧中的位置和功能。正常狀況下應用程序將和傳輸協議的某一個協議(TCP或UDP)進行通訊,或不使用傳輸層服務,直接與網絡互連層的IP打交道(如外部網關協議 EGP)。
2 基於5層的TCP/IP協議棧基本描述
相對於ISO/OSI模型,基於5層的TCP/IP協議比基於4層的TCP/IP協議更容易理解,具體的分層方案以下圖2:
圖2 TCP/IP協議棧層次結構與ISO/OSI參考模型的對應關係
比較圖2和圖1能夠看出,從頂層向下三層(應用層、傳輸層和網絡互連層)對於基於5層的TCP/IP和基於4層的TCP/IP其功能都是同樣的,這裏不在贅述。除此以外,基於5層的TCP/IP在低層比基於4層的TCP/IP分層更詳細,即用物理層和鏈路層兩層來表示上面講到的網絡存取層。
2.1 物理層
TCP/IP協議棧的物理層與ISO/OSI模型的物理層相同——它包括攜帶網絡數據的傳輸媒體介質,這種介質一般是雙絞線、同軸電纜或標準串口線等,網絡設計人員必須知道網絡介質的傳輸特性。
2.2 鏈路層
鏈路層包括一個硬件接口和兩個協議模塊:地址解析協議(ARP)和反向地址解析協議(RARP)。鏈路層處理物理層和網絡互連層的數據交換,並向網絡互連層隱藏物理層的執行細節。當鏈路層完成其工做時,網絡互連層的協議不關心網絡是使用以太網技術仍是令牌環技術,網絡互連層只是簡單地將數據傳給鏈路層,而後由鏈路層處理全部進一步的數據傳輸。
綜上所述,不論採用哪一種分層方式,其核心和功能是同樣的,特別是在應用層。應用層的初級網絡用戶對分層幾乎不感興趣,但要進行網絡編程的人必須清楚這一點:當用戶啓動了某個應用層服務以後,該應用要首先創建一個到某特定機器的鏈接,隨後告訴目的機器本次鏈接的操做意圖,並控制整個操做過程。在源計算機系統中,應用層將要發送的信息交給服務層的TCP(或UDP),TCP經過增長TCP協議所規定的報頭來確保信息正確地傳輸到目的地。而後,TCP把包括目的地址在內的報頭和用戶數據交給網絡互連層的IP,IP負責爲信息選擇路由。因爲 TCP和IP處理與網絡有關的細節,因此應用層協議能夠將一個網絡鏈接當作一個簡單的字節流,而沒必要描述與通訊有關的任何細節。
對網絡通訊軟件設計者而言,一個網絡鏈接可由兩對元素徹底刻畫:源主機的IP地址和應用程序端口號;目的主機的IP地址和應用程序端口號。爲了保證使用TCP/IP 協議的網絡中兩臺主機的正常鏈接,應禁止使用相同的IP地址和端口號,特別是IP地址。