1. 程式人生 > >子網掩碼的由來與劃分子網

子網掩碼的由來與劃分子網

子網掩碼出現的歷史背景

從現在來看,在ARPANET的早期,IP地址的設計確實不夠合理

  • IP地址空間的利用率有時很低
  • 給每一個物理網路分配一個網路號會使路由表變得太大因而使網路效能變壞
  • 兩級IP地址不夠靈活

所以,為了解決IP地址上面出現的這些問題,從1985年起在IP地址中有增加了一個“子網號欄位”,使兩級IP地址變為了三級IP地址,這樣使用起來更加靈活,這樣的方法叫做劃分子網。

劃分子網的基本思路

  • 一個擁有多個物理網路的單位,可以根據自己的需要將物理網路劃分為若干個子網,這是單位的內部操作,單位網路對外仍然表現為一個網路
  • 劃分子網的方法就是從網路的主機號借用若干位作為子網號,這樣主機號也減少了相應的位數

經過上述劃分以後,二級IP地址就變為了三級IP地址

  • 二級IP地址:網路號+主機號
  • 三級IP地址:網路號+子網號+主機號

有了劃分子網的思路以後,就該解決資料包轉發的問題了,因為資料包首部不包含子網劃分相關的資訊,路由器如何才能找到目的主機所在的子網呢?這個時候就產生了子網掩碼。下面給出子網掩碼的官方定義:

子網掩碼(subnet mask)又叫網路掩碼、 地址掩碼、子網路遮罩,它是一種用來指明一個IP地址的哪些位標識的是主機所在的子網,以及哪些位標識的是主機的位掩碼。子網掩碼不能單獨存在,它必須結合IP地址一起使用。子網掩碼只有一個作用,就是將某個IP地址劃分成網路地址和主機地址兩部分。

子網掩碼是一個32位地址,用於遮蔽IP地址的一部分以區別網路標識和主機標識,並說明該IP地址是在區域網上,還是在遠端網上。

子網掩碼用連續的1代表網路位,用連續的0代表主機位。這裡是為了避免可能出現的差錯才推薦使用連續的1帶邊網路位,RFC文件中並沒有規定!!!

這裡給出一個二級IP和三級IP的例子(B類IP地址,三級IP對應的子網號為8位)

二級IP地址:

145 13 3 10

二級IP的子網掩碼:

11111111 11111111 00000000 00000000
255 255 0 0

三級IP地址:

145 13 3 10

三級IP地址的子網掩碼:

11111111 11111111 11111111 00000000
255 255 255 0

這裡說明一下,子網掩碼是因為劃分子網的需要而產生的,二級地址沒有劃分子網,也有子網掩碼是因為這樣做便於查詢路由表。因特網現在規定:所有的網路都必須使用子網掩碼,同時在路由器的路由表中也必須有子網掩碼這一欄。

二級IP使用預設子網掩碼

  • A類地址預設子網掩碼:255.0.0.0
  • B類地址預設子網掩碼:255.255.0.0
  • C類地址預設子網掩碼:255.255.255.0

B類地址的子網劃分選擇

子網號的位數 子網掩碼 子網數 每個子網的主機數
2 255.255.192.0 2 16382
3 255.255.224.0 6 8190
4 255.255.240.0 14 4094
5 255.255.248.0 30 2046
6 255.255.252.0 62 1022
7 255.255.254.0 126 510
8 255.255.255.0 254 254
9 255.255.255.128 510 126
10 255.255.255.192 1022 62
11 255.255.255.224 2046 30
12 255.255.255.240 4094 14
13 255.255.255.248 8190 6
14 255.255.255.252 16382 2

注:表中子網數去掉了全0和全1的兩種情況,現在全0和全1的子網也可以用,但是使用要謹慎

網路地址的計算

例題:已知IP地址是141.14.72.24,子網掩碼是255.255.192.0,其網路地址是多少?

子網掩碼變為二進位制為:

11111111 11111111 11000000 00000000

IP地址:

141 14 01001000 24

子網掩碼與IP地址進行按位與運算,求得網路地址為:141.14.64.0

使用子網時分組的轉發

路由表中包含的三項內容:

  • 目的網路地址
  • 子網掩碼
  • 下一跳IP地址(路由器直連線口的IP)

無分類編址CIDR(構成超網)

為了解決IP地址資源耗盡和路由表中專案數急劇增長的問題,在使用VLSM的技術上又進一步研究出了無分類編址方法,即無分類域間路由選擇CIDR

CIDR的兩個特點:

  • CIDR消除了傳統的A類、B類、C類地址以及劃分子網的概念,將IP地址重新劃分為兩部分前面部分是網路字首,後面是主機部分,這是沒有分類的二級IP地址
  • CIDR採用斜線記法,稱為CIDR記法,比如192.168.2.4/24表示網路字首有24位
  • CIDR把網路字首都想聽的連續的IP地址組成一個“CIDR地址塊”

只要知道CIDR地址塊中的任何一個地址,就可以知道這個地址快的起始地址和最大地址,以及地址塊中的地址數。

例,已知IP地址128.14.35.7/20是某CIDR地址塊中的一個地址,從中我們可以看出:

  • 網路字首有20位,主機位有12位
  • IP地址寫為二進位制為:10000000.00001110.00100011.00000111
  • 所以地址塊的塊地址為:128.14.32.0
  • 地址塊的廣播地址為:128.14.47.255

由於一個CIDR地址塊中有許多地址,所以在路由表中就利用CIR地址塊來查詢目的網路,這種地址的聚合稱為“路由聚合”,或者稱為構成超網。

最長字首匹配

在使用ICDR時,由於採用了網路字首這種記法,IP地址由網路字首和主機號兩部分組成,這樣的話路由器在查詢路由表時可能得到不止一個匹配結果,此時我們的辦法是:從匹配結果中選擇最長網路字首的路由進行匹配,稱為最長匹配或者最佳匹配