關於子網劃分—為什麼全0全1子網號不能使用

一罐白色菠蘿啤發表於2020-12-20

子網劃分並沒有節約IP地址,實際導致可分配的IP地址數目減少。

證明:比如一個C類地址,不進行子網劃分,實際可分配IP地址為254個。
現進行子網劃分,假設借用2位主機號作為子網號,
那麼現在產生的子網為01和10(全0全1子網號去掉),每個子網的主機號為6位,則每個子網可分配的IP地址為2的6次方剪掉2,即62臺,
那麼兩個子網可分配的IP共62*2=124個,
那麼減少的IP數目為:254-124=130個。

從上資料可以看出,減少了約一半的IP地址。既然這麼浪費IP地址,為何我們還要使用子網劃分呢?我個人認為,這是利用子網來方便管理網路的一種措施。

很容易看出,減少這麼多IP地址的主要原因是子網號為00(全0)和11(全1)的兩個子網去掉了,那為何要去掉“全0全1”的子網號呢?

不應該使用全0全1子網這個規定是源於RFC950標準,但後來RFC950在RFC1878中被廢止了。

看看RFC950提到的原因:
假設我們有一個網路:192.168.0.0/24,我們現在需要兩個子網,那麼按照RFC950,應該使用/26而不是/25,得到兩個可以使用的子網192.168.0.64和192.168.0.128
對於192.168.0.0/24,網路地址是192.168.0.0,廣播地址是192.168.0.255
對於192.168.0.0/26,網路地址是192.168.0.0,廣播地址是192.168.0.63
對於192.168.0.64/26,網路地址是192.168.0.64,廣播地址是192.168.0.127
對於192.168.0.128/26,網路地址是192.168.0.128,廣播地址是192.168.0.191
對於192.168.0.192/26,網路地址是192.168.0.192,廣播地址是192.168.0.255

你可以看出來,對於第一個子網,網路地址和主網路的網路地址是重疊的,對於最後一個子網,廣播地址和主網路的廣播地址也是重疊的。這樣的重疊將導致極大的混亂。比如,一個發往192.168.0.255的廣播是發給主網路的還是子網的?這就是為什麼在當時不建議使用全0和全1子網。

然而,人們認識到子網劃分的IP地址浪費嚴重,後來IETF就研究出了其他一些技術,比如可變長子網掩碼VLSM,該技術是在子網上進一步劃分子網,可提高IP地址資源的利用率;後來在此基礎上研究出了無類別域間路由CIDR,即消除了傳統的A/B/C等分類以及劃分子網,才是採用網路字首和主機號的方式來分配IP地址,這使得IP地址的利用率更好。這兩者的具體技術暫時不闡述。

目前來說,現在可以使用全0和全1子網。但我們現在學習時,還強調子網劃分時要去掉全0全1,這是何道理呢?我個人認為:
(1)目前有些網路建設較早,裝置也不更新,老裝置可能不支援CIDR,那麼也就不支援全0全1的子網了。
(2)我們建企業網(單位網路)時,一般是使用私有地址來分配內部主機,小企業使用C類的192.168.0.0網路,中型企業使用172.16.0.0(私有部分)網路,如果還不夠用,還有10.0.0.0網路。

既然私有地址如此豐富,為何不去掉全0全1的子網呢?因為真要使用全0全1的子網,還需要在路由器上進行一些特殊的配置。

那麼怎樣區分192.168.10.0到底是哪個網路的網路地址呢?
答案是:把子網掩碼加上去!
192.168.10.0 255.255.255.0 是大C的網路地址,192.168.10.0 255.255.255.224 是第一個子網的網路地址,192.168.10.255 255.255.255.0是大C的廣播地址,192.168.10.255 255.255.255.224是最後一個子網的廣播地址。帶上掩碼,它們的二意性就不存在了。
所以,在嚴格按照TCP/IP ABCD給IP地址分類的環境下,為了避免二意性,全0和全1網段都不讓使用。這種環境我們叫作Classful。在這種環境下,子網掩碼只在所定義的路由器內有效,掩碼資訊到不了其它路由器,比如RIP-1,它在做路由廣播時根本不帶掩碼資訊,收到路由廣播的路由器因為無從知道這個網路的掩碼,只好照標準TCP/IP的定義賦予它一個掩碼。比如,拿到10.X.X.X,就認為它是A類,掩碼是255.0.0.0;拿到一個204.X.X.X,就認為它是C類,掩碼是255.255.255.0。
但在Classless的環境下,掩碼任何時候都和IP地址成對地出現,這樣,前面談到的二意性就不會存在,是Classful還是Classless取決於你在路由器上執行的路由協議,一個路由器上可同時執行Classful和Classless的路由協議。RIP是 Classful,它在做路由廣播時不帶掩碼資訊;OSPF,EIGRP,BGP4是Classless的,它們在做路由廣播時帶掩碼資訊,它們可以同時執行在同一臺路由器上。
在Cisco路由器上,預設你可以使用全1網段,但不能使用全0網段。所以,當在Cisco路由器上給埠定義IP地址時,該IP地址不能落在全0網段上。如果你配了,你會得到一條錯誤資訊。使用IP SUBNET-ZERO命令之後,你才能使用全0網段。
要強調的是,使用了IP SUBNET-ZERO命令之後,如果路由協議使用的是Classful的(比如RIP),雖然你的定義成功了,但那個子網掩碼還是不會被RIP帶到它的路由更新報文中。即,IP SUBNET-ZERO 命令不會左右路由協議的工作。
總之,TCP/IP協議中,全0和全1網段因為具有二意性而不能被使用。Cisco 預設使全1網段可以被使用,但全0網段只有在配置了IP SUBNET-ZERO後方可被使用

相關文章