概述
网络层使用IP地址传输, 但在数链层上的传输还是需要MAC地址. 但IP地址和MAC并不存在一个简单的映射关系. 他们之间的关系是动态的, 所以需要ARP协议动态维护其对应关系.
已经知道一台主机的IP地址, 需要找出其物理MAC地址, 则需要使用地址解析协议ARP.
过程
A为了获得B的MAC地址, 首先要通过广播发送一个ARP请求包, 这个包中包含了自己的IP和MAC地址, 以及请求的MAC地址的IP. (目标MAC地址为全1, 表示广播本网段的所有主机)
在一个局域网内的所有主机都会收到该ARP请求, 如果请求的IP地址与自己相同, 则回复自己的IP以及MAC地址, 如果发现请求的IP与自己的不同则不予理睬.
ARP协议可以归纳出下列四种典型情况
- 发送方是主机, 要把IP数据报发送到本网络上的另一个主机, 这时使用ARP找到目的主机的硬件地址
- 发送方式主机, 要把IP数据报发送到另一个网络上的一个主机, 这时使用ARP找到本网络上的一个路由器的硬件地址, 剩下的工作交给路由器
- 发送方是路由器, 要把IP数据报转发到本网络上的一个主机, 这时用ARP找到目的主机的硬件地址.
- 发送方是路由器, 要把IP数据报转发到另一个网络上的一个主机, 这时使用ARP找到下一个转发的路由器的硬件地址, 剩下的交给该路由器完成.
在许多情况下要多次使用ARP, 但也只是上述几种情况的反复使用而已.
ARP报文
请求报文
Destination MAC地址 : FF : FF : FF : FF : FF : FF 广播地址