ARP协议介绍
ARP-地址解析协议,可以利用ip地址找到网卡的物理地址。相反也可以通过MAC(网卡物理地址名称)找到IP地地址。在TCP/IP网络环境下,每个主机都分配了一个32位的IP地址,这种互联网地址是在网际范围标识主机的一种逻辑地址。为了让报文在物理网路上传送,必须知道对方目的主机的物理地址。这样就存在把IP地址变换成物理地址的地址转换问题。以以太网环境为例,为了正确地向目的主机传送报文,必须把目的主机的32位IP地址转换成为48位以太网的地址。这就需要在互连层有一组服务将IP地址转换为相应物理地址,这组协议就是ARP协议。
ARP 请求建立本地ARP表项的过程是怎样的呢?
先来回忆一下IP包到MAC帧封装的过程,MAC帧封装是根据路由下一跳的IP地址,进行本地ARP查表,然后封装MAC帧的。如果ARP表项中没有对应的ARP表项,这时数据包的发送设备会发送ARP请求(广播).
广播这里提一下:之前讲到过二层的通信过程,收到MAC帧后会把MAC帧头的目的MAC与本机比较,相同则留下校队后交付上层,不同则丢弃;问题就来了,ARP是三层协议,发送ARP请求就是希望得到目的IP的MAC地址,所以这个目的MAC地址怎么填写呢?答:TCP/IP规定,目的IP为FF-FF-FF-FF-FF-FF为广播地址,所有设备接收到以该地址为目的地址的MAC帧,都需要接收处理后交付上层;
ARP请求的格式是这样的:
简单介绍:
硬件类型指的是网络的类型,这里的讲解都是以以太网为例的,此标志位1
协议类型:如IPV4时此字段为0080;
硬件长度:8位字段,单位:字节,以太网为6,即6字节,6*8=48bit
协议长度:例如IPV4时,此处定义为4
操作:这个地方需要注意,ARP请求和ARP应答的区别之一;1:请求;2:应答。
发送发的IP,MAC;
目的放得源IP,MAC;(注意ARP请求时,由于不知道目的MAC地址,此处为全0)
由于ARP请求的目的地址是FF-FF-FF-FF-FF-FF,同一个广播域内的所有设备都会接收到这个请求,二层对于FF-FF-FF-FF-FF-FF为目的 的MAC帧的处理方式是接收并交付三层处理。三层接收到二层交付的IP包后会对数据段进行分析比较,这时分两种情况:
数据段的目的IP地址是本机:
1.把ARP请求方得IP与MAC对应关系存入本地ARP表(这一点很重要,安全部分还会讲到);
2.发送ARP响应,格式见ARP响应图;
数据段的目的IP地址不是本机:
丢弃该ARP请求;
ARP请求过程(二)
上节介绍了ARP请求的帧格式,和ARP请求发送接收和应答过程;为了大家更好的理解ARP请求,这里举例来介绍一下:
如图:
PC A IP:192.168.1.A MAC: AA-AA-AA-AA-AA-AA
PC B IP:192.168.1.B MAC: BB-BB-BB-BB-BB-BB
PC C IP:192.168.1.C MAC CC-CC-CC-CC-CC-CC
PC D IP: 192.168.1.D MAC DD-DD-DD-DD-DD-DD
PC A与PC B通信,但是由于 PC A的ARP表中没有 PC B的表项,于是进行ARP请求,根据上一节 ARP请求格式应该为:
其中协议字段的0X0806代表ARP协议报文
目的MAC为广播MAC,源MAC为IP A的mac
交换机在接收到此MAC帧后会根据MAC帧的目的地址转发,由于使用全F的广播地址,交换机进行广播域内的广播:PC B PC C PC D 三台PC接收到ARP请求报文后,接收报文,交付三层处理,其中PC C PC D丢弃报文,而由于报文中的目的IP与PC B IP相同,PC B将报文中的源IP MAC对应存入ARP表项(已有则覆盖,这步很关键),并发出ARP响应报文格式为:
区别大家自己观察;
结论,ARP请求是以广播形式发出,而ARP响应则是单播形式。