# 網絡基本功(七):細說IP地址與子網
**轉載請在文首保留原文出處:EMC中文支持論壇**[https://community.emc.com/go/chinese](https://community.emc.com/go/chinese) [](http://service.weibo.com/share/share.php?title=%23ECN%e4%b8%ad%e6%96%87%e6%94%af%e6%8c%81%e8%ae%ba%e5%9d%9b%23 %e7%bd%91%e7%bb%9c%e5%9f%ba%e6%9c%ac%e5%8a%9f%ef%bc%88%e4%b8%83%ef%bc%89%ef%bc%9a%e7%bb%86%e8%af%b4IP%e5%9c%b0%e5%9d%80%e4%b8%8e%e5%ad%90%e7%bd%91@EMC%e6%98%93%e5%ae%89%e4%bf%a1%e4%b8%ad%e5%9b%bd%e6%8a%80%e6%9c%af%e7%a4%be%e5%8c%ba&url=https://community.emc.com/message/838932#838932)
## 介紹
起初,IP地址只有兩層結構:網絡與主機。子網地址向其中添加了一層新的結構:不同于僅有主機,網絡有分為子網與主機。每一個子網的功能近乎于完整的網絡。子網的添加構成了三層網絡結構:包含子網的網絡,各自由若干主機構成。IP地址由此被分為三個部分:網絡ID,子網ID與主機ID。IP地址長度仍固定為32位,其中,A類網絡8位子網掩碼,B類網絡16位子網掩碼,C類網絡24位子網掩碼。
## 更多信息
對于每一類網絡,網絡數以及每一網絡中包含的主機數,決定了它們各自占用多少比特位。這一準則同樣適用于如何劃分子網與主機。子網數量為2的子網ID次方,每一子網內的主機數為2的主機ID次方。假設一個B類網絡154.71.0.0,網絡ID占16位(154.71),主機ID占16位。沒有子網的情況下一共可容納65,534臺主機。按照實際需求將16位劃分為子網與主機:1位子網16位主機,或2與14,3與13。。。如下圖所示,劃分為5位子網與11位主機,子網數越多,主機數越少。
[](https://community.emc.com/servlet/JiveServlet/showImage/2-838932-95194/image002.jpg)
搭建IP子網時,如何劃分子網與主機數是最重要的問題之一。子網所占位取決于整個網絡中的物理子網數,每一子網中的主機數不能超過子網劃分所允許的最大數量。
**IP子網掩碼,表示法以及子網計算:**
在沒有子網的網絡環境下,路由器通過IP地址的前八位來決定是哪一類型的網絡,從而它們知道哪些是網絡ID哪些是主機ID。劃分子網時,路由器也需要知道主機ID是如何劃分成子網ID與主機ID的,但是劃分方法可以是任意組合,也沒有辦法從IP地址看出來。因此,必須有額外的信息告知解析IP地址的設備,這一信息稱為子網掩碼,以32比特數的形式呈現。
掩碼位的1和0結合布爾函數與和或的功能對于地址中的比特位進行選擇或清除。子網掩碼中的32位對應于IP地址相同位置上的數字。掩碼位為1時,則地址中該位作為網絡ID或子網ID,而掩碼位為0時,則地址中該位表示主機ID。
**子網掩碼為1**:將IP地址中的0或1與1進行與操作,即:當子網掩碼位為1,IP地址保持不變。
**子網掩碼為0**:任何數和0做與操作都是0,即:當子網掩碼位為0,IP地址清零。
因此,將子網掩碼應用于IP地址,網絡ID和子網ID保持不變,移除主機ID。執行此功能的路由器由此獲得子網地址,因為它知道網絡類型,因此能夠區分網絡位與子網地址位。
舉例來說,假設將B類網絡154.71.0.0劃分5位為子網ID,11位為主機ID。因此,子網掩碼有16個1代表網絡部分(B類網絡),接下來5個1作為子網部分,11個0用作主機ID。二進制數表示為11111111 11111111 **11111**000 00000000,十進制數表示為255.255.248.0。
[](https://community.emc.com/servlet/JiveServlet/showImage/2-838932-95195/image003.jpg)
**舉例:**
假設有一臺主機IP地址154.71.150.42,路由器需要找出該主機位于哪一子網,則它的掩碼操作如下圖所示:
[](https://community.emc.com/servlet/JiveServlet/showImage/2-838932-95196/image004.png)
[](https://community.emc.com/servlet/JiveServlet/showImage/2-838932-95197/image005.jpg)
結果,154.71.150.42所屬的子網為154.71.144.0。另一臺路由器能夠從中區分出網絡ID與子網ID,因為地址的前兩個比特位是10,是一個B類網絡。所以網絡ID占16位,子網ID一定是17至21。這里,子網是10010,或子網18。
提一個問題:既然子網掩碼只是將網絡地址劃分出網絡部分與子網部分,那為什么還要使用另外的32位比特數255.255.248.0,而不直接將IP地址第21位指定為分界線呢?這是有歷史原因的:因為需要考慮不連續的掩碼情況。同時,它也能夠讓路由器進行快速的掩碼操作來找出子網地址。
除了將16位劃分為5位子網ID與11位主機ID,標準也允許前2位用作子網ID,4位用作主機ID,之后3位用作子網ID,7位用作主機ID。因此子網掩碼為11000011 10000000。當然,這會造成混淆,是不推薦的,實際中也沒有人會這么做。
鑒于非連續掩碼實際不會應用,以及現今的計算機速度大幅提升,新的表達法為154.71.150.42/21。
**IP子網掩碼設定:**
假設B類網絡154.71.0.0,沒有子網的話一共有65,534臺主機。劃分子網時,按照以下方法:
+ 1位用作子網ID,15位用作主機ID:那么子網數為2^1,第一個子網是0,第二個子網是1。每一個子網的主機數是2^15-2,或32,766。
+ 2位用作子網ID,14位用作主機ID:那么子網數為2^2,四個子網0,1,2,3。每一個子網的主機數是2^14-2,或16,382。
子網與主機ID位的劃分取決于子網數與子網中最大主機數。假設一個B類網絡中有10個子網,需要4位表示子網(2^4=16,2^3=8),12位用作主機ID,每一子網最多4,094臺主機。
如果你有20個子網,每一子網3,000臺主機,那么就會碰到問題。需要5位表示20個子網,而3,000臺主機需要12位。這時需要重新組織物理網絡,如果無法做到,就需要第二個B類網絡。
自定義子網掩碼的方法是:從指定網絡類型的默認子網掩碼中,從最左邊的0位開始,按照需要的子網數將0改為1。假設C類網絡200.13.94.0,最后8位可供劃分子網與主機,則有6種不同的劃分方法。假如使用3位作為子網ID,5位作為主機ID,那么:
默認C類網絡子網掩碼:11111111 11111111 11111111 00000000
將最左邊的3位0改為1:11111111 11111111 11111111 **111**00000
即子網掩碼為:255.255.255.224。
通常情況下,所有子網大小必須相同。因此,最大一個子網的主機數決定了需要多少位比特用作主機ID。因此前例中,前19個子網每個子網最多100臺主機,而第20個子網需要3000個主機,就會碰到問題。這種情況下,需要將最后一個過大的子網拆成若干個小的子網。
[](https://community.emc.com/servlet/JiveServlet/showImage/2-838932-95198/image006.jpg)
- 介紹
- 網絡基本功(一):細說網絡傳輸
- 網絡基本功(二):細說交換機
- 網絡基本功(三):細說VLAN與Trunk
- 網絡基本功(四):細說路由(上)
- 網絡基本功(五):細說路由(下)
- 網絡基本功(六):鏈路聚合
- 網絡基本功(七):細說IP地址與子網
- 網絡基本功(八):細說TCP滑動窗口
- 網絡基本功(九):細說TCP重傳
- 網絡基本功(十):細說TCP確認機制
- 網絡基本功(十一):TCP窗口調整與流控
- 網絡基本功(十二):細說Linux網絡配置(上)
- 網絡基本功(十三):細說Linux網絡配置(下)
- 網絡基本功(十四):細說診斷工具ping
- 網絡基本功(十五):細說網絡性能監測與實例(上)
- 網絡基本功(十六):細說網絡性能監測與實例(下)
- 網絡基本功(十七):細說tcpdump的妙用(上)
- 網絡基本功(十八):細說tcpdump的妙用(下)
- 網絡基本功(十九):細說NAT原理與配置
- 網絡基本功(二十):細說ICMP和ARP
- 網絡基本功(二十一):細說HTTP(上)
- 網絡基本功(二十二):細說HTTP(下)
- 網絡基本功(二十三):Wireshark抓包實例診斷TCP連接問題
- 網絡基本功(二十四):Wireshark抓包實例分析TCP重傳
- 網絡基本功(二十五):Wireshark抓包實例分析TCP重復ACK與亂序
- 網絡基本功(二十六):Wireshark抓包實例分析TCP窗口及reset
- 網絡基本功(二十七):Wireshark抓包實例分析HTTP問題(上)
- 網絡基本功(二十八):Wireshark抓包實例分析HTTP問題(下)
- 網絡基本功(二十九):Wireshark抓包實例診斷數據庫常見問題
- 網絡基本功(三十):細說DNS(上)
- 網絡基本功(三十一):細說DHCP