ARP协议(地址解析协议)
ARP协议的分类:普通ARP、反向ARP(RARP)、免费ARP和代理ARP
网络设备有数据要发送给另一台网络设备时,必须要知道对方的网络层地址(即IP地址)。IP地址由网络层来提供,但是仅有IP地址是不够的,IP数据报文必须封装成帧才能通过数据链路进行发送。数据帧必须要包含目的MAC地址,因此发送端还必须获取到目的MAC地址。通过目的IP地址而获取目的MAC地址的过程是由ARP(Address 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,则说明地址重复)