| |||||||||||||||||||||||||||||||||||||||||||
嚴格來說,TCP/IP 協定家族並沒有定義 "TCP/IP 專屬的" 網路硬體規格。硬體的範圍實在太過廣泛了﹐標準非常多﹐當今大部份的低層網路硬體標準都是由 IEEE 制定的,但也有許多標準是廠商專屬的。要讓 TCP/IP 協定能夠順利與不同類型的硬體進行溝通﹐那麼就需要建立起一些標準協定來讓大家共同參考。以我們最常用的乙太網(Ethernet)為例﹐我們無需理會廠 商如何設計網路界面的驅動程式﹐一旦它能夠被系統接納﹐網路儲存層(Datalink)就能使用網路界面在實體網路上傳送和接收資料了。 IP 位址和實體位址對應之困擾 在「網路基礎」課程中﹐我們知道乙太網上面使用的傳送方式叫 CSMA/CD (Carrier-Sensing Multiple Access with Collision Detection)﹕雖然訊框會在整個網段(segment)中用廣播的方式傳遞﹐而且所有節點都會收到訊框﹐然而﹐只有目的位址符合自己實體位址的訊 框才會被接收下來。因此,不管上層協定是哪一種(可以是 TCP/IP 也可以是其它),在底層的傳送若是使用 Ethernet 的話,就得使用 MAC (Media Access Control) 實體位址。若要查詢到當前系統目前所有界面的實體位址,我們可在 Linux 系統裡面輸入 ifconfig 命令﹕ 從上面的命令結果中可發現:關於每一個界面的第一行資訊﹐最後的部份就是該界面的實體位址。訊框在實體網路上面傳送的過程中﹐IP 位址(或曰羅輯位址)一點都派不上用場。但問題是:當我們使用 TCP/IP 的時侯,上層的協定都是以 IP 位址為傳送依據的。那麼﹐這時候我們就必須有一套方法來對應 IP 位址和實體位址了。 在此一過程中﹐關鍵點是如果將 IP 位址對與實體位址做對應。有些使用簡單實體位址的網路(如 proNET-10 )﹐其實體位址只佔一個 byte 的長度﹐而且允許使用者在配置網路卡的是選擇自己的實體位址。在這樣的網路上進行 IP 位址和實體位址的對應﹐是比較簡單的﹐我們可以把實體位址設為和 IP 位址設為一樣。例如﹐假設某一個節點的 IP 位址為 192.168.1.17﹐那麼我們可以將該實體位址設為 17。 這樣﹐在 proNET 就可以輕易的根據 IP 位址來得到實體位址。這樣的對應非常簡單﹐而且要維護起來也很容易﹐在新機器假如網路的時候﹐並不需要修改或重編已存的資料。 然而﹐我們知道在乙太網上﹐每一個實體界面都有一個 48bit(6byte) 的 MAC 位址﹐而 IP (v4)使用的位址則為 32bit(4byte)﹔每各位址格式都只提供相應的層級協定使用﹐彼此是不能互換使用的。這時候我們就無法用簡單的數學關係來做 IP 位址和實體位址的對應了。 IP 位址和實體位址的對應方法 建立表格 首先﹐我們想到的最簡單方法是在每一台機器上建立一個 IP 位址和實體位址的對應表格( table )。不過這個方法還是沒辦法解決如下的情形﹕寫入高階程式 除了建立表格﹐我們還可以將實際的網路位址寫死在高階網路程式裡面。不過﹐和前一個方法一樣﹐如果遇到硬體位址變更等異動動情形﹐那麼﹐程式也需要重新編譯過才行。ARP 協定 這裡我們要介紹的是 Address Resolution Protocol (ARP)。 ARP 是 TCP/IP 設計者利用乙太網的廣播性質﹐設計出來的位址解釋協定。它的主要特性和優點是它的位址對應關係是動態的﹐它以查詢的方式來獲得 IP 位址和實體位址的對應。它的工作原理非常簡單﹕ |
This man is too old to remember everything in his brain. Right now, he needs a place to write down what he has studied.
沒有留言:
張貼留言