0分配不到地址_前端学习计算机网络——IP地址的划分及其分类
本文是該系列文章的第二篇,將了解Internet中使用的網(wǎng)絡(luò)層地址,又稱IP地址。每個設(shè)備都至少需要一個IP地址,其可以作為我們設(shè)備的標(biāo)識,就跟我們的電話號碼一樣,知道了電話號碼就能找到我們,所以每個IP地址都是唯一的,所以在給每臺設(shè)備分配IP時,會根據(jù)一套編號方案進行,本篇文章我們就來詳細地了解一下它。
一、IP地址的表示
IP作用于OSI參考模型中的網(wǎng)絡(luò)層,在終端通信中作為唯一標(biāo)識,便于確定數(shù)據(jù)的傳遞目標(biāo)。
IP地址分為:IPv4 、IPv6
大多數(shù)用戶熟悉并且流行的IP地址是IPv4,其是用點分四組十進制的表示方法展示的,例如 165.195.130.107 、197.101.0.0 等,每一組的數(shù)字都是非負(fù)的整數(shù),范圍在 [0, 255] 之間。
IPv4還有種寫法是用二進制表示的,例如:
| 0.0.0.0 | 00000000 00000000 00000000 00000000 |
| 1.2.3.4 | 00000001 00000010 00000011 00000100 |
| 10.0.0.255 | 00001010 00000000 00000000 11111111 |
| 165.195.130.107 | 10100101 11000011 10000010 01101011 |
| 255.255.255.255 | 11111111 11111111 11111111 11111111 |
因此稱IPv4是32位的。而IPv6的位數(shù)就比較大了,是128位的,長度是IPv4的4倍,并且其表示方式是分塊的八組四個十六進制數(shù),例如:5f05:2000:80ad:5800:0058:0800:2023:1d71,每個塊兒之間都是用 : 隔開的。
IPv6看著特別得長,所以它的簡化表示法已經(jīng)有一套標(biāo)準(zhǔn),規(guī)則如下:
當(dāng)然IPv6也是可以用二進制表示的,表示結(jié)果如下:
| 5f05:2000:80ad:5800:0058:0800:2023:1d71 | 0101111100000101 0010000000000000 1000000010101101 0101100000000000 0000000001011000 0000100000000000 0010000000100011 0001110101110001 |
| ::1 | 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000001 |
如果把IPv6和端口號一起使用的話,可能會出現(xiàn)這樣的情況:http://2001:0db8:85a3:08d3:1319:8a2e:0370:7344:443/,該URL中,最后一個 :443 其實表示的是端口號,但與IPv6一起使用時看起來好像也成為了一個塊兒部分,因此我們需要用 [] 符號將IPv6部分包裹起來,結(jié)果如下:http://[2001:0db8:85a3:08d3:1319:8a2e:0370:7344]:443/
二、IP地址結(jié)構(gòu)
上面提到,IP是作為終端的唯一表示,因此只有當(dāng)保證每個IP都不同時,才能保證IP的唯一性。其中,IPv4地址的長度為32位,因此就有 種可能的地址,那么同理,IPv6地址的長度為128位,因此就有 種可能的地址。
這些地址就是作為數(shù)據(jù)包發(fā)送的目的地址,當(dāng)然每個地址都會有它們各自的含義,例如單播 、組播 、廣播等,當(dāng)然還有一些地址是會被保留用于實驗的
- 單播可以理解為一臺主機發(fā)送單一的數(shù)據(jù)包給另一臺主機;
- 組播可以理解為一臺主機發(fā)送單一的數(shù)據(jù)包給多臺主機;
- 廣播可以理解為一個節(jié)點向其它所有的節(jié)點發(fā)送數(shù)據(jù)包;
IPv4中大多數(shù)的的地址都為單播
(1)分類尋址
那么IP地址既然是作為識別特定主機的唯一標(biāo)識,那么到底是如何被識別的呢?其實在長度為32位的IPv4地址中,有一段連續(xù)位稱為網(wǎng)絡(luò)號,還有一段連續(xù)位稱為主機號。
因為有時在同一個網(wǎng)絡(luò)中,可能會有多臺主機,就例如一個電子計算機教室看成一個網(wǎng)絡(luò),教室中有60臺電腦,那么這60臺電腦都屬于這一個教室所處的網(wǎng)絡(luò),而每臺電腦又需要在該網(wǎng)絡(luò)下單獨分配一個唯一的標(biāo)識
因此,在識別IP地址時,就是先通過識別IP地址中的網(wǎng)絡(luò)號來確認(rèn)目的地址處于哪個網(wǎng)絡(luò)區(qū)域,然后再識別主機號,來確認(rèn)這個網(wǎng)絡(luò)中特定的主機。
我們將IPv4地址用二進制表示,一段地址的網(wǎng)絡(luò)號和主機號分類可以分為5類:A類 、B類 、C類 、D類 、E類,區(qū)別如下圖:
IPv4地址分類- A類: 網(wǎng)絡(luò)號共8位,首位固定為 0,接下來連續(xù)的7位可以自由設(shè)定;主機號為24位
- B類: 網(wǎng)絡(luò)號共16位,前兩位固定為 1 0,接下來連續(xù)的14位可以自由設(shè)定;主機號為16位
- C類: 網(wǎng)絡(luò)號共24位,前三位固定為 1 1 0,接下來連續(xù)的21位可以自由設(shè)定;主機號為8位
- D類: 為組播地址,共32位,前四位固定為 1 1 1 0
- E類: 為保留地址,共32位,前四位固定為 1 1 1 1
其中A 、B 、C類地址大多都是單播地址,因此它們可用于接口分配。舉個例子,A類地址網(wǎng)絡(luò)號共8位,其中首位固定為 0,那么還有7位可以自由設(shè)定,那么就共有 個網(wǎng)絡(luò)數(shù);主機號共24位,那么就共有 個主機數(shù)。(同樣的,我們可以推出其它類別的地址的網(wǎng)絡(luò)數(shù)和主機數(shù))因此我們可以理解為,用A類地址一共可以為 個電子計算機教室分配使用,每個教室可以容納 臺主機
IPv4地址的范圍在 0.0.0.0 ~ 255.255.255.255 之間,那么我們來看看這五類地址各自的地址范圍是如何的吧~
A類地址首位固定為 0,因此A類地址用二進制表示為 0XXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX,因此A類地址用十進制表示時,第一組最小為0,其余三組最小也為0,即 0.0.0.0;
B類地址前兩位固定為 1 0,因此B類地址用二進制表示為 10XXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX,因此B類地址為十進制表示時,第一組最小為128,其余三組最小為0,即 128.0.0.0,那么A類地址的范圍就可以確定為 0.0.0.0 ~ 127.255.255.255
C類地址前兩位固定為 1 1 0,因此B類地址用二進制表示為 110XXXXXX XXXXXXXX XXXXXXXX XXXXXXXX,因此C類地址為十進制表示時,第一組最小為192,其余三組最小為0,即 192.0.0.0,那么B類地址的范圍就可以確定為 128.0.0.0 ~ 191.255.255.255
以此類推,即可推出D 、E類的地址范圍
我們將IPv4地址的空間劃分情況總結(jié)在了下表中:
| A | 0.0.0.0 ~ ?127.255.255.255 | 27 | 224 |
| B | 128.0.0.0 ~ 191.255.255.255 | 214 | 216 |
| C | 192.0.0.0 ~ 223.255.255.255 | 221 | 28 |
| D | 224.0.0.0 ~ 239.255.255.255 | / | / |
| E | 240.0.0.0 ~ 255.255.255 | / | / |
上面有提到,A、B、C類地址中大多都是單播,那么也有幾個地址不作為單播地址使用,一般都是地址塊兒中的第一個地址和最后一個地址不使用,所以假設(shè)分配得到的地址塊兒為 127.0.0.0,那么實際能分配的單播地址數(shù)就為
(2)子網(wǎng)尋址
查看上述的A類地址,它可使用的主機數(shù)有 個,那么當(dāng)分配了A類IP地址后,卻發(fā)現(xiàn)并沒有那么多的主機,這樣就造成了剩余可用主機數(shù)的浪費;或者說被分配了C類地址后,卻發(fā)現(xiàn)有上萬臺主機,而C類地址可用的主機數(shù)只有 個,因此只能給其多分配幾個C類地址,那么C類地址就很容易被消耗完
為了解決上述辦法,又采用了一種叫做子網(wǎng)尋址的方法,即假設(shè)當(dāng)一個站點被分配了B類地址,那么該站點的管理員可以將B類地址的主機號部分繼續(xù)分成兩部分,分別為 子網(wǎng)號 和 主機號,這兩者所占的位數(shù)可以根據(jù)實際需求自由分配,例如分配給子網(wǎng)號8位,分配給主機號8位,即平分,結(jié)果如下圖:
子網(wǎng)尋址此時的站點可以支持 個子網(wǎng),每個子網(wǎng)中最多可支持 臺主機(每個子網(wǎng)的第一個地址和最后一個地址不會被使用)
這樣在站點內(nèi),路由器就可以根據(jù)子網(wǎng)號和主機號監(jiān)測到不同子網(wǎng)的流量了,如下圖所示:
上圖中,該站點被分配了一個B類地址 128.32.x.x,而管理員此時選擇將其繼續(xù)劃分為多個子網(wǎng),如圖中的子網(wǎng)1和子網(wǎng)2,它們分別是開始于 128.32.1 和 128.32.2,并且左右兩臺主機都分別屬于各自的子網(wǎng)。
那么路由器是如何在地址中尋找子網(wǎng)號的呢?這就要設(shè)置一個名為子網(wǎng)掩碼的參數(shù)了
(3)子網(wǎng)掩碼
子網(wǎng)掩碼是由一臺主機或路由器使用的分配位,用以確定如何從一臺主機對應(yīng)的IP地址中獲得網(wǎng)絡(luò)和子網(wǎng)信息,更通俗點說,通過它可以確定一個IP地址的網(wǎng)絡(luò)/子網(wǎng)部分的結(jié)束和主機部分的開始。
子網(wǎng)掩碼跟IP地址的長度相等(IPv4為32位,IPv6為128位),對于IPv4來說,子網(wǎng)掩碼也是用點分四組十進制來表示的。當(dāng)子網(wǎng)掩碼用二進制表示時,結(jié)構(gòu)非常簡單且容易記憶,從左邊開始由一段連續(xù)的1組成,緊接著又一段連續(xù)的0組成直到最后。其中連續(xù)的1的長度稱為前綴長度,用 /長度 來表示
舉例各種類型的子網(wǎng)掩碼:
| 128.0.0.0 | /1 | 10000000 00000000 00000000 00000000 |
| 255.0.0.0 | /8 | 11111111 ?00000000 00000000 00000000 |
| 255.192.0.0 | /10 | 11111111 ?11000000 00000000 00000000 |
| 255.255.0.0 | /16 | 11111111 ?11111111 ?00000000 00000000 |
| 255.255.254.0 | /23 | 11111111 ?11111111 ?11111110 ?00000000 |
| 255.255.255.224 | /27 | 11111111 ?11111111 ?11111111 ?11100000 |
| 255.255.255.255 | /32 | 11111111 ?11111111 ?11111111 ?11111111 |
接下來說說子網(wǎng)掩碼是如何使用的,其二進制位1對應(yīng)IP地址的網(wǎng)絡(luò)/子網(wǎng)部分;相反,0對應(yīng)IP地址的主機號部分。換個說法就是子網(wǎng)掩碼第一個0所對應(yīng)IP地址的位為主機號的第一位;也可以借用前綴長度來判斷,即前綴長度后一位對應(yīng)的也是IP地址主機號的第一位。
例如剛才舉的例子,站點管理員將B類地址 128.32.x.x 的主機位劃分為8位的子網(wǎng)號和8位的主機號,那么他就會提前設(shè)置好一個長度為 的子網(wǎng)掩碼,即 255.255.255.0,表示前24位是網(wǎng)絡(luò)/子網(wǎng)部分,那么路由器在處理圖中的IPv4地址 128.32.1.14時,會先查看一下子網(wǎng)掩碼,此時將IP地址和子網(wǎng)掩碼對應(yīng)的位進行與運算即可獲得該IP所處的是哪個子網(wǎng),運算過程如下圖:
結(jié)果中的 128.32.1.0 就是IP地址 128.32.1.14 所屬的子網(wǎng)
但此時有沒有發(fā)現(xiàn)一個問題?雖然給地址劃分了子網(wǎng)號和主機號,但是每個子網(wǎng)號所對應(yīng)子網(wǎng)的主機數(shù)就固定死了,而且每個子網(wǎng)所支持的主機數(shù)都是一樣的,這一定是不合理的,因為實際應(yīng)用中,可能這個區(qū)域只需要支持10臺主機,而另一個區(qū)域需要支持100臺主機,那么我們此時在劃分子網(wǎng)號和主機號的時候,至少要讓每個子網(wǎng)支持的主機數(shù)大于100臺,那只需要支持10臺主機的區(qū)域分配到了一個子網(wǎng),豈不是至少浪費了其中的90個空間么?面對這樣的問題,我們又該如何解決呢?
(4)可變長度的子網(wǎng)掩碼
上個部分剛說過,路由器在尋找子網(wǎng)號時,是通過我們設(shè)置的子網(wǎng)掩碼來查找的,那么我們不妨根據(jù)不同的需求設(shè)置多個子網(wǎng)掩碼,來達到子網(wǎng)號和主機號分配比例不唯一的需求,這就是VLSM(Variable Length Subnet Mask,可變長度的子網(wǎng)掩碼)的實現(xiàn)
比如,我們上面舉得例子,當(dāng)前站點被分配到了一個B類地址,該站點的某個區(qū)域需要支持100臺主機,那么我們可以給這個區(qū)域分配一個子網(wǎng)號,同時設(shè)置其子網(wǎng)掩碼為 255.255.255.128,其前綴長度為 25,因此留給主機位的位數(shù)還有 位,則該子網(wǎng)支持主機數(shù)為 臺,可以滿足該區(qū)域的需求;再來看另一個區(qū)域,它們需要支持的主機臺數(shù)為10,那么我們可以給該區(qū)域分配另一個子網(wǎng)號,同時設(shè)置子網(wǎng)掩碼為 255.255.255.240,其前綴長度為 28,因此留給主機的位數(shù)還有 位,則該子網(wǎng)支持的主機數(shù)為 臺,同樣可以滿足該區(qū)域的需求。
(5)廣播地址
在每個IPv4的子網(wǎng)中,都會有一個特殊的地址被保留作為子網(wǎng)的廣播地址,那如何獲取它呢?我們只需要將子網(wǎng)掩碼的所有位都取反,即0變1,1變0,然后將取反后的子網(wǎng)掩碼與子網(wǎng)內(nèi)的IP地址進行或運算即可得到廣播地址
仍然延用上面的例子,子網(wǎng)內(nèi)的IP地址為 128.32.1.14,子網(wǎng)掩碼為 255.255.255.0,則比較過程如下圖:
圖中獲得的結(jié)果 128.32.1.255 即為子網(wǎng) 128.32.1.0 中的廣播地址,前面說過,每個子網(wǎng)中的頭尾兩個地址一般是不被使用的,所以該子網(wǎng)中可用的單播地址范圍就是 128.32.1.1 ~ 128.32.1.254
(6)總結(jié)
簡單總結(jié)一下子網(wǎng)掩碼的作用:
?【JS面試題】數(shù)組去重(6種方法)震驚面試官
???建議收藏 | 最全的JavaScript常見的操作數(shù)組的函數(shù)方法寶典
? ?多圖生動詳解瀏覽器與Node環(huán)境下的Event Loop
? ?HTML5新特性drag API 實現(xiàn)拖放功能
? ?ES6新特性實現(xiàn)面向?qū)ο缶幊?#xff0c;詳解class語法定義類
???????END???????
?支持三連
1.看到這里了就點個在看支持下吧,你的「在看」是我創(chuàng)作的動力。
2.關(guān)注公眾號前端印象,「一起交流進步」!
3.關(guān)注公眾號回復(fù)【加群】,拉你進技術(shù)交流群一起玩轉(zhuǎn)前端。
總結(jié)
以上是生活随笔為你收集整理的0分配不到地址_前端学习计算机网络——IP地址的划分及其分类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lombok null字段不显示 继承_
- 下一篇: turtle python tkinte