關于IP的相關計算
不論是考研還是考各種計算機類的證,大家或多或少都會遇到網絡部分的一種題型,大體的歸類就是以下幾種:
- 已知一個IP是192.XX.XX.XX,子網掩碼是255.255.255.0,那么它的網絡地址是多少?
- 已知某主機的ip地址是192.168.100.200,子網掩碼為255.255.255.192,其網絡內可用的ip地址個數為多少?
- 一個A類ip地址的子網掩碼是255.255.240.0,共有幾位被用來劃分子網?且可以劃分多少個子網?每個子網ip地址數量是多少?
- 已知IP地址為10.135.255.19,子網掩碼為255.255.255.248,那么該網的廣播地址為多少?
這里就詳細記錄一下這類問題的解決方案,看這些問題之前,先補充一下網絡里面一些關于IP的知識。
IP地址的格式和分類
IP地址是一個網卡在網絡世界的通訊地址,相當于我們現實生活中的門牌號,既然是門牌號就必須要保證唯一,就好比,你住13號樓2單元602,我的地址也是13號樓2單元602,那快遞小哥就懵逼了,所以,有時候咱們電腦彈出網絡地址沖突,上不去網的情況,多半就是Ip沖突。
在網際層中,利用 IP 地址將數據傳輸到目的地。為了能夠使數據正確地發送到目標主機上,網絡上的 IP 地址必須有一定的規則來識別主機的位置。就拿10.11.12.13來說,這是一個IP地址,這個地址被點分割為四個部分,每個部分8個bit,所以IP地址總共是32位。本來32位的IP設計就導致數量不多,設計者們又將它劃分為了5種類型:

為了便于尋址,了解目標主機的位置,每個 IP 地址包括兩個標識碼(ID),即網絡 ID 和主機 ID。同一個物理網絡上的所有主機都使用同一個網絡 ID,網絡上的一個主機(包括網絡上的工作站、服務器和路由器等)有一個主機 ID 與其對應。這個ID的確認就是使用上面提到的32位來進行劃分,說白了就是32個二進制位,前幾位為網絡ID,后幾位為主機ID。
- A 類:前 8 位表示網絡 ID,網絡 ID 的第一位以 0 開始的地址。后 24 位表示主機 ID;該地址分配給政府機關單位使用。
- B 類:前 16 位表示網絡 ID,網絡 ID 的第一位以 10 開始的地址。后 16 位表示主機 ID;該地址分配給中等規模的企業使用。
- C 類:前 24 位表示網絡 ID,網絡ID的第一位以 110 開始的地址。后 8 位表示主機 ID;該地址分配給任何需要的人使用。
- D 類:不分網絡 ID 和主機 ID;地址以 1110 開始的地址。該地址用于多播。
- E 類:不分網絡 ID 和主機 ID;地址以 11110 開始的地址。該地址用于實驗。
下面這個表圖,詳細標明了ABC三類所能包含的主機數量

CIDR(無類域間路由)
經過上面的介紹,我們似乎發現了一個問題,能給我們使用的似乎只有C類地址,而C類地址的數量有限且不是很多,只有254個,這要是使用的話,一個網吧或者一個稍微大一點的單位就能把254個IP給分干凈,而B類的地址又太多,這似乎很不平衡。于是,CIDR(Classless Inter-Domain Routing,CIDR)就誕生了,CIDR中文名字叫做無類域間路由,無類域間路由(Classless Inter-Domain Routing,CIDR)可以將路由集中起來,在路由表中更靈活地定義地址。它不區分 A 類、B 類、C 類地址,而是使用 CIDR 前綴的值指定地址中作為網絡 ID 的位數。
CIDR 標記使用一個斜線 / 分隔符,后面跟一個十進制數值表示地址中網絡部分所占的位數。例如,10.100.122.2/24 中的 24 表示地址中 24位用于網絡 ID,后8位用于主機ID,伴隨著CIDR的,隨之產生了 廣播地址 10.100.122.255 和 子網掩碼 255.255.255.0
如何理解子網掩碼
要想理解什么是子網掩碼,就不能不了解IP地址的構成。互聯網是由許多小型網絡構成的,每個網絡上都有許多主機,這樣便構成了一個有層次的結構。IP地址在設計時就考慮到地址分配的層次特點,將每個IP地址都分割成網絡號和主機號兩部分,以便于IP地址的尋址操作。
IP地址的網絡號和主機號各是多少位呢?如果不指定,就不知道哪些位是網絡號、哪些是主機號,這就需要通過子網掩碼來實現。什么是子網掩碼子網掩碼不能單獨存在,它必須結合IP地址一起使用。子網掩碼只有一個作用,就是將某個IP地址劃分成網絡地址和主機地址兩部分子網掩碼的設定必須遵循一定的規則。與IP地址相同,子網掩碼的長度也是32位,左邊是網絡位,用二進制數字“1”表示;右邊是主機位,用二進制數字“0”表示。假設IP地址為“192.168.1.1”子網掩碼為“255.255.255.0”。其中,“1”有24個,代表與此相對應的IP地址左邊24位是網絡號;“0”有8個,代表與此相對應的IP地址右邊8位是主機號。這樣,子網掩碼就確定了一個IP地址的32位二進制數字中哪些是網絡號、哪些是主機號。這對于采用TCP/IP協議的網絡來說非常重要,只有通過子網掩碼,才能表明一臺主機所在的子網與其他子網的關系,使網絡正常工作。
具體的計算
有了前面的補充,我們開始詳細來看一下開篇說的幾個問題。
已知一個IP是192.XX.XX.XX,子網掩碼是255.XXX.XXX.0,那么它的網絡地址是多少?
這一類型的思路就是,先將IP地址與子網掩碼轉化為二進制,然后進行 and 運算。
假設IP是192.168.2.1,子網掩碼是255.255.255.0,
IP的二進制為:11000000.10101000.00000010.0000000
子網掩碼的二進制:11111111.11111111.11111111.00000000
進行按位 “與(and)” 計算:
11000000.10101000.00000010.00000000
11111111.11111111.11111111.00000000
得:
11000000.10101000.00000010.00000000
8位為一單位轉化為10進制:
網絡地址就是:192.168.2.0
已知某主機的ip地址是192.168.100.200,子網掩碼為255.255.255.192,其網絡內可用的ip地址個數為多少?
這一類型思路就是,計算網絡掩碼中主機ID的位數,看看主機ID可以分出多少臺機器
將子網掩碼255.255.255.192轉換為二進制:11111111.11111111.11111111.11000000
子網掩碼共有26位,還有6位可用。
即2的6次方減去2(廣播地址和網絡地址不可用),等于62,即有62個ip地址可用。
一個A類ip地址的子網掩碼是255.255.240.0,共有幾位被用來劃分子網?且可以劃分多少個子網?每個子網ip地址數量是多少?
首先,固定類型的IP地址的子網掩碼位數是確定的,根據給出的子網掩碼位數與默認的子網掩碼位數的差值,可以得出子網數,每個子網的網絡號位數已經確認,那么,只需要用總位數(32)減去網絡號的位數,可以得到每個子網的主機ID的位數,就能求出每個子網的IP地址數量
將子網掩碼255.255.240.0轉換為二進制:11111111.11111111.11110000.00000000
子網掩碼共有20位,而一個A類的ip地址的子網掩碼是8位,即有12位被用來劃分子網。
所以子網數為:2的12次方=4096個子網。
因為ip地址為32位,網絡號已為20位,則主機數12位。每個子網中的ip數量為2^12=4096,但是能夠分配給計算機使用的只有4096-2=4094個,(減去一個網絡地址與一個廣播地址)。
已知IP地址為10.135.255.19,子網掩碼為255.255.255.248,那么該網的廣播地址為多少?
要得到廣播,先得出網絡地址,然后把網絡地址的主機位全換成1,便就是廣播地址。
將ip地址10.135.255.19轉換為二進制:00001010.10001001.11111111.00010011
將子網掩碼255.255.255.248轉換成二進制:11111111.11111111.11111111.11111000
然后將兩者相“與(and)"運算得出網絡號:
00001010.10001001.11111111.00010011
11111111.11111111.11111111.11111000
得:00001010.10001001.11111111.00010000,轉換成網絡地址就是:10.135.255.16
從子網掩碼 11111111.11111111.11111111.11111000 可以看出,這個子網掩碼是29位。也就是主機數還有3位可用。
把網絡地址 00001010.10001001.11111111.00010000 的后面三個零全換成1,得出廣播地址為:10.135.255.23

浙公網安備 33010602011771號