自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

只有 32 位的 IPv4,為何依然夠用?

開發(fā) 開發(fā)工具
正好 2019 年了,決定再挖個(gè)大的新坑,準(zhǔn)備開始寫一些那些多年不變的基礎(chǔ)技術(shù),算法、數(shù)據(jù)結(jié)構(gòu)、網(wǎng)絡(luò)協(xié)議、設(shè)計(jì)模式、操作系統(tǒng)有時(shí)間都會(huì)寫。先挖坑,挖完慢慢填,我盡量寫的有趣一些,希望大家能夠看下去。

[[256893]]

一、前言

我一直在強(qiáng)調(diào),打好基礎(chǔ)怎么變都不慌,但是一直也沒有重點(diǎn)分享過這些基礎(chǔ)技術(shù)。正好 2019 年了,決定再挖個(gè)大的新坑,準(zhǔn)備開始寫一些那些多年不變的基礎(chǔ)技術(shù),算法、數(shù)據(jù)結(jié)構(gòu)、網(wǎng)絡(luò)協(xié)議、設(shè)計(jì)模式、操作系統(tǒng)有時(shí)間都會(huì)寫。先挖坑,挖完慢慢填,我盡量寫的有趣一些,希望大家能夠看下去。

今天就來講講網(wǎng)絡(luò)協(xié)議中的 CIDR(無類型域間選路),先來說說 CIDR 的背景。

二、CIDR 的背景

2.1 IPv4 和 IPv6

現(xiàn)存所有的網(wǎng)絡(luò)設(shè)備硬件中,網(wǎng)卡是設(shè)備上網(wǎng)必備的硬件條件,網(wǎng)卡雖然有唯一(相對(duì)唯一)的 Mac 地址去標(biāo)識(shí),但是依然需要分配一個(gè) IP 地址。有了 IP 地址,才能讓世界知道你的位置。

簡單來說,IP 地址是一個(gè)網(wǎng)卡在網(wǎng)絡(luò)世界的通訊地址,這就相當(dāng)于現(xiàn)實(shí)世界中,我們?cè)诰W(wǎng)購時(shí)填的收貨地址??梢詭椭鷦e人,從世界的任何位置,找到我們。

現(xiàn)存的 IP 協(xié)議有兩套,就是我們常說的 IPv4 和 IPv6。IPv4 由于最初設(shè)計(jì)的"缺陷",長度只有 32 位,大約只能提供 40 億個(gè)地址。早期設(shè)計(jì)時(shí),可能也想不到互聯(lián)網(wǎng)會(huì)發(fā)展到現(xiàn)在這個(gè)地步,隨便一個(gè)設(shè)備都需要聯(lián)網(wǎng)。

這就造成了 IPv4 地址很快就不夠用了,尤其是這樣 32 位地址中,還被分為了 A、B、C、D、E 這五類地址,拋開一些特殊的 IP 地址,可供使用的就更少了。由此可見 IPv4 在當(dāng)初設(shè)計(jì)時(shí),是有多么奢侈。

 

隨后 IPv6 就被設(shè)計(jì)出來。我們知道當(dāng)容量不夠的時(shí)候,擴(kuò)容是一條短期正確,但是長期來看依然是存在隱患的事情,無論擴(kuò)大到多少,如果沒有合理的規(guī)劃,用完其實(shí)也是遲早的事情。

IPv6 的長度增加到 128 位,可以提供更多的地址,但是 IPv4 和 IPv6 相互之間并不兼容,導(dǎo)致遷移困難。如今 IPv6 已經(jīng)慢慢在被一些大廠所使用,例如在淘寶 App 的啟動(dòng)頁底部,就可以看到 IPv6 的標(biāo)識(shí)。即便如此,在未來很長的一段時(shí)間內(nèi),依然會(huì)保持兩個(gè)協(xié)議并行支持。

IPv6 并不是本文的重點(diǎn),再說回到 IPv4 的地址過少這個(gè)硬傷上。雖然地址確實(shí)不夠用,但是設(shè)備需要聯(lián)網(wǎng)確實(shí)是強(qiáng)需求,這也是必須要解決的問題,聯(lián)網(wǎng)就需要 IP 地址,是不是感覺進(jìn)入死循環(huán)了。

IPv4 這種 A、B、C 類為主要的分類的 IP 數(shù)量,到底少到什么地步呢?這里看一張表就知道了。

 

能夠感受到 IPv4 的尷尬了嗎?C 類地址能夠包含的***主機(jī)數(shù)量,是在太少了,現(xiàn)在隨便一個(gè)網(wǎng)吧可能就不夠用了,而 B 類地址包含的***主機(jī)數(shù)量又太多了,大量用不到的地址,很容易造成地址的浪費(fèi)。有句老話怎么說的,旱的旱死,澇的澇死。

于是就出現(xiàn)了一個(gè)折中的方案,那就是我們本文要聊的 CIDR,中文名為無類型域間選路。

2.2 子網(wǎng)的劃分

現(xiàn)在還不到說 CIDR 的時(shí)候(就是不愛寫這種基礎(chǔ)技術(shù),想寫清楚會(huì)發(fā)現(xiàn)有太多需要前置交代)。在說 CIDR 之前,還有個(gè)背景需要交代,那就是子網(wǎng)。

互聯(lián)網(wǎng)這個(gè)大網(wǎng),中間被分割成一個(gè)個(gè)子網(wǎng),而子網(wǎng)下又被進(jìn)一步分割。

從我們上面的 IP 分類圖中,可以看出,一個(gè) IP 地址的 32 位中,還被分為兩類,分別是網(wǎng)絡(luò)號(hào)和主機(jī)號(hào),將主機(jī)號(hào)都置為 0,得到的就是網(wǎng)絡(luò)地址。

 

可以看出,這樣很明顯的兩級(jí)劃分,也被稱為兩級(jí) IP 地址。而 IP 地址的利用率有時(shí)很低,這種兩級(jí)劃分的方式就顯得不那么靈活,于是就出現(xiàn)了子網(wǎng)。

 

子網(wǎng)其實(shí)就在之前的兩級(jí) IP 地址中,又加了一層子網(wǎng)號(hào),將其變成三級(jí)結(jié)構(gòu)。雖然增加了子網(wǎng)號(hào),但是 IP 地址的長度依然是 32 位,網(wǎng)絡(luò)號(hào)肯定是無法變更的,所以這里的子網(wǎng)就只能從主機(jī)號(hào)想辦法。此時(shí)的子網(wǎng)號(hào),其實(shí)就是從主機(jī)號(hào)中借位,這樣就等于是減少了主機(jī)數(shù),將其分割到不同的子網(wǎng)中。

涉及到子網(wǎng),還有一個(gè)重要的概念,就是子網(wǎng)掩碼。子網(wǎng)掩碼,就是為了區(qū)分識(shí)別對(duì) IP 地址劃分的子網(wǎng)的。子網(wǎng)掩碼很簡單,它就是將網(wǎng)絡(luò)號(hào)和子網(wǎng)號(hào),對(duì)應(yīng)的位全部置為 1,將主機(jī)號(hào)對(duì)應(yīng)的位都置為 0,這就是子網(wǎng)掩碼了。

這三個(gè)信息中,只要知道 IP 地址和子網(wǎng)掩碼,自然就可以推算出對(duì)應(yīng)的網(wǎng)絡(luò)地址。這也正是我們前面說的子網(wǎng)的概念,其實(shí)是將一個(gè)大的網(wǎng)絡(luò),在其內(nèi)部分割成一個(gè)個(gè)小的子網(wǎng),但是在網(wǎng) 絡(luò)的外層來看,還是一個(gè)大的網(wǎng)絡(luò),他們都是通過網(wǎng)絡(luò)地址來通信的。

例子一:

 

例子二:

 

從上面的兩個(gè)例子中,可以看出,相同的 IP 地址,不同的子網(wǎng)掩碼,可以得出相同的網(wǎng)絡(luò)地址,但是他們卻是被劃分在不同的子網(wǎng)當(dāng)中的。

三、無類型域間選路(CIDR)

3.1 什么是 CIDR

通過子網(wǎng)掩碼去劃分的子網(wǎng),是借走的主機(jī)號(hào),這是有損耗的。例如借走兩位主機(jī)號(hào),原則上可以劃分四個(gè)子網(wǎng)(11、10、01、00),但是其中全 0 和全 1 是不使用的,所以就只剩下兩個(gè)了。使用 CIDR 是沒有這個(gè)問題的,它可以使用全 0 和全 1,不會(huì)造成浪費(fèi)。

終于可以說到 CIDR 了。

CIDR 中文全稱是無分類域間路由,是英文 Classless Inter-Domain Routing 的縮寫。CIDR 打破了原先設(shè)計(jì)的 A、B、C 類地址的概念,將 32 位 IP 地址保持兩分的結(jié)構(gòu),就是依然保持前面是網(wǎng)絡(luò)號(hào),后面是主機(jī)號(hào)。

這樣如何區(qū)分呢?CIDR 會(huì)在 IP 地址的后面,用斜線分割一個(gè)網(wǎng)絡(luò)前綴占位數(shù)的標(biāo)識(shí)。

 

例如:10.100.120.2/24,斜線后面有一個(gè)數(shù)字 24,這種地址的表示形式,就是 CIDR。這里的 24 表示,32 位的 IP 地址中,前 24 位是網(wǎng)絡(luò)號(hào),后 8 位是主機(jī)號(hào)。

這一組 CIDR,包含的信息可就多了,還是拿 10.100.120.2/24 來舉例。

將主機(jī)號(hào),所有的位都置為 1,就是廣播地址,例如:10.100.120.255,如果發(fā)送這個(gè)地址,10.100.120 網(wǎng)絡(luò)里面的機(jī)器都可以收到。

將 24 位網(wǎng)絡(luò)號(hào)都置為 1,8 位主機(jī)號(hào)置為 0,得到的就是子網(wǎng)掩碼,255.255.255.0。

CIDR 除了表示一個(gè) IP 地址,還相當(dāng)于給出了一個(gè) CIDR 子網(wǎng)的地址范圍。將主機(jī)號(hào),從全 0 到全 1 的范圍,就是當(dāng)前子網(wǎng)的所能包含的***地址數(shù)。

3.2 容易算錯(cuò)的 CIDR

再來回憶一下 IP 地址的格式,32 位中以 8 位為一個(gè)單位,用 . 進(jìn)行分割。所以比較常見的 /24、/16 這種就比較容易區(qū)分,不需要將十進(jìn)制轉(zhuǎn)換成二進(jìn)制,就可以明顯看出來,那些是網(wǎng)路號(hào),那些是主機(jī)號(hào),

家庭 WiFi 中,一般不會(huì)超過 256 個(gè)設(shè)備,所以 /24 也就夠用了,例如 192.168.1.117/24。

 

如果遇上不是 8 的整數(shù)倍 CIDR,有時(shí)候我們就容易算錯(cuò)。

我們來看一下 16.158.165.20/22 這個(gè) CIDR,求一下這個(gè)網(wǎng)絡(luò)的起始 IP 地址、子網(wǎng)掩碼和廣播地址。

你要是上來就寫 16.158.165.1、255.255.255.0、16.158.165.255,那你就錯(cuò)了。

首先看到 /22 不是 8 的整數(shù)倍,肉眼不好區(qū)分,我們轉(zhuǎn)成二進(jìn)制就清晰了。

 

遇到不好算的 CIDR,換成二進(jìn)制再看看,一切都清晰了。

3.3 CIDR 應(yīng)用

前面說到,互聯(lián)網(wǎng)就是被切分成一個(gè)個(gè)子網(wǎng)下存在的,一個(gè)個(gè)子網(wǎng)往下還可以繼續(xù)切分,但是對(duì)外就是一個(gè)整體。所以 CIDR 這種方式,/x 這個(gè)數(shù)值越小,說明當(dāng)前子網(wǎng)下的主機(jī)數(shù)量越多。反之可以通過增加 /x 來繼續(xù)進(jìn)行子網(wǎng)的劃分。

例如從 /16 變?yōu)?/20,右移了四位,等于又切分出來 16 個(gè)子網(wǎng)。

舉個(gè)例子,有一個(gè) CIDR 地址塊,201.0.68.0/22,然后我們可以怎么切分?拆分成二進(jìn)制就清晰了。

 

要是有心,我們還可以繼續(xù)往下切分,但是正常我們?yōu)榱吮WC子網(wǎng)可用,一般也會(huì)保持一個(gè)子網(wǎng)下的主機(jī)數(shù)不會(huì)太少。

四、小結(jié)時(shí)刻

CIDR 這種分割子網(wǎng)的規(guī)則,其實(shí)設(shè)計(jì)的很巧妙,只要向右移位網(wǎng)絡(luò)前綴所占的位數(shù),就可以繼續(xù)分割子網(wǎng)。就算以后全面升級(jí)了 IPv6 后,我個(gè)人認(rèn)為應(yīng)該也不會(huì)拋棄 CIDR 這種方式。

CIDR 這種分割子網(wǎng)的計(jì)算方法,你明白了嗎?留一道思考題吧,已知 16.158.165.20/20 這個(gè) CIDR,計(jì)算子網(wǎng)掩碼、網(wǎng)絡(luò)地址、廣播地址嗎?

【本文為51CTO專欄作者“張旸”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過微信公眾號(hào)聯(lián)系作者獲取授權(quán)】

 

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2018-09-28 09:24:19

IPv4IPv6IP地址

2018-02-02 06:34:13

IPv6IPv4網(wǎng)絡(luò)

2018-11-23 09:11:18

IPV4IPV6頭部

2014-09-22 17:24:34

CIDRNATIP

2019-09-23 11:03:55

IPv6IPv4網(wǎng)絡(luò)

2010-05-26 17:53:38

IPv4 to IPv

2022-02-15 14:12:46

IPv4IPv6過渡技術(shù)

2010-05-04 09:56:54

IPv4黑市IPv6

2010-06-07 15:25:58

IPv4與IPv6

2018-08-15 09:21:31

IPv6IPv4協(xié)議

2010-05-26 17:57:15

IPv6報(bào)頭

2010-06-08 17:38:17

IPv4與IPv6翻譯策略

2010-06-09 17:07:46

IPv6與IPv4

2013-11-20 09:22:44

IPv4過渡IPv6

2018-12-14 10:20:57

IPv6IPv4障礙

2010-12-30 12:14:40

2019-02-13 14:51:29

2020-05-12 09:01:30

IPv6IPv4網(wǎng)絡(luò)協(xié)議

2022-05-30 19:30:39

IPv4IPv6

2010-06-01 15:01:39

IPv4向IPv6過渡
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)