大二修企業資料通訊(BDC)時,對於IP位址的計算一竅不通,上網看教學影片、文章仍然無法學會,後來到圖書館借書時,偶然翻到網路概論的書,才讓我學會如何計算XD。
在網路上的所有裝置都要有一個獨一無二的IP位址,作為傳送和接收資料的地址。在現實生活中,IP位址的功用就像是郵件上都會有的收件人地址和寄件人地址,收件人地址讓信件可以被正確送達,寄件人地址則讓收到信的人可以回信。
(圖片來源: https://www.homenethowto.com/basics/ip-addresses/)
IP 位址是由 32 bits的二進位數字表示,也就是由32個0或1組成 :
01111111000000000000000000000001
上面那一串數字真的讓人霧煞煞,所以我們可以透過下列方式做轉換 :
01111111 00000000 00000000 00000001
.
隔開每一段 :127.0.0.1
這樣就能比較容易看懂。
IP 位址可以劃分為兩個部分 : 網路位址、主機位址
舉例來說,某天拿到192.168.117.x的網段,前面的192.168.117就是用來辨別所屬網路的網路位址(24 bits),後面的x則對應到可以分配的主機位址,x的長度總共有8 bits,所以可能的排列組合有256種(2的8次方),換句話說總共有256個主機位址可以分配給256個裝置使用。
將這個概念做延伸,不難發現前面的網路位址越短,可以分配的主機位址就會越多,為了滿足不同規模的網路需求,又依據網路位址的長度區分出不同的 IP 位址等級。
(實際上的長度劃分不一定是這樣,這邊僅是舉例)
當初設計 IP 時,將 IP 位址分成五個等級(Class A、B、C、D、E)
一般常用的是 Class A、B、C 這三種等級的 IP 位址,分別適用在大、中、小型網路,負責管理IP位址的機構,可以依照申請者所需要的網路規模,賦予不同等級的IP位址。
從 IP 位址的第一段我們就能看出它所屬的 IP 位址等級。例如: 168.0.0.1可以從 168 判斷它是一個 Class B 的 IP 位址,IP 位址的前 16 bits 為網路位址,後 16 bits 為主機位址。
IP 位址等級的切割固然方便,但彈性卻略顯不足。假設有人拿到 Class B 的 IP 位址,實際上只連接數十台電腦,那這樣不是會有很多位址被浪費掉嗎?
要解決這個問題可以透過將網路切割成更小的子網路來避免 IP 位址浪費的同時,增加原本3種 IP 位址等級的彈性。而在切割子網路前,務必要先思考需要多少個子網路,以及每個子網路需要連結多少台主機。
簡單來說切割子網路就是向 IP位址 中的主機位址借前幾個位元作為子網路位址。
假設拿到的 Class B IP 位址是這樣 :
借主機位址的前 3 bits 作為子網路位址:
子網路位址與原有的網路位址合計共佔 19 bits,可以被視為是一個新的網路位址,用來識別該子網路。原先 16 bits 的網路位址是不可更動的,但子網路位址是可以自由分配的,在範例中從主機位址借用 3 bits,產生了8(2的3次方)個子網路。
範例中,原先 Class B 總共有 65536(2的16次方) 個可分配的主機位址,經過切割後每個子網路(共8個)則有 8192(2的13次方) 個可分配的主機位址,理論上從主機位址借到 15 bits 可以形成 32768 (2的15次方) 個子網路,而每個子網路有2個可分配的主機位址,但不幸的是主機位址不能全為0或1,所以上述的主機位址通通都要扣2,也就是說最多只能從主機位址身上借到前 14 bits。
在切割完子網路後,可以發現不論原先是哪一等級的 IP 位址,網路位址都不會再是原來的長度(8、16、24 bits),那要怎麼確認切割後,現在網路位址的長度呢? 答案是我們可以用子網路遮罩來確認借用幾 bit 的主機位址。
轉成十進位表示 :
11111111 11111111 11111111 00000000 => 255.255.255.0
子網路遮罩一定要與 IP 位址搭配使用,單獨存在沒有意義。把 IP 位址和子網路遮罩擺在一起看時,子網路遮罩 1 的長度範圍對應到的是這組 IP 位址的網路位址,0 的長度範圍則對應到這組 IP 位址的主機位址。
以下用圖來說明會比較清楚 :
子網路遮罩由21個連續的1和11個連續的0組成,對應到 IP 位址(Class B)代表最前面的 21 bits 是網路位址,剩下的 11 bits 則是主機位址。
另外,也可以將範例的168.95.192.1
套用子網路遮罩後簡寫成168.95.192.1/21
,/21
代表網路位址有 21 bits,同時也是子網路遮罩有21個連續的1的意思。
以上就大致交代完 IP 位址的基礎了,當然還有蠻多東西沒有講,不過就讓我用一些應用題目結束這回合吧!
以下都是蒐集來的題目 :
某主機的 IP 位址為 192.168.1.134,子網路遮罩為 255.255.255.248,則該主機的"網路位址"為何?
從第一段的數字192可以看出是 Class C 的 IP 位址,然後將 IP 位址中的最後一個數字134轉成二進制並和子網路遮罩比對 :
可以發現這組 IP 位址落在 10000 這個子網路裡面,轉成十進位後,此子網路的網路位址為 192.168.1.128。
在 Class C 等級網路中若要分出至少13個子網路,則子網路遮罩為何?
向主機位址借 4 bits 就可以切出 16(2的四次方) 個子網路,故子網路遮罩為 11111111 11111111 11111111 11110000 (255.255.255.240)。
255.255.252.0 這個子網路遮罩最多可以將 132.114.0.0 這個網路分成幾個有效的子網路? 每個子網路最多可以有幾台主機?
由 IP 位址第一個數字132,可以確認它是 Class B 的 IP 位址,經比對之後發現向主機位址借用 6 bits 作為子網路位址,所以最多可分出 64 (2的6次方) 個子網路,每個子網路可以容納 1024-2 = 1022 (2的10次方減去主機位址全為0或1) 台主機。
之後有空應該會再寫其他填坑的文章~~~