二進制與IP協議

爲了更好的理解IP協議,我們需要學習並理解二進制的相關知識,IP協議中的一個重要部分就是子網劃分,而只有IP地址轉化成二進制才能合理解釋並正確理解子網劃分。我們很多人都沒有意識到,當我們在電腦上玩遊戲、讀書或者在屏幕上畫畫的時候,其實電腦根本無法理解文字、圖像和聲音這些東西。事實上,所有的電腦都僅僅能夠理解0和1,我們在電腦屏幕上看見的那些東西其實都來源於對電腦能理解的數據流的轉化,所以顯出出來的這些信息對於我們來說才變得有用並有意義。


  二進制:比特與字節
 
     所有使用Internet的人總會在某個時候碰見“字節”(Byte)或者“比特”(Bit)術語,當你進行網絡下載的時候它們會經常出現,同時你獲取的速度指示也都以比特/每秒或者字節/每秒來顯示。我們現在就來弄清楚比特(Bit)、字節(Byte)和千字節(Kbyte)究竟是什麼意思,這樣你就能理解它們了。要多簡單就有多簡單,一個比特就是一個二進制數的最小單元,就像我們說我們能夠擁有的最小金額的錢就是一分一樣,只不過比特是在二進制數中罷了。

     一個比特只能擁有一個值,不是0就是1,所以如果我給你一個值0,你可以說它就是一個比特,如果我給你兩個(00),你就可以說它們是兩個比特了。

     現在,如果你將八個0或者1組合在一起,例如0110 1010(在中間加一個空格是爲了看起來清晰明瞭),你就可以說它們是八個比特或者說一個字節。好,這就對了,八比特就等於一字節,而不管它們都是全是0、全是1或者是由若干0和若干1混合而成。

        將這些字節加起來,到了1024個字節的時候,就獲得了一個千字(Kbyte)了,爲什麼是1024而不是1000呢?這是由二進制的進位方式造成的,如果你學過數學,你就會知道上述結果是正確的。

  那麼,二進制與IP有什麼關係呢?

     噢,就像我在開始的介紹中解釋的那樣,計算機使用一種我們都能理解的信息方式來顯示這些0或者1,IP協議也按照類似方式工作,雖然我們在98%的時間裏看到都是十進制數,但實際上計算機將它們轉換成二進制數後才能理解。
   
       上邊的例子就出現了一個十進制的IP地址,它是我們更容易理解的,當把這個地址(192.168.0.1)轉化成二進制數計算機就能理解了。你可以看到得到的二進制數很長,對於我們來說,記住四個不同的數字肯定比記住32個0或1要容易。

     現在,緊記我們前邊說到的關於比特和字節的概念,你曾經聽到過或者讀到過人們常說一個IP地址是一個32比特地址嗎?是的,就是這樣,你現在可以知道爲什麼:
          
     所以,如果將上邊所述總結一下,我們現在就知道什麼是二進制數?什麼是一個比特、字節或者千字節?以及二進制數與通常以十進制數表示的IP地址是什麼樣的關係?


  理解二進制與十進制之間的轉換

     現在,我們開始考慮一下如何進行十進制和二進制之間的轉換過程,這是一個非常重要的步驟,因爲你將會發現,在處理一些比較複雜的子網的時候,你經常都需要進行這種轉換,而且,一旦你這種掌握了這些基本概念,這種轉換是不難的。下圖就向你顯示了一個IP地址向二進制的轉換過程,請緊記我將要向你展示的方法對其他的轉換都是適用的。我們現在打算將IP地址中(192.168.0.1)第一個八位比特轉換成二進制,換句話說我們需要將“192”轉換成二進制數,我們根本就不需要做任何負責的運算,僅僅需要做一些簡單的加法:
             
     如果你已經閱讀並已經理解本頁的第一部分,你應該知道我們需要八個比特來創建一個八位位組(一個字節)或者說就是這個數字192。每個比特都代表一個永遠不變的值,在圖中我們在比特數字上方用紫色來顯示這個值。然後我們採用這樣一種方法來選擇一些比特位,找出比特位所代表值加起來和我們需要的十進制數相等的比特位,這些位就是我們需要選擇的比特位。

     如果你想利用數學術語來解釋這種轉換,你可能說每個位都是2的冪(2^),例如第8位就是2的7次方(2^7,十進制數爲128)、第7位就是2的6次方(2^6,十進制數爲64)、第6位就是2的5次方(2^5,十進制數爲32)、第5位就是2的4次方(2^4,十進制數爲16)、第4位就是2的3次方(2^3,十進制數爲8)、第3位就是2的2次方(2^2,十進制數爲4)、第2位就是2的1次方(2^1,十進制數爲2)、第1位就是2的0次方(2^0,十進制數爲1)。

     注意:當我們計算一個八位位組的十進制的時候(如上述例子中的192),比特位的位置參數並不是我們用來獲得十進制數是所使用的2的冪次數,這就意味着Bit 1並不能轉換成十進制的時候不能算成2^1=2)。
 
     在我們的例子中,我們使用192這個數,就如你所看到的那樣,我們需要第8個比特位和第7個比特位,這就獲得了所求的二進制數1100 0000,它就是十進制數192的二進制形式。你一定要記住每個比特位所代表的值是不能改變的。例如,第8位代表128,而第1位總是代表1,使用這種方法,你就會發現將十進制轉換成二進制是非常簡單的,它根本就不需要複雜的數學運算。

     現在我們來研究一下下一個八位位組,它的十進制形式是168:

        這裏你可以再一次看到我們需要選擇第8位、第6位和第4位(換句話說我們需要將這些位置都賦成“1”),這些位所代表值相加就能得到十進制數168,所有二進制數1010 1000就和十進制數168相等。
 
        不管你是從十進制數轉換成二進制數,還是從二進制數轉換成十進制數,都可以使用同一種方法,如果你能理解上述方法,你就應該能轉換任何十進制數或者二進制數。
   
     這僅僅是這部分需要掌握的內容,你應該開始準備下一部分。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章