網路理論知識1(四層、七層網路模型)
一、TCP/IP四層網路模型
TCP/IP分層模型(TCP/IP Layening Model)被稱作因特網分層模型(Internet Layering Model)、因特網參考模型(Internet Reference Model)。圖2表示了TCP/IP分層模型的四層。
┌────────────┐┌─┬─-┬─-┬─┬─-┬─┬─-┬─┬─-┬─┬─-┐
│ ││D│F│W│F│H│G│T│I│S│U│ │
│ ││N│I│H│T│T│O│E│R│M│S│其│
│第四層,應用層 ││S│N│O│P│T│P│L│C│T│E│ │
│ ││ │G│I│ │P│H│N│ │P│N│ │
│ ││ │E│S│ │ │E│E│ │ │E│它│
│ ││ │R│ │ │ │R│T│ │ │T│ │
└────────────┘└─┴─-┴─-┴─┴─-┴─┴─-┴─┴─-┴─┴─-┘
┌────────────┐┌─────────┬───────────┐
│第三層,傳輸層 ││ TCP │ UDP │
└────────────┘└─────────┴───────────┘
┌────────────┐┌─────┬─────┬─────────┐
│ ││ │ICMP│ │
│第二層,網間層 ││ └─────┘ │
│ ││ IP │
└────────────┘└─────────────────────┘
┌────────────┐┌──────────┬───────────┐
│第一層,網路介面 ││ARP/RARP│ 其它 │
└────────────┘└──────────┴───────────┘
圖2 TCP/IP四層參考模型
TCP/IP協議被組織成四個概念層,其中有三層對應於ISO參考模型中的相應層。ICP/IP協議族並不包含物理層和資料鏈路層,因此它不能獨立完成整個計算機網路系統的功能,必須與許多其他的協議協同工作。
TCP/IP分層模型的四個協議層分別完成以下的功能:
第一層 網路介面層
網路介面層包括用於協作IP資料在已有網路介質上傳輸的協議。
協議:ARP,RARP
第二層 網間層
網間層對應於OSI七層參考模型的網路層。負責資料的包裝、定址和路由。同時還包含網間控制報文協議(Internet Control Message Protocol,ICMP)用來提供網路診斷資訊。
協議:本層包含IP協議、RIP協議(Routing Information Protocol,路由資訊協議),ICMP協議。
第三層 傳輸層
傳輸層對應於OSI七層參考模型的傳輸層,它提供兩種端到端的通訊服務。
其中TCP協議(Transmission Control Protocol)提供可靠的資料流運輸服務,UDP協議(Use Datagram Protocol)提供不可靠的使用者資料報服務。
第四層 應用層
應用層對應於OSI七層參考模型的應用層和表達層。
因特網的應用層協議包括Finger、Whois、FTP(檔案傳輸協議)、Gopher、HTTP(超文字傳輸協議)、Telent(遠端終端協議)、SMTP(簡單郵件傳送協議)、IRC(因特網中繼會話)、NNTP(網路新聞傳輸協議)等。
二、協議詳解
ARP:
ARP:將32位的IP地址轉換為48位的實體地址。
IP地址是網路層的地址,連上網際網路的每一臺主機的每一個介面都會有一個IP地址,每臺主機的每個網絡卡均有唯一的實體地址,實體地址在生產時就已經定死,無法改變,而每個網絡卡的IP地址是可以改變的(例如連上不同的wifi,IP地址也會不同)。
為什麼有了IP地址還要有MAC地址,有MAC地址還要有IP地址?
首先要明白,物理網路是有許多結構的,不同的物理網路具有不同的mac地址格式,為了讓不同的網路進行通訊,那麼就使用統一的IP地址好了,
mac地址是資料鏈路層的地址,並且mac地址出現時間比IP地址要早,保留mac地址很可能是為了向後相容已有的網絡卡晶片,同時,並不是所有的網路都使用IP協議
ARP報文格式如下:
硬體型別(16位):指定實體地址的型別,1表示乙太網。
上層協議型別(16位):指定要將MAC地址對映成什麼協議的地址。0x0800表示IP地址。
MAC地址長度(8位):指定MAC地址的長度,單位是位元組。
協議地址長度(8位):指定協議地址的長度,單位為位元組。
操作型別:1表示ARP請求、2表示ARP迴應、3表示RARP請求,4表示RARP迴應。
接下來為傳送源的實體地址和協議地址(由於迴應時要知道傳送個誰,以此來封裝以太幀),目的實體地址和協議地址。
封裝ARP請求時,傳送源除了目的實體地址外都會填寫。
當路由器或主機選擇了某條路由時,首先會查詢ARP快取,若快取中有對應IP地址的實體地址,則以此封裝以太幀,否則會廣播(為二層廣播)ARP報文,每個主機接收到ARP請求報文後,會快取傳送源的IP——MAC對到ARP快取中,目的主機會發送ARP迴應(此時為單播),當傳送源接收到迴應時,會將目的方的IP——MAC對存放在ARP快取中。在點到點的物理連線中,是不會用到ARP報文的,在啟動時雙方都會通告對方自己的IP地址,此時物理層的封裝不需要MAC地址。windows上可以使用arp -a檢視本機的ARP快取。ARP快取中的每個條目的最大存活時間為20分鐘(從條目建立時開始計時)。
ARP代理:
之前說ARP請求是廣播的,我們知道路由器是分割廣播域的(這部分在CCNA總結中會講),如果我們要查詢的IP地址在外網怎麼辦?此時就需要ARP代理,當傳送源廣播ARP請求時,本地網路上不會有主機迴應(因為IP地址是外網的),此時路由器會將回應該請求,則傳送源誤認為路由器就是目的主機,會將報文全部轉發給它,在由路由器轉發報文,則該路由器就被稱為ARP代理。
免費ARP:
在主機開機配置時,會發送一個目的IP地址為自己IP地址的ARP請求報文,該報文稱為免費ARP,其作用如下:
1、讓主機確認本地網路上是否有與自己IP地址相同的主機,若有,則ICMP錯誤報文被返回。
2、若接收主機ARP快取中本身就有傳送源主機的IP——MAC對,則會更新,否則,會快取傳送源的IP——MAC對。
ICMP:
ICMP協議及報文格式
ICMP(Internet Control Message Protocol)因特網控制報文協議。它是IPv4協議族中的一個子協議,用於IP主機、路由器之間傳遞控制訊息。控制訊息是在網路通不通、主機是否可達、路由是否可用等網路本身的訊息。這些控制訊息雖然不傳輸使用者資料,但是對於使用者資料的傳遞起著重要的作用。
ICMP協議與ARP協議不同,ICMP靠IP協議來完成任務,所以ICMP報文中要封裝IP頭部。它與傳輸層協議(如TCP和UDP)的目的不同,一般不用來在端系統之間傳送資料,不被使用者網路程式直接使用,除了想Ping和Tracert這樣的診斷程式。
ICMP訊息型別
ICMP報告無法傳送的資料報的錯誤,並幫助對這些錯誤進行疑難解答。例如,如果IPv4不能講資料報傳送到目標主機,則路由器上的或目標主機上的ICMP會向主機發送一條“無法到達目標”訊息。下表為最常見的ICMP訊息。
ICMP訊息型別 | 用途說明 |
---|---|
回顯請求 | Ping工具通過傳送ICMP回顯訊息檢查特定節點的IPv4連線以排查網路問題。型別值為0 |
回顯應答 | 節點發送回顯答覆訊息響應ICMP回顯訊息。型別值為8 |
重定向 | 路由器傳送“重定向”訊息,告訴傳送主機到目標IPv4地址更好的路由。型別值為5 |
源抑制 | 路由器傳送“源結束”訊息,告訴傳送主機它們的IPv4資料報將被丟棄——因為路由器上發生了擁塞。於是,傳送主機將以較低的頻度傳送資料報。型別值為4 |
超時 | 這個訊息有兩種用途。第一,當超過IP生存期時向傳送系統發出錯誤資訊。第二,如果分段的IP資料報沒有在某種期限內重新組合,這個訊息將通知傳送系統。型別值為11 |
無法到達目標 | 路由器和目標主機發送“無法到達目標”訊息,通知傳送主機它們的資料無法傳送。型別值為3 |
其中無法到達目標訊息中可以細分為一下幾項
無法到達目標訊息 | 說明 |
---|---|
不能訪問主機 | 路由器找不到目標的IPv4地址的路由時傳送“不能訪問主機”訊息 |
無法訪問協議 | 目標IPv4節點無法將IPv4報頭中的“協議”欄位與當前使用的IPv4客戶端協議相匹配時會發送“無法訪問協議”訊息 |
無法訪問埠 | IPv4節點在UDP報頭中的“目標埠”欄位與使用該UDP埠的應用程式相匹配時傳送“無法訪問埠”訊息 |
需要分段但設定了DF | 當必須分段但傳送節點在IPv4報頭中設定了“不分段(DF)”標誌時,IPv4路由器會發送“需要分段但設定了DF”訊息 |
ICMP協議只是試圖報告錯誤,並對特定的情況提供反饋,但最終並沒有使IPv4成為一個可靠的協議。ICMP訊息是以未確認的IPv4資料報傳送的,它們自己也不可靠。
ICMP報頭格式
ICMP報文包含在IP資料報中,IP報頭在ICMP報文的最前面。一個ICMP報文包括IP報頭(至少20位元組)、ICMP報頭(至少八位元組)和ICMP報文(屬於ICMP報文的資料部分)。當IP報頭中的協議欄位值為1時,就說明這是一個ICMP報文。ICMP報頭如下圖所示。
各欄位說明
- 型別:佔一位元組,標識ICMP報文的型別,目前已定義了14種,從型別值來看ICMP報文可以分為兩大類。第一類是取值為1~127的差錯報文,第2類是取值128以上的資訊報文。
- 程式碼:佔一位元組,標識對應ICMP報文的程式碼。它與型別欄位一起共同標識了ICMP報文的詳細型別。
- 校驗和:這是對包括ICMP報文資料部分在內的整個ICMP資料報的校驗和,以檢驗報文在傳輸過程中是否出現了差錯。其計算方法與在我們介紹IP報頭中的校驗和計算方法是一樣的。
- 標識:佔兩位元組,用於標識本ICMP程序,但僅適用於回顯請求和應答ICMP報文,對於目標不可達ICMP報文和超時ICMP報文等,該欄位的值為0。
常見的ICMP報文
相應請求
我們日常進行的Ping操作中就包括了相應請求(型別欄位值為8)和應答(型別欄位值為0)ICMP報文。一臺主機向一個節點發送一個型別欄位值為8的ICMP報文,如果途中沒有異常(如果沒有被路由丟棄,目標不迴應ICMP或者傳輸失敗),則目標返回型別欄位值為0的ICMP報文,說明這臺主機存在。
目標不可達,源抑制和超時報文
這三種報文的格式是一樣的。目標不可到達報文(型別值為3)在路由器或者主機不能傳遞資料時使用。例如我們要連線對方一個不存在的系統埠(埠號小於1024)時,將返回型別欄位值3、程式碼欄位值為3的ICMP報文。常見的不可到達型別還有網路不可到達(程式碼欄位值為0)、主機不可達到(程式碼欄位值為1)、協議不可到達(程式碼欄位值為2)等等。
源抑制報文(型別欄位值為4,程式碼欄位值為0)則充當一個控制流量的角色,通知主機減少資料報流量。由於ICMP沒有回覆傳輸的報文,所以只要停止該報文,主機就會逐漸恢復傳輸速率。最後,無連線方式網路的問題就是資料報回丟失,或者長時間在網路遊蕩而找不到目標,或者擁塞導致主機在規定的時間內無法重組資料報分段,這時就要觸發ICMP超時報文的產生。
超時報文(型別欄位值為11)的程式碼域有兩種取值:程式碼欄位值為0表示傳輸超時,程式碼欄位值為1表示分段重組超時。
時間戳請求
時間戳請求報文(型別值欄位13)和時間戳應答報文(型別值欄位14)用於測試兩臺主機之間資料報來回一次的傳輸時間。傳輸時,主機填充原始時間戳,接受方收到請求後填充接受時間戳後以型別值欄位14的報文格式返回,傳送方計算這個時間差。有些系統不響應這種報文。
三、OSI七層網路模型
在網路歷史的早期,國際標準化組織(ISO)和國際電報電話諮詢委員會(CCITT)共同出版了開放系統互聯的七層參考模型。一臺計算機作業系統中的網路過程包括從應用請求(在協議棧的頂部)到網路介質(底部) ,OSI參考模型把功能分成七個分立的層次。圖1表示了OSI分層模型。
┌───────┐
│ 應用層 │←第七層
├───────┤
│ 表示層 │
├───────┤
│ 會話層 │
├───────┤
│ 傳輸層 │
├───────┤
│ 網路層 │
├───────┤
│資料鏈路層│
├───────┤
│ 物理層 │←第一層
└───────┘
圖1 OSI七層參考模型
第一層 物理層
作用:負責最後將資訊編碼成電流脈衝或其它訊號用於網上傳輸。它由計算機和網路介質之間的實際介面組成,可定義電氣訊號、符號、線的狀態和時鐘要求、資料編碼和資料傳輸用的聯結器。所有比物理層高的層都通過事先定義好的介面而與它通話。
協議:如最常用的RS-232規範、10BASE-T的曼徹斯特編碼以及RJ-45就屬於第一層。
第二層 資料鏈路層
作用:資料鏈路層通過物理網路鏈路提供可靠的資料傳輸。
協議:ATM,FDDI等。
第三層 網路層
作用:這層對端到端的包傳輸進行定義,他定義了能夠標識所有結點的邏輯地址,還定義了路由實現的方式和學習的方式。為了適應最大傳輸單元長度小於包長度的傳輸介質,網路層還定義瞭如何將一個包分解成更小的包的分段方法。
協議:IP,IPX等
第四層 傳輸層
作用:傳輸層向高層提供可靠的端到端的網路資料流服務。傳輸層的功能一般包括流控、多路傳輸、虛電路管理及差錯校驗和恢復。流控管理裝置之間的資料傳輸,確保傳輸裝置不傳送比接收裝置處理能力大的資料;多路傳輸使得多個應用程式的資料可以傳輸到一個物理鏈路上;虛電路由傳輸層建立、維護和終止;差錯校驗包括為檢測傳輸錯誤而建立的各種不同結構;而差錯恢復包括所採取的行動(如請求資料重發),以便解決發生的任何錯誤。
協議:TCP,UDP,SPX。
第五層 會話層
作用:會話層建立、管理和終止表示層與實體之間的通訊會話。通訊會話包括髮生在不同網路應用層之間的服務請求和服務應答,這些請求與應答通過會話層的協議實現。它還包括建立檢查點,使通訊發生中斷的時候可以返回到以前的一個狀態。
協議:RPC,SQL等
第六層 表示層
作用:這一層的主要功能是定義資料格式及加密。
協議:FTP,加密
第七層 應用層
作用:應用層是最接近終端使用者的OSI層,這就意味著OSI應用層與使用者之間是通過應用軟體直接相互作用的。注意,應用層並非由計算機上執行的實際應用軟體組成,而是由嚮應用程式提供訪問網路資源的API(Application Program Interface,應用程式介面)組成,這類應用軟體程式超出了OSI模型的範疇。應用層的功能一般包括標識通訊夥伴、定義資源的可用性和同步通訊。因為可能丟失通訊夥伴,應用層必須為傳輸資料的應用子程式定義通訊夥伴的標識和可用性。定義資源可用性時,應用層為了請求通訊而必須判定是否有足夠的網路資源。在同步通訊中,所有應用程式之間的通訊都需要應用層的協同操作。
協議:telnet,HTTP,FTP,WWW,NFS,SMTP等。
OSI分層的優點:
(1)人們可以很容易的討論和學習協議的規範細節。
(2)層間的標準介面方便了工程模組化。
(3)建立了一個更好的互連環境。
(4)降低了複雜度,使程式更容易修改,產品開發的速度更快。
(5)每層利用緊鄰的下層服務,更容易記住個層的功能。