一、什么是ARP
ARP是地址解析协议,提供了一种在IPv4地址和各种网络技术使用的硬件地址之间的映射。
二、为什么需要ARP
IP协议的设计目标是为穿越不同类型物理网络的分组交换提供互操作,这需要网络层软件使用的地址和底层网络硬件使用的地址之间进行转换。另外在以太网环境中,数据的传输所依赖的是MAC地址而非IP地址(在以太网中,数据传输的是帧)。
三、ARP例子分析
如图,当A要和C通信时,A没有C的mac地址,仅有IP地址,二层通讯时依靠的是mac地址,而非IP地址。因此A需要知道C的mac地址才能与C进行通讯。
此时A需要获取C的mac地址,那么他就可以通过广播一个ARP请求的帧,里面包括:
A的IP地址、A的mac地址、C的IP地址和一些信息。
当B收到这个广播后,发现不关自己的事,就丢弃。
当C收到这个广播,发现是自己的IP地址,就会响应A,注意,这里是单播,因为C会把接收到的帧里面的IP及MAC地址加入到自己的ARP地址缓存表,因此他能直接发送给A。
当A接收到这个响应帧以后,也会将信息添加,然后建立通讯。
ARP代理
这个看起来不能通信,我也没有去做实验(当初学的时候那会没事搞这种花里胡哨的),但是从三本书里我都看到了这个的类似实验,成功的。过后我再去测试。
A要和C通信,那么通过ARP代理(在路由器上面),建立通信。
假设A仅知道C的IP地址,那么A会先广播ARP请求,获取到直连的G0口的MAC地址,然后将数据包发送给路由器。
路由器进行路由表查询,没有找到CD的IP地址(20.2.0.2/8,A的也改成0.2,我复制忘记修改了),但是G1和目的IP同一网段,于是会从G1口发出ARP请求广播包。
C收到了该广播包,便会响应。
其中有些问题:(需要对着arp数据帧格式进行思考)
1、这个一步一步的寻找过程中,这个ARP请求包是否像IP数据包那样,在传输过程中的源目的MAC地址会改变。
2、C进行响应时,将自己的mac地址直接发送回给A还是一步一步反过来重新进行。因为如果之前的包的源mac改变了,那么C存入ARP缓存表里面的mac地址就是上一个接口的mac地址,就不能直接返回A。
这两个问题不影响对ARP的作用的理解。