ARP协议(地址解析协议)

ARP协议的分类:普通ARP、反向ARPRARP)、免费ARP和代理ARP

网络设备有数据要发送给另一台网络设备时,必须要知道对方的网络层地址(即IP地址)。IP地址由网络层来提供,但是仅有IP地址是不够的,IP数据报文必须封装成帧才能通过数据链路进行发送。数据帧必须要包含目的MAC地址,因此发送端还必须获取到目的MAC地址。通过目的IP地址而获取目的MAC地址的过程是由ARPAddress Resolution Protocol)协议来实现的。

举个简单的例子,如果你有某个人的经度,但是没有某个人的纬度,你是无法找到他的,相反,你有了他的经纬度,你就一定都能找到他,经度代表IP,纬度代表MAC地址。

工作流程:

A主机要给B主机发送数据

第一步:首先,A主机查看自己的ARP缓存当中有没有B的MAC地址,如果没有,则到第二步;

第二步:A找不到B的MAC地址,于是,A想了个办法,A将ARP的请求广播发送到本地所有的网络,A的源IP地址和源MAC地址都包括在里面;

第三步:在本地所有的主机当中,之前我们知道,IP地址工作在3层,在其他主机在解封装到第三层的时候,判断这是不是属于自己的IP,如果不属于,就丢弃;如果属于,就将A的IP和MAC添加到自己的ARP缓存当中。

第四步:主机B将包含自己的IP和MAC地址发送给A

这个过程简单的来说,就是广播请求,单播回应。


                                                       代理ARP

位于不同网络的网络设备在不配置网关的情况下,能够通过ARP代理实现相互通信。

工作流程:

第一步:A给B发送数据,这时候A发送一个ARP广播请求

第二步:路由器识别了A和B不在一个网段内,于是路由器广播了一个请求,主机B接受到路由器的请求后便返回了一个确认;

第三步:同时,路由器告诉A,以后想找B,直接找我就可以了,把你发送的数据包的MAC地址换成我的MAC就好了,我来转发你的数据;

1、主机和路由器发送和接收数据的原理:

主机发送数据:

a):目标主机和自己在同一个网络内,主机发送的数据包的二层MAC地址就是远端主机的MAC地址

b):目标主机和自己不在同一个网络内,主机发送的数据包的二层MAC地址就是自己默认网关的MAC地址

2.主机接收数据

先查看二层MAC地址,如果是自己的MAC,或是自己所在组的组播MAC,或是广播MAC,则继续向上解封装,否则丢弃;

然后查看三层IP地址,如果是自己的IP,或是自己所在组的组播IP,或是广播IP,则接收,否则丢弃。


3.路由器发送数据:

a):目标主机和自己在同一个网络内,路由器发送的数据包的二层MAC地址就是远端主机的MAC地址

b):目标主机和自己不在同一个网络内,主机发送的数据包的二层MAC地址就是下一跳路由器的MAC

PS:数据包在经过路由器转发的时候,其IP地址不变,MAC地址改变



RARP:反向地址解析协议

作用:已知MAC,解析IP


无故ARP(免费ARP):SIP和DIP是同一个地址

作用:用来检测IP地址的唯一性(如果有主机回应这个ARP,则说明地址重复)