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