這學期有網路與通訊,筆記一下之前學過的
在介紹分級之前,我們要先知道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 A
、Class B
、Class C
、Class 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的主機位址
時,無法將其全部設成0
或1
(請注意下圖綠色部分主機位址
的數值)
例如 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 A
、Class B
、Class C
、Class 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 A
、Class B
、Class 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個bits0
到127
為一個網段(__0__0000000 到 __0__1111111)
最後8個bits128
到255
為另一個網段(__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
謝謝你的文章 精心編排 版面很乾淨
^^
我們就可以把子網路遮罩設成255.255.255.128,二進位相當於設成1的25個bits決定網路位址,設成0的剩下7個bits決定主機位址
不好意思 這段不太懂意思 為何要設成1
換個精簡的方式講
設成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)
只要運算結果相同的就視為同一網段的電腦
(電腦A,電腦B)同,(電腦C,電腦D,電腦E)同,的意思嗎?
對的唷
@岸
如果要表現「前面是網路位址,後面是主機位址」的話,遮罩一定是「前面都是 0 後面都是 1」不然就是「前面都是 1 後面都是 0」。只不過制定時是選了用「前面都是 1 後面都是 0」來表示,所以是 1。如果選「前面都是 0 後面都是 1」一樣也可以喔,只是計算式對調過來而已
謝謝補充😃