2021-05-12 11:00:58
IP地址與掩碼如何計算
操作方法
-
01
二進位和邏輯運算
在我們認識IP地址之前我想我們很有必要認識兩個概念二進位和邏輯運算。雖然我也知道這兩個東東都不好理解但如果不知道它們的工作原理那麼以後我們在討論IP地址和子網的時候您就要靠死記了。不過一旦你知道了其原理那麼您在任何的IP網路中都不至於迷失所謂「萬變不離其宗」是也。
二進位 (Binary)
為什麼我們要學二進位哎呀還不是該死的蠢電腦嘛它只懂得0和1那麼我們要和電腦溝通的時候也只好裝蠢一些才行。當電腦要處理IP運算的時候最終是以二進位的形式進行的。
我們人類最習慣的運算規則是十進位也就是從0到9為一圈回到零的時候就進一位數而我們前面討論的bit和byte則是八進位即0到7為一圈回到零就進一位數另外還有十六進位由0到15為一圈回到零進一位但使用數位15很容易和十進位混亂所以在十六進位裡面從10到15之間分別用英文字母A到F代替了所以我們通常看到的十六進位是從0到F的排列。
好了認識了上面這幾種運算規則相信理解二進位也不難道理是一樣的從0到1為一圈回到0進一。那麼我們看看十七個連續遞增的十進位二進位和十六進位數位之間的比較將會是這樣的
十進位 二進位 十六進位
0 0 0
1 1 1
2 10 2
3 11 3
4 100 4
5 101 5
6 110 6
7 111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F
16 10000 10
如果您想進行二進位和十進位的換算在列表中找到相應的數位是最簡單的方法但正如您剛才所見光十六個數位已經有這麼長的列表瞭如果要找成千上百個數位可不是件容易的事情。不過我們在IP地址上面看到的十進位數位最大不會超過255這個數值。我們可以先將2的0到7次方列出來
27 26 25 24 23 22 21 20
128 64 32 16 8 4 2 1
當我們要將十進位換成二進位的時候我們只要找到找到該數位對應的欄位(方法是找到兩個數值相若的欄位而取其右)在相對的欄位填上1然後用餘數繼續尋找下一欄位再填1直到再沒餘數為止最後把其它欄位都填上0就可以了。
例如我們要換算220這個十進位數位到二進位
我們找到128這欄位是最合適的(因為128的左邊是256而220 界乎它們之間取其右則為 128 )。那麼我們在128這欄位上面填上1
繼續餘數92我們找到64這欄位是最合適的那麼在64這個欄位也填上1
繼續餘數28我們找到16這欄位是最合適的那麼在16這個欄位也填上1
繼續餘數12我們找到8這欄位是最合適的那麼在8這個欄位也填上1
繼續餘數4我們找到4這欄位剛好對應這是最好找到情形了。那麼在4這個欄位也填上1
因為再沒有餘數了其它都填上0就對了。
其結果如下 128 64 32 16 8 4 2 1
1 1 0 1 1 1 0 0
如果我們要將二進位換算成十進位利用上面的欄目來做就更加簡單了只要將二進位數位從右往左的順序依次填入欄位那麼將凡是被1所對應的數位相加得出來的和就是十進位數位了。
當然啦這是手工的方法啦如果您有二進位的計數器或是使用Windows的小算盤來進行換算更是易如反掌啦。如果您還不知道怎麼用Windows的小算盤點話可以依以下步驟進行
「開始/程式集/附屬應用程式/小算盤」
然後拉下「檢視」選單確定「工程型」已被選擇
然後點選「十進位」輸入數值
再點選「二進位」就可以獲得換算數值了
邏輯運算
邏輯運算是Microcomputer
Architature的必修單元這裡我們只需瞭解幾個最基本的運算就可以了一個是AND一個是OR還有一個是NOT。
在二進位的AND的運算中只有參與運算的雙方都相同才會得出相同的結果(為0或1)否則為0也就是隻有雙為1的時候其結果才會是1否則為0。其情形是
0 AND 0 = 0
1 AND 1 = 1
0 AND 1 = 0
這裡您不難看出凡是有1參與的AND運算其結果都會是對方(不管是0或1)而凡是有0參與的AND運算其結果都會是0。
在二進位的OR運算中只有雙方為0的時候才為0否則都會是1。其情形是
0 OR 0 = 0
1 OR 1 = 1
0 OR 1 = 1
記憶方法凡是有0參與的OR運算其結果都是對方而只要有1參與的OR運算其結果都會是1。
NOT的運算最簡單隻有一方參與凡是經過NOT運算其結果都會相反
NOT 0 = 1
NOT 1 = 0
至於其它一些NAND或NOR的運算只不過將NOT和AND及NOT和OR合在一起運算而已。
認識IP地址
好了經過剛才一輪「洗腦」之後我們終於要談到IP地址了。如果您的機器現在是連上網路的且使用的是IP協定(我想您應該這樣吧否則怎麼看我的文章呢)。
我假設您使用的是Windows系統那麼現在就請您按「開始」然後「執行」再請您用鍵盤輸入「winipcfg」然後「確定」。這時候您應該看到一個視窗跑出來並在「IP位址」欄目上面顯示著您機器當前使用的IP號碼。或許會是139.175.152.254這樣的一組號碼不過您知道這組號碼的代表著什麼意思嗎如果按正常設定來說我可以說這是B
class的IP號碼而且是屬於seed.net的撥接網路的。
我怎麼會知道哈哈等您看完了後面的文章您還可以告訴我更多呢
IP Class和識別碼
正如您所見到的IP地址是四組用「.」分開的十進位數位我們稱每組數位為一個「octet」這樣的格式被稱作「Dotted
quad」。其實每一組都是一個8-bit的二進位數位(使用十進完全是為了遷就人類的習慣)合共起來就是一個32-bit的IP地址了亦即是IP
v4 (Version 4) 版本的地址現在IP v6 (使用128-bit的IP地址)也正如火如的開發中。
如果您記得我們前面在「網路概論」裡面討論IPX地址的時候所提到的Internal和External地址的話您應該知道Internal地址是用來識別主機的而External地址則是用來識別網路的。IP地址其實也有這樣的功能只不過將網路的識別碼和主機的識別碼放在單一的IP地址上面了。
不過在區分Net ID和Host ID之前先讓我們認識一下IP地址的分類(Class):
如果我們將IP地址全部用二進位來表示的話每個octet都是8-bit如果不夠8-bit的話則往左邊填上0直到補滿為止。這時候你再看看最左邊的數位是以什麼為開頭的
如果是以「0」開頭的這IP是一個A Class的IP
如果是以「10」開頭的這是一個B Class的IP
如果是以「110」為開頭的則屬於C Class的IP
相信您知道為什麼我們在一開頭就學二進位換算了吧如果您不懂得如何換算您也可以死記由1到126開頭的IP是A
Class由128到191開頭的IP是B Class 然後由192到223開頭的則為C Class。顯然易見用二進位來識別IP
Class比較容易您不覺得嗎
好了當我們識得區別IP的Class之後我們就可以知道IP的Net ID 和 Host ID了
A Class的IP使用最前面一組數位來做Net ID其餘三組做Host ID
B Class的IP使用前面兩組數位來做Net ID另兩組做Host ID
C Class的IP使用前面三組數位來做Net ID剩下的一組做Host ID
從下圖中您可以輕易的區分上面三個不同的 IP Class
為什麼我們需要為IP劃分等級呢這是為了當初的 IP 管理需要。
如果您要組建一個單一的IP網路那麼您得分配相同的Net ID給所有主機而各主機的Host ID卻必須是唯一的也就是說沒有任何兩個Host
ID會是一樣的。您的網路還要連上internet或其它網路的話那麼您使用的Net
ID也必須是唯一的否則就會造成突了。好比您家的電話號碼如果是1234567(Host ID)的話那麼在相同區號(Net ID)裡其他人將不會再使用這個號碼然而你不保在其它區號裡面也有1234567這個號碼哦但如果臺北使用了區號02的話臺南就不能使用02了。無論如何整個區號加電話號碼必須是唯一的。同樣的道理整個IP地址(Net
ID + Host ID)在internet上也必須是唯一的。有一個很特別的Net ID 127
(即二進位的01111111)是保留給本機迴路測試使用的它不可以被運用於實際的網路中去。
另外有一個規則我們還必須遵守的在指定Host ID的時候換成二進位的話不可以是全部為0也不可以是全部為1。當Host
ID全部為0的時候指的是網路本身識別碼而全部為1的時候則為全域廣播地址即傳送廣播封包使用的地址。
很明顯A Class網路可分配的Host ID 要比C Class的要多好多倍。讓我們算算可以劃分的Net
ID數目和各等級裡面的Host ID數目就知道了
因為A Class第一個bit必須為0所以我們在頭一個otect的8個bit就只有7個bit是可變化的。那麼27 =
128再減去0和127這個Net ID不能使用那麼我們實際上最多隻能劃分126個A Class的網路。而每個A
Class的網路之下可以分配2的24(能夠使用的 Host ID之bit 數目)次方亦即16,777,216個Host
ID再因為二進位數位不可以全部為0或1所以實際能用的主機位址只有16,777,214個。
因為C Class以110開頭減去 3 個 bit 所以可劃分的C
Class網路則為2的21(24-3)次方也就是2,097,152個Net ID然後每個Class C之下則可以劃分28 = 256 -
2 = 254個Host ID。
好了這下您自己試試看計算出B Class可以劃分多少個Net ID和每個Net ID之下的可用Host
ID數目。(Tips別忘了ID不能全部為0或1)。然後再來對照下面的 .
二、 子網掩碼
(1) 子網
TCP/IP網間網技術產生於大型主流機環境中,它能發展到今天的規模是當初的
設計者們始料未及的。網間網規模的迅速擴充套件對IP地址模式的威脅並不是它
不能保證主機地址的唯一性,而是會帶來兩方面的負擔:第一,巨大的網路地
址管理開銷;第二,閘道器尋徑急劇膨脹。其中第二點尤為突出,尋徑表的膨脹
不僅會降低閘道器尋徑效率(甚至可能使尋徑表溢位,從而造成尋徑故障),更
重要的是將增加內外部路徑重新整理時的開銷,從而加重網路負擔。
因此,迫切需要尋求新的技術,以應付網間網規模增長帶來的問題。仔細分析
發現,網間網規模的增長在內部主要表現為網路地址的增減,因此解決問題的
思路集中在:如何減少網路地址。於是IP網路地址的多重複用技術應運而生。
通過複用技術,使若干物理網路共用同一IP網路地址,無疑將減少網路地址
數。
子網編址(subnet addressing)技術,又叫子網尋徑(subnet routing),英
文簡稱subnetting,是最廣泛使用的IP網路地址複用方式,目前已經標準化,
併成為IP地址模式的一部分。
一般的,32位元的IP地址分為兩部分,即網路號和主機號,我們分別把他們叫
做IP地址的「網間網部分」和「本地部分」。子網編址技術將本地部分進一步
劃分為「物理網路」部分和「主機」部分,如圖:
網間網部分
物理網路
主機
|←網間網部分→|←────本地部分─────→|
其中「物理網路」用於標識同一IP網路地址下的不同物理網路,既是「子
網」。
(2) 子網掩碼
IP協定標準規定:每一個使用子網的網點都選擇一個32位元的位元型樣,若位模
式中的某位置1,則對應IP地址中的某位為網路地址(包括網間網部分和物理
網路號)中的一位;若位元型樣中的某位置0,則對應IP地址中的某位為主機地
址中的一位。例如位元型樣:
11111111 11111111 11111111 00000000
中,前三個位元組全1,代表對應IP地址中最高的三個位元組為網路地址;後一個
位元組全0,代表對應IP地址中最後的一個位元組為主機地址。這種位元型樣叫做子
網模(subnet mask)或「子網掩碼」。
為了使用的方便,常常使用「點分整數表示法」來表示一個IP地址和子網掩
碼,例如B類地址子網掩碼(11111111 11111111 11111111 00000000)為:
255.255.255.0
IP協定關於子網掩碼的定義提供一種有趣的靈活性,允許子網掩碼中的「0」
和「1」位不連續。但是,這樣的子網掩碼給分配主機地址和理解尋徑表都帶
來一定困難,並且,極少的路由器支援在子網中使用低序或無序的位,因此在
實際應用中通常各網點採用連續方式的子網掩碼。像255.255.255.64和
255.255.255.160等一類的子網掩碼不推薦使用。
(3) 子網掩碼與IP地址
子網掩碼與IP地址結合使用,可以區分出一個網路地址的網路號和主機號。
例如:有一個C類地址為:
192.9.200.13
其預設的子網掩碼為:
255.255.255.0
則它的網路號和主機號可按如下方法得到:
① 將IP地址192.9.200.13轉換為二進位制
11000000 00001001 11001000 00001101
② 將子網掩碼255.255.255.0轉換為二進位制
11111111 11111111 11111111 00000000
③ 將兩個二進位制數邏輯與(AND)運算後得出的結果即為網路部分
11000000 00001001 11001000 00001101
AND
11111111 11111111 11111111 00000000
11000000 00001001 11001000 00000000
結果為192.9.200.0,即網路號為192.9.200.0。
④ 將子網掩碼取反再與IP地址邏輯與(AND)後得到的結果即為主機部分
11000000 00001001 11001000 00001101
AND
00000000 00000000 00000000 11111111
00000000 00000000 00000000 00001101
結果為0.0.0.13,即主機號為13。
子網掩碼
三、 子網劃分與範例
根據以上分析,建議按以下步驟和範例定義子網掩碼。
1、 將要劃分的子網數目轉換為2的m次方。如要分8個子網,8=23。
2、 取上述要劃分子網數的2的m次方的冪。如23,即m=3。
3、 將上一步確定的冪m按高序佔用主機地址m位後轉換為十進位制。如m為3
則是11100000,轉換為十進位制為224,即為最終確定的子網掩碼。如果是C類
網,則子網掩碼為255.255.255.224;如果是B類網,則子網掩碼為
255.255.224.0;如果是C類網,則子網掩碼為255.224.0.0。
在這裡,子網個數與佔用主機地址位數有如下等式成立:2m=n。其中,m
表示佔用主機地址的位數;n表示劃分的子網個數。
根據這些原則,將一個C類網路分成4個子網。
若我們用的網路號為192.9.200,則該C類網內的主機IP地址就是
192.9.200.1~192.9.200.254(因為全「0」和全「1」的主機地址有特
殊含義,不作為有效的IP地址),現將網路劃分為4個部分,按照以上步驟:
4=22,取22的冪,即2,則二進位制為11,佔用主機地址的高序位即為11000000,
轉換為十進位制為192。這樣就可確定該子網掩碼為:192.9.200.192,4個
子網的IP地址範圍分別為:
二進位制
十進位制
① 11000000 00001001 11001000 00000001
~
11000000 00001001 11001000 00111110
192.9.200.1
~
192.9.200.62
② 11000000 00001001 11001000 01000001
~
11000000 00001001 11001000 01111110
192.9.200.65
~
192.9.200.126
③ 11000000 00001001 11001000 10000001
~
11000000 00001001 11001000 10111110
192.9.200.129
~
192.9.200.190
④ 11000000 00001001 11001000 11000001
~
11000000 00001001 11001000 11111110
192.9.200.193
~
192.9.200.254
在此列出A、B、C三類網路子網數目與子網掩碼的轉換表,以供參考。
A類:
子網數目
佔用位數
子網掩碼
子網中主機數
2
1
255.128.0.0
8,388,606
4
2
255.192.0.0
4,194,302
8
3
255.224.0.0
2,097,150
16
4
255.240.0.0
1,048,574
32
5
255.248.0.0
524,286
64
6
255.252.0.0
262,142
128
7
255.254.0.0
131,070
128
7
255.255.0.0
65,534
B類:
子網數目
佔用位數
子網掩碼
子網中主機數
2
1
255.255.128.0
32,766
4
2
255.255.192.0
16,382
8
3
255.255.224.0
8,190
16
4
255.255.240.0
4,094
32
5
255.255.248.0
2,046
64
6
255.255.252.0
1,022
128
7
255.255.254.0
510
256
8
255.255.255.0
254
C類:
子網數目
佔用位數
子網掩碼
子網中主機數
2
1
255.255.255.128
126
4
2
255.255.255.192
62
8
3
255.255.255.224
30
16
4
255.255.255.240
14
32
5
255.255.255.248
6
64
6
255.255.255.252
2 - End
相關文章
-
7+2強化供電!599元梅捷SY-狂龍H510M圖賞
除了廣為人知的Z590和B560之外,英特爾還發布了入門級的H510晶片組,也是上一代H410晶片組的升級版。 在相容性方面,H510晶片組與Z590晶片組和B560晶片組沒有什麼區別,都可以相容1
2021-05-10 19:00:28
-
支援5333高頻記憶體!技嘉小雕PRO B560M主機板圖賞
Intel第十一代酷睿已經上市,新架構帶來了巨大的IPC提升幅度,同時,Intel還開放了B560/H570主機板的記憶體超頻功能,這使得主流玩家也可以輕鬆享受高頻記憶體帶來的流暢遊戲體驗。
2021-05-09 16:00:04
-
24K純金!微星MEG Z590 ACE GOLD EDITION戰神至臻圖賞
顯示卡、散熱器、風扇都能玩RGB,機箱中,主機板幾乎是最不起眼的存在。 而近日,微星推出了一款亮眼的主機板,首次用上了24K純金設計,它就是MEG Z590 ACE戰神至臻,一起來瞧瞧。 MEG
2021-05-07 22:00:14