ARP协议动态交互仿真系统的设计
扫描二维码
随时随地手机看文章
协议仿真实验教学是帮助学生理解网络协议的重要手段。目前的协议仿真实验是离散的、静态的,即单独模拟某个协议,不能与其它协议合作,且协议中的数据表示是静态的,不能随着输入的数据的变化而动态变化,实验效果单调、生硬。具有代表性的网络仿真软件有:国外的NS2,BosON Netsim,国内的 “网络协议仿真教学系统”,“Psender”系统等。NS2 能够演示协议的工作过程,但是,无数据内容的动态变化和协议之间的合作。Boson Netsim 主要用于仿真网络工程实验,帮助学生熟悉网络设备和协议的使用,不能演示协议的工作流程,以及协议之间的相互协作过程,其效果仅类似于一个实际的网络工程实验。“网络协议仿真教学系统”实现了跨机器之间通信,但是数据的传递全部由人工操作,实验环境复杂,为了更好地模拟协议,忽略了实验环境与实际应用场景的一致性。“Psender”系统借用了着作《计算机网络:自顶向下方法与Internet 特色》作者提供的一些在线实验案例,实现了数据发送方和接收方之间的自动通信和速度匹配,但是,忽略了数据通信的中间过程,如,不能演示交换机的工作流程,也是离散的。因此,已有的仿真实验是离散的、静态的。而网络通信是一个连续的过程,需要协议之间相互协作,且数据也需要动态变化。
ARP 协议功能是把IP 地址映射为MAC 地址,核心机制是ARP 缓存表,实现IP 地址和MAC 地址之间的一一对应关系。研究ARP 协议动态交互仿真实验系统的目的是便于大家在学习ARP 协议的时候更好地理解协议理论,能够体会到ARP 请求报文和响应报文封装和发送的整个过程,真实地演示交换机对于ARP 请求报文和响应报文转发的机制及PC 机上缓存表的修改过程,有助于增强学生的学习效果。
1 系统设计
ARP 协议动态交互仿真实验系统是由三台计算机(PC-A,PC-B,PC-C)模拟的局域网,数据在其内部转发时的分布式仿真实验平台。三台机器分别模拟ARP 报文发送端、交换机、ARP 报文接收端,通过三台机器交互操作,在以太网环境中动态模拟出ARP 协议的整个工作流程,包括ARP 高速缓存表的查询和修改,ARP 报文封装,交换机端口转发报文。
ARP 协议动态交互仿真系统拓扑结构图如图1 所示。
图1 ARP 协议动态交互仿真实验平台拓扑结构
1.1 系统分析
该系统的目的是为了在学生学习ARP 协议时,通过动态、逼真的实验过程帮助学生深入理解ARP 协议,提高学习效果。为了能够快捷、顺利地完成实验,实验环境对该系统有如下要求:部署方便,使用简单,效果逼真,移植性和可扩展性强。
系统针对上述需求采取如下策略:该系统全部在Windows XP 下开发,采用部署较为简单的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 协议仿真系统动态交互用例图。
图2 ARP 协议动态交互仿真系统用例
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 协议动态交互仿真实验系统类图。
图3 ARP 协议动态交互仿真系统类
1.2.3 系统流程图
为了使用方便,ARP 协议动态交互仿真系统把三个角色功能集成在一个程序中。程序运行时,操作者需为机器选择规定的角色,再根据角色功能分配,按照定义的流程完成相应的操作。图4 为ARP 协议动态交互仿真系统流程图。
图4 ARP 协议动态交互仿真系统流程
2 系统实现
2.1 ByeSQL 框架简介
Java 流行已久,基于jdbc 封装的持久层框架层出不穷,像Hibernate、Ibatis 等都是功能十分强大的开源框架[8]。但是这些开源框架对于一些小系统的应用显得太复杂,配置很麻烦,而且这些框架没有真正屏蔽掉SQL 语句的书写:
Hibernate 需要写HQL 语句(和SQL 类似),Ibatis 就是一个sql-Object 映射框架。
ARP 协议动态交互仿真系统封装了一个持久层框架byeSQL,将对数据库的操作封装起来,利用统一的约定省去配置文件中的诸多麻烦,借助java 反射机制完成表项和实体类的相互转换。所有的逻辑控制都由java 代码去处理。该框架可以应用于大部分小型系统的开发。
持久层框架byeSQL 主要针对MySQL 数据库,将一些常用的增、删、改、查操作封装起来。使开发人员在做一些小型系统的时候,不要再去关心持久层的实现(也就是不要关心SQL 代码),只要导入byeSQL.jar 和MySQL 驱动包就可以利用java 代码操作数据库,而且配置文件十分简单,只需输入数据库的用户名和密码即可。不过使用框架byeSQL 必须遵守一个约定,表名必须和实体类名一致,字段名必须和实体类的属性一致,而且实体类必须符合JavaBean 规范。该框架是轻量级的,可以单独使用也可以和其它框架结合使用。
2.2 主要框架函数
系统持久层框架封装了10 个数据库操作函数,这些操作函数内部关联起来,就能完成对数据库的增、删、改、查操作,不需用户进行干涉。部分操作函数的功能为:
①public STatic int selectCount(String beanName):查出表中表项总数(传入该表对应的bean 全名,返回记录个数);
②public static List selectPage(String beanName,int start,int size):分页查询(传入该表对应的bean 全名、开始位置、每页显示记录条数,返回装有所查记录对应的对象实例列表);
③public static List selectOne(String beanName,StringpkName,String pkValue):根据特定字段名和值选出所需记录(传入该表对应的bean 全名、特定字段名、特定字段值,返回装有所查记录对应的对象实例列表);
④public static List selectAll(String beanName):查出所有记录(传入该表对应的bean 全名,返回装有所查记录对应的对象实例的列表);
⑤public static List select(String beanName,String select):
实现复杂查询,如关联查询和子查询等(传入该表对应的bean 全名、SQL 语句,返回装有所查记录对应的对象实例的列表)。
3 结语
该系统实现了ARP 协议的动态交互仿真,完成了ARP协议整个工作过程的模拟实现,通过动态交互操作,能够让学习者更轻松地学习和掌握ARP 协议。系统通过封装一个持久层框架,实现针对MySQL 数据库的基本增删操作,做到使用户不需写SQL 语句,利用java 代码就可以操作MySQL 数据库。