網路掩碼那些事兒

網路掩碼那些事兒

來自專欄車小胖談網路75 人贊了文章

成長指數998,歸功於各位朋友的大力捧場,由衷地感謝朋友們!

昨天公眾號寫過一篇文章:ISP路由器上是不是擁有Internet中所有路由條目?

ISP路由器上是不是擁有Internet中所有路由條目??

mp.weixin.qq.com

還沒有來得及閱讀的同學,請先閱讀該文,裡面包含很多基礎知識。

運營商PE路由器,是擁有全球路由表的,大約在700000+條以上,這個數字一直處於上升的趨勢。

PE(Provider Edge)路由器

EEdge的縮寫,PE翻譯成中文就是 「邊界路由器「,邊界路由器通常位於運營商的邊界,和其它的運營商物理連接。PE路由器和其它的運營商的PE路由器,通過BGP路由協議交換路由:

(1)學習其它運營商的路由表 (incoming)

(2)通告自己的路由表 (outgoing)

通過以上雙向的路由交換,本地的PE就擁有全球路由表了。

全球可用IP地址不應該是20億+的嗎?

IP地址一共32位,理論上有 232= 42.9億個IP地址,去除組播、私有、測試、保留IP,可用的IP地址有20多億+。

路由器當前內存,能夠容納20億+海量的路由條目嗎?

在Cisco的路由器上,保存一條BGP路由條目,大約花費100位元組,那麼保存20億條路由條目,需要多少位元組呢?

2 * 109* 100 = 2*1011 = 200 G 位元組

這個海量的內存需求,連最高端的路由器都難以滿足。

既然路由器無法容納一個個IP地址,那能否將具有統一前綴的IP地址歸納起來,這樣就大大減少路由表的條目了,接下來就再次介紹網路掩碼的神奇效果。

最短的網路掩碼長度是多少?

0

掩碼長度「0」用在何處?

比如 0.0.0.0/0,上一篇文章已經詳細介紹這條神奇的路由。

地球上億萬萬用戶的電腦、智能手機,只需要擁有這一條0.0.0.0/0路由,就可以訪問互聯網所有的IP地址資源。簡而言之,0.0.0.0/0代表著Internet上的所有路由條目。

最長的網路掩碼是多少?

32

掩碼長度「32」用在什麼地方?

比如1.1.1.1/32,就表示1.1.1.1這一個IP地址。

用戶通過PPPoE撥號,PPPoE伺服器給用戶PPPoE客戶端分配的就是32位掩碼的IP地址,假設為 1.1.1.1/32。

來總結一下,掩碼長度0代表全球所有的IP地址,但掩碼長度0隻有一個使用場合,那就是0.0.0.0/0。除此之外,沒有了,1.1.1.1/0這樣的組合是錯誤的!

掩碼長度32隻代表一個IP地址,比如1.1.1.1/32和1.1.1.1是一個意思,代表一個IP地址個體。

掩碼長度「31」

掩碼長度31代表一個網段有2個IP地址。

計算公式:網段IP地址數目 = 2^(32-31)= 2

1.1.1.0/31,這條路由其實代表著兩個IP地址:1.1.1.0, 1.1.1.1

那1.1.1.2/31呢? 這條路由代表兩個IP地址:1.1.1.2,1.1.1.3

以此類推。。。

所謂31位掩碼,就是說,IP地址第32位(從左到右數),可以是0,也可以是1。凡是掩碼沒有覆蓋的地方,可以是0、1任意組合。

由於31位掩碼只能容納2個IP地址,通常用在點對點鏈路上,一邊一個IP地址,不會浪費IP地址!

如果在點對點鏈路上使用30位掩碼,將浪費2個IP地址。

掩碼長度「30」

按照計算公式

網段IP地址數目 = 2^(32-30)=4

掩碼長度為30的路由代表4個IP地址。

掩碼長度「29」

按照計算公式

網段IP地址數目 = 2^(32-29)=8

掩碼長度為29的路由代表8個IP地址。

以此類推。。。

掩碼長度「8」

按照計算公式

網段IP地址數目 = 2^(32-8)=224= 16777216

掩碼長度為8的路由代表16777216個IP地址。

1.0.0.0/8 與1.1.1.1/8的區別

1.0.0.0/8是前綴為1的所有IP地址集合體,如果寫成1.x.x.x/8更好理解,其中的x可以為0-255任意值,這個集合體一共有16777216個IP地址。

1.0.0.0/8是一個包含16777216個IP地址的路由條目,通常出現在路由器的路由表裡,由路由器自動歸納或手工歸納。

1.1.1.1/8則是一個個體,這個個體的IP地址為1.1.1.1,很顯然它屬於1.0.0.0/8大集合體,因為它屬於1.x.x.x這個集合體,不是嗎?

1.1.1.1/8通常配置在主機得介面上,供主機使用。

上文的闡述其實已經回答了關於路由歸納的問題了,使用網路掩碼來將具有相同的前綴的IP地址,歸納成一個集合體,這樣全球路由表將大大減少。

既然越短的網路掩碼,歸納的IP地址越多,那能否使用長度為8的網路掩碼來歸納路由?

比如

1.0.0.0/8

2.0.0.0/8

3.0.0.0/8

。。。

221.0.0.0/8

222.0.0.0/8

223.0.0.0/8

那麼全球路由表除了私有IP(10.x.x.x)、保留IP(169.x.x.x)、本機IP(127.x.x.x),那麼只需要200多條路由條目就可以表示了,對嗎?

不對,因為一個IP地址前綴不一定屬於一個運營商,所以不能歸納在一起。

舉例

比如1.x.x.x這個地址前綴,不可能屬於一個運營商,假設1.1.x.x完全屬於一個美國運營商,而1.2.x.x屬於一個歐洲運營商,那麼這些IP地址就不能歸納在一起。

如果歸納在一起,1.0.0.0/8這條路由,是通向美國還是歐洲?

很好辦啊,用1.1.0.0/16歸納屬於美國的運營商,1.2.0.0/16歸納屬於歐洲的運營商。

一個目的IP=1.1.1.1的報文,匹配到1.1.0.0/16這條路由,發給美國運營商。

一個目的IP=1.2.1.1的報文,匹配到1.2.0.0/16這條路由,發給歐洲運營商。

在互聯網發展初期,由於路由器的內存限制,以及網路帶寬小,所以BGP對於路由的掩碼長度有一個嚴格的規定,需要≤19

最長19位掩碼,將全球路由表限制在多少以內?

219= 524288

後來隨著路由器的性能不斷提升、內存的提升,以及IP地址越來越不連續,使用19位的網路掩碼越來越不現實,後來BGP放鬆了對網路掩碼長度的限制,只要不大於21就好。

21位的掩碼長度,將全球路由表限制在多少以內呢?

221= 2097152

Okay,終於把網路掩碼的內容全部寫完了,如果各位有什麼問題,可以在評論區提問,盡量抽空回答,謝謝。

公眾號:車小胖談網路

可以通過該鏈接進入:

網路掩碼那些事兒?

mp.weixin.qq.com圖標

公眾號有很多知乎沒有的回答,一如繼往地歡迎關注!


推薦閱讀:

誰的互聯網金融
「蓄勢·共贏」2018億賽通全國渠道大會勝利召開
"見實"小程序沙龍 | "跑會"到底有沒有用?
WAFX:互聯網金融發展基礎向好

TAG:計算機網路 | 互聯網 |