ARP协议

发布时间:2024-06-02 21:08:29 作者:汉语成语

ARP(AddressResolutionProtocol,地址解析协议)是一个位于TCP/IP协议栈中的低层协议,负责将某个IP地址解析成对应的MAC地址。ARP协议和ICMP协议是常用的TCP/IP底层协议。在对网络故障进行诊断的时候,它们也是最常用的协议。

功能

ARP协议功能是把IP地址映射为MAC地址,核心机制是ARP缓存表,实现IP地址和MAC地址之间的一一对应关系。研究ARP协议动态交互仿真实验系统的目的是便于大家在学习ARP协议的时候更好地理解协议理论,能够体会到ARP请求报文和响应报文封装和发送的整个过程,真实地演示交换机对于ARP请求报文和响应报文转发的机制及PC机上缓存表的修改过程,有助于增强学生的学习效果。

系统设计

ARP协议动态交互仿真实验系统是由三台计算机(PC-A,PC-B,PC-C)模拟的局域网,数据在其内部转发时的分布式仿真实验平台。三台机器分别模拟ARP报文发送端、交换机、ARP报文接收端,通过三台机器交互操作,在以太网环境中动态模拟出ARP协议的整个工作流程,包括ARP高速缓存表的查询和修改,ARP报文封装,交换机端口转发报文。

ARP协议动态交互仿真系统拓扑结构图如图1所示。

图1ARP协议动态交互仿真实验平台拓扑结构

1.1系统分析

该系统的目的是为了在学生学习ARP协议时,通过动态、逼真的实验过程帮助学生深入理解ARP协议,提高学习效果。为了能够快捷、顺利地完成实验,实验环境对该系统有如下要求:部署方便,使用简单,效果逼真,移植性和可扩展性强。

系统针对上述需求采取如下策略:该系统全部在WindowsXP下开发,采用部署较为简单的Mysql数据库和Tomcat服务器(PC-C),将整个ARP协议工作过程抽象出来放在网页上直观地展现,学习者可以像浏览网页一样使用该系统。

客户端:要求简单、明了地展现相应信息;有动态效果,逐步封装;能与服务器进行数据交互。因此,系统用dreamweaver8设计页面,采用表格布局封装相关信息;用javascript.控制动态效果和实现逐步封装;采用Ajax技术实现客户端与服务器的交互。

服务器:开发语言相对简单易学,业务逻辑集中控制,采用分层的思想,在基本不动现有代码的情况下实现功能的拓展。系统用java完成服务器端的实现,以一个逻辑控制类控制整个业务逻辑;封装一个持久层框架byesql操作mysql数据库,能在不写任何SQL语句的情况下针对MySQL数据库完成基本的增、删、改、查。

1.2系统设计

1.2.1系统用例图

实验时,学生甲操作PC-A,模拟数据发送端;学生乙操作PC-C,模拟交换机;学生丙操作PC-B,模拟数据接收端。

发送端(PC-A):获取本机真实IP和MAC地址后,用一个JSP页面模拟ARP报文的逐步封装过程,使用者可以看到ARP请求报文逐步封装的效果。然后自动向“交换机”

发送ARP请求报文,再自动跳转到“ARP高速缓存表”模拟页面,等待“交换机”转发来ARP响应报文,修改“ARP高速缓存表”。

交换机(PC-C):用一个JSP页面模拟“端口——MAC映射表”,负责转发ARP报文。初始为等待状态,当发送端(PC-A)发送完ARP请求报文之后,自动向除发送端外的所有端口转发该请求报文,完毕后自动跳到初始状态等待转发ARP响应报文,当响应报文到达后就针对发送端(PC-A)单播该报文分组。

接收端(PC-B):获取本机真实IP和MAC地址后,自动跳到“ARP高速缓存表”模拟页面,等待“交换机”将ARP请求报文转发过来后修改ARP高速缓存表,再自己跳转到ARP响应报文页面,逐步封装。封装完毕则自动向“交换机”发送ARP响应报文。

图2为ARP协议仿真系统动态交互用例图。

图2ARP协议动态交互仿真系统用例

1.2.2系统类图

ARP协议动态交互仿真系统定义了四个类:

①ARP报文类ArpMessage:定义ARP报文属性和类型;②ARP缓存表类ArpTable:定义ARP表字段和属性;③端口MAC映射表类MacTable:定义交换机端口和机器MAC地址的映射关系;④计算机类PC:定义各机器的IP地址、MAC地址和计算机名。

计算机类PC为ARP报文类ArpMessage和ARP缓存表类ArpTable提供本机的MAC地址和IP地址,分别用于帧封装和MAC地址查询。端口MAC映射表类MacTable为计算机类PC提供MAC地址和端口的对应关系,用于数据转发。

图3为ARP协议动态交互仿真实验系统类图。

图3ARP协议动态交互仿真系统类

1.2.3系统流程图

为了使用方便,ARP协议动态交互仿真系统把三个角色功能集成在一个程序中。程序运行时,操作者需为机器选择规定的角色,再根据角色功能分配,按照定义的流程完成相应的操作。图4为ARP协议动态交互仿真系统流程图。

图4ARP协议动态交互仿真系统流程

ARP工作过程

当一个基于TCP/IP的应用程序需要从一台主机发送数据给另一台主机时,它把信息分割并封装成包,附上目的主机的IP地址。然后,寻找IP地址到实际MAC地址的映射,这需要发送ARP广播消息。当ARP找到了目的主机MAC地址后,就可以形成待发送帧的完整以太网帧头。,协议栈将IP包封装到以太网帧中进行传送。

如图所示,描述了ARP广播过程。

图 ARP广播

在图中,当主机A要和主机B通信(如主机APing主机B)时。主机A会先检查其ARP缓存内是否有主机B的MAC地址。如果没有,主机A会发送一个ARP请求广播包,此包内包含着其欲与之通信的主机的IP地址,也就是主机B的IP地址。当主机B收到此广播后,会将自己的MAC地址利用ARP响应包传给主机A,并更新自己的ARP缓存,也就是同时将主机A的IP地址/MAC地址对保存起来,以供后面使用。主机A在得到主机B的MAC地址后,就可以与主机B通信了。同时,主机A也将主机B的IP地址/MAC地址对保存在自己的ARP缓存内。

ARP报文格式

ARP报文被封装在以太网帧头部中传输,如图所示,是ARP请求协议报文头部格式。

图ARP请求协议报文头部格式

图中黄色的部分是以太网(这里是EthernetII类型)的帧头部。其中,个字段是广播类型的MAC地址:0XFF-FF-FF-FF-FF-FF,其目标是网络上的所有主机。第二个字段是源MAC地址,即请求地址解析的主机MAC地址。第三个字段是协议类型,这里用0X0806代表封装的上层协议是ARP协议。

接下来是ARP协议报文部分。其中各个字段的含义如下:

硬件类型:表明ARP实现在何种类型的网络上。

协议类型:代表解析协议(上层协议)。这里,一般是0800,即IP。

硬件地址长度:MAC地址长度,此处为6个字节。

协议地址长度:IP地址长度,此处为4个字节。

操作类型:代表ARP数据包类型。0表示ARP请求数据包,1表示ARP应答数据包。

源MAC地址:发送端MAC地址。

源IP地址:代表发送端协议地址(IP地址)。

目标MAC地址:目的端MAC地址(待填充)。

目标IP地址:代表目的端协议地址(IP地址)。

ARP应答协议报文和ARP请求协议报文类似。不同的是,此时,以太网帧头部的目标MAC地址为发送ARP地址解析请求的主机的MAC地址,而源MAC地址为被解析的主机的MAC地址。同时,操作类型字段为1,表示ARP应答数据包,目标MAC地址字段被填充以目标MAC地址。