计算机网络课程设计实验报告北京科技大学

上传人:ni****g 文档编号:483327512 上传时间:2023-12-07 格式:DOCX 页数:34 大小:145.79KB
返回 下载 相关 举报
计算机网络课程设计实验报告北京科技大学_第1页
第1页 / 共34页
计算机网络课程设计实验报告北京科技大学_第2页
第2页 / 共34页
计算机网络课程设计实验报告北京科技大学_第3页
第3页 / 共34页
计算机网络课程设计实验报告北京科技大学_第4页
第4页 / 共34页
计算机网络课程设计实验报告北京科技大学_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《计算机网络课程设计实验报告北京科技大学》由会员分享,可在线阅读,更多相关《计算机网络课程设计实验报告北京科技大学(34页珍藏版)》请在金锄头文库上搜索。

1、计算机网络课程设计实验报告任课教师:班 级:学 号:姓 名:目录实验一 ARP 封装并发送3课程设计目的:3课程设计要求:3课程设计分析:3程序设计分析:4实验结果5源程序6实验二 解析IP数据包9课程设计目的:9课程设计要求:9课程设计分析:9程序设计分析9实验结果13源代码13实验三 FTP客户机17课程设计目的:17课程设计要求: 1 7课程设计分析:17程序设计原理: 1 8实验结果23源代码24实验心得体会37实验一 ARP 封装并发送课程设计目的:ARP协议用于完成IP地址与MAC地址之间的转换。通过封装与发送ARP 数据包,加深对ARP协议的理解,掌握ARP帧结构和工作原理及其对

2、协 议栈的贡献。课程设计要求: 编写程序,根据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 的数据结构 填充数据包 发送数据包程序设计分析:ARP 协议及工作原理ARP协议是“Address Resolution Protocol(地址解析协议)的缩写。在 局域网中,网络中实际传输的是“帧”,帧

3、里面是有目标主机的MAC地址的。在 以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC 地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。 所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过 程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地 址,以保证通信的顺利进行。ARP的基本运行过程是:1)主机A希望发送数据分组给主机B,但不知道B的物理地址。2)A发送广播报文,要求B主机用它的物理地址来响应。3)网站上所有主机都接收到这个分组。4)B识别出自己的IP地址,发送应答报文,告诉A自己的物理地址。ARP

4、 的分组格式物理帧头(14B)ARP帧结构(28B)填充数据(18B)CRC(4B)图一 ARP分组格式目的 MAC (6B)源 MAC(6B)类型(2B)图2 物理帧头08162431(位)硬件类型(Ethernet: 0x1)上层协议类型(IP: 0x0800)硬件地址长度(0x6)IP地址长度(0x4)操作(请求:0x1;应答:0x2)源MAC地址源MAC地址源IP地址源IP地址目的MAC地址目的MAC地址目的IP地址图3 ARP帧结构ARP 包的填充将命令行的参数作适当的转换后填到ARP分组结构的各字段中即可。要注意的是,填充请求包时。因为包要在Ethernet上广播,所以,物理帧头

5、的“目的MAC”字段要填充为FFFFFFFFFFFF;而ARP帧结构中的目的MAC可填充 为任意值,因为它此时不起作用。 “填充数据”字段要填充为0。实验结果Micrasoft U indo us 版本 6.1.76011 版杈所有 3009 Microsoft Corporation 0保胃所有权利。C:XWindowssystein32g:G:cd vsG:uscd ARPG:XusARPcd DebugG:usXA BP DebiJigXlEP.exe1. Dev ice SHPF_C0D2E2F3D-00C0E8-B50A-570H5C99CEe22. DeuiceNPF_3. eui

6、ceNPF_DD1D1858-01564E4-8C96-5ED351D41fl2AlIntel 82579U Gigabit Ne tuork Connectlon4. XBeuicePF_选ft设备号Input the src ipClInput the dest ip:2.2.2.2Input source mac addressdl 11 11 11 11 11:11 11 11 11 11 11Input dest mac address:22 22 22 22 22 22G:usABPDebiJig源程序#include #include #pragma comment(lib,ws

7、2_32.lib)#pragma comment(lib,wpcap.lib)#include #pragma pack(1) struct arp_packet /arp 包结构 unsigned char dest_mac6; /目标主机 MAC 地址 unsigned char source_mac6; /源端 MAC 地址 unsigned short eh_type; /以太网类型 unsigned short hardware_type; /硬件类型:以太网接口类型为 1 unsigned short protocol_type; 协议类型:IP 协议类型为 0X0800 unsi

8、gned char add_len; /硬件地址长度: MAC 地址长度为 6B unsigned char pro_len; /协议地址长度: IP 地址长度为 4B unsigned short option; /操作: ARP 请求为 1,ARP 应答为 2 unsigned char sour_addr6; /源 MAC 地址:发送方的 MAC 地址 unsigned long sour_ip; /源 IP 地址:发送方的 IP 地址unsigned char dest_addr6; 目的MAC地址:ARP请求中该字段没有意义;ARP响应 中为接收方的 MAC 地址unsigned l

9、ong dest_ip; /目的 IP 地址: ARP 请求中为请求解析的 IP 地址; ARP 响应中为 接收方的 IP 地址unsigned char padding18;#pragma pack()unsigned char* BuildArpPacket(unsigned char* source_mac, unsigned char* dest_mac,unsigned long src_ip,unsigned long dest_ip);void main()pcap_if_t *alldevs, *d;/用于存储网络设备int i=0;char errbufPCAP_ERRBUF

10、_SIZE;if(pcap_findalldevs(&alldevs,errbuf)=-1)fprintf(stderr,Error in pcap_findalldevs:%sn,errbuf);6/ 37exit(1); for(d=alldevs;d;d=d-next)printf(%d. %s,+i,d-name);if(d-description) printf(%s)n,d-description);else printf( (No description available)n);if(i=0)printf(n找不到指定接口 .n);printf(选择设备号(l-%d):,i);

11、int inum;pcap_t *adhandle;unsigned char *packet;scanf(%d, &inum);if(inum i)printf(n 超出范围.n);pcap_freealldevs(alldevs);for(d=alldevs, i=0; inext, i+);char chs_src_ipl6 = l.l.l.l;char chs_dest_ipl6 = 2.2.2.2;unsigned long ul_src_ip = 0u;unsigned long ul_dest_ip = 0u;printf(Input the src ip(l.l.l.l):);

12、scanf(%s,chs_src_ip);ul_src_ip = inet_addr(chs_src_ip);printf(Input the dest ip(2.2.2.2):);scanf(%s,chs_dest_ip);ul_dest_ip = inet_addr(chs_dest_ip);unsigned char uchs_src_macl0 = 0;unsigned char uchs_dest_macl0 = 0;printf(Input source mac address(11 11 11 11 11 11):); scanf(%x%x%x%x%x%x,&uchs_src_m

13、ac0,&uchs_src_mac1,&uchs_src_mac2,&uch s_src_mac3,&uchs_src_mac4,&uchs_src_mac5);printf(Input dest mac address(22 22 22 22 22 22):); scanf(%x%x%x%x%x%x,&uchs_dest_mac0,&uchs_dest_mac1,&uchs_dest_mac2,& uchs_dest_mac3,&uchs_dest_mac4, &uchs_dest_mac5);if(adhandle= pcap_open_live(d-name,65536,1,1000,e

14、rrbuf) = NULL) fprintf(stderr,n 无法打开指定适配器.s 不支持 WinPcapn,d-name); pcap_freealldevs(alldevs);packet = BuildArpPacket(uchs_src_mac, uchs_dest_mac, ul_src_ip, ul_dest_ip);/发送 arp 包的函数:参数 1:网络设备、参数 2:arp 包、参数 3:长度 pcap_sendpacket(adhandle,packet,62);unsigned char* BuildArpPacket(unsigned char* source_mac, unsigned char* dest_mac,unsigned long src_ip,unsi

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号