這裡我們簡要地介紹一下這個IP位址和硬體地址。在一個主機向另一個主機發送數據的過程中,會把IP數據報給封裝起來,使得網絡以下的部分看不到IP數據報中的源地址和目的地址。在IP位址被封裝了之後,它就被裝上了當前的MAC地址和目的MAC地址。這樣就可以實現在鏈路中傳輸的時候能夠準確地找到下一個站點。當到達下一個站點之後,所發送的數據又被送到網絡層之中給拆開,讀取到這個IP數據報的目的IP位址,之後根據這個目的IP位址來封裝成新的MAC幀。
這裡需要注意的一點是對於一個路由器來說,如果這個路由器有兩個接口,那麼這個路由器就有兩個MAC地址。
下面我們來講一下這個地址解析協議ARP
補充一下:IP協議,提供一種無連接不可靠的協議。
已經知道了一個機器的IP位址需要找出其相應的硬體地址——ARP地址解析協議幹的事情。
ARP協議在主機ARP高速緩存中存放一個IP位址到硬體地址的映射表,這些都是該主機目前知道的一些地址。當主機A要向本區域網上的某臺主機B發送數據報時,先在ARP高速緩存中查找這個B的IP位址。
如果有,就查出其MAC地址,再把這個硬體地址寫入MAC幀,之後通過區域網把該MAC幀發往對應的硬體地址。
當查不到的時候主機A就運行ARP,在本區域網上廣播發送一個ARP請求分組,這個請求分組中包含的信息有該主機的IP位址和硬體地址。
本區域網上的所有主機運行的ARP進程都會收到這個ARP請求分組。
當主機B的IP位址與請求分組中的IP位址一致,就會發送一個響應的分組回去,同時在這個響應分組中寫入自己的硬體地址。由於A的IP位址到硬體地址的映射在這個請求分組之中,所以此時B直接把這個地址映射寫入。
注意ARP請求分組是廣播發送的。ARP響應分組是單播發送的。
當A收到響應分組之後就在其ARP高速緩存中寫入主機B的IP位址到硬體地址的映射。
ARP對高速緩存中的每一個項目都設置生存時間,超過生存時間的項目就會從高速緩存中刪除,以防止出現網絡適配器更換等情況。
ARP協議:解決同一個區域網上的主機或路由器的IP位址和硬體地址的問題。如果源主機和目的主機不在同一個區域網上主機就無法解析出另一個區域網上的主機的硬體地址。
下面說一下不同網絡上使用ARP的情況
主機如果要發送IP數據報到另一個網絡上的主機,那麼此時要找到此時和該主機在同一個網絡上的路由器的MAC地址,剩下的事情由該路由器來完成。
如果發送方是路由器,那麼就由路由器來發送這個ARP請求分組,之後如果這個目的主機和該路由器在同一個網絡上就可以知道這個主機的硬體地址。如果不在一個網絡上那麼它會發送給連接在該網上的另一個路由器,之後由另一個路由器按照上方的辦法來找。