TCP/IP四層參考模型 - 網絡層

承接上篇說是的鏈路層,便產生幾個問題:算法


1. 發送者如何知道接收者的MAC地址?

2. 發送者如何知道接收者和本身同屬一個子網?

3. 若是接收者和本身不在同一個子網,數據包如何發給對方?

所以爲了解決這些問題,網絡層引入了三個協議,分別是IP協議ARP協議路由協議windows

網絡層的目的是實現兩個端系統之間的數據透明傳送,具體功能包括尋址和路由選擇、鏈接的創建、保持和終止等。它提供的服務使傳輸層不須要了解網絡中的數據傳輸和交換技術。即「路徑選擇、路由及邏輯尋址」。緩存

網絡層提供的兩種服務安全

TCP/IP四層參考模型 - 網絡層

TCP/IP四層參考模型 - 網絡層

在之前,對於網絡層應當提供的服務有過長期的爭論。爭論焦點的實質就是:在計算機通訊中,可靠交付應當由誰來負責?是網絡仍是端系統?網絡

有些人認爲,計算機網絡應借鑑電話所使用的面向鏈接的通訊方式。當兩臺計算機進行通訊時,也應當先創建鏈接(但在分組交換中是創建一條虛電路VC (Virtual Circuit) ,以預留雙方通訊所需的一切網絡資源。app

但互聯網的先驅者卻提出一種嶄新的網絡設計思路。因爲計算機有很強的差錯處理能力(這點和傳統的電話機有本質上的差異),網絡層向上只提供簡單靈活的、無鏈接的、盡最大努力交付的數據報服務。dom

網絡在發送分組時不須要先創建鏈接。每個分組(也就是IP數據報)獨立發送,與其先後的分組無關(不進行編號)。網絡層不提供服務質量的承諾。也就是說,所傳送的分組可能出錯、丟失、重複和失序(即不按序到達終點),固然也不保證分組交付的時限。因爲傳輸網絡不提供端到端的可靠傳輸服務,這就使網絡中的路由器比較簡單,且價格低廉 (與電信網的交換機相比較)。分佈式

時至今日,虛電路服務已成爲歷史了,鑑於TCP/IP體系的網絡層提供的是數據報服務,所以下面咱們的討論都是圍繞網絡層如何傳送IP數據報。ide

1、IP(Internet Protocol 網際協議)協議佈局

經過前面的介紹咱們知道,MAC地址只與廠商有關,與所處的網絡無關,因此沒法經過MAC地址來判斷兩臺主機是否屬於同一個子網。

所以,網絡層引入了IP協議,制定了一套新地址,使得咱們可以區分兩臺主機是否同屬一個網絡,這套地址就是網絡地址,也就是所謂的IP地址。

IP地址目前有兩個版本,分別是IPv4和IPv6,IPv4是一個32位的地址,常採用4個十進制數字表示。IP協議將這個32位的地址分爲兩部分,前面部分表明網絡地址,後面部分表示該主機在局域網中的地址。因爲各種地址的分法不盡相同,以C類地址192.168.24.1爲例,其中前24位就是網絡地址,後8位就是主機地址。所以, 若是兩個IP地址在同一個子網內,則網絡地址必定相同。爲了判斷IP地址中的網絡地址,IP協議還引入了子網掩碼, IP地址和子網掩碼經過按位與運算後就能夠獲得網絡地址。

因爲發送者和接收者的IP地址是已知的(應用層的協議會傳入), 所以咱們只要經過子網掩碼對兩個IP地址進行AND運算後就可以判斷雙方是否在同一個子網了。

與IP協議配套使用的還有三個協議:

            1. 地址解析協議ARP (Address Resolution Protocol)
            2. 網際控制報文協議ICMP (Internet Control Message Protocol)
            3. 網際組管理協議IGMP (Internet Group Management Protocol)

TCP/IP四層參考模型 - 網絡層

因爲網際協議IP是用來使互連起來的許多計算機網絡可以進行通訊的,所以TCP/IP體系中的網絡層經常被稱爲網際層(internet layer)或IP層。

 
 

瞭解部分:###虛擬互連網絡

在討論網際協議IP以前,必須瞭解什麼是虛擬互連網絡。

咱們知道,若是要在全世界範圍內把數以百萬計的網絡都互連起來,而且可以互相通訊,那麼這樣的任務必定很是複雜。其中會遇到許多須要解決的問題,如:不一樣的尋址方案;不一樣的最大分組長度;不一樣的網絡接入機制;不一樣的超時控制;不一樣的差錯恢復方法;不一樣的狀態報告方法;不一樣的路由選擇技術;不一樣的用戶接入控制;不一樣的服務(面向鏈接服務和無鏈接服務); 不一樣的管理與控制方式;等等。

能不能讓你們都使用相同的網絡,這樣可以使網絡互連變得比較簡單。答案是不行的。由於用戶的需求是多種多樣的,沒有一種單一的網絡可以適應全部用戶的需求。另外,網絡技術是不斷髮展的,網絡的製造廠家也要常常推出新的網絡,在競爭中求生存。所以在市場上老是有不少種不一樣性能、不一樣網絡協議的網絡,供不一樣的用戶選用。

從通常的概念來說,將網絡互相鏈接起來要使用一些中間設備。根據中間設備所在的層次,能夠有如下四種不一樣的中間設備:

1)物理層使用的中間設備叫作轉發器(repeater)
   2)數據鏈路層使用的中間設備叫作網橋或橋接器((bridge)
   3)網絡層使用的中間設備叫作路由器(router)
   4)在網絡層以上使用的中間設備叫作網關(gateway)。用網關鏈接兩個不兼容的系統須要在高層進行協議的轉換。

網關因爲比較複雜,目前使用得較少。所以如今咱們討論網絡互連時,都是指用路由器進行網絡互連和路由選擇。路由器其實就是一臺專用計算機,用來在互聯網中進行路由選擇。

下圖(a)表示有許多計算機網絡經過一些路由器進行互連。因爲參加互連的計算機網絡都使用相同的網際協議IP (Intemet Protocol),所以能夠把互連之後的計算機網絡當作以下圖(b)所示的一個虛擬互連網絡(intemet)。所謂虛擬互連網絡也就是邏輯互連網絡,它的意思就是互連起來的各類物理網絡的異構性原本是客觀存在的,可是咱們利用IP協議就可使這些性能各異的網絡在網絡層上看起來好像是一個統一的網絡。

TCP/IP四層參考模型 - 網絡層

當不少異構網絡經過路由器互連起來時,若是全部的網絡都使用相同的IP協議,那麼在網絡層討論問題就顯得很方便。舉個例子:

TCP/IP四層參考模型 - 網絡層

若是咱們只從網絡層考慮問題,那麼IP數據報就能夠想象是在網絡層中傳送,其傳送路徑是:H1→R1→R2→R3→R4→R5→H2 ,這樣就沒必要畫出許多完整的協議棧,使問題的描述更加簡單。

 
 

1.一、ARP協議(地址解析協議)

即地址解析協議,是根據IP地址獲取MAC地址的一個網絡層協議。其工做原理以下:

ARP首先會發起一個請求數據包,數據包的首部包含了目標主機的IP地址,而後這個數據包會在鏈路層進行再次包裝,生成以太網數據包,最終由以太網廣播給子網內的全部主機,每一臺主機都會接收到這個數據包,並取出標頭裏的IP地址,而後和本身的IP地址進行比較,若是相同就返回本身的MAC地址,若是不一樣就丟棄該數據包。ARP接收返回消息,以此肯定目標機的MAC地址;與此同時,ARP還會將返回的MAC地址與對應的IP地址存入本機ARP緩存中並保留必定時間,下次請求時直接查詢ARP緩存以節約資源。cmd輸入 arp -a 就能夠查詢本機緩存的ARP數據。

通訊時使用了兩個地址:

  1. IP 地址(網絡層地址)
  2. MAC 地址(數據鏈路層地址)

ARP 做用:從網絡層使用的 IP 地址,解析出在數據鏈路層使用的硬件地址。

地址解析協議 ARP 要點

  1. 無論網絡層使用的是什麼協議,在實際網絡的鏈路上傳送數據幀時,最終仍是必須使用硬件地址。
  2. 每個主機都設有一個 ARP 高速緩存 (ARP cache),裏面有所在的局域網上的各主機和路由器的 IP 地址到硬件地址的映射表。

windows系統查看ARP緩存 :在dos中輸入 arp -a命令

應當注意的問題

  1. ARP 用於解決同一個局域網上的主機或路由器的 IP 地址和硬件地址的映射問題。
  2. 若是所要找的主機和源主機不在同一個局域網上,那麼就要經過 ARP 找到一個位於本局域網上的某個路由器的硬件地址,而後把分組發送給這個路由器,讓這個路由器把分組轉發給下一個網絡。剩下的工做就由下一個網絡來作。
  3. 從 IP 地址到硬件地址的解析是自動進行的,主機的用戶對這種地址解析過程是不知道的。
  4. 只要主機或路由器要和本網絡上的另外一個已知 IP 地址的主機或路由器進行通訊,ARP 協議就會自動地將該 IP 地址解析爲鏈路層所須要的硬件地址。

爲何不直接使用硬件地址進行通訊?

因爲全世界存在着各式各樣的網絡,它們使用不一樣的硬件地址。要使這些異構網絡可以互相通訊就必須進行很是複雜的硬件地址轉換工做,所以幾乎是不可能的事。
IP 編址把這個複雜問題解決了。鏈接到互聯網的主機只需各自擁有一個惟一的 IP 地址,它們之間的通訊就像鏈接在同一個網絡上那樣簡單方便,由於上述的調用 ARP 的複雜過程都是由計算機軟件自動進行的,對用戶來講是看不見這種調用過程的。
所以,在虛擬的 IP 網絡上用 IP 地址進行通訊給廣大的計算機用戶帶來了很大的方便。

1.二、ICMP協議(網際控制報文協議)

爲了更有效地轉發IP數據報和提升交付成功的機會,在網際層使用了網際控制報文協議ICMP (Internet Control Message Protocol) [RFC 792]。ICMP容許主機或路由器報告差錯狀況和提供有關異常狀況的報告。ICMP是互聯網的標準協議。但ICMP不是高層協議(看起來好像是高層協議,由於ICMP報文是裝在IP數據報中,做爲其中的數據部分),而是IP層的協議。ICMP報文做爲IP層數據報的數據,加上數據報的首部,組成IP數據報發送出去。ICMP報文格式以下圖所示。

TCP/IP四層參考模型 - 網絡層

ICMP 報文的種類:

ICMP報文的種類有兩種,即ICMP差錯報告報文和ICMP詢問報文。

ICMP報文的前4個字節是統一的格式,共有三個字段:類型、代碼和檢驗和。接着的4個字節的內容與ICMP的類型有關。最後面是數據字段,其長度取決於ICMP的類型。下圖給出了幾種經常使用的ICMP報文類型。
TCP/IP四層參考模型 - 網絡層

ICMP 差錯報告報文的數據字段的內容

TCP/IP四層參考模型 - 網絡層

不該發送 ICMP 差錯報告報文的幾種狀況

a.對 ICMP 差錯報告報文再也不發送 ICMP 差錯報告報文。
b.對第一個分片的數據報片的全部後續數據報片都不發送 ICMP 差錯報告報文。
c.對具備多播地址的數據報都不發送 ICMP 差錯報告報文。
d.對具備特殊地址(如127.0.0.0 或 0.0.0.0)的數據報不發送 ICMP 差錯報告報文。

ICMP 詢問報文有兩種

1.回送請求和回答報文
2.時間戳請求和回答報文

ICMP的應用舉例

ICMP的一個重要應用就是分組網間探測PING (Packet InterNet Groper),用來測試兩臺主機之間的連通性。PING使用了ICMP回送請求與回送回答報文。PING是應用層直接使用網絡層ICMP的一個例子。它沒有經過運輸層的TCP或UDP。

Windows操做系統的用戶可在接入互聯網後轉入MS DOS(點擊「開始」,點擊「運行」,再鍵入「cmd 「)。看見屏幕上的提示符後。就鍵入「ping hostname」(這裏的hostname是要測試連通性的主機名或它的IP地址),按回車鍵後就可看到結果。

另外一個很是有用的應用是traceroute(這是UNIX操做系統中名字),它用來跟蹤一個分組從源點到終點的路徑。在Windows操做系統中這個命令是tracert。其工做原理原理有興趣的話可自行查閱。

1.二、IGMP協議(網際控制報文協議)

IGMP是Internet Group Management Protocol的簡稱,又被稱爲互聯網組管理協議,是TCP/IP協議族中負責IPv4組播成員管理的協議。IGMP用來在接收者主機和與其直接相鄰的組播路由器之間創建和維護組播組成員關係。IGMP經過在接收者主機和組播路由器之間交互IGMP報文實現組成員管理功能,IGMP報文封裝在IP報文中。

目的:
IP組播通訊的特色是報文從一個源發出,被轉發到一組特定的接收者。但在組播通訊模型中,發送者不關注接收者的位置信息,只是將數據發送到約定的目的組播地址。要使組播報文最終可以到達接收者,須要某種機制使鏈接接收者網段的組播路由器可以瞭解到該網段存在哪些組播接收者,同時保證接收者能夠加入相應的組播組中。IGMP就是用來在接收者主機和與其所在網段直接相鄰的組播路由器之間創建、維護組播組成員關係的協議。

IGMP版本:
1.IGMPv1中定義了基本的組成員查詢和報告過程
2.IGMPv2在此基礎上添加了查詢器選舉和組成員離開的機制
3.IGMPv3中增長的主要功能是成員能夠指定接收或指定不接收某些組播源的報文

三個版本在演進過程當中對協議報文的處理是向前兼容的,所以儘管各個版本的協議報文格式不一樣,可是運行IGMP高版本的路由器能夠識別低版本的IGMP報文。

全部IGMP版本都支持ASM(Any-Source Multicast)模型。IGMPv3能夠直接應用於SSM(Source-Specific Multicast)模型,而IGMPv1和IGMPv2則須要IGMP SSM Mapping技術的支持才能夠應用於SSM模型。

TCP/IP四層參考模型 - 網絡層

IGMP協議詳細原理:後續補充

3、IP數據報格式

TCP/IP四層參考模型 - 網絡層

從上圖可看出,一個IP數據報由首部和數據兩部分組成。首部的前一部分是固定長度,共20字節,是全部IP數據報必須具備的。在首部的固定部分的後面是一些可選字段,其長度是可變的。下面介紹首部各字段的意義。

1.IP數據報首部的固定部分中的各字段

1)版本

    佔4位,指IP協議的版本。通訊雙方使用的IP協議的版本必須一致。目前普遍使用的IP協議版本號爲4(即IPv4)。關於之後要使用的IPv6(即版本6的IP協議),咱們將在後文討論。

    2)首部長度

    長度佔4位,可表示的最大十進制數值是15。代表IP數據報的首部長度。最小值0101(5),最大值1111(15),單位是32字(4字節)。

    3)區分服務

    佔8位,用來得到更好的服務。在通常的狀況下都不使用這個字段。

    4)總長度

    總長度字段爲16位,代表首部和數據之和的長度,單位爲字節。

    在上面提到,在IP層下面的每一種數據鏈路層協議都規定了一個數據幀中的數據字段的最大長度,這稱爲**最大傳送單元MTU (Maximum Transfer Unit)**。當一個IP數據報封裝成鏈路層的幀時,此數據報的總長度(即首部加上數據部分)必定不能超過下面的數據鏈路層所規定的MTU值。例如,最經常使用的以太網就規定其MTU值是1500字節。若所傳送的數據報長度超過數據鏈路層的MTU值,就必須把過長的數據報進行分片處理。

    在進行分片時(見後面的「片偏移」字段),數據報首部中的「總長度」字段是指分片後的每個分片的首部長度與該分片的數據長度的總和。

    5)標識(identification)

    佔16位。IP軟件在存儲器中維持一個計數器,每產生一個數據報,計數器就加1,並將此值賦給標識字段。但這個「標識」並非序號,由於IP是無鏈接服務,數據報不存在按序接收的問題。當數據報因爲長度超過網絡的MTU而必須分片時,這個標識字段的值就被複制到全部的數據報片的標識字段中。相同的標識字段的值使分片後的各數據報片最後能正確地重裝成爲原來的數據報。

    6)標誌(flag)

    佔3位,但目前只有兩位有意義。標誌字段中的最低位記爲MF (More Fragment)。MF=1即表示後面「還有分片」的數據報。MF = 0表示這己是若千數據報片中的最後一個。標誌字段中間的一位記爲DF (Don’t Fragment),意思是「不能分片」。只有當DF = 0時才容許分片。

    7)片偏移

    佔13位。片偏移指出:較長的分組在分片後,某片在原分組中的相對位置。也就是說,相對於用戶數據字段的起點,該片從何處開始。片偏移以8個字節爲偏移單位。這就是說,每一個分片的長度必定是8字節(64位)的整數倍。

    8)生存時間

    佔8位,生存時間字段經常使用的英文縮寫是**TTL (Time To Live)**,代表這是數據報在網絡中的壽命。由發出數據報的源點設置這個字段。其目的是防止沒法交付的數據報無限制地在互聯網中兜圈子(例如從路由器R1,轉發到R2,再轉發到R3,而後又轉發到R1),於是白白消耗網絡資源。TTL的意義是指明數據報在互聯網中至多可通過多少個

路由器。TTL值就減少到零,就會被轉發路由器丟棄。

9)協議

    佔8位,協議字段指出此數據報攜帶的數據是使用何種協議,以便使目的主機的IP層知道應將數據部分上交給哪一個協議進行處理。經常使用的一些協議和相應的協議字段值以下:

TCP/IP四層參考模型 - 網絡層

10)首部檢驗和

    佔16位.這個字段只檢驗數據報的首部,但不包括數據部分。這是由於數據報每通過一個路由器,路由器都要從新計算一下首部檢驗和(一些字段,如生存時間、標誌、片偏移等均可能發生變化)。不檢驗數據部分可減小計算的工做量。爲了進一步減少計算檢驗和的工做量,IP首部的檢驗和不採用複雜的CRC檢驗碼而採用一種簡單的計算

方法。有興趣的可自行查閱。

11)源地址 佔32位。

    12)目的地址 佔32位。

2.IP數據報首部的可變部分

IP數據報首部的可變部分就是一個選項字段。選項字段用來支持排錯、測量以及安全等措施,內容很豐富。這裏就不討論這些選項的細節了。有興趣的讀者可自行查閱。

4、路由協議

經過ARP協議的工做原理能夠發現,ARP的MAC尋址仍是侷限在同一個子網中,所以網絡層引入了路由協議,首先經過IP協議來判斷兩臺主機是否在同一個子網中,若是在同一個子網,就經過ARP協議查詢對應的MAC地址,而後以廣播的形式向該子網內的主機發送數據包;若是不在同一個子網,以太網會將該數據包轉發給本子網的網關進行路由。網關是互聯網上子網與子網之間的橋樑,因此網關會進行屢次轉發,最終將該數據包轉發到目標IP所在的子網中,而後再經過ARP獲取目標機MAC,最終也是經過廣播形式將數據包發送給接收方。

而完成這個路由協議的物理設備就是路由器,在錯綜複雜的網絡世界裏,路由器扮演者交通樞紐的角色,它會根據信道狀況,選擇並設定路由,以最佳路徑來轉發數據包。

有關路由選擇協議的基本概念

1. 理想的路由算法的特徵

路由選擇協議的核心就是路由算法,即須要何種算法來得到路由表中的各項目。一個理想的路由算法應具備以下的一些特色:

1)算法必須是正確的和完整的。這裏,「正確」的含義是:沿着各路由表所指引的路由,分組必定可以最終到達目的網絡和目的主機。

2)算法在計算上應簡單。路由選擇的計算不該使網絡通訊量增長太多的額外開銷。

3)算法應能適應通訊量和網絡拓撲的變化,這就是說,要有自適應性。當網絡中的通訊量發生變化時,算法能自適應地改變路由以均衡各鏈路的負載。當某個或某些結點、鏈路發生故障不能工做,或者修理好了再投入運行時,算法也能及時地改變路由。有時稱這種自適應性爲「穩健性」(robustness)。

4)算法應具備穩定性。在網絡通訊量和網絡拓撲相對穩定的狀況下,路由算法應收斂於一個能夠接受的解,而不該使得出的路由不停地變化。

5)算法應是公平的。路由選擇算法應對全部用戶(除對少數優先級高的用戶)都是平等的。例如,若僅僅使某一對用戶的端到端時延爲最小,但卻不考慮其餘的廣大用戶,這就明顯地不符合公平性的要求。

6)算法應是最佳的。路由選擇算法應當可以找出最好的路由,使得分組平均時延最小而網絡的吞吐量最大。雖然咱們但願獲得「最佳」的算法,但這並不老是最重要的。對於某些網絡,網絡的可靠性有時要比最小的分組平均時延或最大吞吐量更加劇要。所以,所謂「最佳」只能是相對於某一種特定要求下得出的較爲合理的選擇而已

應當指出,路由選擇是個很是複雜的問題,由於它是網絡中的全部結點共同協調工做的結果。其次,路由選擇的環境每每是不斷變化的,而這種變化有時沒法事先知道,例如,網絡中出了某些故障。此外,當網絡發生擁塞時,就特別須要有能緩解這種擁塞的路由選擇策略,但剛好在這種條件下,很難從網絡中的各結點得到所需的路由選擇信息。

假若從路由算法可否隨網絡的通訊量或拓撲自適應地進行調整變化來劃分,則只有兩大類,即靜態路由選擇策略與動態路由選擇策略。靜態路由選擇也叫作非自適應路由選擇,其特色是簡單和開銷較小,但不能及時適應網絡狀態的變化.對於很簡單的小網絡,徹底能夠採用靜態路由選擇,用人工配置每一條路由。動態路由選擇也叫作自適應路由選擇,其特色是能較好地適應網絡狀態的變化,但實現起來較爲複雜,開銷也比較大。所以,動態路由選擇適用於較複雜的大網絡。

2. 分層次的路由選擇協議

互聯網採用的路由選擇協議主要是自適應的(即動態的)、分佈式路由選擇協議。因爲如下兩個緣由,互聯網採用分層次的路由選擇協議:

1)互聯網的規模很是大。若是讓全部的路由器知道全部的網絡應怎樣到達,則這種路由表將很是大,處理起來也太花時間。而全部這些路由器之間交換路由信息所需的帶寬就會使互聯網的通訊鏈路飽和。
2)許多單位不肯意外界瞭解本身單位網絡的佈局細節和本部門所採用的路由選擇協議(這屬於本部門內部的事情),但同時還但願鏈接到互聯網上。

爲此,能夠把整個互聯網劃分爲許多較小的自治系統(autonomous system),通常都記爲AS。自治系統AS是在單一技術管理下的一組路由器,而這些路由器使用一種自治系統內部的路由選擇協議和共同的度量。一個AS對其餘AS表現出的是一個單一的和一致的路由選擇策略[RFC 4271]。

在目前的互聯網中,一個大的ISP就是一個自治系統。這樣,互聯網就把路由選擇協議劃分爲兩大類,即:

a)內部網關協議IGP (Interior Gateway Protocol)

即在一個自治系統內部使用的路由選擇協議,而這與在互聯網中的其餘自治系統選用什麼路由選擇協議無關。目前這類路由選擇協議使用得最多,如RIP和OSPF協議。

b)外部網關協議EGP (External Gateway Protocol)

若源主機和目的主機處在不一樣的自治系統中(這兩個自治系統可能使用不一樣的內部網關協議),當數據報傳到一個自治系統的邊界時,就須要使用一種協議將路由選擇信息傳遞到另外一個自治系統中。這樣的協議就是外部網關協議EGP.目前使用最多的外部網關協議是BGP的版本4 (BGP-4).

自治系統之間的路由選擇也叫作域間路由選擇(interdomain routing),而在自治系統內部的路由選擇叫作域內路由選擇(intradomain routing)

下圖是兩個自治系統互連在一塊兒的示意圖。每一個自治系統本身決定在本自治系統內部運行哪個內部路由選擇協議(例如,能夠是RIP,也能夠是OSPF)。但每一個自治系統都有一個或多個路由器(圖中的路由器R1和R2)除運行本系統的內部路由選擇協議外,還要運行自治系統間的路由選擇協議(BGP-4) 。

TCP/IP四層參考模型 - 網絡層

總之,使用分層次的路由選擇方法,可將互聯網的路由選擇協議劃分爲:

a)內部網關協議IGP:具體的協議有多種,如RIP和OSPF等。b)外部網關協議EGP:目前使用的協議就是BGP。

相關文章
相關標籤/搜索