资源预览内容
第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
第9页 / 共12页
第10页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第9章 ARP协议的软件模拟与设计,9.1 基本概念和原理 9.2 参与者和用例的识别 9.3 基本数据结构 9.4 ARP系统的初始化 9.5 ARP输入事件的处理 9.6 ARP解析事件处理 9.7 ARP定时器事件处理,9.1 基本概念和原理,(1)生成一个如图9.1所示的ARP请求,并将其广播到其所有网络接口连接的网段上。 (2)将请求解析的数据包送入队列等待解析结果。,9.1 基本概念和原理,表格,9.1 基本概念和原理,表格,9.2 参与者和用例的识别,(1)主进程:负责启动ARP系统(ARP系统的退出由操作系统负责)。 (2)网络接口层驱动程序:向系统请求IP地址的解析、接收系统输出的ARP分组和向系统发出软中断请求系统处理输入队列中新收到的ARP分组。 (3)定时器:负责缓冲表中表项的生存期和ARP请求重发间隔的计时。 (4)缓冲表管理单元:根据系统的请求进行缓冲表的分配、回收和调度(参看第7章)。 (1)核心主进程启动ARP系统和初始化系统工作环境的用例ARP_Init。 (2)网络接口层驱动程序启动ARP系统解析IP地址的用例ARP_Resolve。,9.2 参与者和用例的识别,(3)网络接口层软中断启动ARP系统处理中断的用例ARP_ISR。 (4)ARP中断服务例程启动处理输入队列中ARP分组的用例ARP_Input。 (5)处理定时器事件的用例ARP_Timer。,图9.3 ARP系统用例图,9.2 参与者和用例的识别,(1) 如何设置缓冲表?是使用单个缓冲表为所有接口服务,还是为每个接口设置单独的缓冲表?对于网关这样有多个网络接口的设备,其缓冲表的设置与通常只具有单个接口的主机是有区别的。 (2) 缓冲表中要保存多少条目以提高效率。 (3) 当缓冲表已满时如何安排对缓冲表的使用调度?在单缓冲表的情形下通常采用整体调度策略,即缓冲表中被删除的表项与新绑定来自哪个网络接口无关。 (4) 一个条目要保存多久?当每个表项在缓冲表中缓冲了一个固定时间后,要将其从缓冲表中删除,这与其被使用的是否频繁无关。 (5) 排它性访问。,9.3 基本数据结构,基本数据结构包括ARP分组和ARP缓冲表表项的描述。根据RFC 826关于ARP协议的描述,ARP分组分为定长部分和变长部分,其中,硬件地址和协议地址为变长部分,它们的长度与具体的地址类型有关。,9.4 ARP系统的初始化,初始化例程首先从配置文件中读出用户配置的参数,如果没有配置则采用默认值。接着,生成ARP分组输入队列和一个限长的动态增长的ARP缓冲表(队列)。最后,生成一个线程来处理ARP输入事件。在退出ARP系统前,必须先调用输出函数ARP_Cleanup,以释放所占用的内存资源,并通过线程句柄hid结束ARP输入事件处理线程。,9.5 ARP输入事件的处理,网络接口层设备驱动程序在收到ARP分组后会通过软中断而引发ARP中断服务例程的执行。ARP中断服务例程将生成ARP输入事件通告“有ARP分组到来”。ARP输入事件的处理由一个单独运行的线程来完成。若该线程正在因为ARP输入队列中没有要处理的ARP分组而睡眠等待该事件,则会被该通告唤醒去处理队列中的ARP分组。,9.6 ARP解析事件处理,ARP解析事件由函数ARP_Resolve来处理。函数ARP_Resolve首先试图通过查ARP缓冲表来解析IP地址,若缓冲表中没有相应表项,则通过广播一个ARP请求分组来进行解析。另外,由于要无延迟地返回调用者,因此,要将当前帧保存起来。在模拟实现中,没有使用等待队列,而是始终保存最后一个请求解析的帧,这样可以防止某些针对ARP协议的攻击。,9.7 ARP定时器事件处理,ARP定时器事件由定时器每秒钟产生一次,要处理的事务包括ARP缓冲表中已解析表项的老化处理和解析中表项的ARP请求重发处理。对于正在解析中的表项,生存期为0表示已到ARP重发间隔还没有收到ARP应答。这时,若尚未达到最大重发次数,则应继续重发ARP请求,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号