I P地址


二進位和邏輯運算

在我們認識IP地址之前﹐我想我們很有必要認識兩個概念﹕二進位邏輯運算。雖然我也知道這兩個東東都不好理解﹐但如果不知道它們的工作原理﹐那麼以後我們在討論IP地址和子網的時候﹐您就要靠死記了。不過一旦你知道了其原理﹐那麼您在任何的IP網路中都不至於迷失﹐所謂“萬變不離其宗”是也。

二進位 (Binary)

為什麼我們要學二進位﹖哎呀﹐還不是該死的蠢電腦嘛﹕它只懂得0和1﹐那麼我們要和電腦溝通的時候﹐也只好裝蠢一些才行。當電腦要處理IP運算的時候﹐最終是以二進位的形式進行的。

我們人類最習慣的運算規則是十進位﹐也就是從0到9為一圈﹐回到零的時候就進一位數﹔而我們前面討論的bit和byte則是八進位﹐即0到7為一圈﹐回到零就進一位數﹔另外還有十六進位﹐由0到15為一圈﹐回到零進一位﹐但使用數字15很容易和十進位混亂﹐所以在十六進位裡面﹐從10到15之間分別用英文字母A到F代替了﹐所以我們通常看到的十六進位是從0到F的排列。

好了﹐認識了上面這幾種運算規則﹐相信理解二進位也不難﹐道理是一樣的﹕從0到1為一圈﹐回到0進一。那麼我們看看十七個連續遞增的十進位、二進位、和十六進位數字之間的比較﹐將會是這樣的﹕

十進位 二進位 十六進位
0 0 0
1 1 1
2 10 2
3 11 3
4 100 4
5 101 5
6 110 6
7 111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F
16 10000 10

如果您想進行二進位和十進位的換算﹐在列表中找到相應的數字是最簡單的方法﹐但正如您剛才所見﹐光十六個數字已經有這麼長的列表了﹐如果要找成千上百個數字可不是件容易的事情。不過﹐我們在IP地址上面看到的十進位數字最大不會超過255這個數值。我們可以先將2的0到7次方列出來﹕

27 26 25 24 23 22 21 20
128 64 32 16 8 4 2 1

當我們要將十進位換成二進位的時候﹐我們只要找到找到該數字對應的欄位(方法是找到兩個數值相若的欄位﹐而取其右)﹐在相對的欄位填上1﹐然後﹐用余數繼續尋找下一欄位﹐再填1﹐直到再沒余數為止﹐最後把其它欄位都填上0就可以了。

例如﹕我們要換算220這個十進位數字到二進位﹕

我們找到128這欄位是最合適的﹐(因為128的左邊是256﹐而220 界乎它們之間﹐取其右則為 128 )。那麼我們在128這欄位上面填上1﹐
繼續余數92﹕我們找到64這欄位是最合適的﹐那麼在64這個欄位也填上1﹐
繼續余數28﹕我們找到16這欄位是最合適的﹐那麼在16這個欄位也填上1﹐
繼續余數12﹕我們找到8這欄位是最合適的﹐那麼在8這個欄位也填上1﹐
繼續余數4﹕我們找到4這欄位剛好對應﹐這是最好找到情形了。那麼在4這個欄位也填上1﹐
因為再沒有余數了﹐其它都填上0就對了。

其結果如下﹕
128 64 32 16 8 4 2 1
1 1 0 1 1 1 0 0

如果我們要將二進位換算成十進位﹐利用上面的欄目來做就更加簡單了﹕只要將二進位數字從右往左的順序依次填入欄位﹐那麼﹐將凡是被1所對應的數字相加﹐得出來的和就是十進位數字了。

當然啦﹐這是手工的方法啦﹐如果您有二進位的計數器﹐或是使用Windows的小算盤﹐來進行換算﹐更是易如反掌啦。如果您還不知道怎麼用Windows的小算盤點話﹐可以依以下步驟進行﹕

  1. “開始/程式集/附屬應用程式/小算盤”
  2. 然後拉下“檢視”選單﹐確定“工程型”已被選擇
  3. 然後點選“十進位”﹐輸入數值
  4. 再點選“二進位”就可以獲得換算數值了

邏輯運算

邏輯運算是Microcomputer Architature的必修單元﹐這裡﹐我們只需了解幾個最基本的運算就可以了﹕一個是AND、一個是OR、還有一個是NOT。

在二進位的AND的運算中﹐只有參與運算的雙方都相同才會得出相同的結果(為0或1)﹐否則為0﹔也就是﹕只有雙為1的時候﹐其結果才會是1﹐否則為0。其情形是﹕
0 AND 0 = 0
1 AND 1 = 1
0 AND 1 = 0
這裡您不難看出﹕凡是有1參與的AND運算﹐其結果都會是對方(不管是0或1)﹔而凡是有0參與的AND運算﹐其結果都會是0。

在二進位的OR運算中﹐只有雙方為0的時候才為0﹐否則都會是1。其情形是﹕
0 OR 0 = 0
1 OR 1 = 1
0 OR 1 = 1
記憶方法﹕凡是有0參與的OR運算﹐其結果都是對方﹔而只要有1參與的OR運算﹐其結果都會是1。

NOT的運算最簡單﹐只有一方參與﹐凡是經過NOT運算﹐其結果都會相反﹕
NOT 0 = 1
NOT 1 = 0

至於其它一些NAND或NOR的運算﹐只不過將NOT和AND、及NOT和OR合併在一起運算而已。

認識IP地址

好了﹐經過剛才一輪“洗腦”之後﹐我們終於要談到IP地址了。如果您的機器現在是連上網路的﹐且使用的是IP協定﹐(我想您應該這樣吧﹐否則怎麼看我的文章呢﹖)。

我假設您使用的是Windows系統﹐那麼﹐現在就請您按“開始”然後“執行”﹐再請您用鍵盤輸入“winipcfg”﹐然後“確定”。這時候﹐您應該看到一個視窗跑出來﹐並在“IP位址”欄目上面顯示著您機器當前使用的IP號碼。或許會是139.175.152.254這樣的一組號碼﹐不過您知道這組號碼的代表著什麼意思嗎﹖如果按正常設定來說﹐我可以說這是B class的IP號碼﹐而且是屬於seed.net的撥接網路的。

我怎麼會知道﹖哈哈﹐等您看完了後面的文章﹐您還可以告訴我更多呢﹗

IP Class和識別碼

正如您所見到的IP地址﹐是四組用“.”分開的十進位數字﹐我們稱每組數字為一個“octet”﹐這樣的格式被稱作“Dotted quad”。其實每一組都是一個8-bit的二進位數字(使用十進完全是為了遷就人類的習慣)﹐合共起來就是一個32-bit的IP地址了﹐亦即是IP v4 (Version 4) 版本的地址﹐現在IP v6 (使用128-bit的IP地址)也正如火如筡的開發中。

如果您記得我們前面在“網路概論”裡面討論IPX地址的時候所提到的Internal和External地址的話﹐您應該知道Internal地址是用來識別主機的﹐而External地址則是用來識別網路的。IP地址其實也有這樣的功能﹐只不過將網路的識別碼和主機的識別碼放在單一的IP地址上面了。

不過﹐在區分Net ID和Host ID之前﹐先讓我們認識一下IP地址的分類(Class):

如果我們將IP地址全部用二進位來表示的話﹐每個octet都是8-bit﹐如果不夠8-bit的話﹐則往左邊填上0﹐直到補滿為止。這時候﹐你再看看最左邊的數字是以什麼為開頭的﹕

  • 如果是以“0”開頭的﹐這IP是一個A Class的IP
  • 如果是以“10”開頭的﹐這是一個B Class的IP
  • 如果是以“110”為開頭的﹐則屬於C Class的IP

相信您知道為什麼我們在一開頭就學二進位換算了吧﹖如果您不懂得如何換算﹐您也可以死記﹕由1到126開頭的IP是A Class﹔由128到191開頭的IP是B Class﹔ 然後由192到223開頭的則為C Class。顯然易見﹐用二進位來識別IP Class比較容易﹗您不覺得嗎﹖

好了﹐當我們識得區別IP的Class之後﹐我們就可以知道IP的Net IDHost ID了﹕

  • A Class的IP使用最前面一組數字來做Net ID﹐其余三組做Host ID
  • B Class的IP使用前面兩組數字來做Net ID﹐另兩組做Host ID
  • C Class的IP使用前面三組數字來做Net ID﹐剩下的一組做Host ID

從下圖中﹐您可以輕易的區分上面三個不同的 IP Class ﹕

為什麼我們需要為IP劃分等級呢﹖這是為了當初的 IP 管理需要。

如果您要組建一個單一的IP網路﹐那麼您得分配相同的Net ID給所有主機﹐而各主機的Host ID卻必須是唯一的﹐也就是說沒有任何兩個Host ID會是一樣的。您的網路還要連上internet或其它網路的話﹐那麼您使用的Net ID也必須是唯一的﹐否則就會造成衝突了。好比您家的電話號碼﹐如果是1234567(Host ID)的話﹐那麼在相同區號(Net ID)裡﹐其他人將不會再使用這個號碼﹐然而﹐你不保證在其它區號裡面也有1234567這個號碼哦﹔但如果台北使用了區號02的話﹐台南就不能使用02了。無論如何﹐整個區號加電話號碼必須是唯一的。同樣的道理﹕整個IP地址(Net ID + Host ID)在internet上也必須是唯一的。有一個很特別的Net ID﹕ 127 (即二進位的01111111)﹐是保留給本機回路測試使用的﹐它不可以被運用於實際的網路中去。

另外有一個規則我們還必須遵守的﹕在指定Host ID的時候﹐換成二進位的話﹐不可以是全部為0﹐也不可以是全部為1。當Host ID全部為0的時候﹐指的是網路本身識別碼﹔而全部為1的時候﹐則為全域廣播地址﹐即發送廣播封包使用的地址。

很明顯﹐A Class網路可分配的Host ID 要比C Class的要多好多倍。讓我們算算可以劃分的Net ID數目和各等級裡面的Host ID數目就知道了﹕

因為A Class第一個bit必須為0﹐所以我們在頭一個otect的8個bit就只有7個bit是可變化的。那麼27 = 128﹐再減去0和127這個Net ID不能使用﹐那麼我們實際上最多只能劃分126個A Class的網路。而每個A Class的網路之下可以分配2的24(能夠使用的 Host ID之bit 數目)次方﹐亦即16,777,216個Host ID﹐再因為二進位數字不可以全部為0或1﹐所以實際能用的主機位址只有16,777,214個。

因為C Class以110開頭﹐減去 3 個 bit ﹐所以可劃分的C Class網路則為2的21(24-3)次方﹐也就是2,097,152個Net ID﹐然後每個Class C之下則可以劃分28 = 256 - 2 = 254個Host ID。

好了﹐這下您自己試試看計算出B Class可以劃分多少個Net ID﹐和每個Net ID之下的可用Host ID數目。(Tips﹕別忘了ID不能全部為0或1)。然後再來對照下面的列表﹕

等級 開首 網路數目 主機數目 使用範圍 申請領域
A 0 126 16,777,214 1.x.x.x 到 126.x.x.x 國家級
B 10 16,384 65,534 128.x.x.x 到 191.x.x.x 跨國組織
C 110 2,097,152 256 192.x.x.x 到 223.x.x.x 企業組織
D 1110 - - 224.- 到 239.- 特殊用途
E 1111 - - 240.- 到 255.- 保留範圍

認識Net Mask

下面我們要認識的是 Net Mask (網路遮罩﹐或稱網路掩碼)。

到了這裡﹐我必須要向大家交代清楚一件事情﹕在我們進行IP地址劃分的時候﹐IP和Net Mask都必須一對使用的﹐兩者缺一不可﹗不過﹐當我們使用分等級的IP地址的時候﹐我們也可以使用預設的mask﹐比如﹕A Class的mask是255.0.0.0﹔B Class的mask是255.255.0.0﹔C Class的則是255.255.255.0。

這是什麼意思啊﹖看255比較難理解﹐如果您將之換算為二進位就容易理解多了﹕255 = 11111111(8個1)。然後當您把這些Net Mask和各等級IP對應看看﹐聰明的您就會發現一個現象﹕就是~~ 凡是被1所對應著的IP部份就是Net ID﹔凡是被0所對應部份就是Host ID ﹗

哈哈~~應該是個值得慶賀的發現哦~~~我想您的心情並不亞於當初哥倫布發送美洲大陸啦﹗不過﹐問題又來了﹐既然我們已經分好等級了﹐還用那mask幹嘛﹖我們照等級使用不就好了嗎﹖

呵~呵~~閣下真是太聰明了﹐佩服佩服啦﹗不過﹐您可別忘了電腦是一台好蠢好蠢的機器哦﹐請您告訴我﹕電腦怎麼識別Net ID和Host ID呢﹖嗯﹖﹖不會吧﹖﹗那好﹐讓我告訴您好了﹕

還記得AND和NOT的邏輯運算嗎﹖如果忘了趕快往前翻翻﹐補習補習再來看這裡。當電腦獲得了一對IP和Mask(都是二進位數字)之後﹐電腦先使用一個AND的運算﹐來求出Net ID。您可以拿自己電腦的IP來做例子﹐這裡讓我們拿先前用winipcfg看出來的IP來算算﹕

139.175.152.254換成二進位是﹕
10001011.10101111.10011000.11111110
(這時候﹐您應該知道我為何當初一口就說出這是一個B Class的IP了吧﹖還不知道﹖看看頭兩個bit是什麼﹖)

這個Class的預設mask是255.255.0.0﹐換成二進位是﹕
11111111.11111111.00000000.00000000

然後將IP和mask加以AND 運算﹕
10001011.10101111.10011000.11111110
AND
11111111.11111111.00000000.00000000
得出﹕
10001011.10101111.00000000.00000000

換成十進位就是139.175.0.0﹐這個就是Net ID了。

那麼怎麼求Host ID呢﹖也很簡單﹕

先將Net Mask做一個 NOT 運算﹐可以得出﹕
00000000.00000000.11111111.11111111

然後再和IP做一次 AND 運算﹐就可以得到Host ID:
00000000.00000000.10011000.11111110 ﹐

換成十進位就成了﹕0.0.152.254。

簡單吧﹖是不是﹖哈哈~~我看到您大搖其頭哦~~~不用擔心啦﹐多拿些IP例子來運算運算您就得心應手了。

還有﹐當我們設定網路環境的時候﹐除了要輸入 IP地址、netmask、網路地址之外﹐有時候還需要指定廣播地址(broadcast)。我已經知道如果 Host ID 全部為 0 是網路地址、而全部為 1 則是廣播地址了。其實廣播地址也可以通過一個簡單運算得到﹕

先將Net Mask做一個 NOT 運算﹐可以得出﹕
00000000.00000000.11111111.11111111

然後再和IP做一次 OR 運算﹐就可以得到 Broadcast Address:
10001011.10101111.10011000.11111110
OR
00000000.00000000.11111111.11111111
得出﹕
10001011.10101111.11111111.11111111

換成十進位就成了﹕139.175.255.255。

不過﹐說到這裡為止﹐我總還覺得有些不妥﹕因為許多網路都有一定的節點極限﹐比如Ethernet通常最多只能連接1,200台主機﹐如果您獲得一個B Class 的 Net ID﹐豈不是浪費很多Host ID了嗎﹖要是使用A Class就更是駭人﹗

當您遇到這種“有錢人的困擾”的時候﹐Sub-net Mask就派上用場了。如果您剛才還認為預設的Net Mask是多餘的話﹐那麼當您知道Sub-net Mask的功能之後﹐我敢保證您不會再忽略Net Mask了。

Sub-net Mask的使用手法就是靠“借”﹐或可以說靠“搶”﹕就是從左往右的按需要將本來屬於Host ID的一些bit轉為Sub-net ID來使用。也就是將預設的Net Mask的“1”逐漸的往右增加﹐相對地﹐Net Mask的“0”則越來越少。這樣的結果當然是可以獲得更多的Net ID﹐換一句話說﹐您可以將一個大的IP網路分割成更多的子網路﹐而每一個子網路的主機數目卻相應的減少。

其情形會是﹕當您借用1個bit的Host ID來做Sub-net ID的時候﹐會將網路切割開兩個(2 1 = 2)子網路﹔如果借2個bit則有4個子網路﹔3個bit則8個﹔4個bit則16個..... 當所有的Host ID都借出去之後﹐您可以得到最多數量的子網路﹐但這是毫無意義的﹐因為沒有Host ID了﹐您怎麼分配IP給主機呢﹖要是您的Host ID只剩下一個bit沒有借出去的話﹐那麼您在每個網路只能得到0和1來作為Host ID﹐這也是不行的﹐因為這兩個ID也不可以用來分配給主機。

當您切割網路的時候﹐您得最少留下 2 個 bit 來做 Host ID﹐這時候﹐每個網路最多只能連接 2 台主機(咦﹖22 不是等於 4 嗎﹖但別忘了 Host_ID 不能是兩個 0 或兩個 1 哦)。這樣的網路通常會用在 WAN 與 LAN 之間的路由器連接。而在 LAN 中的應用﹐通常最少要保留 3 個 bit 來做 Host_ID。

為了更好的理解Sub-net Mask的功用﹐我們還是以剛才的IP(139.175.152.254)為例子來看看﹕

我們知道它在預設情形之下的Net Mask是﹕
11111111.11111111.00000000.00000000

如果我們借用了Host ID的其中三個bit來做Sub-net ID的話﹐將原來的Net Mask和Sub-net Mask做一個 OR 的運算﹕
11111111.11111111.00000000.00000000
OR
00000000.00000000.11100000.00000000
得出﹕
11111111.11111111.11100000.00000000

換成十進位後﹐實際的Net Mask將會變成這樣﹕255.255.224.0 。

因為借用的只有3個bit﹐所以切割成為8個子網路了﹐而他們的Sub-net ID則分別從000到111這8個組合﹐再加上原來的Net ID(10001011.10101111.00000000.00000000)﹐各子網路的實際Net ID就成了﹕

10001011.10101111.00000000.00000000 (139.175.0.0)
10001011.10101111.00100000.00000000 (139.175.32.0)
10001011.10101111.01000000.00000000 (139.175.64.0)
10001011.10101111.01100000.00000000 (139.175.96.0)
10001011.10101111.10000000.00000000 (139.175.128.0)
10001011.10101111.10100000.00000000 (139.175.160.0)
10001011.10101111.11000000.00000000 (139.175.192.0)
10001011.10101111.11100000.00000000 (139.175.224.0)

這時候﹐本來是16個bit的Host ID只剩下13個bit了﹐也就是說﹐在每個子網路裡面﹐最多只能有2 13 = 8,192 - 2 = 8,190台主機﹐而它們可分配的號碼分別由
00000.00000001到
11111.11111110之間。

但我們並不能簡單的將它以十進位的0.1到31.254這樣表示﹐我們還得將之配合各個不同的Sub-netID﹐再相加一起才能得出最終的IP號碼。例如﹕

在Sub-net ID 001 之下的主機號碼﹐將會是從
00100000.00000001到
00111111.11111110之間﹐
亦即是﹕從32.1到63.254之間﹐
整個IP地址則是﹕從139.175.32.1到139.175.63.254之間。

而在Sub-net ID 100 之下的主機號碼﹐將會是從
10000000.00000001到
10011111.11111110之間﹐
亦即是﹕從128.1到159.254之間﹐
整個IP地址則是﹕從139.175.128.1到139.175.159.254之間。

明白了﹖

唉呀~~~~頭痛耶~~~﹗﹗

別complaint啦~~﹐自己再動手算算在110這個Sub-net ID之下的主機號碼範圍是多少﹖

如果您得出來的答案不是139.175.192.1到139.175.223.254之間﹐那麼您需要離開螢幕一會﹐到外面呼吸一下空氣(別抽煙)﹐然後過5分鐘回來重新看看前面幾段文章。再重讀的時候﹐要確定您每一個概念都清楚了才繼續往下讀。

當然﹐你說放棄也沒什麼要緊啦﹐反正您老闆又不會扣您工錢啦~~~

IP的實際運用

好了﹐這裡讓我們歸納一下以上所學吧﹕

  • IP等級以開頭的二進位數字來定﹕0﹐10﹐110 分別是A、B、C等級﹔
  • IP分兩部份﹕Net ID和Host ID。預設情形下﹐A以第一個otect來做Net ID、B則使用前面兩個otect、C使用三個oect﹐而剩下的則做Host ID;
  • 在為機器指定Net ID和Host ID的時候﹕換成二進位不可以全部為0﹐也不可以全部為1﹐而整個IP地址必須是唯一的﹔
  • Net Mask是給電腦用來計算Net ID和Host ID的﹐將IP和mask用AND運算得出Net ID﹐將mask先經過NOT運算﹐再和IP做AND運算則可以得出Host ID﹔
  • Sub-net Mask是“借”Host ID來當Sub-net ID使用﹐規則是從左往右遞增﹐作用是將一個較大的網路切割成多個較小的網路。而在顯示IP的時候﹐必須要和Sub-net ID加在一起﹐也就是以完整的 otect 來表示。

設定規則

當我們設定IP網路的時候﹐如果想各機器能夠直接溝通﹐那麼您得使用相同的Net ID和不同的Host ID。如果您想使用不同的Net ID(比如經過sub-net劃分)﹐那麼在不同Net ID之間的host就要經過router才能成功對講。

當電腦用AND運算得出Net ID之後﹐會檢查來源Net ID和目的Net ID是否一致﹐如果一致的話﹐就可以直接將封包傳給對方﹐否則就將封包傳給Router或Default Gateway﹐這個過程我在以後的ARP和RIP將會講述。

另外﹐如果您使用了sub-net技術﹐在分配IP地址的時候就要非常小心了﹐以免IP超出了子網範圍而無法溝通。比如﹐在沒有劃分子網路的情況下(例如使用255.255.0.0的mask)﹐139.175.31.254和139.175.32.1都是在同一個網路之內的﹐他們的IP封包不用router就可以直接傳遞了﹔但經過借用3個bit的子網劃分之後(net mask成了255.255.224.0)﹐它們就被分隔在兩個IP網路之內﹐這時候它們一定要使用router才能傳遞封包了。

同時﹐原本一些有效的IP地址﹐在sub-net之後﹐因為Host ID變成了全部0或1﹐也就不能再分配給主機使用了﹐例如﹕139.175.63.255、139.175.64.0等等。 (如果您不明白為什麼﹖將之換成二進位﹐然後找出經過子網切割後屬於Host ID部份的數字就清楚了。)

所以﹐當我們在一開始設計網路的時候﹐就要具備應有的責任和遠見﹐早早就將子網路劃分好。否則﹐等所有機器都設定好﹐並且運作了一段時期之後﹐才決定劃分子網路﹐其情形將會變得異常複雜。如果要重新分配IP﹐其所做的規劃﹐以及遇到的可見問題和隱藏問題﹐都比從零開始難上百倍﹐越大的網路越是如此﹗

保留IP

當我們要將網路連上intetnet的時候﹐我們必須先註冊好Net ID﹐如果該ID已經被使用了﹐您就必須選用另外的ID了。負責Internet IP註冊的機構叫做InterNIC(Network Information Center)﹐他們的網路地址是 http://www.internic.net

由於Internet的爆炸性成長﹐IP的地址買少見少﹐而且在很多機構裡﹐也不是所有機器都有必要使用註冊的IP地址。於是﹐我們就在 A、B、C這三個層級裡面﹐各劃出一些地址範圍保留給私有位址所用﹐它們是﹕

10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255

當您使用這些地址的時候﹐當然是有所限制的﹕

  • 私有位址的路由資訊不能對外散播
  • 使用私有位址作為來源或目的地址的封包﹐不能透過Internet來轉送
  • 關於私有位址的參考紀錄(如DNS)﹐只能限于內部網路使用

然而﹐正是由於這些限制﹐當我們使用這些私有位址來設定網路的時候﹐就無需擔心會和其它也使用相同位址的網路衝突了。

這給我們架設IP網路做成很大的方便﹐比如﹕即使您目前的公司還沒有連上Internet﹐但不保證將來不會啊。如果使用公共IP的話﹐如果沒經過註冊﹐等到以後真正要連上網路的時候﹐就很可能和別人衝突了。也正如前面所分析的﹐到時候再重新規劃IP的話﹐將是件非常頭痛的問題。這時候﹐我們可以先利用私有位址來架設網路﹐等到真要連上intetnet的時候﹐我們可以使用IP轉換協定﹐如NAT (Network Addresss Translation)等技術﹐配合新註冊的IP就可以了。

再者﹐由於私有位址在 internet 上是不能路由的﹐用來架設企業內部網路﹐在安全上面也是有利的。當然了﹐如果在課堂上或在家裡架設 IP 網路﹐使用私有位址也是個不錯的主意哦。

不分等級的IP

思考一下﹕如果我的IP是139.175.152.254﹐而Net Mask則為255.255.255.0。您認為是否用錯了net mask呢﹖而 203.56.6.18 使用 255.255.0.0 做 mask 呢﹖

我們將較大的IP等級切割成許多較小網路﹐可以說是“有錢人的煩惱”﹔但難道“窮人”就沒有煩惱嗎﹖當然是有啦﹗例如﹕您的公司有接近600台主機﹐想連一個IP網路﹐申請一個B Class網路似乎太浪費﹐而且﹐說實在﹐也未必可以申請得到﹗那麼申請3個C Class的網路總可以吧﹖當然沒問題啦﹗(如果還沒用光的話)。

不過﹐正如我們剛才知道的﹐因為3個C Class網路它們的Net ID都各自獨立的﹐如果您要其下的電腦都能溝通的話﹐就要router的參與了。但是router一點都不便宜哦~~~貴的router幾乎可以換一輛“Benz”房車來開呢﹗就算您老闆不在乎﹐要設定和維護好幾個網路的routing也不是一件輕鬆的事情﹐搞不好﹐還要專門請“半”個人來看管呢。

好消息是﹕您可以將這三個C Class網路整合在一起來使用啦﹗使用的是CIDR (Classless Inter-Domain Routing)技術﹐也就是所謂的不分等級IP了。

使用CIDR的時候﹐您大可不必理會IP的開首字元﹐你可以隨便設定您的Net Mask長度。也就是說﹐一個C Class的網路也可以使用255.255.0.0這樣的mask﹐我們稱這樣的網路為“Supernet”﹐和subnet正好相反。

當然﹐如果要和其它網路溝通﹐您使用的router也必須支援CIDR才行啦﹐而且設定上是比較複雜的。

如果您覺得139.175.152.254/255.255.0.0 和192.168.1.1/255.255.255.0 這樣的IP表現方法實在太麻煩了﹐這裡有一個更好的表示法﹕使用mask的bit數來表示Net Mask。這樣我們就可以這樣寫了﹕139.175.152.254/16 和203.56.6.18/24﹐假如使用了三個bit的Sub-net﹐我們只要將16改成19和將24改成27就可以了﹔如果是使用了三個bit的Supernet﹐我們將之改成13和21就可以了。

是不是很方便呢﹖﹗我好喜歡哦~~~

 

 


www.study-area.org © 2001 Netman 網中人
Last Updated: Jan 14, 2002