http://www.study-area.net/menu1.htm
或許您已經被一大堆的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封包送出去的時候
會先看看目的地址是否屬於同一網路裡面(還記得上面的netmask和IP的作用嗎)
如果是的話則會檢查ARP 表格有沒有對方的IP和MAC對應
如果有的話就直接將封包傳到該MAC去
如果ARP表格上面找不到對方的對應則會向網路發出一個ARP Request廣播封包查詢對方的MAC地址這個封包會包含發送端的MAC資料
當網路上面的機器接聽到該廣播看看IP欄位是否和自己的一致如果不是則忽略
如果是則會先將發送端的MAC和IP資料更新到自己的ARP表格去
然後再回應一個ARP Reply封包給對方
當發送端接到ARP Reply之後也會更新自己的ARP表格
然後就可以用此紀錄進行傳送了。
否則宣告傳送失敗。
ARP 的查詢過程可參考下圖
跨網路環境下的ARP
我們已經知道如果Net ID不同的IP傳送都要經過router才可以做到。那麽當機器發現封包不是傳給本地網路的時候那麽它就要把封包傳給router了。記住router必須有一個界面和發送端在同一網路這個router我們可以用DHCP來指定也可以在各台機器上面手工指定。如果本地網路同時還和好幾個網路連接也就是說有好幾個router可以選擇我們也必須一一在各機器上的IP環境中指定好。(我們將在下面的RIP再詳細討論)。
ARP 的跨網過程粗略如下
先檢查封包是否寄給本地網路的
如果不是將之送給router
如果ARP表格還沒有router的記錄的話利用ARP Request來進行更新
然後router會判斷下一個router的MAC再把封包傳出去
當封包傳到目的地的routerrouter也一樣檢查ARP表格或利用ARP Request找到目的主機的MAC
最後將封包傳給目的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當您需要在單一主機上面建立好幾個虛擬網站的時候您就要用到了。
RARP和Proxy ARP
Reverse ARP是用來從MAC反查詢IP地址的一些系統服務將會用到這個功能。例如您的無磁碟 (diskless) 工作站使用 BOOT ROM 來登錄網路開始它並不知道自己的 IP 是什麽。那它可以先送出一個 RARP 封包假如網路上有其它主機被設定成可以回答 RARP 查詢並且知道它的 IP 的話就可以對之做出回應。這樣無磁碟工作站也就知道自己的 IP 地址了。
RARP 的查詢過程可參考下圖
通常每台機器只會回答有關本身的IP地址查詢但也可以代其它機器的IP做出回應我們稱這樣的功能為 Proxy ARP。Proxy ARP有時候可以代理下一站的路由器回答ARP查詢同時在PPP的撥接網路上也是非常有用的功能。