根据TCP/IP协议,TCP/IP能够分为四个层面,从上到下分别是:缓存
当一台主机将以太网数据帧发送到位于同一局域网上的另外一台主机时,是根据48bit的以太网地址来肯定目的接口的。设备驱动程序不检查IP数据报中的IP地址。而为了解决这个问题,就须要一种协议为32bit的IP地址和48bit的以太网地址(MAC)提供映射,这就是ARP协议。安全
ARP协议的工做过程大体以下:
假设主机A要向同一个网络上的主机B发送。 主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;
主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;
当主机A要与主机B通讯时,地址解析协议能够将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,如下为工做流程:网络
第1步:根据主机A上的路由表内容(或是经过DNS),IP肯定用于访问主机B的转发IP地址是192.168.1.2。而后A主机在本身的本地ARP缓存中检查主机B的匹配MAC地址。(可使用arp -n查看ARP缓存)操作系统
第2步:若是主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的全部主机,也就是发送一个目标MAC地址为6个ff的帧。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求而且检查是否与本身的IP地址匹配。若是主机发现请求的IP地址与本身的IP地址不匹配,它将丢弃ARP请求。 ARP请求和应答分组的格式以下:
其中前10bit是以太网首部,后面28bit是ARP请求应答部分:代理
第3步:主机B肯定ARP请求中的IP地址与本身的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。对象
第4步:主机B将包含其MAC地址的ARP回复消息直接发送回主机A。接口
第5步:当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的(默认有效的完整表项通常为20分钟,而不完整表项为3分钟),生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦肯定,主机A就能向主机B发送IP通讯了。
路由
ARP代理:若是ARP请求是经过一个网络上的主机发往另外一个网络的主机,那么链接两个网络的路由器就能够回答该请求,这个过程称做ARP代理。 ARP代理的工做过程与上面相似,不一样之处在于:若是主机A向另外一个网络的主机B发送ARP请求,这时候路由器发现了请求者A在本身的子子网中并且请求对象D在其它子网中。而后路由器就会讲本身的MAC地址和B的IP地址发给A。这样A全部发给B的请求就由路由器来转发了。工作流
根据ARP的原理,不难发现,在ARP工做过程之中是不安全的,例如能够经过伪造ARP应答报文使得原本由A传到B的消息,变成由A到C。A致使目标计算机与网关通讯失败,更会致使通讯重定向,全部的数据都会经过攻击者的机器。 为了防止ARP攻击,有几个简单的思路:it