A RP協定


或許您已經被一大堆的TCP/IP搞得頭昏腦脹了﹐但遺憾的是﹐要頭痛的事情還會繼續來呢﹗

哦~~my g**!!

好啦﹐提起精神啦~~~ ARP協定就是我們下一個要討論的協定﹕

Address Resolution Protocol﹐負責的是在IP地址和網卡實體地址(MAC)之間的轉換。如果您對網路七層協定有比較清晰的理解的話﹐應該知道各個層級之間都使用其各自的協定。

我們常將TCP/IP當一個協定來看待﹐但其實TCP是工作於傳送層﹐而IP則工作於網路層的。TCP/IP 協定好比是程式和網路之間的中間人一樣﹐省卻了雙方的許多煩惱。

我們在“網路概論”中已經知道在不同的網路形態中會使用不同的協定來進行節點間的資料傳送﹐如﹕Ethernet 的 CSMA/CD(IEEE802.3) 和 Token Ring 的 Token Pass(IEEE802.5) 。那些協定可以說是工作於 DataLink 層級的。我這裡不再重複講述它們的工作原理了﹐有興趣請往前翻翻看吧。

我在這裡也不打算探討程式和TCP之間是怎樣溝通的﹐但會簡略的看看封包是如何從一個IP傳到另一個IP。

ARP在本地網路的運用﹕

以使用TCP/IP 的 Ethernet 網路為例﹕每台電腦都有一個ARP表格(ARP Table)存放於ARP快取記憶區(ARP Cache)之中﹐它主要記錄著同一網路中各節點的 IP 和 MAC 地址的對應。

當機器有一個TCP/IP封包送出去的時候﹕

  1. 會先看看目的地址是否屬於同一網路裡面﹐(還記得上面的netmask和IP的作用嗎﹖)﹔
  2. 如果是的話﹐則會檢查ARP 表格有沒有對方的IP和MAC對應﹔
  3. 如果有的話﹐就直接將封包傳到該MAC去﹔
  4. 如果ARP表格上面找不到對方的對應﹐則會向網路發出一個ARP Request廣播封包﹐查詢對方的MAC地址﹐這個封包會包含發送端的MAC資料﹔
  5. 當網路上面的機器接聽到該廣播﹐看看IP欄位是否和自己的一致﹐如果不是則忽略﹔
  6. 如果是則會先將發送端的MAC和IP資料更新到自己的ARP表格去﹔
  7. 然後再回應一個ARP Reply封包給對方﹔
  8. 當發送端接到ARP Reply之後﹐也會更新自己的ARP表格﹔
  9. 然後就可以用此紀錄進行傳送了。
  10. 否則宣告傳送失敗。

ARP 的查詢過程可參考下圖﹕

跨網路環境下的ARP﹕

我們已經知道﹕如果Net ID不同的IP傳送都要經過router才可以做到。那麼當機器發現封包不是傳給本地網路的時候﹐那麼它就要把封包傳給router了。記住﹕router必須有一個界面和發送端在同一網路﹐這個router我們可以用DHCP來指定﹐也可以在各台機器上面手工指定。如果本地網路同時還和好幾個網路連接﹐也就是說﹐有好幾個router可以選擇﹐我們也必須一一在各機器上的IP環境中指定好。(我們將在下面的RIP再詳細討論)。

ARP 的跨網過程粗略如下﹕

  1. 先檢查封包是否寄給本地網路的﹔
  2. 如果不是﹐將之送給router﹔
  3. 如果ARP表格還沒有router的記錄的話﹐利用ARP Request來進行更新﹔
  4. 然後router會判斷下一個router的MAC﹐再把封包傳出去﹔
  5. 當封包傳到目的地的router﹐router也一樣檢查ARP表格﹐或利用ARP Request找到目的主機的MAC﹔
  6. 最後將封包傳給目的IP地址。

查看ARP記錄

如果你要查詢一下ARP表格﹐在您的Windows98中﹐你可以使用這個命令﹕

C:\>arp -a
Interface: 192.168.0.15 on Interface 0x1000002
  Internet Address      Physical Address      Type
  192.168.0.17          00-80-c7-47-8c-9a     dynamic
  192.168.0.7           00-80-c7-47-8c-9a     dynamic

這樣您就可以看到看IP和MAC的對應﹐有些系統會用主機名稱和MAC對應﹐但如果在IP網路中﹐歸根結底是要轉換成IP才知道如何傳遞封包。

待一會等你和多幾台機器連線之後﹐再使用這個命令﹐你就會看到ARP表格的內容會多起來了。不過這些在Cache產生的紀錄﹐如果2分鐘之內沒再被使用﹐系統就會將之刪除掉﹔如果有被使用到﹐那麼檢查週期則會變成10分鐘。我們稱這樣的紀錄為動態式(Dyanmic)記錄。

當我們的本地網路有些IP地址是經常使用的﹐比如檔案伺服器﹐和router等﹐為了減少ARP Request的廣播﹐我們可以用﹕
arp -s IP MAC
(如﹕arp -s 192.168.1.2 48:54:E8:27:75:77)
來產生一筆靜態(Static)ARP記錄。

這裡﹐我還要指出一點的是﹕在一個MAC地址上﹐您可以對應好幾個IP地址﹐我們管這樣的設定為IP Aliase或Virtual Host﹐當您需要在單一主機上面建立好幾個虛擬網站的時候﹐您就要用到了。

RARPProxy ARP

Reverse ARP是用來從MAC反查詢IP地址的﹐一些系統服務將會用到這個功能。例如﹐您的無磁碟 (diskless) 工作站使用 BOOT ROM 來登錄網路﹐開始它並不知道自己的 IP 是什麼。那它可以先送出一個 RARP 封包﹐假如網路上有其它主機被設定成可以回答 RARP 查詢﹐並且知道它的 IP 的話﹐就可以對之做出回應。這樣無磁碟工作站也就知道自己的 IP 地址了。

RARP 的查詢過程可參考下圖﹕

通常﹐每台機器只會回答有關本身的IP地址查詢﹐但也可以代其它機器的IP做出回應﹐我們稱這樣的功能為 Proxy ARP。Proxy ARP有時候可以代理下一站的路由器回答ARP查詢﹐同時﹐在PPP的撥接網路上﹐也是非常有用的功能。

 

 


www.study-area.org © 2001 Netman 網中人
Last Updated: December 30, 2000