計算機網絡 網絡層(二)子網與超網

計算機網絡(八)

學習計算機網絡過程中的心得體會以及知識點的整理,方便我自己查找,也希望可以和大家一起交流。

—— 網絡層 ——

上接《計算機網絡 網絡層(一)》

《計算機網絡 網絡層(一)》

2.5 IP 數據報的格式

  • 一個 IP 數據報由首部數據兩部分組成。
  • 首部的前一部分是固定長度,共 20 字節,是所有 IP 數據報必須具有的。
  • 在首部的固定部分的後面是一些可選字段,其長度是可變的。
    網絡層
    網絡層
    網絡層
    網絡層
    網絡層
    網絡層
    網絡層
  • IP 協議支持多種協議,IP 數據報可以封裝多種協議 PDU。
    網絡層
  • IP 數據報首部檢驗和的計算採用 16 位二進制反碼求和算法
2.5.1 IP 數據報首部的可變部分
  • IP 首部的可變部分就是一個選項字段,用來支持排錯、測量以及安全等措施,內容很豐富。
  • 選項字段的長度可變,從 1 個字節到 40 個字節不等,取決於所選擇的項目。
  • 增加首部的可變部分是爲了增加 IP 數據報的功能,但這同時也使得 IP 數據報的首部長度成爲可變的。這就增加了每一個路由器處理數據報的開銷。
    • 實際上這些選項很少被使用。

2.6 IP 層轉發分組的流程

  • 假設:有四個 A 類網絡通過三個路由器連接在一起。每一個網絡上都可能有成千上萬個主機。
  • 可以想像,若按目的主機號來製作路由表,每一個路由表就有 4 萬個項目,即 4 萬行(每一行對應於一臺主機),則所得出的路由表就會過於龐大。
  • 但若按主機所在的網絡地址來製作路由表,那麼每一個路由器中的路由表就只包含 4 個項目(每一行對應於一個網絡),這樣就可使路由表大大簡化。

網絡層

2.6.1 查找路由器

根據目的網絡地址就能確定下一跳路由器,這樣做的結果是:

  • IP 數據報最終一定可以找到目的主機所在目的網絡上的路由器(可能要通過多次的間接交付)。
  • 只有到達最後一個路由器時,才試圖向目的主機進行直接交付
2.6.2 特定主機路由
  • 雖然互聯網所有的分組轉發都是基於目的主機所在的網絡,但在大多數情況下都允許有這樣的特例,即爲特定的目的主機指明一個路由。
  • 採用特定主機路由可使網絡管理人員能更方便地控制網絡和測試網絡,同時也可在需要考慮某種安全問題時採用這種特定主機路由。
2.6.3 默認路由 (default route)
  • 路由器還可採用默認路由減少路由表所佔用的空間和搜索路由表所用的時間
  • 這種轉發方式在一個網絡只有很少的對外連接時是很有用的。
  • 默認路由在主機發送 IP 數據報時往往更能顯示出它的好處。
  • 如果一個主機連接在一個小網絡上,而這個網絡只用一個路由器和互聯網連接,那麼在這種情況下使用默認路由是非常合適的。
    網絡層
2.6.4 注意問題
  • IP 數據報的首部中沒有地方可以用來指明“下一跳路由器的 IP 地址”。
  • 當路由器收到待轉發的數據報,不是將下一跳路由器的 IP 地址填入 IP 數據報,而是送交下層的網絡接口軟件。
  • 網絡接口軟件使用 ARP 負責將下一跳路由器的 IP 地址轉換成硬件地址,並將此硬件地址放在鏈路層的 MAC 幀的首部,然後根據這個硬件地址找到下一跳路由器。
2.6.5 路由器分組轉發算法

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

(2) 若網絡 N 與此路由器直接相連,則把數據報直接交付目的主機 D;否則是間接交付,執行(3)。

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

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

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

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

2.6.6 路由表
  • 路由表沒有給分組指明到某個網絡的完整路徑。
  • 路由表指出,到某個網絡應當先到某個路由器(即下一跳路由器)
  • 在到達下一跳路由器後,再繼續查找其路由表,知道再下一步應當到哪一個路由器。
  • 這樣一步一步地查找下去,直到最後到達目的網絡。

3. 劃分子網和構造超網

3.1 劃分子網

  • 在 ARPANET 的早期,IP 地址的設計確實不夠合理:
    • (1) IP 地址空間的利用率有時很低。
    • (2) 給每一個物理網絡分配一個網絡號會使路由表變得太大因而使網絡性能變壞。
    • (3) 兩級的 IP 地址不夠靈活。
3.1.1 從兩級 IP 地址到三級 IP 地址
  • 在 ARPANET 的早期,IP 地址的設計確實不夠合理:
    • (1) IP 地址空間的利用率有時很低。
    • (2) 給每一個物理網絡分配一個網絡號會使路由表變得太大因而使網絡性能變壞。
    • (3) 兩級的 IP 地址不夠靈活。

劃分子網

  • 從 1985 年起在 IP 地址中又增加了一個“子網號字段”,使兩級的 IP 地址變成爲三級的 IP 地址。
  • 這種做法叫作劃分子網 (subnetting) 。
  • 劃分子網已成爲互聯網的正式標準協議。
  • 劃分子網純屬一個單位內部的事情。單位對外仍然表現爲沒有劃分子網的網絡。
  • 從主機號借用若干個位作爲子網號 subnet-id,而主機號 host-id 也就相應減少了若干個位。
    網絡層
  • 凡是從其他網絡發送給本單位某個主機的 IP 數據報,仍然是根據 IP 數據報的目的網絡號 net-id,先找到連接在本單位網絡上的路由器。
  • 然後此路由器在收到 IP 數據報後,再按目的網絡號 net-id 和子網號 subnet-id 找到目的子網。
  • 最後就將 IP 數據報直接交付目的主機。

一個未劃分子網的 B 類網絡145.13.0.0
網絡層
劃分爲三個子網後對外仍是一個網絡
網絡層

  • 當沒有劃分子網時,IP 地址是兩級結構。
  • 劃分子網後 IP 地址就變成了三級結構
  • 劃分子網只是把 IP 地址的主機號 host-id 這部分進行再劃分,而不改變 IP 地址原來的網絡號 net-id。
  • 優點
    • 減少了 IP 地址的浪費
    • 使網絡的組織更加靈活
    • 更便於維護和管理
  • 劃分子網純屬一個單位內部的事情,對外部網絡透明,對外仍然表現爲沒有劃分子網的一個網絡。
3.1.2 子網掩碼
  • 從一個 IP 數據報的首部並無法判斷源主機或目的主機所連接的網絡是否進行了子網劃分。
  • 使用子網掩碼(subnet mask)可以找出 IP 地址中的子網部分。
    規則:
    • 子網掩碼長度=32位
    • 某位=1:IP地址中的對應位爲網絡號和子網號
    • 某位=0:IP地址中的對應位爲主機號

IP 地址的各字段和子網掩碼
網絡層
(IP 地址) AND (子網掩碼) =網絡地址
網絡層
默認子網掩碼
網絡層

  • 子網掩碼是一個網絡或一個子網的重要屬性
  • 路由器在和相鄰路由器交換路由信息時,必須把自己所在網絡(或子網)的子網掩碼告訴相鄰路由器。
  • 路由器的路由表中的每一個項目,除了要給出目的網絡地址外,還必須同時給出該網絡的子網掩碼。
  • 若一個路由器連接在兩個子網上就擁有兩個網絡地址和兩個子網掩碼。
3.1.3 子網劃分方法
  • 固定長度子網變長子網兩種子網劃分方法。
  • 在採用固定長度子網時,所劃分的所有子網的子網掩碼都是相同的。
  • 雖然根據已成爲互聯網標準協議的RFC 950文檔,子網號不能爲全1全0,但隨着無分類域間路由選擇CIDR的廣泛使用,現在全1和全0的子網號也可以使用了,但一定要謹慎使用,確認你的路由器所用的路由選擇軟件是否支持全0或全1的子網號這種較新的用法。
  • 劃分子網增加了靈活性,但卻減少了能夠連接在網絡上的主機總數
    網絡層

3.2 使用子網時分組的轉發

  • 在不劃分子網的兩級 IP 地址下,從 IP 地址得出網絡地址是個很簡單的事。
  • 但在劃分子網的情況下,從 IP 地址卻不能唯一地得出網絡地址來,這是因爲網絡地址取決於那個網絡所採用的子網掩碼,但數據報的首部並沒有提供子網掩碼的信息
  • 因此分組轉發的算法也必須做相應的改動。
3.2.1 在劃分子網情況下路由器轉發分組的算法

(1) 從收到的分組的首部提取目的 IP 地址 D。

(2) 先用各網絡的子網掩碼和 D 逐位相“與”,看是否和相應的網絡地址匹配。若匹配,則將分組直接交付。否則就是間接交付,執行 (3)。

(3) 若路由表中有目的地址爲 D 的特定主機路由,則將分組傳送給指明的下一跳路由器;否則,執行 (4)。

(4) 對路由表中的每一行,將子網掩碼和 D 逐位相“與”。若結果與該行的目的網絡地址匹配,則將分組傳送給該行指明的下一跳路由器;否則,執行 (5)。

(5) 若路由表中有一個默認路由,則將分組傳送給路由表中所指明的默認路由器;否則,執行 (6)。

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

3.3 無分類編址 CIDR(構造超網)

3.3.1 網絡前綴
  • 劃分子網在一定程度上緩解了互聯網在發展中遇到的困難。然而在 1992 年互聯網仍然面臨三個必須儘早解決的問題:

    • (1) B 類地址在 1992 年已分配了近一半,眼看就要在 1994 年 3 月全部分配完畢!
    • (2) 互聯網主幹網上的路由表中的項目數急劇增長(從幾千個增長到幾萬個)。
    • (3) 整個 IPv4 的地址空間最終將全部耗盡。
  • 1987 年,RFC 1009 就指明瞭在一個劃分子網的網絡中可同時使用幾個不同的子網掩碼。

  • 使用變長子網掩碼 VLSM (Variable Length Subnet Mask)可進一步提高 IP 地址資源的利用率。

  • 在 VLSM 的基礎上又進一步研究出無分類編址方法,它的正式名字是無分類域間路由選擇 CIDR (Classless Inter-Domain Routing)。

3.3.2 CIDR
  • CIDR 消除了傳統的 A 類、B 類和 C 類地址以及劃分子網的概念,因而可以更加有效地分配 IPv4 的地址空間。
  • CIDR使用各種長度的“網絡前綴”(network-prefix)來代替分類地址中的網絡號和子網號。
  • IP 地址從三級編址(使用子網掩碼)又回到了兩級編址。
  • CIDR 使用“斜線記法”(slash notation),它又稱爲 CIDR 記法,即在 IP 地址面加上一個斜線“/”,然後寫上網絡前綴所佔的位數(這個數值對應於三級編址中子網掩碼中 1 的個數)。例如: 220.78.168.0/24

CIDR地址塊

  • CIDR 把網絡前綴都相同的連續的 IP 地址組成“CIDR 地址塊”。
  • 128.14.32.0/20 表示的地址塊共有 212 個地址(因爲斜線後面的 20 是網絡前綴的位數,所以這個地址的主機號是 12 位)。
  • 這個地址塊的起始地址是 128.14.32.0。
  • 在不需要指出地址塊的起始地址時,也可將這樣的地址塊簡稱爲“/20 地址塊”。
  • 128.14.32.0/20 地址塊的最小地址:128.14.32.0
  • 128.14.32.0/20 地址塊的最大地址:128.14.47.255
  • 全 0 和全 1 的主機號地址一般不使用。

網絡層

3.3.3 路由聚合 (route aggregation)
  • 一個 CIDR 地址塊可以表示很多地址,這種地址的聚合常稱爲路由聚合,它使得路由表中的一個項目可以表示很多個(例如上千個)原來傳統分類地址的路由。
  • 路由聚合有利於減少路由器之間的路由選擇信息的交換,從而提高了整個互聯網的性能。
  • 路由聚合也稱爲構成超網 (supernetting)。
  • CIDR 雖然不使用子網了,但仍然使用“掩碼”這一名詞(但不叫子網掩碼)。
  • 對於 /20 地址塊,它的掩碼是 20 個連續的 1。 斜線記法中的數字就是掩碼中1的個數。
3.3.4 CIDR 記法的其他形式
  • 10.0.0.0/10 可簡寫爲 10/10,也就是把點分十進制中低位連續的 0 省略。
  • 10.0.0.0/10 隱含地指出 IP 地址 10.0.0.0 的掩碼是 255.192.0.0。此掩碼可表示爲:
    網絡層
  • 網絡前綴的後面加一個星號 * 的表示方法,如 00001010 00*,在星號 * 之前是網絡前綴,而星號 * 表示 IP 地址中的主機號,可以是任意值。

常用的 CIDR 地址塊
網絡層

3.3.4 超網
  • 前綴長度不超過 23 位的 CIDR 地址塊都包含了多個 C 類地址。
  • 這些 C 類地址合起來就構成了超網。
  • CIDR 地址塊中的地址數一定是 2 的整數次冪
  • 網絡前綴越短,其地址塊所包含的地址數就越多。而在三級結構的IP地址中,劃分子網是使網絡前綴變長。
  • CIDR 的一個好處是:可以更加有效地分配 IPv4 的地址空間,可根據客戶的需要分配適當大小的 CIDR 地址塊。
    網絡層
    這個 ISP 共有 64 個 C 類網絡。如果不採用 CIDR 技術,則在與該 ISP 的路由器交換路由信息的每一個路由器的路由表中,就需要有 64 個項目。但採用地址聚合後,只需用路由聚合後的 1 個項目 206.0.64.0/18 就能找到該 ISP。
3.3.5 最長前綴匹配
  • 使用 CIDR 時,路由表中的每個項目由“網絡前綴”和“下一跳地址”組成。在查找路由表時可能會得到不止一個匹配結果。
  • 應當從匹配結果中選擇具有最長網絡前綴的路由:最長前綴匹配 (longest-prefix matching)。
  • 網絡前綴越長,其地址塊就越小,因而路由就越具體 (more specific) 。
  • 最長前綴匹配又稱爲最長匹配最佳匹配
3.3.6 3. 使用二叉線索查找路由表
  • 當路由表的項目數很大時,怎樣設法減小路由表的查找時間就成爲一個非常重要的問題。
  • 爲了進行更加有效的查找,通常是將無分類編址的路由表存放在一種層次的數據結構中,然後自上而下地按層次進行查找。這裏最常用的就是二叉線索 (binary trie)。
  • IP 地址中從左到右的比特值決定了從根結點逐層向下層延伸的路徑,而二叉線索中的各個路徑就代表路由表中存放的各個地址。
  • 爲了提高二叉線索的查找速度,廣泛使用了各種壓縮技術。

用 5 個前綴構成的二叉線索
在這裏插入圖片描述

後續內容查看《計算機網絡 網絡層(三)》

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