ARP通信协议过程简析

ARP通信协议过程简析

简介

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存,而后ARP请求都会优先在主机的缓存中寻找MAC地址。
小思路:
1.从ARP功能来看,是主要实现IP到MAC之间的映射,所以属于链路层的协议。
2.从数据封装的角度来看,ARP是基于Ethernet协议,而且从以太网数据帧的格式来看,Ethernet协议有独立的Type类型,ARP是0x0806,IP是0x0800,这个角度来看ARP和IP是平等的,所以它又属于网络层,一些好多教材也将ARP划分到网络层。

目前主流是将ARM划分到数据链路层。

ARP协议存在于哪种网络通信中

ARP的功能是实现IP地址到物理地址的映射,这里的物理地址是指MAC地址,那么问题是什么样的物理接口有MAC地址呢?答案是Ethernet接口,所以如果A和B通信的接口是Ethernet接口那么他们之间的通信才需要知道彼此的MAC地址,也就是说才需要ARP去获得MAC地址。换句话说:通信双方A与B的物理接口是Serial interface 且二层封装是PPP/HDLC就不需要ARP,因为PPP/HDLC封装头部信息没有MAC地址信息!

局域网同网段下的ARP流程

如果主机A要想通过B的IP地址确定其MAC地址并和B进行数据交互,需要按照ARP协议的”广播请求和单播应答”来确定主机B的MAC地址,流程如下:
1) A先查看自己的ARP高速缓存表中是否有B主机的MAC地址记录。

2) 如果A的ARP高速缓存表中有B的MAC地址记录,则直接通过这个MAC地址进行数据的传输。

3) 如果A主机的ARP高速缓存中没有B主机的记录,则会向局域网的所有主机广播一个ARP请求,寻找B主机的MAC地址。

4) 当B主机收到A主机广播的ARP请求后,就会直接给A主机回复一个ARP数据包。

5) 当A主机收到B主机发送过来的请求后,将B的MAC地址写入高速缓存中,然后通过该MAC地址,A主机向B主机进行数据的传输。

局域网不同网段下的ARP流程

对于跨网段的ARP工作我们首先需要知道的是:

ARP请求以广播发送、以单播回应;

路由器隔离广播。每一个网段都是独立的广播域;

跨越网段通信需要使用网关的mac地址。

ARP通信协议过程简析
1、主机A有数据发往主机B,数据封装IP之后发现没有主机B的mac地址;然后查询ARP,ARP回应:“我在192.168.3.0/24网段,目标地址在192.168.4.0/24,不属于同一网段,需要使用默认网关”;ARP发现默认网关是192.168.3.2,但是没有网关mac地址,需要先进行查询;

2、主机将数据包先放到缓存中,然后发送ARP查询报文:封装自己的mac地址为源mac,目标mac地址写全F的广播地址,请求网关192.168.3.2的mac地址。然后以广播方式发送出去;

3、路由器收到广播数据包,首先将原192.168.3.1添加到自己的mac地址表中,对应mac地址为0800.0222.2222。路由发现是请求自己的mac地址,然后路由回复一个ARP应答:封装自己的IP地址为源IP自己的mac地址为源mac,主机A的IP为目的IP主机A的mac为目的mac,发送一个单播应答“我是192.168.3.2.我的mac地址为0800.0333.2222”;

4、主机收到应答后,将网关mac地址对应192.168.4.2(跨网关通信,其他网段IP地址的mac地址均为网关mac),然后将缓存中的数据包,封装网关mac地址进行发送;

5、路由收到数据包,检查目的IP地址,发现不是给自己的,决定要进行路由,然后查询路由表,需要发往192.168.4.0网段中的192.168.4.2地址。路由准备从相应接口上发出去,然后查询mac地址表,发现没有主机B的映射。路由器发送arp请求查询主机B的mac地址(原理同2、3步,主机B收到请求后首先会添加网关的mac地址,然后单播回复arp请求);

6、路由器收到主机B的mac地址后,将其添加到路由mac地址表中,然后将缓存中的数据2层帧头去掉,封装自己的mac地址为源mac,主机B的mac地址为目的mac(源和目的IP地址不变),加上二层帧头及校验,发送给主机B;

7、主机B收到数据之后,进行处理,发送过程结束;

8、如果主机B收到数据后进行回复,主机B会进行地址判断,不在同一网段,然后决定将数据发送给网关,主机B查询mac地址表获得网关mac地址,将数据封装后发送(arp地址解析的过程不再需要了,mac地址表条目有一定的有效时间),网关收到数据后直接查询mac表,将二层帧mac地址更改为A的mac发送出去。如此,主机A收到主机B的回复;

综上在跨网段通信过程中有以下过程:
1、判断地址是否同一网段
2、查询目的IP地址的mac(发送arp请求)