计算机网络ping实验报告_第1页
计算机网络ping实验报告_第2页
计算机网络ping实验报告_第3页
计算机网络ping实验报告_第4页
计算机网络ping实验报告_第5页
已阅读5页,还剩4页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、several group number, then with b a, =c,c is is methyl b two vertical box between of accurate size. Per-23 measurement, such as proceeds of c values are equal and equal to the design value, then the vertical installation accurate. For example a, b, and c valueswhile on horizontal vertical errors for

2、 measurement, General in iron angle code bit at measurement level points grid errors, specific method is from baseline to methyl vertical box center line distance for a, to b vertical box distance for b, list can measuredPAGE several group number, then with b a, =c,c is is methyl b two vertical box

3、between of accurate size. Per-23 measurement, such as proceeds of c values are equal and equal to the design value, then the vertical installation accurate. For example a, b, and c valueswhile on horizontal vertical errors for measurement, General in iron angle code bit at measurement level points g

4、rid errors, specific method is from baseline to methyl vertical box center line distance for a, to b vertical box distance for b, list can measuredPAGE 9several group number, then with b a, =c,c is is methyl b two vertical box between of accurate size. Per-23 measurement, such as proceeds of c value

5、s are equal and equal to the design value, then the vertical installation accurate. For example a, b, and c valueswhile on horizontal vertical errors for measurement, General in iron angle code bit at measurement level points grid errors, specific method is from baseline to methyl vertical box cente

6、r line distance for a, to b vertical box distance for b, list can measured课 程 设 计 课程名称计算机网络课程设计题目名称_ PING程序设计_学生学院_自动化学院_ 专业班级_ _ 学 号 学生姓名_ _ 指导教师_ _ 200 9 年 12 月 30 日摘要本说明书主要包括了ping程序设计的设计目的、ping程序的工作原理以及设计方案,重点介绍了ping程序的源代码,并且附带了实验结果以及总结等。关键字:ping 程序设计目 录 TOC o 1-6 h z u HYPERLINK l _Toc250055090

7、1 实验设计目的及要求 PAGEREF _Toc250055090 h 3 HYPERLINK l _Toc250055091 1.1设计目的 PAGEREF _Toc250055091 h 3 HYPERLINK l _Toc250055092 1.2设计要求 PAGEREF _Toc250055092 h 3 HYPERLINK l _Toc250055093 2实验内容 PAGEREF _Toc250055093 h 3 HYPERLINK l _Toc250055094 2.1定义数据结构 PAGEREF _Toc250055094 h 3 HYPERLINK l _Toc250055

8、095 2.2程序实现 PAGEREF _Toc250055095 h 3 HYPERLINK l _Toc250055096 2.3程序要求 PAGEREF _Toc250055096 h 3 HYPERLINK l _Toc250055097 3ping工作原理及设计方案 PAGEREF _Toc250055097 h 3 HYPERLINK l _Toc250055098 3.1设计思路 PAGEREF _Toc250055098 h 3 HYPERLINK l _Toc250055100 3.2设计方案 PAGEREF _Toc250055100 h 4 HYPERLINK l _To

9、c250055102 3.3ping源程序 PAGEREF _Toc250055102 h 4 HYPERLINK l _Toc250055310 4实验结果 PAGEREF _Toc250055310 h 7 HYPERLINK l _Toc250055311 5总结 PAGEREF _Toc250055311 h 7 HYPERLINK l _Toc250055313 6参考文献 PAGEREF _Toc250055313 h 71 实验设计目的及要求设计目的PING程序是我们使用的比较多的用于测试网络连通性的程序。PING程序基于ICMP,使用ICMP的回送请求和回送应答来工作。由计算机

10、网络课程知道,ICMP是基于IP的一个协议,ICMP包通过IP的封装之后传递。课程设计中选取PING程序的设计,其目的是希望同学们通过PING程序的设计,能初步掌握TCP/IP网络协议的基本实现方法,对网络的实现机制有进一步的认识。设计要求RAW模式的SOCKET编程PING程序是面向用户的应用程序,该程序使用ICMP的封装机制,通过IP协议来工作。为了实现直接对IP和ICMP包进行操作,实验中使用RAW模式的SOCKET编程。熟悉SOCKET的编程,包括基本的系统调用如SOCKET、BIND等;实验内容定义数据结构需要定义好IP数据报、ICMP包等相关的数据结构;程序实现在WINDOWS环境

11、下实现PING程序;程序要求在命令提示符下输入: PING .其中为目的主机的IP地址,不要求支持域名,对是否带有开关变量也不做要求。不带开关变量时,要求返回4次响应。返回信息的格式: REPLY FROM .或 REQUEST TimeOut (无法PING通的情况)。ping工作原理及设计方案设计思路由于Ping是基于ICMP协议,因此需要使用windows socket中的RAW模式进行编程,首先定义好IP数据包头,接着在IP数据包头的基础上定义ICMP数据包头,由于需要计算回送时间,因此还需要ICMP回送数据的结构。Ping的具体实现流程可以分为以下几点:首先创建SOCKET,然后根据

12、主机名查询地址;接着调用PING主程序对目标主机地址进行测试,测试过程包含相关信息的处理;最后显示回复,并关闭SOCKET设计方案IP头与ICMP头的设置分别参照RFC791及RFC792的标准,包含所有必要信息。主程序设置main()函数,用于数据包发送及接收,其中,数据包发送调用另一函数void send_packet(),数据包接收调用void recv_packet( ),由于发送数据包时可能会遇到阻塞或者目标主机不通,造成超时,因此需要在发送数据包后调用一个函数判断是否超时,此处设置函数setsockopt()来实现超时判断;其次,还需要一个函数来计算CRC校验和,此处设置为sign

13、ed short cal_chksum( ),校验和采用移位方法进行计算。ping源程序/ ping.cpp : 定义控制台应用程序的入口点。#include#include#include#define SEND_SIZE 32 #define PACKET_SIZE 4096#define ICMP_ECHO 8#define ICMP_ECHOREPLY 0#pragma comment(lib,Ws2_32.lib)struct icmpunsigned char icmp_type; /类型unsigned char icmp_code; /编码unsigned short icmp

14、_chksum; /校验和unsigned short icmp_id; /标示符unsigned short icmp_seq; /顺序号unsigned long icmp_data; /数据;struct ipunsigned char ip_hl:4; /报头长度unsigned char ip_v:4; /版本号unsigned char ip_tos; /服务类型unsigned short ip_len; /总长度unsigned short ip_id; /标识unsigned short ip_off; /标志unsigned char ip_ttl; /生存时间unsign

15、ed char ip_p; /协议号unsigned short ip_sum; /报头校验和unsigned long ip_src; /源IP地址unsigned long ip_dst; /目的IP地址;char sendpacketPACKET_SIZE;char recvpacketPACKET_SIZE;struct sockaddr_in dest_addr; struct sockaddr_in from_addr;int sockfd;int pid;unsigned short cal_chksum(unsigned short *addr,int len);int pac

16、k(int pack_no);int unpack(unsigned char *buf,int len);void send_packet(void);void recv_packet(void);int main(int argc, CHAR* argv)struct hostent *host;struct protoent *protocol;int timeout=1000;int SEND_COUNT=4;int i;char *par_host;char m_Input100;printf(Input IP: );gets(m_Input);par_host=m_Input;WO

17、RD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 2, 2 );err = WSAStartup( wVersionRequested, &wsaData );if ( err != 0 ) return;if ( LOBYTE( wsaData.wVersion ) != 2 |HIBYTE( wsaData.wVersion ) != 2 ) WSACleanup( );return; if( (protocol=getprotobyname(icmp) )=NULL) /返回对应于给定协议

18、名的包含名字和协议号 printf(getprotobyname errorn); /的protoent结构指针exit(1);if( (sockfd=socket(AF_INET,SOCK_RAW,protocol-p_proto) )0) printf(socket errorn);exit(1); if(setsockopt(sockfd,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout,sizeof(timeout)0) /设置套接口的选项fprintf(stderr,failed to set recv timeout: %dn,WSAGetLastErr

19、or();if(setsockopt(sockfd,SOL_SOCKET,SO_SNDTIMEO,(char*)&timeout,sizeof(timeout)h_addr,host-h_length);/resolve address to hostnameif(host=gethostbyaddr(host-h_addr,4,PF_INET) par_host=host-h_name; else if( dest_addr.sin_addr.s_addr=inet_addr(par_host)=INADDR_NONE)printf(Unkown host %sn,par_host);exi

20、t(1);pid=_getpid();printf(Pinging %s %s: with %d bytes of data:nn,par_host,inet_ntoa(dest_addr.sin_addr),SEND_SIZE); for(i=0;i1) sum+=*w+;nleft-=2;if( nleft=1) /处理ICMP报头为奇数个字节时累加最后一个 *(unsigned char *)(&answer)=*(unsigned char *)w;sum+=answer;sum=(sum16)+(sum&0 xffff);sum+=(sum16);answer=sum;return

21、answer;/打包int pack(int pack_no) int packsize;struct icmp *icmp;packsize=8+SEND_SIZE;icmp=(struct icmp*)sendpacket;icmp-icmp_type=ICMP_ECHO;icmp-icmp_code=0;icmp-icmp_chksum=0;icmp-icmp_seq=pack_no;icmp-icmp_id=pid;icmp-icmp_data=GetTickCount(); icmp-icmp_chksum=cal_chksum( (unsigned short *)icmp,pac

22、ksize); /*校验算法*/return packsize;/解包int unpack(char *buf,int len) struct ip *ip;struct icmp *icmp;double rtt;int iphdrlen;ip=(struct ip *)buf;iphdrlen=ip-ip_hl*4; icmp=(struct icmp *)(buf+iphdrlen); if( (icmp-icmp_type=ICMP_ECHOREPLY) & (icmp-icmp_id=pid) ) len=len-iphdrlen-8; rtt=GetTickCount()-icmp-icmp_data; printf(R

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论