事實上,並不是節點(即主機或路由器)具有MAC地址,而是節點的適配器具有鏈路層地址,LAN地址有各種不同的稱呼:LAN地址、物理地址和MAC地址。因為MAC地址看起來是最為流行的術語,所以將鏈路層地址稱為MAC地址,MAC地址長度為6個位元組,通常採用十六進位標記法。另外MAC地址有一個有趣的性質是,沒有兩個適配器具有相同的地址。考慮到適配器是由許多不同國家的不同公司生產的,這看起來似乎是件神奇之事。適配器的MAC地址具有扁平結構(這與階層相反)。有一個特殊的MAC廣播位址即FF-FF-FF-FF-FF-FF。
這裡可以看出來,節點除了網路層地址之外還有MAC地址,這有幾個原因,首先,LAN是為任意網路層協議而設計的,而不只是為了IP和網際網路。其中從設計原則角度來講,保證了各層的獨立性,打個比方,如果鏈路層地址由網路層地址替代,那麼網路層地址必須儲存在適配器的RAM中,並且每次適配器移動(或加電)時都要重新進行配置。還有就是對各種協議的支援,因為很多協議是採用網路層地址,有些協議是採用鏈路層地址。所以我們現在有3種類型地址:應用程式層的主機名稱、網路層的IP以及鏈路層的MAC地址。
因為存在網路層地址和鏈路層地址,所以需要在它們之間進行轉換。對於網際網路而言,這是位址解析通訊協定(ARP)的工作。現在假設IP地址為222.222.222.220的節點要發送IP資料報到節點222.222.222.222。那麼發送節點如何確定IP為222.222.222.222的MAC地址呢?它使用了一個ARP表,該表儲存IP地址對應的MAC地址資訊,一般ARP表包含IP地址資訊、MAC地址資訊和生存期(TTL)值。如果目的節點的資訊在ARP表中,這個任務很容易完成。但是如果ARP表裡沒有目的節點的資訊。那麼發送節點會構造一個ARP分組的特殊分組,將包括髮送節點和目的節點的IP地址和MAC地址等相關資訊,通過廣播位址作為幀的目的地址,傳輸進子網中。那麼接收到這些資訊的節點將比較匹配,如果資訊匹配成功,該節點將返回一個ARP響應包,然後發送節點更新自己ARP表,接著發送它的IP資料報。關於ARP協議有兩件有趣的事情需要注意。首先,查詢ARP報文是在廣播幀中發送的,而響應ARP報文在一個標準幀中發送。那麼如果發送的資料報要到子網以外的節點呢?
集線器是一種物理層裝置,它作用於各位元而不是作用於幀。當表示一個0或一個1的位元到達一個介面時,集線器只是重建這個位元,將其能量強度放大,並將該位元向其他所有介面傳輸出去。因此具有基於集線器星型拓撲的乙太網路也是一個廣播LAN。
乙太網路幀結構
資料欄位:最大傳輸1500位元組,最小46位元組。
目的地址:6位元組,目的適配器的MAC地址。
源地址:6位元組,本適配器的MAC地址。
類型欄位:2位元組,允許乙太網路複用多種網路層協議。
迴圈冗餘檢測:4位元組,檢查幀中是否引入差錯。
前同步碼:8位元組,前7個位元組都是10101010,最後一個位元組是10101011,用於將發送方和接收方的時鐘進行同步。
所有的乙太網路技術都向網路層提供無串連服務。
待續……