1. 程式人生 > >ARP:將32位的IP地址轉換為48位的實體地址。

ARP:將32位的IP地址轉換為48位的實體地址。

ARP:將32位的IP地址轉換為48位的實體地址。

IP地址是網路層的地址,連上網際網路的每一臺主機的每一個介面都會有一個IP地址,每臺主機的每個網絡卡均有唯一的實體地址,實體地址在生產時就已經定死,無法改變,而每個網絡卡的IP地址是可以改變的(例如連上不同的wifi,IP地址也會不同)。

 

為什麼有了IP地址還要有MAC地址,有MAC地址還要有IP地址?

首先要明白,物理網路是有許多結構的,不同的物理網路具有不同的mac地址格式,為了讓不同的網路進行通訊,那麼就使用統一的IP地址好了,

mac地址是資料鏈路層的地址,並且mac地址出現時間比IP地址要早,保留mac地址很可能是為了向後相容已有的網絡卡晶片,同時,並不是所有的網路都使用IP協議

 

ARP報文格式如下:

硬體型別(16位):指定實體地址的型別,1表示乙太網。

上層協議型別(16位):指定要將MAC地址對映成什麼協議的地址。0x0800表示IP地址。

MAC地址長度(8位):指定MAC地址的長度,單位是位元組。

協議地址長度(8位):指定協議地址的長度,單位為位元組。

操作型別:1表示ARP請求、2表示ARP迴應、3表示RARP請求,4表示RARP迴應。

接下來為傳送源的實體地址和協議地址(由於迴應時要知道傳送個誰,以此來封裝以太幀),目的實體地址和協議地址。

封裝ARP請求時,傳送源除了目的實體地址外都會填寫。

 

當路由器或主機選擇了某條路由時,首先會查詢ARP快取,若快取中有對應IP地址的實體地址,則以此封裝以太幀,否則會廣播(為二層廣播)ARP報文,每個主機接收到ARP請求報文後,會快取傳送源的IP——MAC對到ARP快取中,目的主機會發送ARP迴應(此時為單播),當傳送源接收到迴應時,會將目的方的IP——MAC對存放在ARP快取中。在點到點的物理連線中,是不會用到ARP報文的,在啟動時雙方都會通告對方自己的IP地址,此時物理層的封裝不需要MAC地址。windows上可以使用arp -a檢視本機的ARP快取。ARP快取中的每個條目的最大存活時間為20分鐘(從條目建立時開始計時)。

ARP代理:

之前說ARP請求是廣播的,我們知道路由器是分割廣播域的(這部分在CCNA總結中會講),如果我們要查詢的IP地址在外網怎麼辦?此時就需要ARP代理,當傳送源廣播ARP請求時,本地網路上不會有主機迴應(因為IP地址是外網的),此時路由器會將回應該請求,則傳送源誤認為路由器就是目的主機,會將報文全部轉發給它,在由路由器轉發報文,則該路由器就被稱為ARP代理。

免費ARP:

在主機開機配置時,會發送一個目的IP地址(ARP報文段中的目的IP地址)為自己IP地址的ARP請求報文,該報文稱為免費ARP,其作用如下:

1、讓主機確認本地網路上是否有與自己IP地址相同的主機,若有,則ICMP錯誤報文被返回。

2、若接收主機ARP快取中本身就有傳送源主機的IP——MAC對,則會更新,否則,會快取傳送源的IP——MAC對,這種情況在傳送主機更換了物理網絡卡並重啟後出現

ARP:將32位的IP地址轉換為48位的實體地址。