視頻地址:湖南科技大學計算機網絡微課堂https://www.bilibili.com/video/BV1c4411d7jb
4.1 網絡層概述
網絡層的主要任務是實現網絡互連,進而實現數據報在各網絡之間的傳輸
。
將多個網絡連接起來的設備稱為路由器
。
因特網的網絡層服務
因特網采用的是無連接的數據報服務
這種服務的特點:
- 可靠通信由
用戶主機
來保證 - 不需要建立網絡層連接
- 每個分組可走
不同的路徑
- 每個分組的首部必須攜帶
目的主機的完整地址
- 采用這種方式通信的
分組
可能誤碼,丟失,重復和失序。 - 由於網絡本身不提供
端到端的可靠傳輸服務
,網絡中的路由器可以做的相對簡單,價格低廉。 - 將復雜的
網絡處理功能
置於因特網的邊緣(用戶主機和其內部的運輸層),而將相對簡單的分組交付功能
置於因特網核心。
4.2 IPV4地址概述
IPv4
地址就是給因特網(Internet)上的每一台主機(或路由器)的每一個接口
分配一個在全世界范圍內唯一的
32比特的標識符。
IPV4地址的編制方法經歷了三個歷史階段:
IPV4地址表示方法
- 32位比特的IPV4地址不方便閱讀,記憶。所以采用
點分十進制方法
表示。 - 如:
10.240.15.170
。
4.2.1 分類編址的IPV4地址
分類編址的IPV4地址分為A、B、C、D、E五類。
比如一個主機的IPV4地址為192.168.1.104
,該地址是C類地址。192.168.1
表示的是網絡號。104
表示的是該主機。

注意事項:
- 只有
A類、B類和C類
地址可分配給網絡中的主機或路由器的各接口 - 主機號為“全0”的地址是
網絡地址
,不能分配給主機或路由器的各接口 - 主機號為“全1”的地址是
廣播地址
,不能分配給主機或路由器的各接口
A類地址細節
第一個字節第一位是0的表示A類地址。
-
最小網絡號0(0000 0000),保留不指派。
-
第一個
可指派的網絡號為1(0000 0001),IPV4地址為1.0.0.0
-
最大網絡號127(0111 1111),作為本地軟件環回測試地址,不指派。
- 最小的本地環回測試地址為127.0.0.1
- 最大的本地環回測試地址為127.255.255.254
-
最后一個
可指派的網絡號為126,網絡地址為126.0.0.0
-
A類地址可指派的網絡數量為2(8-1)-2=126(減2的原因是除去網絡號0和最大網絡號127)
-
每個網絡中可分配的IP地址數量為224-2=16777214個。(減2的原因是除去主機號為全0的
網絡地址
和主機號為全1的廣播地址
)。
B類地址細節
第一個字節的前兩位是10的表示B類地址。
- 最小網絡號也是第一個可指派的網絡號128.0(1000 0000 0000 0000),網絡地址為
128.0.0.0
- 最大網絡號也是最后一個可指派的網絡號191.255(1011 1111 1111 1111),網絡地址為
191.255.0.0
- 可指派的網絡數量為:2(16-2)=16384(減去開頭表示B類地址的10)
- 每個網絡中可分配的IP地址數量為216-2=65534(減去全0網絡地址和全1廣播地址)
C類地址細節
第一個字節的前三位是110的表示C類地址。
- 最小網絡號也是第一個可指派的網絡號192.0.0(1100 0000 0000 0000 0000 0000),網絡地址為192.0.0.0。
- 最大網絡號也是最后一個可指派的網絡號223.255.255(1101 1111 1111 1111 1111 1111),網絡地址為223.255.255.0。
- 可指派的網絡數量為2(24-3)=2097152。(減去開頭表示C類地址的110)
- 每個網絡中可分配的IP地址數量為28-2=254(減去全0網絡地址和全1廣播地址)
一般不使用的特殊IP地址
4.2.2 划分子網的IPV4地址
為什么需要划分子網的需求?
比如:
一家單位有300台主機,申請一個C類地址數量不夠分配(254個)。因此只能申請一個B類地址。
但是申請一個B類地址,給所以的主機和路由接口都分配一個IP地址后,還有大量IP地址剩余。
這些剩余的IP地址只能由該單位同一網絡使用,其他網絡不能使用。
隨着單位發展,該單位新增了一批計算機,並且需要將原來的網絡划分為3個獨立的網絡
。
如果為另外兩個網絡(稱為子網2和子網3)再申請新的網絡,費時又會花費更大的費用。
此時就需要用到划分子網來給子網2和子網3分配IP地址。
子網掩碼
輸入ipconfig
命令查看本機的IP地址。
無線局域網適配器 WLAN:
連接特定的 DNS 后綴 . . . . . . . :
本地鏈接 IPv6 地址. . . . . . . . : be50::2d76:4661:660b:7d06
IPv4 地址 . . . . . . . . . . . . : 192.168.1.104
子網掩碼 . . . . . . . . . . . . : 255.255.255.0
默認網關. . . . . . . . . . . . . : 192.168.1.1
32比特的子網掩碼可以表明分類IP地址的主機號部分被借用了幾個比特作為子網號。
未被借用主機號時
主機號被借用幾個比特作為子網號時
- 子網掩碼使用連續的比特1來對應網絡號和子網號
- 子網掩碼使用連續的比特0來對應主機號
- 這樣就構成了這個划分子網的IP地址的32比特的子網掩碼
- 將划分子網的IPv4地址與其相應的子網掩碼進行邏輯與運算就可得到IPv4地址所在子網的網絡地址
【舉例】
已知某個網絡的地址為218.75.230.0
,使用子網掩碼255.255.255.128
對其進行子網划分,請給出划分細節。
解析:
- 218開頭表示該網絡是一個C類網絡,三個字節作為網絡號,一個字節作為主機號。
- 子網掩碼最后一個字節是128,轉換為二進制為
1000 0000
,表示借用一個比特作為子網號。 - 主機號的一個比特作為子網號可以划分兩個子網。0和1。
218.75.230.0000 0000 #子網0的網絡地址 218.75.230.0 子網0
--- 可分配的子網0的地址 ---
218.75.230.0111 1111 #子網0的廣播地址 218.75.230.127
218.75.230.1000 0000 #子網1的網絡地址 218.75.230.128 子網1
--- 可分配的子網1的地址 ---
218.75.230.1111 1111 #子網1的廣播地址 218.75.230.255
默認子網掩碼
- 默認子網掩碼是指在未划分子網的情況下使用的子網掩碼

4.2.3 無分類編址的IPV4地址
-
划分子網在一定程度上緩解了因特網在發展中遇到的困難,但是數量巨大的C類網因為其地址空間太小並沒有得到充分使用,而因特網的IP地址仍在加速消耗,整個IPv4地址空間面臨全部耗盡的威脅。
-
1993年,IETF發布了無分類域間路由選擇CIDR(Classless lnter-Domain Routing)的RFC
文檔: RFC 1517~1519和1520。CIDR消除了傳統的A類、B類和C類地址,以及划分子網的概念
;CIDR可以更加有效地分配IPv4的地址空間
,並且可以在新的IPv6使用之前允許因特網的規模繼續增長。
無分類編址的IPV4地址的表示方法
- CIDR使用“斜線記法”,或稱CIDR記法。即在IPv4地址后面加上斜線“/”,在斜線后面寫上網絡前綴所占的比特數量。
- CIDR實際上是將網絡前綴都相同的連續的IP地址組成“CIDR地址塊”。
- 我們只要知道CIDR地址塊中的任何一個地址,就可以知道該地址塊的全部細節:
- 地址塊的最小地址
- 地址塊的最大地址地址塊中的地址數量
- 地址塊聚合某類網絡(A類、B類或C類)的數量
路由聚合概念
路由聚合也稱為構造超網
【舉例】:路由器R1需要周期性的將自己所知道的路由信息告訴R2,如果將5台主機1的IP地址都告訴給R2,那么將對R2的存儲空間有較大的的要求,這就需要提取這5台主機的公共信息,只告訴R2一條信息即可。

找這5個目的網絡的共同前綴
聚合后的地址庫(也稱為超網)
- 網絡前綴越長,地址塊越小,路由越具體;
- 若路由器查表轉發分組時發現有多條路由可選,則選擇網絡前綴最長的那條,這稱為
最長前綴匹配
,因為這樣的路由更具體。

4.3 IPV4地址的應用規划
給定一個IPV4地址塊,如何划分為更小的IPV4地址塊,並將這些地址塊分配給互聯網中不同的網絡。進而可以給各網絡中的主機和路由器接口分配IPV4地址。
- 一般有兩種方式:
定長的子網掩碼(FLSM)
、變長的子網掩碼(VLSM)
4.3.1 定長的子網掩碼
- 使用同一個子網掩碼來划分子網
- 每個子網所分配的IP地址數量相同,造成IP地址的浪費
【舉例】
- 假設申請到的C類網絡為
218.75.230.0
,請使用定長的子網掩碼給下圖所示的小型互聯網中的各設備分配IP地址。
【應用需求】
- 將C類網絡218.75.230.0划分成5個子網,每個子網上可分配的IP地址數量不得少於各自的需求。
根據需求計算出子網掩碼
划分子網的細節
划分子網的全部細節
- 從中任意挑選5個子網地址分配給N1-N5即可實現需求。
- 子網掩碼均是
255.255.255.224
采用這種方式的弊端:
- 網絡N5只需要兩個IP地址即可,但我們為其分配了32個網絡地址,造成了IP地址的浪費。
4.3.2 變長的子網掩碼
- 使用
不同的子網掩碼
來划分子網 - 每個子網所分配的IP地址數量可以不同,盡可能減少對IP地址的浪費
【舉例】
- 假設申請到的地址塊為
218.75.230.0/24
,請使用變長的子網掩碼給下圖所示的小型互聯網中的各設備分配IP地址。
計算出各網絡主機號位數和網絡前綴數
【應用需求】
- 從地址塊
218.75.230.0/24
中取出5個地址塊(1個“/27”
地址塊,3個“/28”
地址塊,1個“/30"
地址塊),按需分配5個網絡。
根據需求分配網絡地址
- 剩余的地址可以留作以后分配
完成分配
4.4 IP數據報的發送和轉發過程
IP數據報的發送和轉發過程包含以下兩部分:
- 主機發送IP數據報
- 路由器轉發lP數據報
注意:為了將重點放在TCP/IP協議棧的網際層發送和轉發IP數據報的過程上,在之后的舉例中,忽略使用ARP協議來獲取目的主機或路由器接口的MAC地址的過程以及以太網交換機自學習和轉發幀的過程。
【舉例】
- 這是兩個網絡,由路由器連接。
- 同一個網絡間的主機可以·直接通信,屬於
直接交付
。如:A-->C - 不同網絡間的主機之間的通信,需要路由器進行中轉,屬於
間接交互
。如:A-->D
【問題】:源主機(發送方)
如何知道目的主機(接收方)
是否和自己在同一網絡之間?
假設主機C要給主機F發送IP數據報
- 主機C將自己的IP地址和子網掩碼相與得到主機C所在的網絡地址
- 主機C將主機F的IP地址和自己的子網掩碼相與
- 該地址與主機C的網絡地址不同,因此目的主機與源主機
不在同一網絡
,雙方的通信屬於間接交互
。 - 主機C需要將IP數據報
傳輸給路由器
,由路由器將IP數據報轉發
給主機F。
【問題】:主機C如何知道應該將IP數據報交給哪個路由器
進行轉發呢?
實際上:
- 用戶為了讓本網絡上的主機能和其他網絡上的主機進行通信,就必須給其指定本網絡中的一個路由器。
- 由該路由器進行轉發。所指定的路由器,也被稱為
默認網關
。
【假設】:
主機A給主機D發送IP數據報,屬於間接交互。主機A會將該數據報傳輸給自己的默認網關,也就是路由器。
- 路由器收到數據報后,檢查IP數據報首部是否出錯,若出錯,則直接丟棄該IP數據報並通告源主機若沒有出錯,則進行轉發
- 根據IP數據報的目的地址在路由表中查找匹配的條目:若找到匹配的條目,則轉發給條目中指示的下一跳若找不到,則丟棄該IP數據報並通告源主機。
隔離域:
- 中繼器和集線器工作在物理層,既不隔離沖突域也不隔離廣播域。
- 網橋和交換機(多端口網橋)工作在數據鏈路層,可以隔離沖突域,不能隔離廣播域。
- 路由器工作在網絡層,既隔離沖突域,也隔離廣播域。
4.5 靜態路由配置及其可能產生的路由環路問題
4.6 路由選擇協議
4.7 IPV4數據報的首部格式
固定部分:每個IP數據報首部都必須包含的部分
可變長部分:有些IP數據報,還包含一些可選的字段來增加IP數據報的功能
- IP數據報的首部常以32個比特為單位進行描述,圖中的每一行都由32個比特(4個字節)構成。
- 每個小格子稱為字段或者域,每個字段或某些字段的組合用來表達IP協議的相關功能。
版本
- 占4比特,表示IP協議的版本。
- 通信雙方使用的IP協議的版本必須一致。目前廣泛使用的IP協議版本號為4(即IPv4)。
首部長度
- 占4比特,表示IP數據報首部的長度。該字段的取值以4字節為單位。最小十進制取值為5,表示lP數據報首部只有20字節固定部分;
- 最大十進制取值為15,表示IP數據報首部包含20字節固定部分和最大40字節可變部分。
可選字段
- 長度從1個字節到40個字節不等。用來支持排錯、測量及安全等措施。
- 可選字段增加了IP數據報的功能,但這同時也使得IP數據報的首部長度成為可變的。這就增加了每一個路由器處理IP數據報的開銷。
實際上可選字段很少被使用
。
填充字段
- 確保首部長度(固定部分和可變部分)為4字節的整數倍。不足的地方使用全0進行填充。
區分服務
- 占8比特,用來獲得更好的服務。
- 該字段在舊標准中叫作服務類型,但實際上一直沒有被使用過。
- 1998年,因特網工程任務組IETF把這個字段改名為- 區分服務。利用該字段的不同數值可提供不同等級的服務質量。
- 只有在使用區分服務時,該字段才起作用。一般情況下都不使用該字段。
總長度
- 占16比特,表示IP數據報的總長度(首部+數據載荷)。
- 最大取值為十進制的65535(很少傳輸這么長的數據報),以字節為單位。
標識、標志、片偏移
這三個字段共同用於IP數據報分片
- 網絡層封裝的IP數據報將在數據鏈路層分裝成幀。
- 每一種數據鏈路層協議都規定了幀的數據載荷的最大長度,稱為最大傳輸單元MTU。
- 以太網的數據鏈路層規定MTU的值為1500字節。
- 如果某個IP數據報的總長度超過MTUI時,將無法封裝成幀,需要將源IP數據報分片為更小的數據報,再將各分片數據報封裝成幀。
標識
- 占16比特,屬於同一個數據報的各分片數據報應該具有相同的標識。
- IP軟件維持一個計數器,每產生一個數據報,計數器值加1,並將此值賦給標識字段。
標志
- 占3比特,各比特含義如下:
- DF位:1表示不允許分片,0表示允許分片
- MF位:1表示后面還有分片,0表示這是最后一個分片
- 保留位:必須為0
片偏移
- 占13比特,指出分片數據報的數據載荷部分偏移其在原數據報的位置有多少個單位。
- 片偏移以8個字節為單位
- 片偏移量必須為整數
【舉例】對IPV4數據報進行分片
- 以以太網傳輸該IP數據報,最大傳輸單元為1500字節,無法封裝3820字節長的IP數據報,需要將其拆分。
- 片偏移 /8 是因為片偏移以8個字節為單位
【假設】分片2的數據報經過某一網絡時還需要進行分片
生存時間TTL
-
占8比特,最初以秒為單位,最大生存周期為255秒,路由器轉發IP數據報時,將IP數據報首部中的該字段的值減去IP數據報在本路由器上所耗費的時間,若不為0就轉發,否則就丟棄。
-
現在以“跳數”為單位,路由器轉發IP數據報時,將IP數據報首部中的該字段的值減1,若不為0就轉發,否則就丟棄。
-
生存時間TTL字段的作用——防止IP數據報在網絡中永久兜圈(人工錯誤配置了路由表)
協議
- 占8比特,指明IPv4數據報的數據部分是何種協議數據單元。
- 常用的一些協議和相應的協議字段值如下。
首部檢驗和
- 占16比特,用來檢測首部在傳輸過程中是否出現差錯。比CRC檢驗碼簡單,稱為因特網檢驗和
- IP數據報每經過一個路由器,路由器都要重新計算首部檢驗和,因為某些字段(生存時間、標志.片偏移等)的取值可能發生變化。
- 由於IP層本身並不提供可靠傳輸的服務,並且計算首部校驗和是一項耗時的操作,因此在IPv6中,路由器不再計算首部校驗和,從而更快轉發IP數據報。
源IP地址和目的IP地址
- 各占32比特,用來填寫發送該IP數據報的源主機的IP地址和接收該IP數據報的目的主機的IP地址。
4.8 虛擬專用網VPN和網絡地址轉換NAT
4.8.1 VPN
虛擬專用網VPN(Virtual Private Network)
- 利用公用的因特網作為本機構各專用網之間的通信載體,這樣的專用網又稱為虛擬專用網。
- 由於IPv4地址的緊缺,一個機構能夠申請到的IPv4地址數量往往遠小於本機構所擁有的主機數量。
- 虛擬專用網中的各主機所分配的地址應該是本機構可自由分配的專用地址(私有地址),而不是需要申請的、在因特網上使用的公有地址。
- 也被稱之為
IP隧道技術
。
這三個地址塊不需要申請(私有地址)
- 私有地址只能用於內部通信,而不能用於和因特網上的主機通信。
- 私有地址只能用於本地地址而不能用作全球地址。
- 在因特網上的路由器對所有目的地址是私有地址的IP數據報一律不進行轉發。
這兩個部門要想進行通信:
- 各自至少需要一個路由器具有合法的全球IP地址
- 它們各自的專用網才能利用公用的因特網進行通信
10.1.0.3
需要和10.2.0.3
通信
- 第一步:主機
10.1.0.3
會將待發送數據封裝成內部IP數據報,發送給路由器R1。 - 第二步:R1收到數據后,查看目的地址,發現目的網絡需要通過因特網才能到達,就將該IP數據報進行加密,確保內部IP數據報的安全,然后為其添加首部信息,封裝成可以在因特網上傳輸的外部數據報。
- 第三步:R2收到R1發送的IP數據報,去掉首部,恢復到原來的內部IP數據報。取出源地址
10.1.0.3
和目的地址10.2.0.3
。 - 第四步:根據目的地址,將數據發送給主機
10.2.0.3
。
內聯網VPN
- 同一機構內不同部門的內部網絡所構成的虛擬專用網VPN又稱為內聯網VPN
外聯網VPN
- 有時一個機構的VPN需要有某些外部機構(通常就是合作伙伴)參加進來。這樣的VPN就稱為外聯網VPN
遠程接入VPN
- 在外地工作的員工需要訪問公司內部的專用網絡時,只要在任何地點接入到因特網,運行駐留在員工PC中的VPN軟件,在員工的PC和公司的主機之間建立VPN隧道,即可訪問專用網絡中的資源。這種VPN稱為遠程接入VPN
4.8.2 NAT(重點)
網絡地址轉換NAT
(Network Address Translation)
- 雖然因特網采用了無分類編址方式來減緩IPv4地址空間耗盡的速度,但由於因特網用戶數目的激增,特別是大量小型辦公室網絡和家庭網絡接入因特網的需求不斷增加,IPv4地址空間即將面臨耗盡的危險仍然沒有被解除。
- 1994年提出了一種網絡地址轉換NAT的方法再次緩解了IPv4地址空間即將耗盡的問題
- NAT能使大量使用內部專用地址的專用網絡用戶共享少量外部全球地址來訪問因特網上的主機和資源。
使用私有地址的主機如何與使用全球IP地址的主機進行通信?
- 在專用網絡連接到因特網的路由器上,安裝NAT軟件。
- 裝有NAT軟件的路由器稱為NAT路由器,至少有一個有效的外部全球IP地址。
- 所有使用私有地址的主機在和外部通信時,都要在NAT路由器上將其私有地址轉換成全球IP地址。
如果NAT路由器具有N個全球IP地址,那么至多只能有N個內網主機能夠同時和因特網上的主機通信。
- 由於絕大多數的網絡應用都是使用運輸層協議TCP或UDP來傳送數據,因此可以利用運輸層的端口號和IP地址一起進行轉換。
- 這樣,用一個全球IP地址就可以使多個擁有本地地址的主機同時和因特網上的主機進行通信。
- 這種將端口號和IP地址一起進行轉換的技術叫作
網絡地址與端口號轉換NAPT
(Network Address and Port Translation)。
注意:
- 使用私有地址的主機不能直接充當因特網服務器
- 對於一些P2P網絡應用,需要外網主機主動與內網主機進行通信,在通過NAT時會遇到問題,需要網絡應用自己使用一些特殊的NAT穿越技術來解決問題。
- 由於NAT對外網屏蔽了內網主機的網絡地址,能為內網的主機提供一定的安全保護。