




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程名称计算机网络时间:2021.02.09创作人:欧阳历实验序号实验五实验项目 Ping法度的设计与实现03月25日实验陈述要求1、实验陈述封而填表说明(每份实验陈述必须附上封面)(1)课程名称:要求与实验年夜纲和实验指导书中的课程名称一致。(2)实验序号:指该课程的第几个实验。(3)实验项目:要求与实验年夜纲和实验指导书中的实验项目一致。(4)实验地址:填写完成该实验项目所在的实验室名称。(5)实验学时:要求与实验年夜纲和实验指导书中完成该实验项目所需学时一致。(6)实验类型:是指演示性、操纵性、验证性、综合性、设计性。演示性:教师操纵,学生观察,验证理论、说明原理和办法。操纵性:学生按要
2、求入手拆装、调试实验装置或上机操 纵,掌握其基来源根基理和办法。验证性:按实验指导书(教材)要求,由学生通过操纵 验证所学理论,加深对理论、知识的理解,掌握基本实验知 识、办法、技能、数据处理等。综合性:实验内容涉及本课程的综合知识或相关课程的 知识,运用多的知识、多种办法,按要求或自拟实验计划进 行实验。主要培养学生综合运用所学知识、实验办法和实验 技能,以培养其阐发、解决问题的能力。设计性:给定实验目的、要求和实验条件,学生自己设 计实验计划并加以实现的实验。学生自力完成从查阅资料、 拟定实验计划、实验办法和步调(或系统阐发和设计)、选 择仪器设备(或自行设计缺制作)进行实验并完成实验全过
3、 程,形成实验陈述,培养学生自主实验的能力。2、实验陈述的格式软件类实验陈述格式公共课实验陈述 格式硬件类实验陈述格式序 号要求序要求序J-要求1实验目的及要求1实验目的及 要求1实验预习实验目的实验原理及内容(简 明简明,主要是实验接线图)2实验原理与内容2实验步调所用仪器设备3实验软硬件环境3操纵要点预习思考题4实验过程(实验 步调、记录、数 据、阐发)4实验结果2实验原始 记录(经 实验指导教师签名画岀实验所需要的各种记录 表格认可)5测试/调试及实验 结果阐发5实验问题3实验陈述数据处理(数据表格、计算结 果、误差、结果表达、曲线图 等)6实验结论与体会6小结及讨论结论讨论3、教师批改
4、学生实验陈述要求(1)批改:全部批改及更正毛病。(2)评分:按百分制评分,不克不及评分为优、良、 中、差或A、B、C(3)签名及批改日期:任课教师必须在每份学生实验 陈述中签名和写上批改日期。(4)成果:填写学生实验成果表,实验成果作为考试 成果评定的依据。(4)评语:任课教师批改学生实验陈述时,应给岀简 明简明的评语。成果:教 师 评 语指导教师签名:批阅日期:一.实验目的及要求加深对ICMP协议的理解熟悉原始套接字的使用办法掌握PING法度的实现流程二、实验原理与内容1、一种网络诊断工具2、发送ICMP回送请求报文3、接收ICMP回送应答报文类型:8或0代码:0检验和标识符序号由请求报文发
5、送;由回答报文重复4、IP报文格式4位版本豎部8位服务类型16位总长度(字节数)16位标识3位标志13位片偏移8位生存时间8位协议类型16位首部检验和32位源IP地址32位目的IPittt选项(如果有)数据5、WinSock原始套接字的使用办法与API函数Winsock原始套接字编程过程中,办事器端/客户頁个编程都依照以下步调: 初始化套接字(WSAStartup)创建套接字(socket或WSASocket)向办事器通信(sendto/recvfrom)关闭套接字(closesocket)结束使用套接字(WSACIeanup)W i nsock应用 程序1开始,W i nsock实现亠初始化
6、工作socket()或ck应用n I nso程序2开始检查Winsock实socket()或WSASocket()SOC序分配资源sendto() recvfrom () Jrz乜孺WSAC I eemup(DI协调|实现引用数:2k其他操作|W i nsock.d I I协调内存WSASocket()closesocket()W i nsock应用 程序1开始,W i nsock实现亠初始化工作socket()或ck应用n I nso程序2开始检查Winsock实socket()或WSASocket()SOC序分配资源sendto() recvfrom () Jrz乜孺WSAC I eemu
7、p(DI协调|实现引用数:2k其他操作|W i nsock.d I I协调内存WSASocket()closesocket()其他清理工作:将套接字中的数据 发送完毕断开流式套接字的 连接释放所分配的资源应用程序1资源数据缓冲区closesocket()套接字对照匚AC Ieanup应用程序2资源|调用W i nsocrecvfrom () sendtof)清理工作:将套接字中的数据 发送完毕断开流式套接字的 连摟释放所分配的资源为应用程序分配!数据缓冲区套接字对照表其他6、三种WinSock地址结构用的Winsock地址结构sockaddr ,针对各种通信域的套接字,存储它们的地址 信息。专
8、门针对Internet通信域的Winsock地址结构sockaddr_in专用于存储IP地址的结构in_addr实验软硬件环境运行 Windows XP/ Windows Sender /Windows 7 操纵系统的 PC 一台 Visual C+6.0/ Visual Studio /Visual Studio 开发环境实验过程(实验步调、记录、数据、阐发)掀开Visual Studio ,建立工程文件了解需求,进行需求阐发:使用winsock原始套接字编写ping法度,要求实现如下功能: 可以指定ping的目标主机IP。每次发送4个ICMP回送请求报文,每个请求报文的数据年夜小为32字节
9、,发送超时和接收超 时时间设为1000ms o对收回的每个ICMP回送请求报文,若收到应答报文,显示每个应答报文的数据年夜小(byte). 源IP、序号、响应时间(ms):若发送超时或接收超时,显示Request tune out.最后,显示用户名和ping的统计信息。统计信息包含收回的请求报文个数、收到的应答报文个 数、丢包个数、丢包率。绘制流程框图输出信息结束编写各个函数代码块编译,运行(是预实验代码如下:(温馨提醒:意要在.cpp文件的前后添加#includestdafx. h 编译处理器把stdafx. h文件中的内容加载到法度中来。)(是预#includeHstdafx.hH#pra
10、gmapack(4)#pragmacomment( libws2_32ib”)#includeNwinsock2.hM/include 3dafxT7/增加的头文#includeMstdlib.h,r#includestdio.h#defineICMP_ECHO 8 / ICMP ECHO 请求报文类型#defineICMP ECHOREPLY 0 / ICMP ECHO 响应报文类型#defineICMP_MIN 8 /最小ICMP报文年夜小为8 bytes (只有ICMP首部) #defineICMP_PACKET_SIZE 32 /ICMP 报文数据年夜小 #defineICMP_PAC
11、KET_NUMBER 4 发送 ICMP 报文的个数 #defineMAX_PACKET 1024 /最年夜ICMP报文数据长度 #defineICMP_TIMEOUT 1000 /ICMP 超时时间#definexmalloc HcapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY?(s) #definexfree(p) HeapFree (GetProcessHeapOA(p)/*界说结构体:IP首部*/typedefstructiphdr unsigncdint h_len : 4; / 首部长度 unsigncdint version : 4;/IP 版
12、本 unsigncdchar tos; / 办事类型 unsigncdshort totaljen; / 报文总长度 unsignedshort ident;/IP 报文标识符 unsigncdshort frag_and_flags; /分片标识表记标帜和片偏移 unsigncdchar ttl; / 生存时间 unsignedchar proto; /报文数据的协议类型 unsignedshort checksum: / 首部检验和 unsigncdint sourcelP; / 源 IP unsigncdint destIP; / 目的 IPJIpHeader;/*界说结构体:ICMP首
13、部*/typcdefstructicmphdr BYTE i_type; / ICMP 报文类型 BYTE Lcode; / 代码 USHORT Lcksum: /报文校验和 USHORT id: / ICMP报文标识符 USHORT i_seq:/ 报文序号 ULONG timestamp; 时间戳,不是ICMP报文首部的标准组成部分 JIcmpHeader;void filljcmp_data(char *, int); / ICMP 请求报文填充函数 USHORT checksum(USHORT *, int); / 校验和计算函数 int decode_resp(char *, int
14、, structsockaddr_in *); / ICMP 应答报文解析函数 int main(intargc, char *argv)WSADATA wsaData; 套接字信息 SOCKET sockRaw; 原始套件字 chardestjp16;/目的 IP (字符串) unsignedint addr = 0: / 目的 IP (整型) structsockaddrjn dest; 目的 IP (sockaddr_in 结构) structsockaddrjn from; 源 socket 地址 int fromlen = sizcof(from);/源 socket 地址的长度 i
15、nt datasizc:/报文总长度(=首部年夜小+数据年夜小) /int bwrote, bread; /实际发送和接收数据年夜小 int timeout = ICMP TIMEOUT; 超时时间USHORT scq_no = 0;/报文序号从0开始递增 int statistic = 0; /胜利接收报文的个数 char *icmp_data; 指向发送缓冲区的指针 char *recvbuf; 指向接收缓冲区的指针memset(destjp,sizeof(destjp);if (argcLcksum = 0; 校验和字段置 0(IcmpHeader*)icmp_data)timestam
16、p = GetTickCountO; 时间戳字段置为以后系统时间 (IcmpHeader*)icmp_data)i_seq = seq_no+; 序号字段每次递增 1(IcmpHeader*)icmp_data)Lcksum = checksum(USHORT*)icmp_data, datasize);/计算校验 和/*发送ICMP请求报文=*/bwrote = sendto(sockRaw, icmp_data, datasize, 0. (structsockaddr*)&dest, sizeof(dest);/第五第 六处if (bwrote = SOCKET_ERROR)if (WS
17、AGetLastErrorO = WSAETIMEDOUT) printf(MRcquest timed out.ii,r);continue;printfCsendto failed: %dn, WSAGetLastErrorO);return 1;/*接收ICMP应答报文旬bread = recvfrom(sockRaw, recvbuf MAX_PACKET. 0. (structsockaddr*)&from, &fromlen)y/ 第七处if (bread = SOCKET_ERROR)if (WSAGetLastErrorO = WSAETIMEDOUT) printf(HReq
18、uest timed out.ii,r);continue;printf(Hrecvfrom failed: %dnH. WSAGetLastError();return 1;/*如果解析胜利,递增胜利接收的数目+匕if (!decode_resp(recvbuf, bread, &from)statistic+;Sleep(lOOO);/间隔1000ms后再发下一个请求报文/*显示用户名和统计结果対printf(HnPing statistics collected by XXX for %s n* destjp);printf(H Packets: Sent = %d.Received =
19、 %d. Lost = %d (%2.0f% loss)n* ICMP_PACKET_NUMBER, /发送报文个数statistic 接收报文个数(ICMP_PACKET_NUMBER statistic),/ 丧失报文个数(float)(ICMP_PACKET_NUMBER statistic) / ICMP_PACKET_NUMBER * 100);丢包率 /*关闭套接字*/closesocket(sockRaw)7/ 第九处/*注销函数*/WSACIeanupO;return 0;/* ICMP回送请求报文填充函数*/void filljcmp_data(char * icmp_dat
20、a, intdatasize)IcmpHeader *icmp_hdr;char *datapart;icmp_hdr = (IcmpHeader* )icmp_data;icmp_hdrijype = ICMP_ECHO;icmp_hdrLcode = 0;icmp_hdri_id = (USHORT)GetCurrentProcessId();icmp_hdrLcksum = 0;icmp_hdri_seq = 0;datapart = icmp_data + sizeof(IcmpHeader); memset(datapart, datasize sizeof(IcmpHeader);
21、/* ICMP回送应答报文解析函数*/int decode_resp(char *buf, intbytes, structsockaddrjn *from)IpHeader *iphdr;IcmpHeader * icmphdr;unsignedshort iphdrlen;iphdr = (IpHeader *)buf;iphdrlcn = (iphdrh_len) * 4;if (bytes sin_addr);return 1;icmphdr = (IcmpHeader*)(buf + iphdrlen);if (icinphdri_type != ICMP_ECHOREPLY) pr
22、intf(Hnonecho type %d rccvdn”,icniphdrijypc);return 1;if (icmphdri_id != (USHORT)GetCurrentProcessIdO) printf(Hsomeone elseHs packet !n,r);return 1;printf(H%d bytes from %s: bytes iphdrlen sizeof(IcmpHeader), inet_ntoa(fromsin_addr); printf(n icmpseq = %d.icmphdri_scq);printf(H time: %d ms bytes);printf(HnH);return 0;/*校验和计算函数*/USHORT checksum(USHORT buffer, intsize) unsigncdlong cksum = 0;while (size 1) ck
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Unit 5 good manners study skills 教学设计2024-2025学年牛津译林版八年级英语下册
- 2020-2021深圳南山实验学校初中部小学四年级数学上期末第一次模拟试题带答案
- 钢轨弹性支撑施工方案
- 屋顶融雪装置施工方案
- 醇油漆施工方案
- 楼体加固具体施工方案
- 入驻店铺合同范本
- 业务拓展顾问合同范例
- 产品质量控制的年度措施计划
- 乙方委托设计合同范本
- 四年级数学(小数加减运算)计算题专项练习与答案
- 天津市建筑安全员-C证考试题库
- 2025年皖北卫生职业学院单招职业适应性测试题库参考答案
- 小学生春耕教学课件
- 2024年南信语文数学试卷(含答案)
- 2024年重庆市集中选调应届大学毕业生到基层工作考试真题
- 2025年个人投资合同电子版模板
- 车辆挂靠协议书
- 2025年湖南交通职业技术学院单招职业适应性测试题库1套
- 2017年公务员多省联考《申论》真题(吉林甲级卷)及参考答案(含详细解析)
- 一年级下册健康成长教案
评论
0/150
提交评论