[轉,講的非常精彩]CIDR地址塊及其子網划分(內含原始IP地址分類及其子網划分的介紹)


http://blog.csdn.net/dan15188387481/article/details/49873923

 

CIDR地址塊及其子網划分(內含原始IP地址分類及其子網划分的介紹)

 

1. 原始的IP地址表示方法及其分類(近幾年慢慢淘汰)

 
    IP地址是由4字節,32位表示的,為了表示方便,通常用點分十進制表示法,例如大家常見的:192.168.0.52,四個字節,通過點進行分隔,看起來十分清晰。IP地址的32位是由網絡號+主機號組成的,也就是說這32位中,左邊的某些連續位表示網絡號,右邊的某些連續位表示主機號,那么我們平常在討論這一系列問題的時候,會有一個“網絡地址”的概念,一般來說網絡地址並不等於IP地址,網絡地址就是IP地址中的網絡號,然后主機號全部取0。IP地址可以表示為:
 
    IP地址 ::= {<網絡號>, <主機號>},將主機號置0,就可以得到網絡地址。
 
    最初的IP地址是被划分為5類,不過大家經常見到和談到的只有3類,即A類、B類、C類,如圖1所示:
 
圖1 IP地址的分類
 
    從圖1中可以看到基本的划分,由於本篇文章主要講CIDR,所以對於IP地址最初的分類表示法就不過多講述,在CIDR中已經廢棄了IP地址的分類,無分類編址的命名也是由此得來的,所以目前基本已經不再采用所謂的A類、B類、C類的IP地址分類表示法,不過作為比較經典的過去使用的方法,大家了解一下即可。圖1中表示得十分清楚,大家從左邊看起,搞明白每一類地址的前綴、網絡地址、主機地址的位數即可,通過這個位數,大家可以計算出每類網絡的可支配網絡數以及可連接主機數,對相應的位數求2的冪即可。
 
 
圖2 IP地址的指派范圍和一般不使用的IP地址
 
    從圖2中,我們可以清晰地看出來每類網絡所指派的網絡數和主機數,以及哪些地址一般不使用,這里需要注意一點,就是最大可指派網絡數中會減掉2或者1,其實后面的最大主機數大家計算一下會發現都減去了2,這是為什么呢?這是因為A類的前綴是0,所以網絡號加上前綴的8位可以出現全0的情況,而且127(01111111)作為環回地址用來測試,所以不指派,故而需要減去2,B類和C類的前綴分別是10和110,所以網絡號加上前綴不可能出現全0的情況,不過B類的128.0.0.0和C類的192.0.0.0也是不指派的,所以B類和C類只需要減去這一個不指派的網絡地址即可。那么主機數為什么都減去2呢?這是因為主機號分別為全0和全1的情況一般是不分配的,這兩個特殊的地址有特殊的用途,所以要減去2。
 
    關於分類的IP地址就介紹到這里,還要強調一下,目前已經不采用分類表示法,所以大家重點關注CIDR表示法。
 

2. 基本的子網划分方法

 
    在講述CIDR之前我們先來簡單介紹一下基本的子網划分方法。
 
    上面所述的IP地址表示方法可以稱之為兩級IP地址,即網絡號和主機號組成的IP地址。但是由於IP地址空間的利用率有時很低、給每一個物理網絡分配一個網絡號會使路由表變得太大以及兩級IP地址不夠靈活等原因,就出現了所謂的子網划分。子網划分實際上就是將原來的兩級IP地址轉變為三級IP地址,表示如下:
 
    IP地址 ::= {<網絡號>, <子網號>, <主機號>}
 
    從上面的表示可以看出,子網划分就是在32位中借了幾位用來表示子網號,注意,這里的網絡號的位數是不變的,子網號是從主機號中借走的,所以大家想一想就可以明白,子網划分實際上就是減少了主機數,分配到不同的子網,每個子網包含一定的主機數。子網的概念也就可以理解為,將一個大的網絡在其內部划分成幾個小的子網,但是需要注意的是,對於該網絡的外層來看,還是一個大的網絡,只有該網絡內部才可以看到其進行了子網划分。例如:某個機構給某高校分配了一個大的網絡,而該高校內部又進行了子網划分,將不同的子網分配給不同的學院,此時對於該機構來說,該高校還是一個大的網絡,在其看來並沒有變化,只有該高校自己才知道自己內部又進行了子網划分。
 
    子網划分中有一個十分重要的概念就是子網掩碼。  那么什么是子網掩碼呢?大家想一想,在傳輸的過程中,路由器是怎么識別子網划分后的IP地址中的網絡地址的?如果不提供任何信息,路由器肯定還是傻傻分不清楚,所以就出現了子網掩碼。子網掩碼其實很簡單,就是將網絡號和子網號對應的位全部置1,將主機號對應的位置0,就得到了子網掩碼。例如:一個IP地址是145.13.3.10,其是B類地址,假如我們用8位來表示子網號,那么網絡號加上子網號一共24位,所以將這24位置1,其余置0,那么子網掩碼就是255.255.255.0。緊接着,我們可以看出來,用子網掩碼和IP地址逐位進行“與”運算,就可以得到網絡地址,所以該IP地址的網絡地址就是145.13.3.0,下面我從《計算機網絡第5版》謝希仁編著的書中摘取了兩個例子,幫助大家理解。
 
圖3 子網划分的例題
 
    從上面的例子中可以看出子網掩碼的使用和計算,這兩個例子也說明了同樣的IP地址和不同的子網掩碼可以得出相同的網絡地址。但是不同的掩碼效果是不同的,因為它們的子網號和主機號的位數是不一樣的,從而可划分的子網數和每個子網中的最大主機數都是不一樣的。
 
    最后,我們需要注意的是,在之前基本的子網划分中,借走主機號兩位,只能划分4-2=2個子網,這是因為全0和全1不使用,一般至少借走兩位,其他位數的划分是一樣的,都需要減去2,但是CIDR表示法中的子網划分就不用減2,因為其也使用全0和全1。
 

3. CIDR概述及其地址塊計算


    CIDR中文全稱是無分類域間路由選擇,英文全稱是Classless Inter-Domain Routing,在平常,大家多稱之為無分類編址,它也是構成超網的一種技術實現。CIDR在一定程度上解決了路由表項目過多過大的問題。CIDR之所以稱為無分類編址,就是因為CIDR完全放棄了之前的分類IP地址表示法,它真正消除了傳統的A類、B類、C類地址以及划分子網的概念,它使用如下的IP地址表示法:
 
    IP地址 ::= {<網絡前綴>, <主機號>} / 網絡前綴所占位數
 
    CIDR僅將IP地址划分為網絡前綴和主機號兩個部分,可以說又回到了二級IP地址的表示,不過大家要注意,最后面用“/”斜線分隔,在其后寫上了網絡前綴所占的位數,這樣就不需要告知路由器地址掩碼,僅需要通過網絡前綴所占的位數就可以得到地址掩碼,為了統一,CIDR中的地址掩碼依然稱為子網掩碼。
 
    CIDR表示法給出任何一個IP地址,就相當於給出了一個CIDR地址塊,這是由連續的IP地址組成的,所以CIDR表示法構成了超網,實現了路由聚合,即從一個IP地址就可以得知一個CIDR地址塊。例如:已知一個IP地址是:128.14.35.7/20,那么這個已知條件告訴大家的並不僅僅是一個IP地址這么簡單,我們來分析一下。
 
    128.14.35.7/20 =  10000000  00001110  00100011  00000111
 
    即前20位是網絡前綴,后12位是主機號,那么我們通過令主機號分別為全0和全1就可以得到一個CIDR地址塊的最小地址和最大地址,即
 
    最小地址是:128.14.32.0      =  10000000  00001110  00100000  00000000 
    最大地址是:128.14.47.255  =  10000000  00001110  00101111 11111111     
    子網掩碼是:255.255.240.0  =  11111111  11111111  11110000  00000000 
 
    因此就可以看出來,這個CIDR地址塊可以指派(47-32+1)*256=4096個地址,這里沒有把全0和全1除外。
 

4. CIDR子網划分

 
    在CIDR表示法中也可以進行進一步的子網划分,和前面的子網划分類似,我們只需要從主機號中借走一定的位數即可,這里與前面的基本子網划分不同,借走2位時可以划分成4個子網,不用減2,其他位數類似。下面通過一個例子來講解CIDR中的子網划分。
 
     例:某個機構擁有一個大的CIDR地址塊,即206.0.64.0/18,現在某個高校需要申請一個較大的CIDR地址塊以供學校使用,學校內部又分為4個系,由於每個系的人數不一樣,所以要給人數較多的系分配較多的IP地址,人數較少的系分配較少的IP地址,現在采用以下的分配方案:
 
    機構分配給該高校一個CIDR地址塊:206.0.68.0/22,然后該高校內部的分配方案如下:
 
    一系:206.0.68.0/23,一系內部又分為206.0.68.0/25、206.0.68.128/25、206.0.69.0/25和206.0.69.128/25四個子網。
    二系:206.0.70.0/24,二系內部又分為206.0.70.0/26、206.0.70.64/26、206.0.70.128/26和206.0.70.192/26四個子網。
    三系:206.0.71.0/25,三系內部又分為206.0.71.0/26和206.0.71.64/26兩個子網。
    四系:206.0.71.128/25,四系內部又分為206.0.71.128/26和206.0.71.192/26兩個子網。
 
    請分析以上方案划分的具體細節。
 
    答:這是一個CIDR子網划分中比較復雜的例子,如果大家能分析透徹這個例子,那么對於CIDR的子網划分的計算就基本不在話下了。
 
    我們一步一步來討論:
 
    第一,這個機構擁有的地址塊是206.0.64.0/18 =206.0. 0100 0000. 0000 0000/18,網絡前綴是18位,所以其
 
    最小地址是:206.0.64.0/18       = 206.0. 0100 0000.0000 0000/18
    最大地址是:206.0.127.255/18 = 206.0. 0111 1111.1111 1111/18
    子網掩碼是:255.255.192.0/18 =  1111 1111.1111 1111.1100 0000.0000 0000/18
    擁有的地址數:(127-64+1)*(255-0+1)=16384
 
    然后,我們來看一下這個機構給該高校分配的CIDR地址塊,即206.0.68.0/22,由此可以看出來網絡前綴由18增加到了22,所以該機構相當於將其CIDR地址塊划分成了16個子塊即子網,然后給該高校了第二個子網,即 206.0.0100 0100.0/22,黑色加粗的部分是原來的網絡前綴,后面紅色部分類似於前面介紹的子網號,由於是4位,所以可以從0000~1111,共16個子網,0001自然就是第二個子網。
 
    第二,既然高校擁有了機構的第二個子網的CIDR地址塊206.0.68.0/22 =  206.0.0100 0100.0/22,其網絡前綴是22位,所以其
 
    最小地址是:206.0.68.0/22       = 206.0. 0100 0100.0000 0000/22
    最大地址是:206.0.71.255/22   = 206.0. 0100 0111.1111 1111/22
    子網掩碼是:255.255.252.0/22 =  1111 1111.1111 1111.1111 1100.0000 0000/22
    擁有的地址數:(71-68+1)*(255-0+1)=1024
    然后該高校內部又對這個CIDR地址塊進行了划分,進一步得到了高校內部的子網,緊接着我們來看看一系的CIDR地址塊是怎么得到的。
 
    第三,一系的CIDR地址塊是206.0.68.0/23,可以看出來其網絡前綴相對於高校的CIDR地址塊來說增加了1位,說明高校首先將其CIDR地址塊划分成了2個子網,其中一個給了一系。那么這兩個子網分別是: 一系的: 206.0.68.0/23 = 206.0.0100 0100.0/23剩余的(記為余1):206.0.70.0/23 =206.0.0100 0110.0/23,注意其中的紅色部分就是新增的這一位,用來標志兩個子網。
 
    那么,一系的
    最小地址是:206.0.68.0/23       = 206.0. 0100 0100.0000 0000/23
    最大地址是:206.0.69.255/23   = 206.0. 0100 0101.1111 1111/23
    子網掩碼是:255.255.254.0/23 =  1111 1111.1111 1111.1111 1110.0000 0000/23
    擁有的地址數:(69-68+1)*(255-0+1)=512
 
    余1的
    最小地址是:206.0.70.0/23       = 206.0. 0100 0110.0000 0000/23
    最大地址是:206.0.71.255/23   = 206.0. 0100 0111.1111 1111/23
    子網掩碼是:255.255.254.0/23 =  1111 1111.1111 1111.1111 1110.0000 0000/23
    擁有的地址數:(71-70+1)*(255-0+1)=512
    現在,一系的CIDR地址塊已經很明確,然后一系內部又進行了划分,即又分為206.0.68.0/25、206.0.68.128/25、206.0.69.0/25和206.0.69.128/25四個子網,網絡前綴從23位變成了25位,相當於占用了主機號兩位,所以可以划分為4個子網,分別對應00、01、10、11這四個子網,這四個子網的最小地址、最大地址以及子網掩碼和擁有的地址數按照上述的方法就可以得到,這個比較簡單,建議大家可以自己手動計算一下,正好看看自己掌握了多少,這里就不再給出這四個子網的細節。
 
    第四,一系明確以后,就要考慮其他系的划分,可以看到二系分配到的CIDR地址塊是206.0.70.0/24,可以看出來其網絡前綴相對於余1的CIDR地址塊來說增加了1位,說明余1的CIDR地址塊被划分成了2個子網,其中一個給了二系。那么這兩個子網分別是: 二系的:206.0.70.0/24 = 206.0.0100 0110.0/24剩余的(記為余2): 206.0.71.0/24 =206.0.0100 0111.0/24,注意其中的紅色部分就是新增的這一位,用來標志兩個子網。
 
    那么,二系的
    最小地址是:206.0.70.0/24       = 206.0. 0100 0100.0000 0000/24
    最大地址是:206.0.70.255/24   = 206.0. 0100 0100.1111 1111/24
    子網掩碼是:255.255.255.0/24 =  1111 1111.1111 1111.1111 1111.0000 0000/24
    擁有的地址數:(70-70+1)*(255-0+1)=256
 
    余2的
    最小地址是:206.0.71.0/24       = 206.0. 0100 0111.0000 0000/24
    最大地址是:206.0.71.255/24   = 206.0. 0100 0111.1111 1111/24
    子網掩碼是:255.255.255.0/24 =  1111 1111.1111 1111.1111 1111.0000 0000/24
    擁有的地址數:(70-70+1)*(255-0+1)=256
    現在,二系的CIDR地址塊已經很明確,然后二系內部又進行了划分,即又分為206.0.70.0/26、206.0.70.64/26、206.0.70.128/26和206.0.70.192/26四個子網,網絡前綴從24位變成了26位,相當於占用了主機號兩位,所以可以划分為4個子網,分別對應00、01、10、11這四個子網,這四個子網的最小地址、最大地址以及子網掩碼和擁有的地址數按照上述的方法就可以得到,這個比較簡單,建議大家可以自己手動計算一下,正好看看自己掌握了多少,這里就不再給出這四個子網的細節。
 
    第五,二系明確以后,就要考慮其他系的划分,可以看到三系分配到的CIDR地址塊是206.0.71.0/25,而四系分配到的CIDR地址塊是206.0.71.128/25,可以看出來其網絡前綴相對於余2的CIDR地址塊來說增加了1位,說明余2的CIDR地址塊被划分成了2個子網,其中一個給了三系,另外一個給了四系。那么這兩個子網分別是: 三系的:206.0.71.0/25 = 206.0.71.0000 0000/25四系的:206.0.71.128/25 = 206.0.71.1000 0000/25,注意其中的紅色部分就是新增的這一位,用來標志兩個子網。
 
    那么,三系的
    最小地址是:206.0.71.0/25       = 206.0. 0100 0100.0000 0000/25
    最大地址是:206.0.71.127/25   = 206.0. 0100 0100.0111 1111/25
    子網掩碼是:255.255.255.128/25 =  1111 1111.1111 1111.1111 1111.1000 0000/25
    擁有的地址數:(71-71+1)*(127-0+1)=128
 
 
    
    四系的
    最小地址是:206.0.71.128/25   = 206.0. 0100 0100.1000 0000/25
    最大地址是:206.0.71.255/25   = 206.0. 0100 0100.1111 1111/25
    子網掩碼是:255.255.255.128/25 =  1111 1111.1111 1111.1111 1111.1000 0000/25
    擁有的地址數:(71-71+1)*(255-128+1)=128
 
    現在,三系和四系的CIDR地址塊已經很明確,到目前為止,該高校已經將所有的CIDR地址塊分配給了四個系,一系有512個地址,二系有256個地址,三系和四系各有128個地址。然后三系內部又進行了划分,即又分為206.0.71.0/26和206.0.71.64/26兩個子網,網絡前綴從25位變成了26位,相當於占用了主機號一位,所以可以划分為2個子網,分別對應0、1這兩個子網,同時,四系內部也又進行了划分,即又分為206.0.71.128/26和206.0.71.192/26兩個子網,網絡前綴從25位變成了26位,相當於占用了主機號一位,所以可以划分為2個子網,分別對應0、1這兩個子網,三系和四系各自的兩個子網的最小地址、最大地址以及子網掩碼和擁有的地址數按照上述的方法就可以得到,這個比較簡單,建議大家可以自己手動計算一下,正好看看自己掌握了多少,這里就不再給出這些子網的細節。
 
    至此,我們已經分析完了本題,上面都是我一位位自己敲上去的,所以大家看完后想要穩固掌握的話建議自己也計算一遍,如果發現我有錯誤,歡迎大家指正。
 
    最后,我用一副圖來展示下這個划分過程。
 
圖4 上述例題的圖解
 

5. 總結

 
    總之,目前已經廣泛使用CIDR表示法,之前的分類方法和子網划分已經很少使用,所以大家要重點掌握CIDR表示法及其子網划分,了解以前的基本分類和划分方法即可。    
 
    上述內容都是本人一個字一個字敲上去的,那些粗體和紅色的標注也是我細心注釋的,圖4是我按照分析的流程一步步畫的,轉載請注明出處,歡迎大家指正,謝謝。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM