網絡層Note
① 網絡層概述
1. 網絡層的主要任務
數據鏈路層只能實現同一局域網下主機的通信,但是局域網之間是存在異構的,不能直接通信,而且局域網的總線長度或者說覆蓋范圍是有限的,無法把全球變成一個局域網。
因此人們就想實現局域網與局域網之間的通信,進而實現IP數據包在各網絡之間的傳輸,實現全球局域網的互聯,也就是現在所說的互聯網。
2. 需要解決的問題
-
網絡層向運輸層提供什么樣的服務
IP協議采用的是無連接的、盡最大努力交付的數據報服務,是不可靠傳輸。部分網絡層協議可提供可靠傳輸。
-
網絡層尋址問題(IP地址)
-
路由選擇問題(路由選擇算法)
② 網絡層提供的兩種服務
1. 面向連接的虛電路服務
把可靠通信交給網絡層來保證。使用虛電路服務必須先建立網絡層的連接(虛電路VC),通信雙方沿着已建立的虛電路發送分組,以這種方式發送的數據包無差錯、按序到達、不丟失、不重復。
分組格式:首部只攜帶一個虛電路的編號,不需要目的主機的地址
2. 無連接的數據報服務
把可靠通信交給主機(傳輸層)來保證。使用數據報服務不需要建立網絡連接,每個分組可以走不同的路徑,以這種方式發送的數據包可能誤碼、丟失、重復和亂序。
分組格式:首部必須攜帶目的主機的完整地址
因特網采用這種思想,把復雜的錯誤處理功能置於因特網的邊緣(主機內部的傳輸層),而相對簡單的分組交付置於因特網的核心。
③ IP地址
-
給每個連接在互聯網上的主機或者路由器分配的一個唯一的32位的標識符,常使用點分十進制來表示。
-
點分十進制:把32位分成4組,每組8位,把這八位二進制數換算成十進制表示。
-
IP地址的結構:網絡號+主機號。網絡號和主機號的位數在不同的網絡有所不同,可以自己划分。網絡號標識互聯網中每個不同的局域網,主機號標識該局域網中不同的主機。
-
IP地址的編碼方法有三種:分類的IP地址、子網的划分以及構成超網
下面我們一步步深入,從IP地址的編碼帶你了解網絡層是如何工作的
1. 分類編址
網絡層把IP地址分為五類,分別是A、B、C、D和E類地址,其中D類地址為多播地址,E類地址至今還沒使用。重點只需要放在前三種地址:
![]()
對IP地址進行分類是為了適應不同的網絡,有些網絡擁有很多主機,有些網絡主機很少。但不管怎么分配,只需要在同一網絡的主機有一個唯一的ip地址就行。
-
A類地址
A類地址最小網絡號00000000,保留不指派;最大網絡號11111111,作為本地環路測試地址,不指派。
因此A類地址可指派的網絡號為00000001~01111110,即1 ~ 126,共有126個網絡號,\(2^7-2\)
附:A類地址的本地環路測試地址從127.0.0.1~127.255.255.254
-
B類地址
因為B類地址的頭兩位為10,因此一定不存在網絡號全0或者全1
B類地址最小的網絡號為10000000 00000000,即128.0.0.0;最大網絡號為10111111 11111111,即191.255.0.0
因此B類地址可指派的網絡號為128.0.0~192.255.0.0,可指派的網絡數量為\(2^{16-2}=16384\)
-
C類地址
C類地址頭三位為110,同樣不存在網絡號全0或者全1
C類地址最小的網絡號為11000000 00000000 00000000,即192.0.0.0;最大的網絡號為11011111 11111111 11111111,即223.255.255.0
因此C類地址可指派的網絡數量為\(2^{24-3}=2097152\)
考研題1

考研題2

2. 划分子網
分類編址存在的問題:
- 地址利用率低,兩級的IP地址不夠靈活。比如一個單位想在單位內部再划分網路,他就必須去申請一個新的網絡號。但是這樣不僅不浪費IP地址,還有使路由表的信息變得十分巨大(因為網絡數變多了)
解決方法是從主機號‘’借“幾位充當子網號,實現在對該網絡的進一步划分,使IP地址從兩級結構變成三級結構:[網絡號-子網號-主機號]
划分子網純屬一個單位內部的事情,對外部網絡透明,對外仍然表現為沒有划分子網的一個網絡。

但是路由器又怎么知道該IP數據報的目的IP地址借了多少位充當子網號呢?也就是說,路由器要怎么區分數據報屬於哪個子網?
由此引入了子網掩碼的概念。子網掩碼是長度和IP地址一樣32位,左邊一部分全為1,對應網絡號和子網號;右邊一部分全為0,對應主機號。因此,只要知道報文的子網掩碼,就可以知道目的IP地址的子網號是多少,路由器就可以根據子網號進行轉發。

如何划分子網【1】

如何划分子網【2】

默認子網掩碼
是指不划分子網時的子網掩碼
A類地址:255.0.0.0
B類:255.255.0.0
C類地址:255.255.255.0
3. 無分類編制CIDR(構造超網)
在可變子網掩碼VLSM的基礎上,人們又研究出一種新的划分方式CIDR。這是一種新的划分子網的方法,消除了A類、B類、C類地址的概念,使用各種長度的”網絡前綴“來區分不同的網絡。
CIDR編碼是一種無分類的二級編址:{網絡前綴,主機號}
-
在分配到一個CIDR地址塊后,可以進一步進行子網划分。比如/20可以再次划分為/23。
-
CIDR地址塊
-
路由匯聚
在進行CIDR編址后,路由表根據CIDR地址塊的特點可以進行”路由匯聚“,也叫做”構造超網“。使用路由匯聚可以減少路由器之間路由信息的交換,減少路由表的記錄數,從而提高整個互聯網的性能。
-
路由表如何添加網絡記錄?
一個網絡中有幾十個子網,如何不采用CIDR技術,其他路由器的路由表就需要添加全部的網絡信息。但是現在我們只需要添加地址聚合后的一個項目就能找到該網絡,至於是哪個子網,就由這個網絡的路由器負責。
-
路由表如何根據目的網絡地址選擇下一跳
最長前綴匹配,匹配最具體的網絡信息
-
考研真題1

考研真題2

④ IP地址的應用規划
就是根據需求分配IP地址,有兩種分配方式:FLSM定長子網掩碼和VLSM變長子網掩碼
⑤ IP數據報的分組轉發
前面一直說路由器轉發轉發,現在我們就來說說主機是如何發送數據包,路由器收到數據包后又是如何轉發數據報的。
-
主機發送數據報:
- 目的主機與自己同一個網絡:直接交付(通過ARP協議解析MAC地址,封裝MAC幀交給交換機)
- 目的主機與自己不在同一個網絡:間接交付(查詢本地路由表所造網絡的默認網關,由默認網關轉發)
-
路由器轉發IP數據報:
- 檢查IP數據報首部是否出錯,出錯丟棄並告知源主機,沒錯下一步
- 根據目的地址在路由表中查找匹配的條目,根據條碼進行下一跳。若找不到匹配的,直接丟棄。
-
路由表:實際上所有三層以上的設備都是有一份路由表的,不單單只有路由器有路由表。路由表上的記錄一般為目的網絡、子網掩碼、下一跳。
路由表添加記錄的三種方式:
- 動態路由表:當互聯網絡結構變化時,動態路由選擇協議就會自動更新所有路由器中的路由表
- 靜態路由表:靜態路由表是由人工方式建立,簡單和開銷較小,但不能及時適應網絡狀態
特殊的記錄:
- 特定主機路由:為特定的主機指明一個路由,靜態路由。目的網絡為主機IP地址/32,掩碼為255.255.255.255。可以看到特定主機的前綴最長32位,只要有匹配的一定選他。
- 默認路由:也是靜態路由,人工配置,目的地址為0.0.0.0/0。可以看到默認路由的前綴最短最模糊。
下一跳地址則是目的路由器的IP地址、
⑥ 路由選擇協議
-
自適應:動態路由選擇
-
分布式:路由器之間相互交換路由信息
-
分層次:將整個因特網划分為多個較小的AS自治系統
AS是在單一技術管理下的一組路由器,使用的是自治系統內部的路由選擇協議,可以把單位內部網絡細節隱藏起來同時連接到互聯網。
路由選擇協議的分類

IGP和EGP:

1. 內部網關協議RIP
是一種基於距離向量(目的網絡,跳數)的路由選擇協議,用來動態構建路由器的路由表。
RIP要求AS內的每一個路由器都要維護自己到AS內其他每個網絡的距離向量。
- 路由器到直連網絡的跳數為1
- 路由器到非直連網絡的跳數為經過的路由器+1
- RIP最大允許的跳數為15,當跳數為16時意味着目的網絡不可達。
-
RIP工作的基本原理
要求路由器周期性地(30秒)向外發送路由刷新報文(本路由器的全部路由信息)通知相鄰路由器自己可以達到的網絡,及到達該網絡的距離(跳數)。其他路由器在接收到某個路由器的(V,D)報文后,按照最短路徑原則對各自的路由表進行刷新。
舉例說明(改造路由更新報文-->更新路由表)
-
RIP協議的報文格式
-
RIP路由選擇協議的缺點
有時會形成路由環路,對”壞消息傳播慢“,常常需要幾分鍾才能識別網絡中出現的故障。
2. OSPF開放最短路徑優先協議
是一種基於鏈路狀態的內部路由選擇協議。基於Dijstra算法,從算法上保證了不會產生路由環路,是對RIP協議的改進。
與RIP協議不同的是,RIP協議知道到所有網絡的最短距離及下一跳路由器,但不知道全網的拓撲結構信息。而OSPF是一種基於迪傑斯特拉算法的協議,迪傑斯特拉算法告訴我們,只要我們知道了全網絡的拓撲結構(帶權無向圖),我們就可以算出每個結點到其他節點的最短距離。
因此,OSPF協議是動態的為自治系統內的每一個路由器創建並更新全網的拓撲結構。
附:RIP算法是根據路由器的跳數來衡量哪條路徑最優,而OSPF協議的權值可有網絡管理員自己設置:可以是帶寬、距離、費用等等。
附:OSPF直接使用IP數據報轉發,協議號為89
!! OSPF協議如何為AS內的每一個路由器創建並更新全網的拓撲結構?
-
OSPF相關的五種分組類型和執行過程
首先要明確的是:使用OSPF協議的每一個路由器都有自己的鏈路狀態數據庫LSDB,狀態庫中有其他路由器的LSA(鏈路狀態信息),用於保存全網的拓撲結構。我們通過洪泛法使各路由器發送自己的LSA(封裝在LSU分組中),從而實現各路由器的LSDB保持一致。
-
問候分組:用來建立和維護鄰居關系
-
數據庫描述分組:向鄰居發送自己的鏈路狀態數據庫中所有記錄的摘要信息
-
鏈路狀態請求分組:向對方請求發送某些鏈路狀態的詳細信息
-
鏈路狀態更新分組:用洪泛法(發給相鄰,相鄰又發給相鄰)向全網更新鏈路狀態
-
鏈路狀態確認分組:對鏈路狀態更新分組的確認
-
區域的概念
3. 邊界網關協議BGP
BGP協議十分復雜,是用來實現自治系統之間的路由選擇。
這里我們只介紹一個考點:BGP協議使用tcp報文轉發,協議號字段為6
![]()
⑦ IP數據報的報文格式
看下圖就夠了:
考研真題
⑧ ICMP網際控制報文協議
1. 概述
IP協議提供的是盡力而為的服務,缺少差錯控制和查詢機制。ICMP協議就是為解決以上問題,而設計的一種差錯報告和查詢、控制機制。
- ICMP本身是網絡層的一個協議,但是它的報文要封裝成IP分組(協議號為1),然后再傳送給數據鏈路層。
- 從協議體系上看,ICMP只是要解決IP協議可能出現的不可靠問題,不能獨立於IP協議,是IP協議的一個組成部分。
- ICMP不能糾正差錯,它只是報告差錯。差錯處理需要由高層協議去完成。
2. ICMP報文
ICMP報文的種類有兩種:ICMP差錯報告報文和ICMP詢問報文。
差錯報告報文的種類:
- 終點不可達:沒收到
- 時間超過:TTL為0
- 參數問題:IP數據報首部出現問題
- 改變路由:收到了發信息給源主機,要它為自己的路由表添加記錄,下次可以直接發到目的路由,不用經過我轉發
以下特殊情況不發送ICMP差錯報告報文
- 對ICMP差錯報告報文不再發送ICMP差錯報告報文。
- 對第一個分片的數據報片的所有后續數據報片都不發送 ICMP 差錯報告報文。
- 對廣播的數據報都不發送 ICMP 差錯報告報文。
- 對具有特殊地址(如127.0.0.0 或 0.0.0.0)的數據報不發送 ICMP 差錯報告報文。
詢問報文的種類:
- 回送請求和回答:主機或路由器給目的主機發出詢問,目的主機必須給源主機發送此報文
- 時間戳請求和回答:用於同步時間
ICMP的應用
- ping命令,使用了ICMP回送請求和回答報文,是應用層直接使用ICMP,沒有經過TCP和UDP
- tracert命令,使用了ICMP時間超過報文,發送的報文的TTL從1開始逐漸遞增,通過路由器的差錯報告報文就可以跟蹤發送路線。最后一個路由器要發送終點不可達報文,因為tracert發送的IP數據報是無效的差錯的。