数通-ARP协议
什么是ARP协议?
ARP是地址转换协议(Address Resolution Protocol)的英文缩写,它是一个链路层协议,工作在OSI模型的第二层,在本层和硬件接口间进行联系,同时对上层(网络层)提供服务。
为什么需要ARP协议?
当网络设备有数据要发送给另一台网络设备时,必须要知道对方的网络层地址(例如,因特网的IP地址)。对于因特网而言,IP地址由网络层来提供,但是仅有IP地址是不够的,IP数据报文必须封装成帧才能通过数据链路进行发送。而数据帧必须要包含目的MAC地址,因此发送端还必须要获得目的MAC地址。
每个网络设备在数据封装前都需要获取下一跳的MAC地址,IP地址由网络层来提供,MAC地址通过ARP协议来获取。
ARP协议是TCP/IP协议簇中的重要组成部分,它能够通过目标设备的IP地址来获取目标设备的MAC地址,从而实现在数据链路层上传输。
我们知道二层的以太网交换设备并不能识别32位的IP地址,它们是以48位以太网地址(就是我们常说的MAC地址)传输以太网数据包的。也就是说IP数据包在局域网内部传输时并不是靠IP地址而是靠MAC地址来识别目标的,因此IP地址与MAC地址之间就必须存在一种对应关系,而ARP协议就是用来确定这种对应关系的协议。
ARP协议的功能是什么?
ARP提供了将一个网络层地址(例如,因特网的IP地址)解析为一个链路层地址(即MAC地址)的机制。
以太网地址解析协议——将网络层协议地址转换为48位以太网地址以在以太网硬件基础上传输。
ARP只为在同一个子网上的主机和路由器接口解析IP地址。
ARP的工作原理
ARP表:每台主机或路由器在其内存中都有一个ARP表(ARP table),这张表包含IP地址到MAC地址的映射关系。该ARP表也包含一个寿命(TTL)值,它指示了从表中删除每个映射的时间。
网络设备通过ARP报文来发现目的MAC地址。ARP报文中包含以下字段:
? Hardware Type表示硬件地址类型,一般为以太网;
? Protocol Type表示三层协议地址类型,一般为IP;
? Hardware Length和Protocol Length为MAC地址和IP地址的长度,单位是字节;
? Operation Code指定了ARP报文的类型,包括ARP Request和ARP Reply;
? Source Hardware Address指的是发送ARP报文的设备MAC地址;
? Source Protocol Address指的是发送ARP报文的设备IP地址;
? Destination Hardware Address指的是接收者MAC地址,在ARP Request报文中,该字
段值为0;
? Destination Protocol Address指的是接收者的IP地址。
同一网段内
假设主机A向位于同一子网的主机C发送数据,在发送数据前,主机A会先查找ARP表。
如果ARP表中存在主机C的IP-MAC对应关系,则直接采用该MAC地址来封装帧,然后将帧发送出去。
如果主机A的ARP表中不存在主机C的IP-MAC对应关系,则主机A通过ARP模块来获取主机C 的MAC地址。
①主机A发送ARP Request报文请求主机C的MAC地址。ARP Request报文中包含源IP地址(主机A的IP地址)、目的IP地址(主机C的IP地址)、源MAC 地址(主机A的MAC地址)、目标MAC地址(00-00-00-00-00-00)。ARP Request报文被封装在以太帧里。ETH_II帧头中的源MAC地址为主机A的MAC地址,目标MAC地址为广播地址FF-FF-FF-FF-FF-FF。
②当交换机接收到此以太帧后,发现此数据帧是广播帧,因此,会将此数据帧从非接收的所有接口发送出去。
③同一子网的所有的主机接收到该ARP Request报文后,都会检查ARP报文的目标IP地址字段来判断是否请求自己的MAC地址。如果不是向自己发送的请求,则不会响应该ARP Request报文。
④主机C收到ARP Request广播报文后,先将ARP报文中的源MAC地址(主机A的MAC地址)和源IP地址(主机A的IP地址)的映射关系记录到自己的ARP表中,然后向主机A回应ARP Reply报文。ARP Reply报文通过单播传送。ARP Reply报文中的源IP地址是主机C自己的IP地址,目标IP地址是主机A的IP地址,目标MAC地址是主机A的MAC地址,源MAC地址是主机C自己的MAC地址,同时Operation Code被设置为Reply。ARP Reply报文被封装在以太帧里。ETH_II帧头中的源MAC地址为主机C的MAC地址,目标MAC地址为主机A的MAC地址。
⑤当交换机接收到携带ARP Reply的以太帧后,通过查看以太帧的目标MAC地址,发现此帧是发送给主机A的单播帧,将该帧从连接主机A的接口发送出去。
⑥主机A收到ARP Reply以后,会检查ARP报文中目的MAC地址是否与自己的MAC匹配。如果匹配,ARP Reply报文中的源MAC地址(主机C的MAC地址)和源IP地址(主机C的IP地址)会被记录到主机A的ARP表中。
ARP相关链接:
ARP欺骗病毒专题
详解RFC 826文档