题目二、 内部网关协议RIP的模拟程序
一、 需求分析:
功能需求
- 捕获网络上的ARP请求和ARP响应数据包。
- 打印捕获到的ARP数据包的关键信息,包括源MAC地址、源IP地址、目标MAC地址、目标IP地址等。
- 发送ARP请求数据包,用于查询网络中的设备。
- 支持用户选择网络适配器。
- 支持设置过滤器,以过滤捕获的数据包。
- 持续监控网络流量,实时显示捕获的ARP数据包。
非功能需求
可移植性:工具应该能在Windows操作系统上运行。
用户友好性:提供交互式界面,允许用户选择网络适配器和设置过滤器。
二、 概要设计:
模块划分
数据包捕获模块:负责打开网络适配器、捕获ARP数据包和应用过滤器。
数据包处理模块:解析捕获到的ARP数据包,打印关键信息。
ARP请求模块:构造ARP请求数据包并发送。
用户界面模块:与用户交互,允许用户选择网络适配器和设置过滤器。
主要流程
- 用户启动程序,选择要监控的网络适配器。
- 用户选择是否设置过滤器,如果设置,需要输入过滤条件。
- 开始捕获网络流量。
- 当捕获到ARP数据包时,通过数据包处理模块解析并打印信息。
- 用户可以选择发送ARP请求,通过ARP请求模块实现。
- 持续监控网络流量,直到用户选择退出程序
存储结构:
结构体定义:定义了多个结构体来表示不同的网络数据包部分,包括 EthernetHeader、ArpHeader 和 ArpPacket。这些结构体用于存储和处理以太网帧和ARP帧的各个字段。
字符串和字符数组:使用了字符串和字符数组来存储一些数据,如错误消息 (errbuf)、设备名称 (d->name)、过滤条件 (“arp”)、MAC地址 (src_mac)、IP地址 (src_ip) 等。
数组和缓冲区:使用了数组和缓冲区来存储和操作二进制数据,如发送数据包的缓冲区 (sendbuf) 和捕获到的数据包 (packet、pkt_data)。
三、 详细设计:
网络结构体:
获取网卡的方法
主方法
四、 调试分析:
五、 课设总结:
本课设实现了一个简单的网络ARP监控工具,能够捕获ARP请求和ARP响应数据包,并允许用户发送ARP请求。它使用了WinPcap库来实现网络数据包的捕获和发送,同时提供了一个交互式命令行界面,以方便用户选择适配器和设置过滤器条件。这个工具可以用于网络调试、监控和故障排除等场景。在实际应用中,还可以进一步优化和扩展,例如添加更多过滤条件、记录捕获的数据包到日志文件等功能。本次课设让我了解ARP协议的内容,熟练掌握了ARP协议的特点。
在完成课设的过程中,我也对计算机网络这门课产生了更深的认识。虽然这门课非常抽象,但是在学习的过程中,我越来越体会到计算机网络在人们生活中的巨大作用,通过代码来实现一个个协议也显得那么有趣。希望在未来的学习中能更加深入地学习计算机网络相关的知识,达到融会贯通的效果。