計算機網絡學習四:網絡層

1 基本概念

 

網絡層(Network Layer)是OSI模型的第三層,它是OSI參考模型中最複雜的一層,也是通信子網的最高一層。網絡層爲不同主機提供通信服務。它在下兩層的基礎上向資源子網提供服務。其主要任務是:通過路由選擇算法,爲報文或分組通過通信子網選擇最適當的路徑。該層控制數據鏈路層與傳輸層之間的信息轉發,建立、維持和終止網絡的連接。具體地說,數據鏈路層的數據在這一層被轉換爲數據包,然後通過路徑選擇、分段組合、順序、進/出路由等控制,將信息從一個網絡設備傳送到另一個網絡設備。

一般地,數據鏈路層是解決同一網絡內節點之間的通信,而網絡層主要解決不同子網間的通信。例如在廣域網之間通信時,必然會遇到路由(即兩節點間可能有多條路徑)選擇問題。 

 

在實現網絡層功能時,需要解決的主要問題如下:

 (a) 尋址

數據鏈路層中使用的物理地址(如MAC地址)僅解決網絡內部的尋址問題。在不同子網之間通信時,爲了識別和找到網絡中的設備,每一子網中的設備都會被分配一個唯一的地址。由於各子網使用的物理技術可能不同,因此這個地址應當是邏輯地址(如IP地址)。

 

 (b) 交換

規定不同的信息交換方式。常見的交換技術有:線路交換技術和存儲轉發技術,後者又包括報文交換技術和分組交換技術。

 

(c) 路由算法

當源節點和目的節點之間存在多條路徑時,本層可以根據路由算法,通過網絡爲數據分組選擇最佳路徑,並將信息從最合適的路徑由發送端傳送到接收端。

 

 (d) 連接服務

與數據鏈路層流量控制不同的是,前者控制的是網絡相鄰節點間的流量,後者控制的是從源節點到目的節點間的流量。其目的在於防止阻塞,並進行差錯檢測。

 

 

2 網絡層提供的兩種服務

 

(1) 虛電路服務

藉助於電信網的成功經驗,讓網絡負責可靠交付。用面向連接的通信方式,當兩個計算機進行通信時,應當向建立連接(在分組交換中建立一條虛電路VC(Virtual Circuit)),以保證雙方通信所需的一切網絡資源,然後雙方沿着已建立的虛電路發送分組。這樣的分組的首部不需要填寫完整的目的主機地址,而只需要填寫這條虛電路的編號(一個不大的整數),因而減少了分組的開銷。這種通信方式如果再使用可靠傳輸的網絡協議,就可使所發的分組無差錯按序到達終點,也不丟失、不重複。在通信結束後要釋放建立的虛電路,圖1(a)是網絡提供虛電路服務的示意圖,主機H1和H2之間交換的分組都必須在事先建立的虛電路上傳送。

 

(2) 數據報服務

考慮到計算機網絡的端系統是有智能的計算機,計算機有很強的差錯處理能力(不像電信網的終端(電話機)非常簡單,無智能和差錯處理能力),因此因特網在設計上就採用了和電信網完全不同的思路。網絡層向上只提供簡單靈活的、無連接的、盡最大努力交付的數據報服務。網絡在發送分組時不需要先建立連接,每一個分組(也就是IP數據報)獨立發送,與其前後的分組無關(不編號)。網絡層不提供服務質量的承諾。所傳送的分組可能出錯、丟失、重複和失序,也不保證分組交付的時限。由於傳輸網絡不提供端到端的可靠傳輸服務,這樣的好處是路由器做的比較簡單而且價格低廉,大大降低了網絡的造價,運行方式靈活,能夠適應多種應用。圖1(b)是網絡提供數據報服務的示意圖,主機H1向H2發送的分組各自獨立地選擇路由,而且傳送的過程中還可能丟失。

 

 

 

下表歸納了虛電路服務和數據報服務的主要區別。

 

 

3 網際協議IP

 

網際協議IP是TCP/IP體系中最主要的協議之一,也就是最重要的因特網標準協議之一,與IP協議配套使用的還有四個協議:地址解析協議ARP(Address Resolution Protocol)、逆地址解析協議RARP(Reverse Address Resolution Protocol)、網際控制報文協議ICMP(Internet Control Message Protocol)、網際組管理協議IGMP(Internet Group Management Protocol)。

 

3.1 虛擬互連網絡

 

由於用戶的需求是多種多樣的,沒有一種單一的網絡能夠適應所有用戶的需求,所以市場上有很多種不同性能、不同網絡協議的網絡。面對不同的尋址方案、不同的最大分組長度、不同的網絡接入機制、不同的超時控制、不同的差錯恢復方法等等,網絡的互連變得複雜。

TCP/IP體系在網絡互連上採用的做法是在網絡層(即IP層)採用了標準化協議,但相互連接的網絡可以是異構的。由於參加互連的計算機網絡都使用相同的網際協議IP,因此可以把互連以後的計算機網絡看成虛擬互連網絡,所謂虛擬互連網絡就是邏輯互連網絡,也就是互連起來的各種物理網絡的異構性本來是客觀存在的,但是利用IP協議可以使這些性能各異的網絡在網絡層上看起來好像是一個統一的網絡。

 

網絡層使用中間設備路由器(router) 用來在互聯網中進行路由選擇。(物理層/數據鏈路層/網絡層以上分別對應的中間設備是轉發器(repeater)/網橋或橋接器(bridge)/網關(gateway))。如圖2所示,主機H1先要查找自己的路由表,看目的主機是否就在本網絡上,則不需要經過任何路由器而是直接交付,任務就完成。如不是,則必須把IP數據報發送給某個路由器 (R1),R1在查找了自己的路由表後,知道應當把數據報轉發給R2進行間接交付,這樣一直轉發直到路由器R5直到自己是和H2在同一網絡上,就把數據報直接交付給目的主機H2。圖中協議棧中的數字1~5分別表示物理層、數據鏈路層、網絡層、運輸層和應用層。

 

 

 

 

3.2 分類的IP地址

 

有了虛擬互連網絡的概念,再討論在這樣的虛擬網絡上如何尋址。

 

3.2.1 IP地址及其表示方法

 

IP地址就是給因特網上的每一個主機(或路由器)的每一個接口分配一個在全世界範圍是唯一的32位的標識符。IP地址現在由因特網名字與號碼指派公司ICANN(Internet Corporation for Assigned Names and Numbers) 進行分配。

IP地址被劃分爲若干個固定類,每一類地址都由兩個固定長度的字段組成,其中第一個字段是網絡號(net-id),它標誌主機(或路由器)所連接到的網絡。一個網絡號在整個因特網範圍內必須是唯一的。第二個字段是主機號(host-id),它標誌該主機(或路由器)。一個主機號在它前面的網絡號所指明的網絡範圍內必須是唯一的。由此可見,一個IP地址在整個因特網範圍內是唯一的。這種兩級的IP地址可以記爲IP地址 ::= {<網絡號>, <主機號>}。

 

圖3給出了各種IP地址的網絡號字段和主機號字段,這裏的A類、B類和C類地址都是單播地址(一對一通信),是最常用的。

 

 

 

由圖3可以看出:

 

A類、B類和C類地址的網絡號字段分別是1,2,和3字節長 ,而在網絡號字段的最前面有1~3位的類別號,其數值分別規定爲0,10和110。 A類、B類和C類地址的主機號字段分別爲3個、2個和1個字節長。 D類地址(前四位是1110)用於多播(一對多通信)。 E類地址(前四位是1111)保留爲以後用。

此處指出,由於近年來已經廣泛使用無分類IP地址進行路由選擇,A類、B類和C類地址的區分已經成爲歷史。

從IP地址的結構來看,IP地址並不僅僅指明一個主機,同時指明瞭主機所連接到的網絡。將IP地址分爲三個類別主要是考慮到不同網絡需要的主機數量不同,把IP地址劃分爲A類、B類和C類滿足不同用戶的要求。當某個單位申請到一個IP地址時,實際上是獲得了具有同樣網絡號的一塊地址。其中具體的各個主機號則由該單位自行分配,只要做到在該單位管轄範圍內無重複的主機號即可。

 

 

3.2.2 常用的三種類別的IP地址

 

A類地址 的網絡號字段佔一個字節,只有7位可供使用(該字段的第一位已固定爲0),最終可指派的網絡號是126個(即2^7-2)。減2是去除了:(a) 網絡號字段爲全0的IP地址是個保留地址,表示“這個(this)”、“本網絡”;(b) 網絡號爲127(即0111 1111)保留作爲本地軟件環回測試(loopback test) 本主機的進程之間通信使用。若主機發送一個目的地址爲環回地址(如127.0.0.1)的IP數據報,則本主機中的協議軟件就處理數據報中的數據,而不會把數據報發送到任何網絡。目的地址爲環回地址的IP數據報永遠不會出現在任何網絡上,因爲網絡號爲127的地址根本不是一個網絡地址。

A類地址的主機號佔3字節,因此每一個A類網絡中的最大主機數是2^24-2。此處減2去除的是:(a) 全0的主機號字段表示該IP地址是“本主機”所連接到的單個網絡地址(如一主機的IP地址爲5.6.7.8,則該主機所在的網絡地址就是5.0.0.0),而全1表示“所有的(all)”,因此全1的主機號字段表示該網絡上的所有主機。

IP地址空間共有 2^32 個地址。整個A類地址空間共有 2^31 個地址,佔有整個IP地址空間的50%。

 

B類地址 的網絡號字段有2字節,但前面兩位(10)已經固定,只剩下14位可以進行分配。因爲網絡號字段後面的14位無論怎樣取值也不可能出現使整個2字節的網絡號字段成爲全0或全1,因此這裏不存在網絡總數減2的問題。但實際上B類網絡地址128.0.0.0是不指派的,而可以指派的B類最小網絡地址是128.1.0.0。因此B類地址可指派的網絡數爲2\^14-1。B類地址的每一個網絡上的最大主機數是2\^16-2,減2扣除全0和全1的主機號。整個B類地址空間共約有2^30個地址,佔整個IP地址空間的25%。

 

C類地址 有3個字節的網絡號字段,最前面的3位是(110),還有21位可以進行分配。C類網絡地址192.0.0.0也是不指派的。可以指派的C類最小網絡地址是192.0.1.0。因此C類地址可指派的網絡總數是2\^21-1。每一個C類地址的最大主機數是2\^8-2。整個C類地址空間共約有2^29個地址,佔整個IP地址的12.5%。

 

下表給出IP地址的指派範圍如下:

 

 

 

下表給出了一般不使用的IP地址,這些地址只能在特定的情況下使用:

 

 

IP地址的重要特點:

 

每一個IP地址都由網絡號和主機號兩部分組成。從這個意義上說IP地址是一種分等級的地址結構。分兩個等級的好處是:(a) IP地址管理機構在分配IP地址時只分配網絡號(第一級),而剩下的主機號(第二級)則由得到該網絡號的單位自行分配。這樣就方便了IP地址的管理。 (b) 路由器僅根據目的主機所連接的網絡號來轉發分組(而不考慮目的主機號),這樣就可以使路由表中的項目數大幅度減少,從而減小了路由表所佔的存儲空間以及查找路由表的時間。 實際上IP地址是標誌一個主機(或路由器)和一條鏈路的接口。所以當一個主機擁有多個屬於不同網絡號的IP地址時,稱爲多歸屬主機(multihomed host),該主機同時連接到兩個網絡。由於一個路由器至少應當連接兩個網絡,因此一個路由器至少應當有兩個不同的IP地址(兩個路由器之間直接相連,連線兩端的接口可以分配地址也可以不分配,爲了節省IP地址資源,對於這種僅由一段連線構成的特殊“網絡”,現在也常常不分配IP地址,通常把這樣的特殊網絡叫做無編號網絡(unnumbered network)或無名網絡(anonymous network))。 一個網絡是指具有相同網絡號net-id的主機的集合。因此,用轉發器或網橋連接起來的若干個局域網仍爲一個網絡,這些局域網都具有相同的網絡號。具有不同網絡號的局域網必須使用路由器進行互連。 在IP地址中,所有分配到網絡號的網絡都是平等的。

 

 

3.2.3 私有地址

 

(1) A類地址簡介

(a) A類地址第1字節爲網絡地址,其它3個字節爲主機地址。另外第1個字節的最高位固定爲0。

(b) A類地址範圍:1.0.0.0到126.255.255.255。

 

(c) A類地址中的保留地址:

127.0.0.0到127.255.255.255是保留地址,用做循環測試用的。

 

(d) A類私有地址

在A類地址中,10.0.0.0到10.255.255.255是私有地址(所謂的私有地址就是在互聯網上不使用,而被用在局域網絡中的地址)。

 

 

 

(2) B類地址簡介

(a) B類地址第1字節和第2字節爲網絡地址,其他2個字節爲主機地址。另外1個字節的前2爲固定爲10.

(b) B類地址範圍:128.0.0.0到191.255.255.255。

 

(c) B類地址中的保留地址

169.254.0.0到169.254.255.255是保留地址。如果你的IP地址是自動獲取IP地址,而你在網絡上又沒有找到可用的DHCP服務器,這時你將會從169.254.0.1到169.254.255.254中臨時獲得一個IP地址。

 

(d) B類私有地址

在B類地址中,172.16.0.0到172.31.255.255是私有地址。

 

(3) C類地址簡介

(a) C類地址第1字節、第2字節和第3個字節爲網絡地址,第4個個字節爲主機地址。另外第1個字節的前三位固定爲110。

(b) C類地址範圍:192.0.0.0到223.255.255.255。

 

(c) C類私有地址

在C類地址中,192.168.0.0到192.168.255.255是私有地址。

 

 

 

 

 

4 IP地址與硬件地址

 

 

 

從層次的角度看,物理地址是數據鏈路層和物理層使用的地址,而IP地址是網絡層和以上各層使用的地址,是一種邏輯地址(稱IP地址是邏輯地址是因爲IP地址是用軟件實現的)。

IP地址放在IP數據報的首部,而硬件地址則放在MAC幀的首部。當IP數據報放入數據鏈路層的MAC幀中以後,整個IP數據報就成爲MAC幀的數據,因而在數據鏈路層看不見數據報的IP地址。

 

 

 

4.1 地址解析協議ARP和逆地址解析協議RARP

 

ARP和RARP用於解決IP地址和物理地址之間的對應問題的兩個協議。ARP協議找出IP地址對應的物理地址,RARP協議找出物理地址對弈的IP協議。

由於現在的DHCP協議(應用層)已經包含了RARP協議的功能,因此現在已經不再單獨使用了。只要瞭解其作用是隻知道自己硬件地址的主機能夠通過RARP協議找出其IP地址。

由於主機的硬件地址可能會改變,而IP地址和硬件地址不存在簡單的映射關係。此外,在一個網絡上可能經常會有新的主機加入或者撤走一些主機。地址解析協議ARP解決IP地址和硬件地址的映射問題的方法是在主機ARP高速緩存中存放一個從IP地址到硬件地址的映射表,並且該映射表還經常動態更新(新增或超時刪除)。

 

每一個主機都設有一個ARP高速緩存(ARP cache),裏面有本局域網上的各主機和路由器的IP地址到硬件地址的映射表。當主機A要想向本局域網上的某個主機B發送IP數據報時,就先在其ARP高速緩存中查看有無主機B的IP地址,若有則在ARP高速緩存中查出其對應的硬件地址,再把這個硬件地址寫入MAC幀,然後通過局域網把該MAC幀發往此硬件地址。當查不到主機B的IP地址時,主機A就會自動運行ARP:

(a) ARP進程在本局域網上廣播發送一個ARP請求分組,請求的主要內容是“我的IP地址時209.0.0.5,硬件地址是00-00-C0-15-AD-18。我想知道IP地址爲209.0.0.6的主機的硬件地址。”;

(b) 在本局域網上的所有主機上運行的ARP進程都收到此ARP請求分組。

(c) 主機B在ARP請求分組中見到自己的IP地址,就向主機A發送ARP響應分組,並寫入自己的硬件地址。其餘的所有主機都不理睬這個ARP請求分組,ARP響應分組的主要內容是“我的IP地址是209.0.0.6,我的硬件地址是08-00-2B-00-EE-0A。”注意ARP請求分組是廣播發送的,ARP響應分組是普通的單播,即從一個源地址發送到一個目的地址。同時主機A的這一地址映射也寫入了主機B自己的ARP高速緩存中。

(d) 主機A收到主機B的ARP響應分組後,就在其ARP高速緩存中寫入主機B的IP地址到硬件地址的映射。

ARP把保存在高速緩存中的每一個映射地址項目都設置生存時間。凡是超過生存時間的項目就從高速緩存中刪除掉。生存時間在某些主機硬件地址發生改變或者消失時十分有意義,可以及時更新或者刪除映射地址。

 

注意ARP是解決同一個局域網上的主機或路由器的IP地址和硬件地址的映射問題。對於不在同一個局域網的主機,並不需要知道其硬件地址,只要先通過IP地址找到路由器(需要其硬件地址)進行轉發即可。

 

既然有硬件地址,爲什麼我們要使用抽象的IP地址來尋找目的主機並調用ARP來找出硬件地址呢?主要是因爲網絡類型多種多樣,其硬件地址格式也不同,要使得這些異構網絡能夠互相通信就必須進行非常複雜的硬件地址轉換工作。統一的IP地址解決了這個複雜的問題,不同主機之間的通信就像連接在同一個網絡上一樣。

 

 

 

5 IP數據包的格式

 

在TCP/IP標準中,各種數據報格式常常以32位(即4字節)爲單位來描述。IP數據報的完整格式如圖4所

 

 

5.1 IP數據報首部各字段的意義

 

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

 

(1) 版本

(a) 佔4位,指IP協議的版本。

(b) 通信雙方使用的IP協議的版本必須一致。

(c) IP協議版本號爲4(即IPv4),IP協議版本號爲6(即IPv6)。

 

(2) 首部長度

(a) 佔4位,可表示的最大十進制數值是15。

(b) 這個字段所表示數的單位是32位字(即4字節),因此,當IP的首部長度爲1111(即十進制的15)時,首部長度就達到最大值60個字節。

(c) 最常用的首部長度就是20個字節(即首部長度爲0101),這時不使用任何選項,是固定首部的長度。

(d) 當IP分組的首部長度不是4字節的整數倍時,必須利用最後的填充字段加以填充。

 

(3) 區分服務

(a) 佔8位,用來獲得更好的服務。

 

(4) 總長度

(a) 佔16位,指首部和數據之和的長度。

(b) 數據報的最大長度爲2^16 -1 = 65535字節。

(c) 在IP層下面的每一種數據鏈路層都有其自己的幀格式,其中包括幀格式中的數據字段的最大長度,這稱爲最大傳送單元MTU(Maximum Transfer Unit)。當一個IP數據報封裝成數據鏈路層的幀時,此數據報的總長度(即首部加上數據部分),一定不能超過下面的數據鏈路層的MTU值。

(d) 雖然使用盡可能長的數據報會使傳輸效率提高,但由於以太網的普遍應用,所以實際上使用的數據報長度很少有超過1500字節的。

(e) 爲了不使IP數據報的傳輸效率降低,有關IP的標準文檔規定,所有的主機和路由器必須能夠處理的IP數據報的長度不得少於576字節。這個數值也就是最小的IP數據報的總長度。

(f) 當數據報長度超過網絡所容許的最大傳送單元MTU時,就必須把過長的數據報進行分片後才能在網絡上傳送(“片偏移”字段相關)。這時,數據報首部中的總長度不是指未分片前的數據報長度,而是指分片後的每一個分片的首部長度與數據長度的總和。

 

(5) 標識

(a) 佔16位,指IP軟件在存儲器中維持一個計數器,每產生一個數據報,計數器就加1,並將此值付給標識字段。

(b) 但這個標識並不是序號,因爲IP是無連接服務,數據報不存在按序接收的問題。

(c) 當數據報由於長度超過網絡的MTU而必須分片時,這個標識字段的值就會被複制到所有的數據報片的標識字段中。相同的標識字段的值使分片後的各數據報片最後能正確地重裝成爲原來的數據報。

 

(6) 標誌

(a) 佔3位,但目前只有兩位有意義。

(b) 標誌字段中的最低位記爲MF(More Fragment)。

MF=1即表示後面“還有分片”的數據報。

MF=0即表示這已是若干數據報片中的最後一個。

(c) 標誌字段中的中間位DF(Don’t Fragment),意思是“不能分片”,只有當DF=0時才允許分片。

 

(7) 片偏移

(a) 佔13位,指出較長的分鐘再分片後,某片在原分組中的相對位置。

(b) 也就是說,相對於用戶數據字段的起點,該片從何處開始。

(c) 片偏移以8個字節爲偏移單位。也就是說,每個分片的長度一定是8字節(64位)的整數倍。

 

(d) 例子:一數據報的總長度爲3820字節,其數據部分爲3800字節長(使用固定首部),需要分片爲長度不超過1420字節的數據報片。因固定首部長度爲20字節,因此每個數據報片的數據部分長度不能超過1400字節。於是分成3個數據報片,其數據部分的長度分別分爲1400,1400和1000字節。原始數據報首部被複製爲各數據報片的首部,但必須修改有關字段的值。

 

 

 

(8) 生存時間

(a) 佔8位,常用的英文縮寫是TTL(Time To Live),表明數據報在網絡中的壽命。

(b) 由發出數據報的源點設置這個字段。

(c) 其目的是爲了防止無法交付的數據報無限制地在因特網中兜圈子,因而白白浪費網絡資源。

(d) 隨着技術的發展,TTL字段的功能改爲“跳數限制”。路由器在轉發數據報之前就把TTL值減1。若TTL值減少到零,就丟棄這個數據報,不再轉發。

(e) 因此,現在TTL的單位不再是秒,而是跳數。

(f) TTL的意義是指明數據報在因特網中至多可經過多少個路由器。顯然,數據報能在因特網中經過的路由器的最大數是255。

(g) 若把TTL的初始值設置爲1,就表示這個數據報只能在本局域網中傳送。

 

(9) 協議

(a) 佔8位,指出此數據報攜帶的數據是使用何種協議,一遍使目的主機的IP層知道應將數據部分上交給哪個處理過程。

(b) 常用的一些協議和相應協議的字段值。

 

 

(10) 首部檢驗和

(a) 佔16位,只檢驗數據報的首部,但不包括數據部分。

(b) 這是因爲數據報每經過一個路由器,路由器都要重新計算一下首部檢驗和(一些字段,如生存時間、標誌、片偏移等都可能發生變化)。

(c) 不檢驗數據部分可減少計算的工作量。

(d) 爲了進一步減少計算檢驗和的工作量,IP首部的檢驗和不採用複雜的CRC檢驗碼而是採用以下算法:

1) 在發送方,先把IP數據報首部劃分爲許多16位字的序列,並把檢驗和字段置零。

2) 用反碼算術運算把所有16位字相加後,將得到的和的反碼寫入檢驗和字段,

3) 接收方收到數據報後,將首部的所有16位字再使用反碼算術運算相加一次。將得到的和取反碼,即得出接收方檢驗和的計算結果。若首部未發生任何變化,則此結果必爲0,於是就保留這個數據報,否則即認爲出錯,並將此數據報丟棄。

 

 

 

(11) 源地址

(a) 佔32位。

 

(12) 目的地址

(a) 佔32位。

 

 

 

5.1.2 IP數據報首部的可變部分

 

IP首部的可變部分就是一個選項字段。

(1) 可選字段(長度可變)

(a) 選項字段用來支持排錯、測量以及安全等措施,內容很豐富。

(b) 此字段的長度可變,從1~40個字節不等,取決於所選擇的項目。

(c) 某些選項項目只需要1個字節,它只包括1個字節的選項代碼。但還有些選項需要多個字節,這些選項一個個拼接起來,中間不需要有分隔符。

 

(2) 填充

最後用全0的填充字段補齊成爲4字節的整數倍。

 

注:增加首部的可變部分是爲了增加IP數據報的功能,但這同時也使得IP數據報的首部長度成爲可變的。這就增加了每一個路由器處理數據報的開銷。實際上這些選項很少被使用。新的IP版本IPv6就把IP數據報的首部長度做成固定的。

 

 

 

6 IP層轉發分組的流程

 

現在的路由表是按主機所在的網絡地址來製作路由表,每一行對應於一個網絡,大大降低了路由表的規模。在路由表中,對每一條路由最主要的是以下兩個信息:(目的網絡地址,下一跳地址)。

雖然因特網所有的分組轉發都是基於目的主機所在的網絡,但是在大多數情況下都允許有這樣的特例,即對特定的目的主機指明一個路由,這種路由稱爲特定主機路由,能夠更方便地控制和測試網絡。路由器還可採用默認路由(default route) 以減少路由表所佔用的空間和搜索路由表所用的時間,這種轉發方式在一個網絡只有很少的對外連接時是很有用的。

注意到,在IP數據包的首部中沒有什麼地方可以用來指明“下一跳路由器的IP地址”,待轉發的數據報是怎麼找到下一跳路由器呢?噹噹路由器收到一個待轉發的數據報,在從路由表得到下一跳路由器的IP地址後,把這個地址送交下層的網絡接口軟件,使用ARP將下一跳路由器的IP地址轉換成硬件地址,並將此硬件地址放在鏈路層的MAC幀的首部,然後根據這個硬件地址找到下一條路由器。

 

 

(1) 根據目的網絡地址來確定下一跳路由器,這樣做的結果如下:

(a) IP數據報最終一定可以找到目的主機所在目的網絡上的路由器(可能要通過多次的間接交付)。

(b) 只有到達最後一個路由器時,才試圖向目的主機進行直接交付。

 

注:在互聯網上轉發分組時,是從一個路由器轉發到下一個路由器。總之,在路由表中,對每一條路由最主要的是以下兩個信息:(目的網絡地址,下一跳地址)。

 

 

(2) 特定主機路由

雖然因特網所有的分組轉發都是基於目的主機所在的網絡,但在大多數情況下都允許有這樣的特例,即對特定的目的主機指,明的一個路由這種路由叫做特定主機路由。

採用特定主機路由的好處:

(a) 可使網絡管理人員能夠更方便地控制網絡和測試網絡,同時也可在需要考慮某種安全問題時採用這種特定主機路由。

(b) 在對網絡的連接或路由表進行排錯時,指明到某一主機的特定路由就十分有用。

 

注:特定主機路由是要到某一臺機器的路由。特定網絡路由是你到某一個子網的路由。特定主機路由也可視爲特定網絡路由的一個特例,即Mask爲255.255.255.255的特定網絡路由。

 

(3) 默認路由

默認路由是一種特殊的靜態路由,指的是當路由表中與包的目的地址之間沒有匹配的表項時路由器能夠做出的選擇。

如果沒有默認路由,那麼目的地址在路由表中沒有匹配表項的包將被丟棄。

默認路由在某些時候非常有效,當存在末梢網絡時,默認路由會大大簡化路由器的配置,減輕管理員的工作負擔,提高網絡性能。

主機裏的默認路由通常被稱作默認網關,默認網關通常會是一個有過濾功能的設備,如防火牆和代理服務器。

默認路由和靜態路由的命令格式一樣,只是把目的地ip和子網掩碼改成0.0.0.0和0.0.0.0,默認路由只能存在末梢網絡中。

 

(4) 分組轉發算法

注:當發送一連串的數據報時,上述的這種查找路由表、計算硬件地址、寫入MAC幀的首部等過程,將不斷地重複進行,造成了一定的開銷。儘管如此,也不能在路由表中直接使用硬件地址,因爲使用抽象的IP地址,就是爲了屏蔽各種底層網絡的複雜性而便於分析和研究問題,這樣就不可避免地多了一些開銷。

 

(a) 從數據報的首部提取目的主機的IP地址D,得出目的網絡地址爲N。

(b) 若N就是與此路由器直接相連的某個網絡地址,則進行直接交付,不需要再經過其他的路由器,直接把數據報交付給目的主機(這裏包括把目的主機地址D轉換爲具體的硬件地址,把數據報封裝爲MAC幀,再發送此幀);否則就要執行(c)進行間接交付。

(c) 若路由表中有目的地址爲D的特定主機路由,則把數據報傳送給路由表中所指明的下一跳路由器,否則執行(d)。

(d) 若路由表中有到達網絡N的路由,則把數據報傳送給路由表中所指明的下一跳路由器,否則執行(e)。

(e) 若路由表中有一個默認路由,則把數據報傳送給路由表中所指明的下一跳路由器,否則執行(f)。

(f) 報告轉發分組出錯。

 

 

 

 

7 問題分析

 

(1) 網絡中是通過硬件地址找到目的主機的,那爲什麼還要有IP地址呢?

 

這是因爲全世界存在着各式各樣的網絡,他們使用不同的硬件地址。要使這些異構的網絡能夠互相通信就必須進行非常複雜的硬件地址轉換工作,因此由用戶或用戶主機來完成這個任務工作是幾乎不可能的。他們之間的通信就像連接在同一個網絡上那樣簡單方便,因爲ARP的複雜過程都是計算機軟件自動進行的,對用戶來說是看不見這種調用的。所以,在虛擬的IP網絡上用IP地址進行通信給廣大的計算機用戶帶來了很大的方便。

每個網絡都是不同的,硬件地址的格式也是不相同的,如果想要把不同的硬件地址統一化來進行數據之間的通信,這是一件非常困難的事情。

網絡是由各個不同的異構網絡通過路由器互連起來的,路由器的兩端是兩個不同的局域網絡,不同的局域網絡的網絡號就不相同。ARP地址解析協議只在同一個局域網內有效,如果目標主機和目的主機處在不用的局域網不同,那應該怎麼辦呢?這裏就用到了IP地址了,如果目的主機在網絡1中(通過IP地址的網絡號是否相同去判定),那麼下一跳的路由器應該爲R1(對應目的主機的網絡號的路由器),就這樣,通過網絡號,從一個路由器轉發到另一個路由器,IP數據報最終一定可以找到目的主機所在的目標網絡的路由器,這時候纔再通過ARP地址解析協議找到目的主機,進行最後的直接交付。

通過IP地址進行通信給用戶帶來了很大的便利,同時減輕了網絡的負擔。比如說,有四個不同的網絡,每個網絡有一萬臺主機,那麼就一共有四萬臺主機,如果路由表是通過IP地址的主機號來進行製作路由表,那麼路由表就會有4萬項,如果是通過IP地址的網絡號(同個局域網內的網絡號相同),路由表只有4項,差異顯而易見。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文轉自:

https://blog.csdn.net/cainv89/article/details/51264587

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章