最近在移植新版本代碼,但發現在新版本軟件中,居然找不到子網掩碼這個參數。與舊版本軟件不同的是,IP地址后面接了“/24”,類似192.168.1.1/24,但一直未去理會IP地址后面這個“/24”表示什么意思。
通過跟蹤代碼發現,這個“/24”大有含義,於是上網搜索了下,不查不知道,一查發現這就是我在苦苦尋找的子網掩碼!這是一種現在流行的子網掩碼表示方法,這種表示方法很好計算子網絡的規模。
明白過來后,恍然大悟,記得以前也曾接搜索了解過“/24”的含義,看樣子是忘記了。
這里轉載了一篇優秀文章,詳細介紹了IP地址的定義及其划分、子網掩碼的表示及其作用,讓大家可以更好的了解一些網絡通信的基礎知識。
IP的定義
ip 是32位無符號整數,最小,最大分別是- 0.0.0.0 – 255.255.255.255 具體來說,由一個ip由 Net-ID+Host-ID 兩部分組成,Net-ID 相同,那么就說明在一個網段內,可以用mac數據幀直接通信。
給定一個Net-ID
- host-ID全為0的ip,(192.168.2.0)代表整子小網絡,
- host-ID全為1的ip,是這個子網絡的廣播地址
ip總共就32個字節,當 HostID 所占用的位越大,亦即 HostID 數量越多時,表示同一個網絡內可用以設定主機的 IP 數量越多
國際NIC組織把ip分成5類
- Class A : 0xxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx ==> NetI_D 的開頭是 0
|–net–|———host————| - Class B : 10xxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx ==> NetI_D 的開頭是 10
|——net——-|——host——| - Class C : 110xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx ==> NetI_D 的開頭是 110
|———–net———–|-host–| - Class D : 1110xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx ==> NetI_D 的開頭是 1110
- Class E : 1111xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx ==> NetI_D 的開頭是 1111
class D用作特殊用途,class E保留,因此,能夠用來設定在一般系統上面的,就只有 Class A、B、C 三種等級的IP。
Netmask
這個數值就是用一種很直觀的方式表明Net-ID/Host-ID各有多少位
netmark的定義非常簡單,netmask 也是 32 位,在數值上,位於 Net-ID 的為 1 而 Host-ID 為 0
例如一個常見的C類IP地址:
一個傳統的c類網絡,比如 192.168.10.0,它的netmark是必然是255.255.255.0 如果在把這個網絡分成2個子網絡,很簡單,設定net-id使用25位,host-id就只有7位了 那么這個時候的 netmark= 255.255.255.1 0000000 = 255.255.255.128,這次划分得到的兩個子網分別是:
- 129.168.10.0/25
- 192.168.10.128/25
很顯然,”/25″:就是標示 這個ip中net-id 占用的位數(這2個ip的host-id全部為0,所以這兩個ip代表的是其所在的子網絡)
這種表示方法很好計算子網絡的規模,例如:
- 192.168.0.0/27 表示2的5(32-27=5)次方-2(每個網段的第一個和最后一個地址都被特殊用途占用)=62個ip
- 192.168.0.0/28,表示2的4(32-28=4)次方-2=30個ip
所以 192.168.1.1/24 標示的是一個子網絡192.168.1.0(擁有254個ip地址: 從192.168.1.1到192.168.1.254)