作者:一天,本文首發(fā)于公眾號(hào):網(wǎng)絡(luò)之路博客
回顧之前
上一篇了解了IP協(xié)議的各個(gè)字段的作用,以及提到了特別重要IP地址,在網(wǎng)絡(luò)世界中作為通信識(shí)別的唯一尋址信息,讓兩臺(tái)終端通信知道如何去跟回,其實(shí)網(wǎng)絡(luò)世界更像我們現(xiàn)實(shí)世界的縮影,很多能在現(xiàn)實(shí)中找到相似的影子,特別在于寄信件的時(shí)候,里面最重要的就是地址信息,這個(gè)能是去往目的地的關(guān)鍵信息,現(xiàn)實(shí)中通過(guò)各個(gè)省份、城市、區(qū)縣、區(qū)域來(lái)定位到具體位置,并且,這個(gè)地址是唯一的,不能出現(xiàn)重復(fù),否則信件就不知道如何發(fā)送了,而在TCP/IP通信的網(wǎng)絡(luò)世界中,為了保證正常通信,也是一樣,需要有一個(gè)唯一并且能夠?qū)ぶ饭δ芏ㄎ坏侥康牡卦谀牡牡刂沸畔?,這就是IP地址,所以每個(gè)設(shè)備都需要正確的IP地址,否則無(wú)法實(shí)現(xiàn)正常的通信,那它在網(wǎng)絡(luò)世界中如何表示的呢?怎么去保證唯一性呢?
?
了解IP地址
1、IP地址的格式
在IP協(xié)議的報(bào)文中,可以得知IP地址是有32個(gè)比特,IP地址在計(jì)算機(jī)中是以二進(jìn)制的方式處理的,如果全部以二進(jìn)制的形式來(lái)表示,使用跟表達(dá)都非常的困難,所以為了人類(lèi)方便記憶,采用了點(diǎn)分十進(jìn)制的方式,將32位的IP地址以8位為一組,分成四個(gè)部分,每組以【.】進(jìn)行隔開(kāi),再將每組轉(zhuǎn)換成十進(jìn)制。
以博主電腦網(wǎng)卡獲取的地址舉例,計(jì)算機(jī)系統(tǒng)處理以二進(jìn)制進(jìn)行,可以看到非常的長(zhǎng),都是0跟1的組合,在使用中很容易出錯(cuò)也非常難記,換成十進(jìn)制后,相對(duì)來(lái)說(shuō)就輕松很多了。并且可以發(fā)現(xiàn)二進(jìn)制里面0跟1的組合不一樣,得到的數(shù)值也不一樣,總共IP地址有多少個(gè)呢?
最大允許差不多43億的終端連接到網(wǎng)絡(luò)里面來(lái),看起來(lái)已經(jīng)非常多了!但是,如今的Internet網(wǎng)中,IP地址是枯竭的狀態(tài),這也是為什么推出了IPV6的原因,可能IP地址的設(shè)計(jì)者也沒(méi)想到,今后的internet網(wǎng)會(huì)這么龐大。
IP地址其實(shí)是由2個(gè)部分組成的,一個(gè)是網(wǎng)絡(luò)號(hào)(網(wǎng)段地址)和主機(jī)號(hào)(主機(jī)地址),這個(gè)兩個(gè)組成很關(guān)鍵,網(wǎng)絡(luò)號(hào)是設(shè)備所在區(qū)域的一種標(biāo)識(shí)區(qū)分,網(wǎng)絡(luò)號(hào)相同的設(shè)備處于同一個(gè)網(wǎng)段內(nèi),網(wǎng)絡(luò)號(hào)不同的設(shè)備處于不同網(wǎng)段,兩個(gè)之間通信需要依賴三層設(shè)備。主機(jī)號(hào)是在同一個(gè)網(wǎng)段中標(biāo)識(shí)不同終端設(shè)備,同一個(gè)網(wǎng)段內(nèi)的終端是不允許出現(xiàn)重復(fù)的主機(jī)號(hào)的,這段很重要,先讀幾次,有個(gè)印象,這對(duì)我們排錯(cuò)跟學(xué)習(xí)都非常有幫助。
舉個(gè)生活中的例子,一個(gè)小區(qū)內(nèi),有多棟樓,每棟樓都有501、601這樣,避免住戶搞混沖突,開(kāi)發(fā)商會(huì)在前面加一個(gè)數(shù)字或者字母來(lái)進(jìn)行區(qū)分每棟樓,比如2501、3601,這樣在找位置的時(shí)候就很容易找到了。隨著時(shí)間久了,可能跟同一棟樓的上下左右鄰里相處的不錯(cuò),經(jīng)常會(huì)相互串門(mén)聊聊天,聚聚餐之類(lèi)的,同一樓層每家獨(dú)立的門(mén)牌號(hào)不會(huì)重復(fù),很容易就找到了。不同樓就相當(dāng)于網(wǎng)絡(luò)號(hào),有不同的標(biāo)識(shí),而同一棟樓的有很多住戶,每個(gè)住戶的門(mén)牌號(hào)都是不一樣的,不會(huì)有重復(fù),這樣就方便定位了。
同樣的,在網(wǎng)絡(luò)中也是一樣,可能我們?cè)L問(wèn)的目的就在一個(gè)區(qū)域,也可能在另外的區(qū)域,那運(yùn)行了TCP/IP協(xié)議的設(shè)備不管是PC、手機(jī)、路由器還是交換機(jī),都得有一個(gè)判斷規(guī)則,來(lái)對(duì)比要去的目的跟自己是不是一個(gè)網(wǎng)絡(luò)區(qū)域,那就是通過(guò)上面的網(wǎng)絡(luò)號(hào)來(lái)進(jìn)行區(qū)分。
以我們最容易接觸到的家用網(wǎng)舉例,每個(gè)人家里都有無(wú)線路由器,可能有的下面接了電腦、手機(jī)、電視、PAD、有的甚至有個(gè)人服務(wù)器/NAS等。像上面的圖,路由器左邊是家庭局域網(wǎng)網(wǎng),比如有三個(gè)終端,地址分別是192.168.255.1、192.168.255.2、192.168.255.240,不管是相互傳文件以及訪問(wèn)個(gè)人的服務(wù)器,直接輸入對(duì)方的地址就可以了,并且還有這樣的情況,就算寬帶接入出現(xiàn)故障,互聯(lián)網(wǎng)訪問(wèn)不到了,但這些局域網(wǎng)之間的互訪是不影響的。
另外可以發(fā)現(xiàn)圖里面有相同的特征,都是192.168.255開(kāi)頭,變化的是最后一位,現(xiàn)在還沒(méi)學(xué)介紹到地址分類(lèi),假設(shè)192.168.255相同的前綴為網(wǎng)絡(luò)號(hào),同一個(gè)網(wǎng)段,而最后一位1、2、240為主機(jī)號(hào),數(shù)字都不是重復(fù)的。
比如這里192.168.255.1訪問(wèn)192.168.255.240,這里192.168.255.1設(shè)備系統(tǒng)通過(guò)自己網(wǎng)卡的參數(shù)讀取到對(duì)應(yīng)的IP信息與目的的IP比較,發(fā)現(xiàn)網(wǎng)絡(luò)號(hào)相同,則在同一個(gè)網(wǎng)段內(nèi),直接發(fā)送給對(duì)方,并且二層封裝目的主機(jī)的MAC地址。
PS:(在同一個(gè)局域網(wǎng)內(nèi)就是上一篇學(xué)習(xí)的二層,通過(guò)MAC封裝,交換機(jī)通過(guò)MAC學(xué)習(xí)到目標(biāo)MAC的接口發(fā)送出去,當(dāng)然這里會(huì)留下個(gè)疑問(wèn),終端之間怎么在會(huì)實(shí)現(xiàn)知道對(duì)方的MAC地址是多少呢,這里還沒(méi)講解ARP協(xié)議,暫時(shí)當(dāng)成它已經(jīng)事先知道了。另外家用路由器有多個(gè)LAN口,其實(shí)這LAN就相當(dāng)于交換機(jī)的工作模式一樣,可以學(xué)習(xí)MAC的功能,自然就能知道某個(gè)設(shè)備在哪個(gè)口)
如圖 192.168.255.1去訪問(wèn)互聯(lián)網(wǎng)上的百度 181.55.6.6, 假設(shè)對(duì)比前三段,終端判斷目的與自己的網(wǎng)絡(luò)號(hào)不一致,那么它該怎么處理呢?
如果終端判斷目的與自己的網(wǎng)絡(luò)號(hào)不一致就會(huì)丟給網(wǎng)關(guān)處理,比如圖上面丟給192.168.255.254(家用路由器的網(wǎng)關(guān)),家用路由器通過(guò)查詢路由表中的網(wǎng)絡(luò)號(hào),查詢交給Internet的網(wǎng)關(guān),最終Internet中的路由器也通過(guò)查詢網(wǎng)絡(luò)號(hào)來(lái)層層傳遞,最終抵達(dá)目的地。
通過(guò)這個(gè)分析,可以得到這些有用的知識(shí)點(diǎn)總結(jié)。
- IP地址的網(wǎng)絡(luò)號(hào)用于區(qū)分源目IP是否在同一個(gè)網(wǎng)段還是不同網(wǎng)段,主機(jī)號(hào)用于標(biāo)識(shí)同一個(gè)網(wǎng)段內(nèi)的不同終端,并且不能重復(fù),比如192.168.255(網(wǎng)絡(luò)號(hào)),主機(jī)號(hào)可以是1、2、3 …..等
- 設(shè)備終端,比如PC、手機(jī)、平板運(yùn)行了TCP/IP協(xié)議的,它都有判斷的功能,如果目的IP與我網(wǎng)絡(luò)號(hào)相同,判斷在一個(gè)網(wǎng)段內(nèi),直接在同一個(gè)區(qū)域內(nèi)完成通信;如果網(wǎng)絡(luò)號(hào)不同,則判斷為不同網(wǎng)段,這個(gè)時(shí)候直接交給網(wǎng)關(guān)處理,如果沒(méi)有網(wǎng)關(guān)信息,則通信失敗,數(shù)據(jù)包發(fā)送不出。
- 路由器這些三層設(shè)備在處理轉(zhuǎn)發(fā)這個(gè)數(shù)據(jù)包的時(shí)候,查詢路由表根據(jù)目的IP的網(wǎng)絡(luò)號(hào)進(jìn)行查詢轉(zhuǎn)發(fā),這樣的好處是能夠提高效率,不用具體到主機(jī)位,否則Internet這么龐大的網(wǎng)絡(luò),每個(gè)網(wǎng)路設(shè)備都存放在路由表中,對(duì)設(shè)備的壓力以及查詢的效率就非常低了。
- 終端設(shè)備訪問(wèn)不同網(wǎng)段依靠的是網(wǎng)關(guān),而路由器等三層設(shè)備轉(zhuǎn)發(fā)數(shù)據(jù)包去往不同目的地依靠的是路由表中的條目。
- 這些“規(guī)則”一定要有一個(gè)認(rèn)知,后續(xù)在學(xué)習(xí)路由交換的時(shí)候非常有用,甚至排錯(cuò)的時(shí)候,比如某個(gè)設(shè)備上不了網(wǎng),那我們知道了上網(wǎng)是得有網(wǎng)關(guān)的,是不是就先檢查網(wǎng)關(guān)設(shè)置了嗎,設(shè)置的對(duì)嗎。當(dāng)然這些會(huì)在后續(xù)中反復(fù)提到,數(shù)據(jù)包的通信離不開(kāi)這些“規(guī)則”。
明白了網(wǎng)絡(luò)號(hào)與主機(jī)號(hào)的概念,那在IP地址中,哪幾位是網(wǎng)絡(luò)號(hào)?哪幾位是主機(jī)號(hào)呢?下面就來(lái)了解下地址分類(lèi)以及子網(wǎng)掩碼的概念。
2、IP地址分類(lèi)
在internet誕生初期,IP地址是非常充裕的,計(jì)算機(jī)科學(xué)家們進(jìn)行了分類(lèi)地址,把IP地址分為了5大類(lèi),分別是A類(lèi)、B類(lèi)、C類(lèi)、D類(lèi)、E類(lèi)。
早期沿用的是地址分類(lèi)的方法,A、B、C作為全局可用唯一地址進(jìn)行分配,每個(gè)列別定義了網(wǎng)絡(luò)號(hào)以及主機(jī)號(hào)的范圍大小,由于這種方式早就不在使用,只有考試以及很多書(shū)籍還在介紹,所以這里就簡(jiǎn)單介紹下。
(1)A類(lèi)地址
A類(lèi)IP地址以首位為“0”開(kāi)頭,前面8位是網(wǎng)絡(luò)號(hào),網(wǎng)絡(luò)號(hào)范圍是0~127(0和127屬于保留地址)。
算下來(lái)就2^(8-1)-2=126,其中8位中最開(kāi)始0是固定的,所以只有7個(gè)可以變化,0與127是保留需要-2,最終有126個(gè)網(wǎng)段。
后24位是主機(jī)號(hào),表示可容納的終端數(shù)量,2^24次方=16777216個(gè)地址。
(2)B類(lèi)地址
B類(lèi)IP地址前兩位以“10”固定開(kāi)頭,1~16位為網(wǎng)絡(luò)號(hào),網(wǎng)絡(luò)號(hào)的范圍128.0~191.255,其中169.254為保留地址,算下來(lái)2^(16-2)-1,有16383個(gè)可用網(wǎng)段。
后16位主機(jī)號(hào),表示可容納的終端數(shù)量,2^16次方=65536個(gè)地址。
(3)C類(lèi)地址
C類(lèi)IP地址前三位“110”固定,從1~24位為它的網(wǎng)絡(luò)號(hào),范圍是192.0.0~223.255.255.255,其中192.0.0屬于保留地址,所以有2^(24-3)-1=2097151
后8位是主機(jī)號(hào),標(biāo)識(shí)可容納的終端數(shù)量,2^8=256個(gè)地址。
(4)D與E類(lèi)地址
D類(lèi)IP比較特殊,它屬于組播地址,不區(qū)分網(wǎng)絡(luò)號(hào)與主機(jī)號(hào),用于各種協(xié)議中以及某些特殊場(chǎng)景,后續(xù)會(huì)慢慢熟悉,范圍是224.0.0.0~239.255.255.255。而E類(lèi)屬于科研方面等方面,不用于互聯(lián)網(wǎng)使用。
(5)了解網(wǎng)段地址、網(wǎng)段廣播地址、以及單播地址
當(dāng)主機(jī)號(hào)全為0時(shí),表示某個(gè)網(wǎng)段,叫做網(wǎng)段地址,比如192.168.255.0,表示192.168.255.1到192.168.255.254所有地址,這也是以后在項(xiàng)目中經(jīng)常遇到的表示方法,用于表示某個(gè)網(wǎng)段。
當(dāng)主機(jī)號(hào)全為1時(shí),它表示的網(wǎng)段廣播地址,發(fā)往這個(gè)地址的數(shù)據(jù)包,該網(wǎng)段內(nèi)所有主機(jī)都能收到,比如:網(wǎng)段192.168.255.0,廣播地址是192.168.255.255。
所以,在每個(gè)網(wǎng)段中,主機(jī)號(hào)全0的網(wǎng)段地址以及主機(jī)號(hào)全1的廣播地址是不能被使用,每個(gè)網(wǎng)段實(shí)際可用的地址是對(duì)應(yīng)的地址數(shù)-2。
那什么是單播地址呢?每個(gè)網(wǎng)段內(nèi)除去網(wǎng)段地址以及網(wǎng)段廣播地址以外,剩下的就是單播地址,單播地址也就我們終端PC、手機(jī)以及網(wǎng)絡(luò)設(shè)備路由器、交換機(jī)設(shè)備上使用的地址了,通信雙方就一個(gè)發(fā)送方與接收方,而廣播則是一個(gè)發(fā)送方,其余同網(wǎng)段的主機(jī)都為接收方,但是不會(huì)發(fā)往其他網(wǎng)段,中間三層設(shè)備會(huì)隔離廣播,不會(huì)進(jìn)行轉(zhuǎn)發(fā)。
(6)二進(jìn)制與十進(jìn)制轉(zhuǎn)換
上面介紹了一大堆地址范圍,可能很多朋友有點(diǎn)犯迷糊,怎么就計(jì)算出這么多的網(wǎng)段跟主機(jī)了,首先,要明白二進(jìn)制與十進(jìn)制的換算。
二進(jìn)制到十進(jìn)制的換算,可以參考上面表格,也可以借助計(jì)算器,采用程序員的模式,輸入對(duì)應(yīng)的數(shù)值即可,其中BIN表示二進(jìn)制,DEC表示十進(jìn)制,HEX表示十六進(jìn)制。
按照上面的表格,把每一段“置1”的數(shù)值相加就得了每一段的十進(jìn)制,最終就是192.168.255.4,這個(gè)是C類(lèi)地址,因?yàn)榫W(wǎng)絡(luò)號(hào)前三位固定為110,同樣的A與B類(lèi)的地址,都有前面固定的值,范圍都不一樣,只要知道了固定值的位置,然后就可以計(jì)算出每個(gè)類(lèi)的范圍。
(7)IP地址分類(lèi)的好處
- 判斷方便,網(wǎng)絡(luò)設(shè)備需要解析一個(gè)IP地址的時(shí)候,只需要判斷網(wǎng)絡(luò)位的前四位就可以知道是網(wǎng)絡(luò)號(hào)與主機(jī)地址的范圍。
這樣的地址分類(lèi)好處就是簡(jiǎn)單、選路查詢方便,減輕中間設(shè)備的壓力,但是也帶來(lái)了很多的問(wèn)題,也是導(dǎo)致這種分類(lèi)在如今的環(huán)境下無(wú)法使用的原因。
問(wèn)題一:靈活性
一個(gè)企業(yè)可能根據(jù)需求以及區(qū)域不同會(huì)劃分成辦公區(qū)、生產(chǎn)區(qū)、會(huì)議區(qū)等,而IP分類(lèi)是沒(méi)有這種區(qū)域?qū)哟蔚膭澐止δ艿?,缺少靈活性。
問(wèn)題二:與現(xiàn)實(shí)網(wǎng)絡(luò)不匹配
從上面的分類(lèi)的網(wǎng)段以及每個(gè)可以容納的終端數(shù)來(lái)看,A、B、C中間差距太明顯,比如一個(gè)C類(lèi)的網(wǎng)段可以容納254個(gè)主機(jī),一個(gè)小型辦公環(huán)境可能夠用了,稍微有點(diǎn)規(guī)模的就顯得不夠,而一個(gè)B類(lèi)地址對(duì)應(yīng)一個(gè)企業(yè)來(lái)說(shuō)又達(dá)不到這樣大的規(guī)模,很多地址就浪費(fèi)了,注意,公網(wǎng)地址是要花錢(qián)購(gòu)買(mǎi)的,并不是免費(fèi)使用的。
問(wèn)題三:安全性問(wèn)題
比如A公司與B公司是是同行競(jìng)爭(zhēng)關(guān)系,同時(shí)向運(yùn)營(yíng)商購(gòu)買(mǎi)了自己需要數(shù)量的IP地址,有一天,A公司的技術(shù)發(fā)現(xiàn)它竟然能看到B公司的數(shù)據(jù)包?原因就是運(yùn)營(yíng)商給它們分配的都是C類(lèi)同一個(gè)網(wǎng)段,比如給A公司分配的是202.100.1.1到202.100.1.50,B公司分配的是202.100.1.101到202.100.1.180,通過(guò)地址分類(lèi),202.100.1.0屬于C類(lèi),而且是同一個(gè)網(wǎng)段,那么數(shù)據(jù)通信A與B之間其實(shí)是可以直接通信的,有可能B的數(shù)據(jù)發(fā)送了廣播報(bào)文的,導(dǎo)致A收到了,同樣A發(fā)送的某些數(shù)據(jù)包,B也收到了,對(duì)于這樣的場(chǎng)景,可能客戶為了安全性就會(huì)選擇去其他運(yùn)營(yíng)商購(gòu)買(mǎi),并且要求獨(dú)立的網(wǎng)段,這問(wèn)題對(duì)于運(yùn)營(yíng)商來(lái)說(shuō)就頭疼了,一個(gè)C內(nèi)網(wǎng)段最少也有254個(gè)地址,一個(gè)公司有又不需要購(gòu)買(mǎi)這么多,一部分給A,一個(gè)部分給B呢,又說(shuō)不安全,空著吧,又浪費(fèi)了。
問(wèn)題四:地址浪費(fèi)
其實(shí)從上面的三個(gè)問(wèn)題中都可以看出來(lái),地址的分類(lèi)根本無(wú)法根據(jù)不同的場(chǎng)景需求來(lái)定制需要的,不是一個(gè)網(wǎng)段多了,就是少了,怎么都會(huì)造成地址浪
費(fèi)空閑的,并且在劃分的時(shí)候,很多A類(lèi)地址就被美國(guó)的公司或者運(yùn)營(yíng)商占據(jù)了,像我們中國(guó)作為全球第一的人口龐大的國(guó)家,都沒(méi)有一個(gè)”完整”的A類(lèi)地址。而一個(gè)A類(lèi)想想上千萬(wàn)個(gè)地址,一個(gè)公司怎么可能用得了這么多,剩下的就白白的浪費(fèi)了。
重點(diǎn)回顧
- IP地址采用點(diǎn)分十進(jìn)制表示,分為四個(gè)部分。
- IP地址由網(wǎng)絡(luò)號(hào)與主機(jī)號(hào)組成,網(wǎng)絡(luò)號(hào)表示具體的某一個(gè)網(wǎng)段,同一個(gè)網(wǎng)段內(nèi)的主機(jī)可以直接通信,不同網(wǎng)段的主機(jī)互訪則交給網(wǎng)關(guān)處理,是否在于同一個(gè)網(wǎng)段的判斷依據(jù)就是依賴網(wǎng)絡(luò)號(hào)。主機(jī)號(hào)表示這個(gè)網(wǎng)段內(nèi)的終端數(shù)量,每個(gè)地址都不能相同。
- 路由器等三層設(shè)備在處理數(shù)據(jù)包轉(zhuǎn)發(fā)的時(shí)候,也是通過(guò)網(wǎng)絡(luò)號(hào)進(jìn)行查詢轉(zhuǎn)發(fā),這樣效率更高,對(duì)設(shè)備壓力更小。
- 每個(gè)網(wǎng)段都存在一個(gè)網(wǎng)段廣播地址,一個(gè)網(wǎng)段地址,這兩個(gè)地址是不能被使用的,其中網(wǎng)段地址表示某個(gè)整體網(wǎng)段,而網(wǎng)段廣播地址是指,發(fā)往該地址的數(shù)據(jù)包,該網(wǎng)段內(nèi)所有主機(jī)能收到,就像廣播一樣,但是只能在該網(wǎng)段內(nèi)廣播,穿越不了路由器,也可以理解路由器天生隔離廣播。
- IP地址早期采用分類(lèi)地址,分為了A、B、C、D、E 五大類(lèi),其中在后續(xù)經(jīng)常會(huì)接觸到的有A、B、C三類(lèi),分類(lèi)的好處就是規(guī)劃了網(wǎng)絡(luò)號(hào)與主機(jī)號(hào)的范圍,并且為不同場(chǎng)景規(guī)模的環(huán)境提供了不同的網(wǎng)段數(shù)量以及主機(jī)數(shù)量。網(wǎng)關(guān)以及互聯(lián)網(wǎng)設(shè)備在轉(zhuǎn)發(fā)數(shù)據(jù)查詢的時(shí)候也很容易進(jìn)行判斷。
- 分類(lèi)地址的方法存在很多弊端,最大的弊端就是地址的浪費(fèi),導(dǎo)致IPV4地址枯竭的重大原因。
參考文獻(xiàn)
[1]圖解網(wǎng)絡(luò)-小林coding-第三版
[2]計(jì)算機(jī)網(wǎng)絡(luò)--自頂向下(第七版)
“承上啟下”
竟然分類(lèi)地址存在這么多的問(wèn)題,勢(shì)必需要一種更好的分類(lèi)劃分的方法來(lái)避免地址的浪費(fèi),以及可以靈活的進(jìn)行劃分,這樣才能滿足internet快速壯大的規(guī)模跟發(fā)展的需求,這種方法就是下一篇要講的子網(wǎng)掩碼、VLSM、CIRD、私網(wǎng)地址。
作者:一天,本文首發(fā)于公眾號(hào):網(wǎng)絡(luò)之路博客