1、ARPARP协议详解协议详解引言o 在链路层上,主机和路由器用它们的物理地址来标志,即48 bit物理地址。物理地址是本地地址,在本地范围内是唯一的,但是在全局上不一定,它通常用硬件实现。o 在网络层上,主机和路由器用逻辑地址来标志,逻辑地址在互联网全局上是唯一的。在TCP/IP协议族中称为IP地址,长度是32位(IPv4)。引言o 在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。而在TCP/IP协议栈中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的
2、主机的IP地址。因此需要能够将逻辑地址和相应的物理地址之间进行映射。完成这样的映射可使用静态映射和动态映射。引言o 静态映射:创建一个表,存储逻辑地址和物理地址的关联关系。然后将网络上的每个主机都存储这个表。缺点是映射表必须周期的更新,增加了网络的开销o 动态映射:地址解析协议ARP和逆地址解析协议RARPARP48bit MAC地址地址32bit IP地址地址RARP什么是ARPo ARP,Address Resolution Protocol即地址解析协议,实现通过IP地址得知其物理地址。在TCP/IP网络环境下,每个主机都分配了一个32位的IP地址,这种互联网地址是在网际范围标识主机的一
3、种逻辑地址。为了让报文在物理网路上传送,必须知道对方目的主机的物理地址。这样就存在把IP地址变换成物理地址的地址转换问题。以以太网环境为例,为了正确地向目的主机传送报文,必须把目的主机的32位IP地址转换成为48位以太网的地址。这就需要在互连层有一组服务将IP地址转换为相应物理地址,这组协议就是ARP协议。o Arp只有两种封包:arp request和arp replyARP-工作原理o 每台主机或路由器都有一个ARP缓存表,用来保存IP地址与MAC地址的对应关系。o 以主机A(192.168.1.5)向主机B(192.168.1.1)发送数据为例。当发送数据时,主机A会在自己的ARP缓存表
4、中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了;ARP-工作原理o 如果在ARP缓存表中没有找到目标IP地址,主机A就会在网络上发送一个广播arp request,请求包中包含了A主机的ip地址和mac地址。o 网络上其他主机并不响应ARP询问,直接丢弃,只有主机B接收到这个帧时,才以单播方式向主机A做出回应arp reply,并带上自己的ip和mac地址,而B主机收到A的请求包时也会将A主机的IP与MAC对应关系保存在自己的缓存区ARP-工作原理o A收到B的回应包后便可得知B的MAC地址,将其存入ARP缓存。此后A再向B发送数据时
5、,就可以直接从缓存表中查找B的地址了,然后直接把数据发送给B。o 由于B在接收A的请求时也保存了A的地址信息,因此B要向A发送数据也可以直接从缓存表中查找。o ARP缓存表设置了生存时间TTL,在一段时间内(一般15到20分钟,跟操作系统有关)如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。 ARP工作原理o ARP的操作示意图ARP-分组格式ARP 分组格式o 硬件类型:16bit,定义网络类型。以太网是类型 1,取值0 x0001。o 协议类型: 16bit,定义协议类型。对应IPv4协议,值为 0 x0800。o 硬件长度:8bit,定义以字节为单
6、位的物理(硬件)地址长度,即n的值。以太网是6。o 协议长度:8bit,定义以字节为单位的逻辑(协议)地址长度,即m的值。IPv4的值为4。1. 操作码:16bit,定义分组的类型。ARP请求为0 x0001, ARP应答为0 x0002。 RARP请求为0 x0003, RARP应答为0 x0004。 ARP-分组格式o发送方硬件地址、发送方协议地址、目的硬件地址和目的协议地址:它们是可变长度字段。源和目的硬件地址对应以太网都是48位地址。源和目的协议地址对应IPv4协议是32位地址。ARP-分组格式l对于一个对于一个 ARP 请求请求来说,除来说,除目的硬件目的硬件地址外的所有其他字段都有
7、填充值地址外的所有其他字段都有填充值。当。当系统收到一份目的为本机的系统收到一份目的为本机的ARP 请求报请求报文后,它就把硬件地址填进去,然后用文后,它就把硬件地址填进去,然后用两个发送端地址分别替换两个目的地址,两个发送端地址分别替换两个目的地址,并把操作字段置为并把操作字段置为2,最后把它发送回去。,最后把它发送回去。思考:各字段的填充值是什么?思考:各字段的填充值是什么? ARP-封装封装o ARP/RARP分组直接封装在链路帧中 帧类型帧类型 ARP/RARP 报文报文 PAD 字节字节 2 28 18 ARP/RARP 报文封装在以太网帧中格式报文封装在以太网帧中格式 CRC 4
8、硬件硬件 类型类型 目的地址目的地址 源地址源地址 6 6 协议协议 类型类型 硬件地硬件地 址长度址长度 协议地协议地 址长度址长度 操作操作 类型类型 发送者发送者 以太网地址以太网地址 目标目标 以太网地址以太网地址 发送者发送者 IP 地址地址 目标目标 IP 地址地址 2 2 2 1 1 6 6 4 4 ARP:0 x0806 RARP: 0 x8035 1:ARP 请求请求 2:ARP 应答应答 3:RARP 请求请求 4:RARP 应答应答 0 x0800 0 x06 0 x04 0 x0001 ARP高速缓存高速缓存o问题:发送端往往有多个IP数据报发送到同一个目的端。如果对发
9、送到同一个主机或路由器的每一个数据报都使用ARP,势必会带来较大的开销。广播ARP请求不仅要耗费带宽,而且使得本地网络中的每台主机都要处理该广播帧,或忽略或给出响应帧。 。 ARP高速缓存高速缓存o可以使用ARP高速缓存表解决这个问题。o每个主机或路由器上都有一个 ARP 高速缓存表。这个高速缓存表存放最近 Internet 地址到硬件地址之间的映射记录。高速缓存表中每一项的生存时间有限,起始时间从被创建时开始算起。 ARP高速缓存高速缓存UDPTCPIPICMPIGMPARP BCAARPCache214651. ARP cache is checked2. ARP request is s
10、ent3. ARP entry is added4. ARP reply is sent5. ARP entry is added6. IP packet is sentARPCache3Ethernet ARP高速缓存高速缓存u 按照缺省设置,按照缺省设置,ARPARP高速缓存中的项目是动态的,每当发送一个指定地高速缓存中的项目是动态的,每当发送一个指定地点的数据报且高速缓存中不存在当前项目时,点的数据报且高速缓存中不存在当前项目时,ARPARP便会便会自动添加自动添加该项目该项目u ARPARP高速缓存中地址映射表项的超时高速缓存中地址映射表项的超时u问题:问题:由于由于IPIP地址与物理
11、地址的地址与物理地址的映射关系映射关系可能因网络接口或可能因网络接口或IPIP地地址的变化而址的变化而发生变化发生变化,对于,对于ARPARP高速缓存中地址映射表项都存在一个高速缓存中地址映射表项都存在一个过时过时的问题。一旦高速缓存的项目被输入,它们就已经开始走向失的问题。一旦高速缓存的项目被输入,它们就已经开始走向失效状态。效状态。u解决:解决:给给ARPARP高速缓存中的每一个表项设置一个超时值,使得每个高速缓存中的每一个表项设置一个超时值,使得每个地址映射表项都有一个生命期。地址映射表项都有一个生命期。u 例如,在例如,在Windows NTWindows NT网络中,如果输入项目后不
12、进一步使用,物理网络中,如果输入项目后不进一步使用,物理/IP/IP地址对就会在地址对就会在2 2至至1010分钟内失效。因此,如果分钟内失效。因此,如果ARPARP高速缓存中项目高速缓存中项目很少或根本没有时,是正常的。很少或根本没有时,是正常的。 ARP高速缓存高速缓存u 静态静态ARPARP表项表项 一种控制地址映射表项超时值的方法是在一种控制地址映射表项超时值的方法是在ARP ARP 高速缓存中创建高速缓存中创建一个一个静态表项静态表项。静态表项是永不超时的地址映射表项。静态表。静态表项是永不超时的地址映射表项。静态表项主要用在一台主机经常向另一台主机发送项主要用在一台主机经常向另一台
13、主机发送ARPARP请求的情况下请求的情况下,为了提高效率,减少不必要的开销。,为了提高效率,减少不必要的开销。 静态表项也有可能发生变化静态表项也有可能发生变化:u使用使用arparp实用程序可以人工删除静态表项。实用程序可以人工删除静态表项。u重新启动主机也会使静态表项丢失。重新启动主机也会使静态表项丢失。u动态表项与静态表项冲突时,以动态表项为准动态表项与静态表项冲突时,以动态表项为准问题:静态表项是固定不变的吗问题:静态表项是固定不变的吗? ? ARP实用命令实用命令u 可以通过可以通过arparp命令查看、添加和删除命令查看、添加和删除高速缓存中的内容。高速缓存中的内容。 u ARP
14、ARP命令命令arparp命令可以显示、添加和删除命令可以显示、添加和删除arparp内容。在内容。在windowswindows和和unixunix系统中都系统中都有这个命令。有这个命令。 arp -a inet_addr arp -a inet_addr 显示地址映射表项,显示地址映射表项, 为可选项。为可选项。 arp -g inet_addr arp -g inet_addr 功能与功能与arp -a inet_addrarp -a inet_addr相同。相同。 arp -d inet_addr arp -d inet_addr 删除由删除由inet_addrinet_addr所指定
15、的表项。所指定的表项。 arp -d arp -d * * 删除所有表项删除所有表项 arp -s inet_addr phys_addr arp -s inet_addr phys_addr 增加由增加由inet_addrinet_addr和和phys_addr phys_addr 指定的静态表项。指定的静态表项。 arp /? arp /? 显示帮助显示帮助说明:说明:1、使用、使用ARP命令查看高速缓存内容前最好先命令查看高速缓存内容前最好先ping 此台主机或路由器。此台主机或路由器。2、为了能抓到、为了能抓到ARP协议包,最好在命令行中运行协议包,最好在命令行中运行arp d 清除清
16、除arp缓存。缓存。 Arp -aArp a inet_addrArp d inet_addr/*Arp s inet_addr phy_addrARP高速缓存高速缓存解析实例(解析实例(同一网络同一网络) 位于同一子网的主机进行通信时的位于同一子网的主机进行通信时的 ARP 请求过程请求过程 IP 地址:地址:196.168.27.20 物理地址:物理地址:0 x45EF695A263B 主机主机 A 发送发送 ARP 请求请求 主机主机 B IP 地址:地址:196.168.27.22 物理地址:物理地址:0 x45EF695A1716 IP 地址地址 物理地址物理地址 IP 地址地址 物
17、理地址物理地址 196.168.27.20 0 x45EF695A263B 主机主机 A 的的 ARP 高速缓存高速缓存 主机主机 B 的的 ARP 高速缓存高速缓存 查询查询 ARP 高速缓存高速缓存 写写 ARP 高速缓存高速缓存 位于同一子网的主机进行通信时的位于同一子网的主机进行通信时的 ARP 应答处理应答处理 IP 地址:地址:196.168.27.20 物理地址:物理地址:0 x45EF695A263B 主机主机 A 发送发送 ARP 应答应答 主机主机 B IP 地址:地址:196.168.27.22 物理地址:物理地址:0 x45EF695A1716 IP 地址地址 物理地址
18、物理地址 196.168.27.22 0 x45EF695A1716 IP 地址地址 物理地址物理地址 196.168.27.20 0 x45EF695A263B 主机主机 A 的的 ARP 高速缓存高速缓存 主机主机 B 的的 ARP 高速缓存高速缓存 更新更新 ARP 高速缓存高速缓存 ARP高速缓存高速缓存解析实例(解析实例(不同网络不同网络) 位于不同子网的主机进行通信时先完成对路由器的地址解析和数据传输位于不同子网的主机进行通信时先完成对路由器的地址解析和数据传输 IP 地址地址:172.16.1.9 物理地址:物理地址:0 x02608C5A263B 主机主机 A 发送发送 ARP
19、 请求请求 主机主机 B IP 地址:地址:172.16.2.5 物理地址:物理地址:0 x02608C401716 IP 地址地址 物理地址物理地址 172.16.1.9 0 x02608C5A263B 主机主机 A 的的 ARP 高速缓存高速缓存 路由器的路由器的 ARP 高速缓存高速缓存 查询查询 ARP 高速缓存高速缓存 写写 ARP 高速缓存高速缓存 IP 地址地址 物理地址物理地址 主机主机 B 的的 ARP 高速缓存高速缓存 IP 地址地址 物理地址物理地址 IP 地址:地址:172.16.1.1 物理地址:物理地址:0 x00000C302411 IP 地址:地址:172.16
20、.2.1 物理地址:物理地址:0 x00000C302412 假设一台假设一台IP地址为地址为172.16.1.9,子网掩码为,子网掩码为255.255.255.0的客户机希望向的客户机希望向IP地址为地址为 172.16.2.5的主机发送的主机发送IP数据报。数据报。当主机当主机A要向主机要向主机B传输数据报时,传输数据报时,TCP/IP软件会利用子网掩码确定主机软件会利用子网掩码确定主机B位于位于远程子网远程子网上。上。ARP高速缓存高速缓存解析实例(解析实例(不同网络不同网络)假设一台假设一台IP地址为地址为172.16.1.9,子网掩码为,子网掩码为255.255.255.0的客户机希
21、望向的客户机希望向IP地址为地址为 172.16.2.5的主机发送的主机发送IP数据报。数据报。 位于不同子网的主机进行通信时路由器参与地址解析位于不同子网的主机进行通信时路由器参与地址解析 IP 地址:地址:172.16.1.9 物理地址:物理地址:0 x02608C5A263B 主机主机 A 发送发送 ARP 响应响应 主机主机 B IP 地址:地址:172.16.2.5 物理地址:物理地址:0 x02608C401716 IP 地址地址 物理地址物理地址 172.16.1.9 0 x02608C5A263B 主机主机 A 的的 ARP 高速缓存高速缓存 路由器的路由器的 ARP 高速缓存
22、高速缓存 写写 ARP 高速缓存高速缓存 IP 地址地址 物理地址物理地址 172.16.2.1 0 x00000C302412 主机主机 B 的的 ARP 高速缓存高速缓存 写写 ARP 高速缓存高速缓存 IP 地址地址 物理地址物理地址 172.16.1.1 0 x00000C302411 IP 地址:地址:172.16.1.1 物理地址:物理地址:0 x00000C302411 IP 地址:地址:172.16.2.1 物理地址:物理地址:0 x00000C302412 发送数据帧发送数据帧 查询查询 ARP 高速缓存高速缓存 发送发送 ARP 请求请求 ARP高速缓存高速缓存解析实例(解
23、析实例(不同网络不同网络)假设一台假设一台IP地址为地址为172.16.1.9,子网掩码为,子网掩码为255.255.255.0的客户机希望向的客户机希望向IP地址为地址为 172.16.2.5的主机发送的主机发送IP数据报。数据报。什么是什么是RARPo RARP:Reverse Address Resolution Protocolo 反向地址转换协议就是将局域网中某个主机的物理地址转换为IP地址,比如局域网中有一台主机只知道物理地址而不知道IP地址,那么可以通过RARP协议发出征求自身IP地址的广播请求,然后由RARP服务器负责回答。o RARP协议广泛用于获取无盘工作站的IP地址。RA
24、RP分组格式分组格式o RARP的分组格式与ARP完全一样,仅仅是操作字段是3( RARP 请求)或者4(RARP应答)。 帧类型帧类型 ARP/RARP 报文报文 PAD 字节字节 2 28 18 ARP/RARP 报文封装在以太网帧中格式报文封装在以太网帧中格式 CRC 4 硬件硬件 类型类型 目的地址目的地址 源地址源地址 6 6 协议协议 类型类型 硬件地硬件地 址长度址长度 协议地协议地 址长度址长度 操作操作 类型类型 发送者发送者 以太网地址以太网地址 目标目标 以太网地址以太网地址 发送者发送者 IP 地址地址 目标目标 IP 地址地址 2 2 2 1 1 6 6 4 4 AR
25、P:0 x0806 RARP: 0 x8035 1:ARP 请求请求 2:ARP 应答应答 3:RARP 请求请求 4:RARP 应答应答 0 x0800 0 x06 0 x04 0 x0001 RARP工作原理工作原理o 给主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址;o 本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址;o 如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用; o 如果不存在,RARP服务器对此不做任何的响应;o 源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;如果一直没有收到RARP服务器的响应信息,表示初始化失败。