地址解析协议ARP

ARP协议(Address Resolution Protocol),从IP地址映射到MAC地址。

主机的通信在局域网之间可以通过MAC地址来进行通信。而在网络层是通过IP地址来辨识主机的,所以一台主机会有一个IP地址和MAC地址。
然而互联网是由一个个局域网组成的,当两台主机要进行跨网通信的时候,光靠一个IP地址或者一个MAC是不够的,所以需要两者一起工作,即将MAC地址和IP地址进行绑定,实现跨网通信。那么工作的时候也就需要将两个地址进行解析。

基于IP地址和MAC地址,可以有两种解析方式:

1、直接映射
2、动态绑定

因为IP地址的长度为4个字节,MAC地址为6个字节。用直接映射,IP的地址空间不足以映射所有的MAC的地址,所以必须使用动态绑定的方法,相应的协议为ARP


ARP的思想就是:

广播询问,单播回应

用点名的思维来考虑,就是老师向所有学生报某个学生的名字,对应的某个学生就会喊到。
而在局域网中,具体的步骤如下:

主机A向主机B发送数据,主机A不知道主机B的MAC地址
于是主机A向全体发送一个广播请求,询问“谁的IP地址是IPb,请把MACb的地址告诉我”
其他主机接受到广播请求,发现不是询问自己的MAC地址,就会忽略;只有主机B会做出回应,将自己的MAC地址告诉A

总结:
1)发送发主机发送一个ARP请求报文,该报文以广播方式发送,其中包含接收方的IP
2)网络上所有的主机都会接受到这个请求,他们把请求中包含的接收方IP地址与自身的IP地址进行比对,如相同,则向发送方回应,回应中包含了自己的MAC地址;否则不做回应

跨网通信时ARP的步骤
假设主机A,B的IP和MAC地址为IPa,MACa和IPb,MACb;路由器R的I1接口的IP和MAC地址为IP1,MAC1,I2接口的IP和MAC地址为IP2,MAC2。
主机A向主机B发送数据前,通过IP地址的网络号判断主机B是否和自己在同一网段内。若主机B不在同一网段内,就必须通过路由器进行数据报的转发。
具体过程:
1)主机A向R发送数据前,先通过ARP获取R的MAC地址MAC1
2)A把数据报投递给R的I1接口。此时IP数据报的目的IP地址为IPb,但MAC地址为MAC1
3)R把数据报通过I2接口转发,转发之前通过ARP获取主机B的MAC地址
4)R把数据报投递给主机B,此时数据报的源IP地址为IPa,但源MAC地址为MAC2

即在单向传输过程中,数据报的源IP和目的IP不变,需要改变的是MAC地址。


ARP报文格式
地址解析协议ARP
硬件类型:指明物理网络的类型
协议类型:上层协议的类型
物理地址长度:MAC地址的长度,以太网为6
协议地址长度:上层地址的长度,IP为4
OP(操作):指明用于请求还是响应,“1”表示请求,“2”表示响应
前8个字节固定
【RARP报文类似于ARP报文,只是OP中用“3”表示请求,“4”表示响应】


为提高通信效率,在实现ARP协议时,会使用ARP缓存,存放最近解析的IP/MAC
对。有效时间一般设置在20分钟

其他提高通信效率的措施

1)使用捎带机制,在请求其他主机的物理地址时,会把自己的IP/MAC关系也写到请求报文中
2)主机在联网时,主动广播自己的IP/MAC映射关系

嗅探器

在共享式网络环境下:

在一般工作模式下,网卡会把MAC帧的目的MAC地址与自己的地址进行比较,一致时会接受帧,否则忽略。
然而当网卡工作在混杂模式下,就不会进行这种检查,它会接受网络中所有的数据报。
防范这种攻击的有效途径之一就是采用交换式网络架构。

关于ARP欺骗和会话劫持

请自行百度,这里不详述,网络上有很多说明