天天看點

計算機網絡學習四:網絡層1 基本概念2 網絡層提供的兩種服務3 網際協定IP4 IP位址與硬體位址5 IP資料包的格式6 IP層轉發分組的流程7 問題分析

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發送的分組各自獨立地選擇路由,而且傳送的過程中還可能丢失。

計算機網絡學習四:網絡層1 基本概念2 網絡層提供的兩種服務3 網際協定IP4 IP位址與硬體位址5 IP資料包的格式6 IP層轉發分組的流程7 問題分析

下表歸納了虛電路服務和資料報服務的主要差別。

計算機網絡學習四:網絡層1 基本概念2 網絡層提供的兩種服務3 網際協定IP4 IP位址與硬體位址5 IP資料包的格式6 IP層轉發分組的流程7 問題分析

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分别表示實體層、資料鍊路層、網絡層、運輸層和應用層。

計算機網絡學習四:網絡層1 基本概念2 網絡層提供的兩種服務3 網際協定IP4 IP位址與硬體位址5 IP資料包的格式6 IP層轉發分組的流程7 問題分析

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類位址都是單點傳播位址(一對一通信),是最常用的。

計算機網絡學習四:網絡層1 基本概念2 網絡層提供的兩種服務3 網際協定IP4 IP位址與硬體位址5 IP資料包的格式6 IP層轉發分組的流程7 問題分析

由圖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位址的指派範圍如下:

計算機網絡學習四:網絡層1 基本概念2 網絡層提供的兩種服務3 網際協定IP4 IP位址與硬體位址5 IP資料包的格式6 IP層轉發分組的流程7 問題分析

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

計算機網絡學習四:網絡層1 基本概念2 網絡層提供的兩種服務3 網際協定IP4 IP位址與硬體位址5 IP資料包的格式6 IP層轉發分組的流程7 問題分析

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位址與硬體位址

計算機網絡學習四:網絡層1 基本概念2 網絡層提供的兩種服務3 網際協定IP4 IP位址與硬體位址5 IP資料包的格式6 IP層轉發分組的流程7 問題分析

從層次的角度看,實體位址是資料鍊路層和實體層使用的位址,而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所

計算機網絡學習四:網絡層1 基本概念2 網絡層提供的兩種服務3 網際協定IP4 IP位址與硬體位址5 IP資料包的格式6 IP層轉發分組的流程7 問題分析

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位元組。原始資料報首部被複制為各資料報片的首部,但必須修改有關字段的值。

計算機網絡學習四:網絡層1 基本概念2 網絡層提供的兩種服務3 網際協定IP4 IP位址與硬體位址5 IP資料包的格式6 IP層轉發分組的流程7 問題分析

(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) 常用的一些協定和相應協定的字段值。

計算機網絡學習四:網絡層1 基本概念2 網絡層提供的兩種服務3 網際協定IP4 IP位址與硬體位址5 IP資料包的格式6 IP層轉發分組的流程7 問題分析

(10) 首部檢驗和

(a) 占16位,隻檢驗資料報的首部,但不包括資料部分。

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

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

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

1) 在發送方,先把IP資料報首部劃分為許多16位字的序列,并把檢驗和字段置零。

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

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

計算機網絡學習四:網絡層1 基本概念2 網絡層提供的兩種服務3 網際協定IP4 IP位址與硬體位址5 IP資料包的格式6 IP層轉發分組的流程7 問題分析

(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