计算机网络课程设计:构建与发送ARP数据包

5星 · 超过95%的资源 需积分: 14 10 下载量 28 浏览量 更新于2024-07-06 3 收藏 448KB DOC 举报
"该文档是北京科技大学计算机网络课程设计的一个实验报告,主要涉及发送ARP数据包的实践。实验目的是理解ARP协议的原理、分组结构,掌握WinCap中的Packet编程以及截包软件的使用。实验要求包括使用VisualC++编写程序,构造并发送ARP请求和应答包,同时在ARP数据字段填充个人信息,并使用Ethereal等截包软件验证发送的 ARP 包。实验环境是Windows XP系统,采用Microsoft Visual C++ 6.0作为开发工具,使用WinPcap 4.0.1函数库和Ethereal截包软件。" 在计算机网络中,地址解析协议(ARP)是一种用于获取物理网络地址(MAC地址)的协议,它根据已知的IP地址来解析对应的MAC地址。在TCP/IP协议栈中,ARP处于链路层与网络层之间,起到桥梁的作用。本实验主要围绕以下几个知识点展开: 1. **ARP协议原理**:当主机需要向其他主机发送数据时,如果只知道目标IP地址而不知道MAC地址,就会发送ARP请求。ARP请求包含发送方的IP和MAC地址以及目标IP地址。网络中所有主机都会接收到这个广播,但只有目标IP地址匹配的主机才会回应其MAC地址,这就是ARP应答。 2. **ARP分组结构**:一个ARP数据包通常包含硬件类型、协议类型、硬件地址长度、协议地址长度、操作类型、发送方硬件地址、发送方协议地址、目标硬件地址和目标协议地址等字段。在实验中,需要理解这些字段的含义并正确填充。 3. **WinCap与Packet编程**:WinCap是一个网络数据包捕获库,它允许程序员访问网络接口并读取、写入网络数据包。Packet编程涉及到如何使用Packet32.h库函数,创建网络接口上下文,构造和发送自定义的数据包。 4. **截包软件Ethereal**:Ethereal(现称为Wireshark)是一款强大的网络封包分析软件,可以捕获并显示网络封包的详细信息。在实验中,使用Ethereal来验证发送的ARP包是否正确,确保程序正确执行了ARP请求和应答的发送。 5. **C++编程实现**:实验要求使用VisualC++创建Win32 Console Application项目,通过命令行参数接收源IP、源MAC、目标IP、目标MAC和标志参数,然后构造并发送ARP数据包。程序中涉及到的结构体如DLCHeader和ARPFrame对应于ARP协议的数据帧结构。 6. **命令行参数处理**:程序需能接受6个命令行参数,分别代表源IP、源MAC、目标IP、目标MAC、标志(请求或应答)和网卡号。这要求对C++的命令行参数处理有基本了解。 实验过程不仅加深了学生对ARP协议的理解,还锻炼了他们实际编程解决问题的能力,特别是网络编程和数据包捕获方面的技能。通过这样的实践,学生能够更好地将理论知识应用于实际操作,提升解决网络通信问题的能力。