计算机网络课程设计
实验报告
任课教师: 班 级: 学 号: 姓 名:
1 / 37
目录
实验一 ARP封装并发送 ...................................................................................................... 3
课程设计目的: ............................................................................................................... 3 课程设计要求: ............................................................................................................... 3 课程设计分析: ............................................................................................................... 3 程序设计分析: ............................................................................................................... 4 实验结果 ........................................................................................................................... 5 源程序 ............................................................................................................................... 6 实验二 解析IP数据包 ......................................................................................................... 9
课程设计目的: ............................................................................................................... 9 课程设计要求: ............................................................................................................... 9 课程设计分析: ............................................................................................................... 9 程序设计分析 ................................................................................................................... 9 实验结果 ......................................................................................................................... 13 源代码 ............................................................................................................................. 13 实验三 FTP客户机 ............................................................................................................. 17
课程设计目的: ............................................................................................................. 17 课程设计要求: ............................................................................................................. 17 课程设计分析: ............................................................................................................. 17 程序设计原理: ............................................................................................................. 18 实验结果 ......................................................................................................................... 23 源代码 ............................................................................................................................. 24 实验心得体会 ......................................................................................................................... 37
2 / 37
实验一 ARP封装并发送 课程设计目的:
? ARP协议用于完成IP地址与MAC地址之间的转换。通过封装与发送ARP数据包,加深对ARP协议的理解,掌握ARP帧结构和工作原理及其对协议栈的贡献。
课程设计要求:
? 编写程序,根据ARP帧的结构,封装ARP帧。 ? 要求程序为命令行程序,以命令行的形式运行:
SENDARP S-IP S-MAC D-IP D-MAC
其中:
SENDARP:可执行程序名 S-IP: 源IP地址 S-MAC:源MAC地址 D-IP: 目的IP地址 D-MAC:目的MAC地址
课程设计分析:
? 使用winpcap访问网卡,手动封装 ? 定义ARP的数据结构 ? 填充数据包 ? 发送数据包
3 / 37
程序设计分析:
ARP协议及工作原理
ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
ARP的基本运行过程是:
1) 主机A希望发送数据分组给主机B,但不知道B的物理地址。 2) A发送广播报文,要求B主机用它的物理地址来响应。 3) 网站上所有主机都接收到这个分组。
4) B识别出自己的IP地址,发送应答报文,告诉A自己的物理地址。
ARP的分组格式
物理帧头(14B) ARP帧结构(28B) 填充数据(18B) 图一 ARP分组格式
图2 物理帧头
目的MAC (6B) 源MAC(6B) 类型(2B) CRC(4B) 0 8 16 24 31(位)
硬件类型(Ethernet:0x1) 上层协议类型(IP:0x0800) 4 / 37
硬件地址长度(0x6) IP地址长度(0x4) 操作(请求: 0x1; 应答: 0x2) 源MAC地址 源MAC地址 源IP地址 源IP地址 目的MAC地址 目的MAC地址 目的IP地址 图3 ARP帧结构
ARP包的填充
将命令行的参数作适当的转换后填到ARP分组结构的各字段中即可。 要注意的是,填充请求包时。因为包要在Ethernet上广播,所以,物理帧头的“目的MAC”字段要填充为FFFFFFFFFFFF;而ARP帧结构中的目的MAC可填充为任意值,因为它此时不起作用。“填充数据”字段要填充为0。
实验结果
5 / 37