IP基礎--1.IP地址 二進位和邏輯運算 在我們認識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的小算盤點話可以依以下步驟進行 “開始/程式集/附屬應用程式/小算盤” 然後拉下“檢視”選單確定“工程型”已被選擇 然後點選“十進位”輸入數值 再點選“二進位”就可以獲得換算數值了 邏輯運算 邏輯運算是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 ID 和 Host 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 16,382 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都必須一對使用的兩者缺一不可不過當我們使用分等