地址解析协议ARP
从IP地址中解析出MAC地址
MAC地址为硬件地址、物理地址,是数据链路层使用的地址
在网路层源地址和目的地址不变,路由器只根据目的地址进行转发,但是在转发过程中,MAC帧首部中的源地址和目的地址要发生变化
虽然互连在一起的MAC地址体系各不相同,但是IP层屏蔽了复杂的细节,可以使用统一的、抽象的IP地址研究主机间的通信。
在主机的ARP高速缓存中存放一个从IP地址到MAC地址的映射表,并经常更新。
ARP高速缓存
存放IP地址到MAC地址的映射表
ARP工作过程:
当主机A向局域网的某个主机B发送IP数据报时:
如果在ARP高速缓存中有目的主机IP地址和MAC地址的映射,那么直接把MAC地址加到数据链路层首部。
如果没有目的主机IP地址和MAC地址的映射,那么就则通过广播ARP请求分组,在获得目的主机的ARP响应分组后,将目的主机的IP地址和硬件地址写入ARP高速缓冲。
运行ARP查找IP地址对应的MAC地址:
(1)ARP进程在本局域网广播发送ARP请求
(2)局域网上的所有主机运行的ARP进程都收到ARP请求分组
(3)如果主机B的IP地址和请求分组中的IP地址一致,就收下ARP请求分组,并采用单播的方式向主机A发送响应分组,响应分组中包含自己的MAC地址
其余主机对ARP请求分组不予理睬
(4)主机A把主机B的IP地址和MAC地址写入ARP高速缓存,同时主机B把主机A的IP地址和MAC地址写入ARP高速缓存。
在本网络:用ARP找到目的主机的硬件地址
不在本网络:用ARP(广播)找到本网络上的一个路由器的硬件地址,剩下的工作由路由器完成
ARP高速缓存的作用:
如果不使用ARP高速缓存,就必须在网络上通过广播方式发送ARP请求分组,是网络上通信量大大增加。如果使用......,减少...时间
ARP对保存在高速缓存中的每个映射地址项目都设置生存时间,凡是超过生存时间的项目就从高速缓存中删除掉。
为什么不直接使用MAC地址而使用MAC地址和IP地址?
不同网络使用不同的MAC地址,MAC地址之间转换非常复杂。
对以太网MAC地址进行寻址也是极其困难的。
但是IP编址把这个问题简化了。
连接到互联网的主机只需各自拥有一个唯一的IP地址,它们之间的通信就像在同一个网络,即使必须调用ARP找到MAC地址,但这个过程都是有计算机软件自动进行的,对用户不可见。
wireshark实验:
- 在下图中Filter后面的编辑框中输入arp,然后回车或者点击“Apply”按钮
帧中封装的协议类型:0x0806,这个是ARP协议的类型编号。
从帧中可以看到目的地址(Destination)、源地址(Source)
这里的mac是本地主机网关的mac
使用ifconfig/all查看默认网关
使用arp -a查看本地主机的ARP高速缓存表:
可以看到对应的mac地址。 |
可以