ARP(Address Resolution Protocol)地址解析協議,根據IP地址獲取物理地址的一個TCP/IP協議。
由於OSI模型把網絡分為七層,IP地址在OSI模型第三層,MAC地址在第二層,彼此不直接通信。在通過以太網發送IP數據包時,需要封裝第三層(32位IP地址)和第二層(48位MAC地址)的報頭,由於發送數據包時,只知道目標IP地址,不知道其MAC地址,而又不能跨越第二、三層,所有需要使用地址解析協議。
ARP報文格式
字段1:ARP請求的目的以太網地址,全1時,代表廣播地址。 字段2:發送ARP請求的以太網地址。 字段3:以太網幀類型表示后面的數據類型,ARP請求和ARP應答此字段為:0x0806。 字段4:硬件地址類型,硬件地址不止以太網一種,是以太網類型時,值為1。 字段5:表示要映射的協議地址的類型,要對IPv4地址進行映射,此值為0x0800。 字段6和7:表示硬件地址長度和協議地址長度,MAC地址占6字節,IP地址占4字節。 字段8:是操作類型字段,值為1,表示進行ARP請求;值為2,表示進行ARP應答;值為3,表示進行RARP請求;值為4,表示進行RARP應答。 字段9:是發送端ARP請求或應答的硬件地址,這里是以太網地址,和字段2相同。 字段10:是發送ARP請求或應答的IP地址。 字段11和12:是目的端的硬件地址和IP地址。
ARP解析過程 (1)當PC1想發送數據給PC2,首先在自己的本地ARP緩存表中檢查主機PC2匹配的MAC地址 (2)如果PC1緩存中沒有找到響應的條目,它將詢問主機PC2的MAC地址,從而將ARP請求幀廣播到本地網絡的所有主機。該幀中包括源主機PC1的IP、MAC地址,本地網絡中的所有主機都接收到ARP請求,並且檢查是否與自己的IP地址相匹配。如果發現請求中IP地址與自己IP不匹配,則丟棄ARP請求。 (3)主機PC2確定ARP請求中得IP地址與自己的IP地址匹配,則將主機PC1的地址和MAC地址添加到本地緩存表中。 (4)主機PC2將包含其MAC地址的ARP回復消息直接發送回主機PC1(數據幀為單播)。 (5)主機PC1收到PC2發揮的ARP回復消息,將PC2的IP和MAC地址添加至自己ARP緩存表中,本機緩存是有生存期的,默認ARP緩存表有效期120s。當超過該有效期后,則將重復上面過程。主機PC2的MAC地址一旦確定,主機PC1就能向主機PC2發送IP信息
arp報文總共42 bytes。其中以太網首部14 bytes,arp字段28字節
ARP返回報文
硬件類型:表示硬件地址的類型(其中,值為1表示以太網地址,其他還可能表示令牌環地址)。 協議類型:表示要映射的協議地址類型(其中,0x0800表示IP地址,其他還可能是ICMP/IGMP)。 硬件地址長度:指出該報文中硬件地址的長度(ARP報文中,它的值為6)。 協議地址長度:指出該報文中協議地址的長度(ARP報文中,它的值為4)。 op:操作字段,共有4種類型(1.ARP請求,2.ARP應答,3.RARP請求,4.RARP應答)。 發送者mac地址:發送方設備的硬件地址。 發送者ip地址:發送方設備的IP地址。 目的mac地址:接收方設備的硬件地址。 目的ip地址:接收方設備的IP地址。