IP等級與子網路遮罩介紹

這學期有網路與通訊,筆記一下之前學過的

 

在介紹分級之前,我們要先知道IP(IPv4)總共有32為元

為了方便判讀,我們將它每8個位元用一個.分隔,並且將二進轉換成十進位表示

E.g. 例如我們很常見的區域網路分享器預設IP位址 192.168.0.1

十進位是給人看的,電腦其實是辨認它的二進位
11000000.10101000.00000000.00000001

同理可推,全部的IP(IPv4)範圍會介於 0.0.0.0 到 255.255.255.255 之間
因為其二進位最小與最大值是
00000000.00000000.00000000.00000000 與 11111111.11111111.11111111.11111111

有了這樣的觀念,接下來就可以進入我們的主題了。



 

IP等級

在一個組織內部,我們會希望將網路分成內部網路與外部網路

同事們可以從內部網路(同一網段)中存取公司的FTP Server等等的來交換檔案

但同時在外部網路(不同網段)是沒辦法存取的,因為要避免資安問題

外部網路只能瀏覽公司的網頁,以及公司對外Server上的東西

這個觀念在很早以前就形成了,一直到1990那個年代中期為止,IP都是以Class AClass BClass CClass D來做分級的

所謂的分級,其實就是制定出一套規範,來表示這個IP前幾碼代表網路位址,後幾碼代表主機位址

如果今天A跟B有相同的網路位址,則可以說他們在相同的網段,屬於同個組織下的網路

也就允許使用公司的FTP Server

概念還是很模糊沒關係,往下看我會搭配圖片說明


 

Class A

第1個bit一定是0,只要ip轉換成二進位是0開頭的,就可以認定它是屬於Class A級的IP

Class A級的IP前8個bits決定了它的網路位址,剩下的24個bits都是主機位址
(藍色是網路位址,綠色是主機位址)

舉例來說,我們可以透過IP就猜到13.0.0.1跟13.250.249.248是屬於同單位內的網段
(通常比較大型的組織或政府機構才有辦法拿到Class A級的IP)

Class A級的IP範圍: 0.0.0.0 ~ 127.0.0.0
(第1個bit一定要是0,所以前8個bits最大到011111111,也就是127)


 

Class B

前2個bit一定是10,只要ip轉換成二進位是10開頭的,就可以認定它是屬於Class B級的IP

Class B級的IP前16個bits決定了它的網路位址,剩下的16個bits都是主機位址
(藍色是網路位址,綠色是主機位址)

舉例來說,我們可以透過IP就猜到140.112.0.1跟140.112.250.251是屬於同單位內的網段
(140.112開頭其實就是台大,不信你去台大連他們網路看看)

Class B級的IP範圍: 128.0.0.0 ~ 191.255.0.0
(前2個bit一定要是10,所以前16個bits最大到10111111.11111111,也就是191.255)


 

Class C

前3個bit一定是110,只要ip轉換成二進位是110開頭的,就可以認定它是屬於Class C級的IP

Class C級的IP前24個bits決定了它的網路位址,剩下的8個bits都是主機位址
(藍色是網路位址,綠色是主機位址)

舉例來說,我們可以透過IP就猜到192.83.167跟192.83.167.254是屬於同單位內的網段
(192.83.167開頭是台中教,可能是比較晚申請或規模沒有台大那樣大所以只有拿到Class C級的IP吧我猜)

Class C級的IP範圍: 192.0.0.0 ~ 223.255.255.0
(前3個bit一定要是110,所以前16個bits最大到11011111.11111111.11111111,也就是223.255.255)


 

Class D

Class D級的IP比較特別,是拿來做群播用途的,它的前4個bits是1110開頭的,此外,它也沒有主機位址

因為群播就是對另一個網段的所有主機做廣播,所以用這個理由來解釋也很說得過去

Class D級的IP範圍: 224.0.0.0 ~ 239.255.255.255
(11101111.11111111.11111111.1111111 已經是max了,如果再加1開頭前8個bits就會進位到11110000了)


 

額外補充

Class E

其實還有Class E這個等級,IP是以1111開頭,但沒有被定義用途,所以我們這邊也沒有東西可以討論。

 

無法分配IP的主機位址全為0或1

在分配IP的主機位址時,無法將其全部設成01(請注意下圖綠色部分主機位址的數值)

例如 Class C的 192.168.1.0 或 192.168.1.255

Class B的 140.112.0.0 或 140.112.255.255

Class A的 10.0.0.0 或 10.255.255.255

這是因為IPv4將每個網段的最開頭及最尾端的位址保留起來了

 

每個網段最開頭的IP位址(也就是主機位址全為0的那個)是給任意、未知或不確定確切IP位址使用的

例如我開啟了一個Port,但只想限定我目前所屬網段的電腦能存取

於是我限定的IP就可以設成192.168.1.0,如此一來,只有目前所屬網段192.168.1.X的設備能連上這個Port

 

至於每個網段最尾端的IP位址(也就是主機位址全為1的那個)是將封包廣播給同網段內的所有設備用的

例如用Wireshark很常看到的who has封包,當某個裝置ARP table內沒有要發送的封包目的地mac位址

就會發廣播封包詢問同個網段下的所有設備,有沒有人知道它的mac位址,請知道的人告訴某某某

這就是會把目的地IP的主機位址全設成1變成廣播封包的其中一種用途


 

子網路遮罩

隨著網路的普及,在1990年代後期逐漸發現用Class AClass BClass CClass D來將IP分級很沒有效率

例如獲得一個Class A級IP的組織則有16,777,216(2^24)個主機位址可用

很明顯的,沒有一個組織會有多達1千6百萬個裝置,並且歸在同個網段下(即便是一家超巨型跨國企業,也不會希望台北分公司可以直接存取紐約總公司的資料庫吧)

然而,獲得一個Class C級IP的組織卻只有255(2^8)個主機位址能用(幫QQ)

因此,多數的企業或組織轉而申請Class B級的IP,導致大量的Class B級IP不敷使用

Class B最多只能分配給16,384(2^(6+8))個組織

將原本就很稀少(只有2^7個)的Class A級IP分配出去會造成太多浪費沒使用的主機位址,治不了標也治不了不治本

最後,船到橋頭自然直,採用了子網路遮罩的概念,不再特別強調Class AClass BClass C

而是所有的IP位址都可以使用子網路遮罩來分割出自己的網段

 

子網路遮罩與IP(IPv4)位址類似,都是以32個bits的二進位來運算

運算結果是由子網路遮罩內,被1遮到的地方當成網路位址;被0遮到的地方當成主機位址

舉例來說,假如今天擁有192.83.167.X(Class C級的IP)的台中教,希望將192.83.167.1到192.83.167.254的IP數量切一半

把192.83.167.1到192.83.167.127給電腦教室學生用(學生比較皮,不能讓他們去亂try學校的server)

把192.83.167.128到192.83.167.254給教授及行政用(可以存取學校的server,例如上傳成績等)

我們就可以把子網路遮罩設成255.255.255.128,二進位相當於

設成1的25個bits決定網路位址,設成0的剩下7個bits決定主機位址

接下來,讓上面的IP經過子網路遮罩




(藍色是遮罩後的網路位址,綠色是遮罩後的主機位址)

我們可以看到,192.83.167的Class C級網段又被我們再切成兩段了

最後8個bits0127為一個網段(__0__0000000 到 __0__1111111)

最後8個bits128255為另一個網段(__1__0000000 到 __1__1111111)

好棒喔,現在我們Class C級的IP有兩個網段了耶,歡呼~

 

文章還沒結束呢,還記得上面提到的無法分配IP的主機位址全為0或1

除了原本的兩組IP
192.83.167.0 (最後8個bits為00000000)
192.83.167.255 (最後8個bits為11111111)

現在又多了兩組IP
192.83.167.127 (最後8個bits為01111111)
192.83.167.128 (最後8個bits為10000000)

這四組IP已經變成保留IP無法使用

192.83.167.0及192.83.167.128(最後決定主機位址的7個bits為0000000)代表自己所屬網段任意、未知或不確定確切IP所使用的位址

而192.83.167.127及192.83.167.255(最後決定主機位址的7個bits為1111111)代表自己所屬網段的廣播位址

不清楚的請參考上面無法分配IP的主機位址全為0或1


4 則迴響

  • Jessy

    2018-10-10

    謝謝你的文章 精心編排 版面很乾淨

    回復
    • Andy Wu

      2018-10-11

      ^^

      回復
  • 2019-08-23

    我們就可以把子網路遮罩設成255.255.255.128,二進位相當於設成1的25個bits決定網路位址,設成0的剩下7個bits決定主機位址
    不好意思 這段不太懂意思 為何要設成1

    回復
    • Andy Wu

      2019-08-24

      換個精簡的方式講
      設成0或1其實是因為電腦是拿ip與子網路遮罩做AND運算來區別哪些電腦是在同個網段的
      舉例來說
      電腦A的ip是192.83.167.100,子網路遮罩255.255.255.128
      電腦B的ip是192.83.167.125,子網路遮罩255.255.255.128
      電腦C的ip是192.83.167.150,子網路遮罩255.255.255.128
      電腦D的ip是192.83.167.170,子網路遮罩255.255.255.128
      電腦E的ip是192.83.167.200,子網路遮罩255.255.255.128
      今天要來判斷哪些電腦是在同個網段,我們就把所有的ip與它設定的子網路遮罩做AND運算(二進位)
      電腦A:(192.83.167.100) AND (255.255.255.128) = (192.83.167.0)
      電腦B:(192.83.167.125) AND (255.255.255.128) = (192.83.167.0)
      電腦C:(192.83.167.150) AND (255.255.255.128) = (192.83.167.128)
      電腦D:(192.83.167.175) AND (255.255.255.128) = (192.83.167.128)
      電腦E:(192.83.167.200) AND (255.255.255.128) = (192.83.167.128)
      只要運算結果相同的就視為同一網段的電腦

      回復

發佈留言