欢迎来到天天文库
浏览记录
ID:42677336
大小:71.00 KB
页数:5页
时间:2019-09-20
《网络协议试验报告6》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、《网络协议分析》实验报告2011至2012学年第]_学期姓名系别计算机实验地点学号年级班试验时间2011年10月6H实验项n实验六基于ICMP协议的ping程序设计实验一、实验目的1.分析ICMP
2、办议报文,理解和掌握ICMPI办议报文头各字段的含义和作用;2.熟悉原始套接字编程;了解网络结构与网络传输底层协议。二、实验环境连通的局域网络、若干PC机、WindowsXP/2000等操作系统、VisualC等编程软件等。三、实验原理1.PING的工作原理P1NG利用1CMP协议包来侦测另一个主机是否可达。其原理是
3、川类型码为8的1CMP发请求,受到请求的主机则用类型码为0的ICMP回应。2.RAW模式的SOCKET编程为了实现肓接对TP和ICMP包进行操作,实验中使用RAW模式的SOCKET编程。3.TCMP协议位于网络层的IP协议是一个无连接的协议,它不会处理网络层传输中的故障,而位于网络层的1CMP协议却恰好弥补了IP的缺限,它使用IP协议进行信息传递,向数据包中的源端节点捉供发生在网络层的错谋信息反馈。四、实验内容及步骤及注意点实验内容:1.掌握ICMP协议报文格式和各字段含义;2.在WINDOWS环境下设计与实现
4、基于ICMP协议的PING程序,该程序可以用于测试网络连通性。具体要求如下:在命令提示符下输入:PING***.***.******,其中*和为目的主机的IP地址;不要求支持域名,对是否带有开关变量也不做要求,当不帯开关变量吋,要求返回4次响应。返回信息的格式:REPLYFROM***.***.***.***或REQUESTTimeOut(无法PING通的情况)。实验步骤及注意点:1.熟悉IP以及ICMP协议的工作机制;2.熟悉RAW模式的SOCKET编程;3.编写PING的实现程序;4.在模拟实现环境下调试并
5、运行自己编写的PING程序;5.编译环境屮需要包扌舌SOCKET库WS2_32.1ibovoidPing(LPCSTRpstrHost){SOCKETrawSocket;LPHOSTENTIpHost;sockaddr_insaDest;sockaddrinsaSrc;DWORDdwTimeSent;DWORDdwElapscd;u_charcTTL;intnLoop;intnRet;〃创建一个原始套接口rawSocket=socket(AF_INET,SOCK_RAW,IPPROTO_ICMP);if(raw
6、Socket==SOCKET_ERROR){ReportError("socket()n);return;}〃根据主机名查询主机地址lpHost=gethostbyname(pstrHost);if(lpHost==NULL){fprintf(stdcrr/Hostnotfound:%s,r);return;}〃设置目标套接口地址saDest.sin_addr.s_addr=*((u_longFAR*)(lpHost->h_addr));saDest.sin_family=AF_INET;saDest.
7、sin_port=0;〃输出Ping程序的提示信息printf("Pinging%s[%sjwith%dbytesofdata:u,pstrHost,inet_ntoa(saDest.sin_addr),REQ_DATASIZE);〃控制Ping执行的次数fbr(nLoop=0;nLoop<4;nLoop++){SendEchoRequest(rawSocket,&saDest);//{$川select()等待接收回送的数据nRet=WaitForEchoReply(rawSocket);if(nRet
8、==SOCKET_ERROR){ReportError(nselect()");break;}if(!nRet){printf(MTimeOut");//输出超时提示break;}〃接收应答dwTimeSent=RecvEchoReply(rawSocket,&saSrc,&cTTL);//计算传输时间dwElapsed=GetTickCount()-dwTimeSent;printf(nReplyfrom:%s:bytes=%dtime=%ldmsTTL=%dinet_ntoa(saSrc.sin_
9、addQREQ_DATASIZE,dwElapsed,cTTL);printf(uM);nRet=closesocket(rawSocket);if(nRet==SOCKET_ERROR){ReportError("closesocket()");)}intSendEchoRequest(SOCKETs,LPSOCKADDR_INIpstToAdd"〃给目标站点发送冋送请求{sta
此文档下载收益归作者所有