網絡層向上隻提供簡單靈活的、無連接的、盡最大努力交付的數據報服務。網絡層不提供服務質量的承諾。
虛電路服務借助于電信網的成功經驗,讓網絡負責可靠交付。用面向連接的通信方式,當兩個計算機進行通信時,應當向建立連接(在分組交換中建立一條虛電路VC(Virtual Circuit)),以保證雙方通信所需的一切網絡資源,然後雙方沿着已建立的虛電路發送分組。這樣的分組的首部不需要填寫完整的目的主機地址,而隻需要填寫這條虛電路的編号(一個不大的整數),因而減少了分組的開銷。這種通信方式如果再使用可靠傳輸的網絡協議,就可使所發的分組無差錯按序到達終點,也不丢失、不重複。在通信結束後要釋放建立的虛電路,圖1(a)是網絡提供虛電路服務的示意圖,主機H1和H2之間交換的分組都必須在事先建立的虛電路上傳送。
數據報服務考慮到計算機網絡的端系統是有智能的計算機,計算機有很強的差錯處理能力(不像電信網的終端(電話機)非常簡單,無智能和差錯處理能力),因此因特網在設計上就采用了和電信網完全不同的思路。網絡層向上隻提供簡單靈活的、無連接的、盡最大努力交付的數據報服務。網絡在發送分組時不需要先建立連接,每一個分組(也就是IP數據報)獨立發送,與其前後的分組無關(不編号)。網絡層不提供服務質量的承諾。所傳送的分組可能出錯、丢失、重複和失序,也不保證分組交付的時限。由于傳輸網絡不提供端到端的可靠傳輸服務,這樣的好處是路由器做得比較簡單而且價格低廉,大大降低了網絡的造價,運行方式靈活,能夠适應多種應用。圖1(b)是網絡提供數據報服務的示意圖,主機H1向H2發送的分組各自獨立地選擇路由,而且傳送的過程中還可能丢失。
2、網際協議IP
與IP協議配套使用的還有三個協議
虛拟互連網絡
由于用戶的需求是多種多樣的,沒有一種單一的網絡能夠适應所有用戶的需求,所以市場上有很多種不同性能、不同網絡協議的網絡。面對不同的尋址方案、不同的最大分組長度、不同的網絡接入機制、不同的超時控制、不同的差錯恢複方法等等,網絡的互連變得複雜。将網絡相互連接起來要使用一些中間設備
互聯網可以由多種異構網絡互連組成。H1 - R1 - R2 - R3 - R4 - R5 - H2
分類的IP地址1. IP地址及其表示方法
IP地址就是給因特網上的每一個主機(或路由器)的每一個接口分配一個在全世界範圍是唯一的32位的标識符。IP地址 ::= {<網絡号>, <主機号>}A類、B類和C類地址都是單播地址
2. 常用的三種類别的IP地址
說明:特殊的幾個IP地址:
127.0.0.1:本地環回測試,網絡号為127的都是;169.254.0.0:動态獲取IP失敗,零時用的;
下面幾個是保留的私網地址:【互聯網上的路由器找不到的】
10.0.0.0:保留給一些政府單位或者學校用;172.16.0.0 — 172.31.0.0192.168.0.0 — 192.168.255.0
3.IP地址的一些重要特點
- 每一個IP地址都是由網絡号和主機号兩部分組成。路由器僅根據目的主機所連接的網絡号來轉發分組(而不考慮目的主機号),這樣就可以使路由表中的項目數大幅度減少,從而減小了路由表所占的存儲空間以及查找路由表的時間;
- 實際上IP地址是标志一台主機(或路由器)和一條鍊路的接口。當一台主機同時連接到兩個網絡上時,該主機就必須具有兩個相同的IP地址,必須是網絡号不同的。所以,路由器是用來連接不同網絡的,所以一個路由器應當至少有2個IP地址。這就好比一個建築正好處在北京路和上海路的交叉口上,那麼這個建築就可以擁有兩個門牌号,例如:北京路4号和上海路37号;
- 用轉發器或網橋連接起來的若幹個局域網仍為一個網絡,因為它們的網絡号相同。具有不同網絡号的局域網必須使用路由器進行互聯;
- 在IP地址中,所有分配到的網絡号的網絡都是平等的。所謂平等,就是指互聯網同等對待每一個IP地址。
IP地址與硬件地址
物理地址(MAC地址)是數據鍊路層和物理層使用的地址,而IP地址是網絡層和以上各層使用的地址,是一種邏輯地址。
在發送數據時,數據從高層下到低層,然後才到通信鍊路上傳輸。使用IP地址的IP數據報一旦交給了數據鍊路層,就被封裝成了MAC幀了。MAC在傳送時使用的源地址和目的地址都是硬件地址,這兩個硬件地址都寫在了MAC幀的首部了。總之:IP地址放在IP數據報的首部,而硬件地址放在MAC幀的首部。在網絡層和網絡層以上使用IP地址,而在數據鍊路層及以下使用硬件地址。當IP數據報放入數據鍊路層的MAC幀後,整個的IP數據報都成為了MAC幀的數據,因而在數據鍊路層是看不見數據報的IP地址的。
交換機基于數據幀的MAC地址轉發數據幀,路由器基于數據包的IP地址轉發數據包;數據包在傳輸過程中不變,過網絡設備時,數據幀要用新的物理層地址重新封裝;—— 即MAC地址變化MAC地址決定了數據幀下一跳哪個設備接收,而IP地址決定了數據包的起點和終點。
地址解析協議ARPARP協議作用:将網絡層使用的IP地址解析出數據鍊路層使用的硬件地址(即:MAC地址)。RARP協議作用:也叫逆向ARP,它的作用是使隻知道自己硬件地址的主機能夠通過RARP協議找出其IP地址。但是現在的DHCP協議已經包含了RARP協議的功能了。
每一台主機都設有一個ARP高速緩存,裡面有本局域網上的各主機和路由器的IP地址到硬件地址的映射表。那麼主機是怎樣知道這些地址的呢?看下面主機A向主機B發送一個數據包的過程:
當主機A向本局域網中的主機B發送IP數據報時,就先在其ARP高速緩存中查看有無主機B的IP地址。如果有,就在ARP高速緩存中查出其對應的硬件地址,再把這個硬件地址寫入MAC幀,然後再通過局域網把該MAC幀發往此硬件地址。
如果在ARP高速緩存中沒有查到主機B的IP地址,那麼主機A就自動運行ARP,再按照下面的步驟找出主機B的硬件地址:
- (1)主機A的ARP進程在本局域網上廣播發送一個ARP請求分組,内容包括自己的IP地址和MAC地址以及要找的主機IP地址;
- (2)在本局域網上的所有主機上運行的ARP進程都收到ARP請求分組;
- (3)主機B的IP地址與ARP請求分組中要查詢的IP地址一緻,就收下這個ARP請求分組,并向主機A發送ARP響應分組,同時将這個ARP相應分組中寫入自己的硬件地址,同時也會将主機A的IP到硬件地址的映射寫入自己的ARP高速緩存。
- (4)主機A收到主機B的ARP響應分組後,就在其ARP高速緩存中寫入主機B的IP地址到硬件地址的映射。
說明:為了防止硬件地址的變更而導緻通信故障,ARP對保存在高速緩存中的每一個映射地址項目都設置生存時間,凡超過生存時間的項目就從高速緩存中删掉。
IP數據報的格式
一個IP數據報由首部和數據兩部分組成。首部的前一部分是固定長度,共20個字節,是所有IP數據報必須具有的。在首部的固定部分的後面是一些可選字段,其長度是可變的。首部各字段的意義如下所示:
版本:占4位,指IP協議的版本,是4還是6;首部長度:占4位,5~15;區分服務:實時性要求高不高決定要不要用;總長度:指首部和數據之和的長度,單位為字節。總長度字段為16位,因此數據報的最大長度為:2^16 - 1 = 65535字節。但是IP層下面的數據鍊路層中的一個數據幀中的數據字段最大傳輸單元MTU為1500,所以,如果數據報的長度超過了MTU,需要進行分片處理;标識:占16位,用于标識分片後的數據報,最後能組裝成原來的數據報;标志:MF=1,後面還有分片;MF=0,後面沒有分片了;DF:不能分片。(MF:More Fragment DF:DonotFragment)片偏移:占13位,相對于用戶數據起點,該片從何處開始。片偏移以8字節位偏移單位,看後面的圖片示例;生存時間:占8位,TTL(Time To Live),單位為跳數。路由器沒轉發數據報之前就把TTL值減1,最大數值為255;協議:占8位,标記上層需要使用哪個協議進行處理,常用的協議字段如下圖所示;首部檢驗和:占16位,隻檢驗數據報的首部,不包括數據部分;源地址:占32位,4字節;目的地址:占32位,4字節。可變部分:用來支持排錯、測量以及安全等措施,很少被使用。
分片數據報
首部檢驗和
IP層轉發分組的流程
在互聯網上轉發分組的時候,是從一個路由器轉發到下一個路由器。
說明:
(1)從上圖可以看出來,與路由器R2直連的網絡不需要路由表,可以之間交付。但是沒有直連的網絡則需要路由表來指明目的主機所在的網絡以及下一跳的地址;
(2)圖中每一個路由器都連接兩個網絡,則每一個路由器都有兩個不同的IP地址。
分組轉發算法
從數據報的首部提取目的主機的IP地址D,得出目的網絡地址N。若N就是與此路由器直接相連的某個網絡地址,則進行直接交付,不需要再經過其他的路由器,直接把數據報交付給目的主機(把目的主機地址D轉換為具體的硬件地址,把數據報封裝為MAC幀,再發送此幀);否則就是間接交付,執行下一步若路由表中有目的地址為D的特定主機路由,則把數據報傳送給路由表中所表明的下一跳路由器;否則,執行下一步。若路由表中有到達網絡N的路由,則把數據報傳送給路由表中所指明的下一跳路由器;否則,執行下一步.若路由表中有一個默認路由,則把數據報傳送給路由表中所指明的默認路由器;否則,執行下一步。報告轉發分組出錯。
3、子網的劃分劃分子網從兩級IP地址到三級IP地址:網絡号、子網号、主機号,可以用下面的記法來表示子網的IP形式:
三級IP地址可以表示為:IP地址 ::= {<網絡号>, <子網号>, <主機号>}
劃分子網基本思路
- (1)劃分完子網後,本單位以外的網絡是看不見這個子網的,對于它們來說這個單位仍然表現為一個網絡;
- (2)三級IP地址可以表示為:IP地址 ::= {<網絡号>, <子網号>, <主機号>};
- (3)凡是從其他網絡發送給本單位某台主機的IP數據報,仍然根據數據報的目的網絡号找到連接到本單位網絡上的路由器。但此路由器在收到IP數據報後,再按目的網絡号和子網号找到目的子網,将數據報交給目的主機。
子網掩碼
一個網絡中的路由器怎麼找到子網,将數據報發送給它呢?從IP數據報的首部是無法看出源主機或者目标主機是否進行了子網劃分,這個時候就需要使用子網掩碼了。
子網掩碼的特點:網絡号部分都為1,主機部分都為0。所以都是255.255.,形式(以B類地址為例)。使用子網掩碼的好處:不管網絡有沒有劃分過子網,隻要把子網掩碼和IP地址進行逐位的“與”(AND)運算,就可以立即得出網絡地址。
子網掩碼是一個網絡或一個子網的重要屬性。RFC950中規定:路由器在和相鄰路由器交換路由信息時,就必須把自己所在網絡或者子網的子網掩碼告訴相鄰的路由器。在路由器的路由表中的每一個項目,除了要給出目的網絡地址外,還必須同時給出該網絡的子網掩碼。
劃分子網增加了靈活性,但卻減少了能夠連接在網絡上的主機總數。(每個子網的第一個和最後一個IP都沒法用)
使用子網時分組的轉發路由表必須包含以下三項内容:目的網絡地址,子網掩碼和下一跳地址。由器轉發分組的算法(流程)如下:
從收到的數據報首部提取目的IP地址D先判斷是否為直接交付。對路由器直接相連的網絡進行逐個檢查:用各網絡的子網掩碼和D逐位相與,看結果是否和相對應的網絡地址匹配。若匹配,則把分組進行直接交付,轉發任務結束。否則就是間接交付,執行(3)若路由表中有目的地址為D的特定主機路由,則把數據報傳送給路由表中所指明的下一跳路由:否則執行(4)。對路由表的每一行,用其中的子網掩碼和D逐位相與,其結果為N。若N與該行的目的網絡地址匹配,則把數據報傳送給該行指明的下一跳路由器;否則執行(5)。若路由表中有一個默認路由,則把數據報傳送給路由表中所指明的默認路由器;否則執行(6)。報告轉發分組出錯。
無分類編址CIDR(構造超網)1.網絡前綴
無分類編址的正式名字為:無分類域間路由選擇CIDR(Classless Inter-Domain Routing,CIDR讀作“sider”)。
CIDR主要的兩個特點:(1)CIDR消除了傳統的A類、B類和C類地址以及子網的概念。CIDR将32位的IP地址劃分為前後兩個部分。前部分是”網絡前綴“,用來指明網絡,後面的部分用來指明主機。因此無分類的兩級編址為:
IP地址 :== {<網絡前綴>, <主機部分>}
(2)CIDR将網絡前綴都相同的連續的IP地址組成一個”CIDR地址塊“。知道CIDR地址塊中的任何一個地址,就可以知道這個地址塊的最小地址和最大地址,以及地址塊中的地址數。如下圖所示案例:
這兩個特殊的主機号是全0和全1的地址,一般不使用。
2. 最長前綴匹配
- 路由聚合:由于一個CIDR塊地址塊中有很多地址,所以在路由表中就利用CIDR地址塊來查找目的網絡。這種地址的聚合稱為路由聚合。路由聚合也稱為構造超網。
CIDR中的IP地址用網絡前綴和主機兩部分表示。因而,路由表中的每個項目由”路由前綴“和”下一跳地址“組成,但是在查找路由表時可能會得到不止一個匹配結果,應當從匹配結果中選擇具有最長網絡前綴的路由。這叫做最長前綴匹配,因為網絡的前綴越長,地址塊就越小,因而路由就越具體。故又稱為最佳匹配。
3. 使用二叉線索查找路由表為了更加有效地查詢,通常是把無分類地址的路由表存放在一種層次的數據結構中,然後自上而下地按層次進行查找。這裡最常用的就是二叉索引(binary trie),它是一種特殊結構的樹。IP地址中從左到右的比特值決定了從根節點逐層向下層延伸的路徑,而二叉線索中的各個路徑就代表路由表中存放的各個地址。
說明:圖中小圓圈代表中間節點、小方框代表葉子節點(每個葉節點代表唯一前綴)
從二叉線索的根節點自頂向下的深度最多32層,每一層對應IP地址中的一位。一個IP地址存入二叉索引的規則也很簡單。先檢查IP地址左邊的第一位,如果為0,則第一層的節點就在根節點的左下方,如果為1,則在右下方。然後再檢查地址的第二位,構造出第二層的結點,以此類推,直至唯一前綴的最後一位。圖中加粗的就是前綴0101在這個二叉線索中的路徑。
這裡需要說明:二叉線索隻是提供了一種可以快速在路由表中找到匹配的葉節點的機制。但這是否和網絡前綴匹配,還要和子網掩碼進行一次邏輯與運算。
為了提高二叉線索的查找速度,廣泛使用各種壓縮技術。如果前四位是一樣的,直接從第五位開始比較。
4、網絡控制報文協議ICMP
為了更有效地轉發IP數據報和提高交付成功的機會,在網際層使用了網際控制報文協議ICMP(Internet Control Message Protocol)。ICMP允許主機或路由器報告差錯情況和提供有關異常情況的報告。ICMP報文作為IP層數據報的數據,加上數據報的首部,組成IP數據報發送出去。
ICMP報文的種類
ICMP報文有兩種:ICMP差錯報告報文和ICMP詢問報文。
幾種常用的ICMP報文類型如下表所示:
ICMP差錯報告報文共有四種:
- 終點不可達。當路由器或主機不能交付數據報時就向源點發送終點不可達報文。
- 時間超過。當路由器收到生存時間為零的數據報時,除丢棄該數據報之外,還要向源點發送時間超過報文
- 參數問題。當路由器或目的主機收到的數據報的首部中有的字段的值不正确時,就丢棄該數據報,并向源點發送參數問題報文。
- 改變路由(重定向)。路由器把改變路由報文發送給主機,讓主機知道下次應将數據報發送給另外的路由器。
常用的ICMP詢問報文有兩種:
- 回送請求和回答。ICMP回送請求報文是由主機或路由器向一個特定的目的主機發出的詢問。收到此報文的主機必給源主機或路由器發送ICMP回送回答報文。這種詢問報文用來測試目的站是否可達以及了解其有關狀态。
- 時間戳請求回答。ICMP時間戳請求報文是某台主機或路由器回答當前的日期和時間。ICMP應用舉例ICMP的一個重要的應用就是分組網間探測PING(Packet InterNet Groper),用來測試兩台主機之間的連通性。PING使用了ICMP回送請求和回送回答報文。PING是應用層直接使用網絡層ICMP協議的一個例子。它沒有通過運輸層的TCP或者UDP。具體應用:
ping 目标主機名/IP : 查看網絡通不通、往返時間等等信息tracert 目标主機IP:跟蹤路由,查看從源主機到達目标主機所經過的路由器的IP地址,以及到達其中每一個路由器的往返時間;(說明:Linux下該命令為traceroute)pathping 目标主機IP:功能同tracert。
文章内容來源于網絡,作者:赫凱
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!