2023年计算机网络ping实验报告.pdf

上传人:无*** 文档编号:93809556 上传时间:2023-07-13 格式:PDF 页数:11 大小:1.02MB
返回 下载 相关 举报
2023年计算机网络ping实验报告.pdf_第1页
第1页 / 共11页
2023年计算机网络ping实验报告.pdf_第2页
第2页 / 共11页
点击查看更多>>
资源描述

《2023年计算机网络ping实验报告.pdf》由会员分享,可在线阅读,更多相关《2023年计算机网络ping实验报告.pdf(11页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、课 程 设 计课程名 称 计算机网络课程设计题目名称.PING程序设计学生学院 自动化学院_专业班级_学 号_学生姓名_指导教师_2 00 9 年1 2 月 3 0 日摘要本说明书重要涉及了 ping程序设计的设计目的、p i ng程序的工作原理以及设计方案,重点介绍了 pi ng程序的源代码,并且附带了实验结果以及总结等。关键字:P ing 程序设计目 录1实验设计目的及规定.错误!未定义书签。1.1 设计目的。错误!未定义书签。1 2 设计规定。错误!未定义书签。2 实验内容。错误!未定义书签。2.1 定义数据结构.错误!未定义书签。2.2 程序实现。错误!未定义书签。2.3。程序规定.错

2、误!未定义书签。3 p in g 工作原理及设计方案.错误!未定义书签。3.1。设计思绪。错误!未定义书签。3.2 设计方案.错误!未定义书签。3.3 pin g 源程序。错误!未定义书签。4 实验结果.错误!未定义书签。5。总结。错误!未定义书签。6。参考文献.错误!未定义书签。1 实验设计目的及规定1.1 设计目的PI NG程序是我们使用的比较多的用于测试网络连通性的程序。PING程序基于I C M P,使用I C M P 的回送请求和回送应答来工作。由计算机网络课程知道,ICMP是基于IP 的一个协议,ICM P 包通过I P 的封装之后传递。课程设计中选取P I NG程序的设计,其目的

3、是希望同学们通过PING程序的设计,能初步掌握TCP/IP网络协议的基本实现方法,对网络的实现机制有进一步的结识。1.2 设计规定RAW模式的SOCKET编程PING程序是面向用户的应用程序,该程序使用ICMP的封装机制,通过IP协议来工作。为了实现直接对I P 和 ICMP包进行操作,实验中使用RAW模式的SOCKET 编程。熟悉SOCKET的编程,涉及基本的系统调用如SOCKET、BIND等;2 实验内容2.1 定义数据结构需要定义好IP 数据报、ICM P包等相关的数据结构;2.2 程序实现在 W I NDOWS环境下实现P I NG程序;2.3 程序规定在命令提醒符下输入:PING X

4、XX.XXX.XXX.XXX其中X X X 为目的主机的IP 地址,不规定支持域名,对是否带有开关变量也不做规定。不带开关变量时,规定返回4 次响应。返回信息的格式:REPLY FROM XXX.XXX.XXX.XXX或REQU ESTT i meOu t(无法 PING 通的情况)。3 p i ng工作原理及设计方案3.1 设计思绪由于Ping是基于I C MP协议,因此需要使用wi n d o ws so ck et中的RAW模式进行编程,一方面定义好IP数据包头,接着在IP数据包头的基础上定义ICMP数据包头,由于需要计算回送时间,因此还需要ICM P回送数据的结构。P i ng的具体实

5、现流程可以分为以下几点:一方面创建SOCK ET,然后根据主机名查询地址;接着调用PING主程序对目的主机地址进行测试,测试过程包含相关信息的解决;最后显示回复,并关闭SOCKET3.2 设计方案IP头与ICMP头的设立分别参照RFC791及RFC792的标准,包含所有必要信息。主程序设立m a in()函数,用于数据包发送及接受,其中,数据包发送调用另一函数void s e nd_ packet(),数据包接受调用void recv _ p acket(),由于发送数据包时也许会碰到阻塞或者目的主机不通,导致超时,因此需要在发送数据包后调用一个函数判断是否超时,此处设立函数s e tsock

6、op t()来实现超时判断;另一方面,还需要一个函数来计算C R C校验和,此处设立为signed short cal_chk s u m(),校验和采用移位方法进行计算。3.3 p i ng源程序/P i n g.c p p:定义控制台应用程序的入口点。#in c lu d e#inc 1 u de#i n c 1 ude#def i ne SEND_SIZE 3 2#def i ne PAC K E T _S I Z E4096#define ICMP_ECHO 8#d efine I CMP_ECH 0 REPLY0#pragma c o mm e nt(li b,Ws 2_ 3 2.l

7、ib)stru c t icmp(un s igne d char icmp_ty p e;/类型ounsign e d char icmp_code;编码ou n s i gned s h ort ic m p_ c hks um;/校验和u n s ign e d sh o r t icmp_ id;/标示符ounsi g n ed s h o rt icmp_seq;/顺序号o u n s i g n ed long i cmp_ d at a;数据);st r u c t i p(u n signe d c h a r ip_ h 1 :4;/报头长度un s igned char i

8、p_v:4;版本号uns i gn e d c h a r ip_to s;服务类型u nsi g ned sh o rt ip_ 1 en;总长度un s i gned shor t ip_id;/标记unsigned s h or t ip_ o ff;/标志u n s igne d char ip_ 11 1;生存时间n signed ch a r ipp;协议号e u nsigned shor t ip_sum;报头校验和ounsign e d 1 o ng ip_ s r c;/源IP地址unsigned 1 o ng ip_ d s t;目的IP地址);cha r se n dpa

9、ck e t PACKET_SIZE;c har re c v pack e tPACKE T-SIZE;st r uct so c kadd r _in d e s t_addr;struct sockaddr_ in fr o m_ a d dr;int s o c k fd;int p id;uns i gned shor t c a l_chk s um(unsi g n ed sh o r t*a d d r,i ntlen);int pac k(int p ackno);int u n p ack(uns i gn e d c h a r*b u f,i nt 1 e n);voi

10、 d sen d _pa c k e t(void);v o id recv_ packe t(vo i d);i nt main(int arg c,CH AR*a rgv)(struc t h o s tent*host;s truct p rotoent*pro t o c ol;int t i meout=1000;“n t SEND_C0UNT=4;int i;b c h a r*p ar_hos t;char mnp u tl 0 0;pr i ntf(I n p u t IP:);og e t s(m_I n pu t);叩a r _ho s t=m_ I n pu t;bWOR

11、D w V e rs i onR e q ueste d;WSADATA wsaD a ta;i n t err;。w Ve r sionR e quested=MAKEWORD(2,2);er r=WSA S t ar t up(wVer s ion R eq u e s ted,&wsaData);“f(e rr!=0)re t u m;o i f (LO B Y T E(wsaDa t a.w Ve r s i on)!=2|。H I BY TE(w s a D a t a.w V e rs i on)!=2)g WSAC 1 eanup();“oretum;a)if(protoc o

12、1 =g e t prot o byna me(icm p)=NU L L)/返回相应于给定协议名的包含名字和协议号(。pr i n t f(getproto b y n ame er r o r n );的prot o ent结构指针ex i t(1);if(sockfd=sock e t(AFN E T,SOC K _R A W,pr o toco 1 -p_p roto)0)(p r i n t f(so c k e t e rro rn);ex i t(l);if(sets o ckopt(s o ck f d,S O L _S O C K E T ,SO_RC V T IMEO,(c

13、h a r*)&t i meo u t,si z eo f(t i meo u t)0)/设立套接口的选项。f prin t f(s t der r f a i led toset re c v t i meo ut:%dn,WSAGetL a stE r r o r0);if(s e tso c ko p t(sock f d,SOL_ SO C K ET,S O _ SNDT IMEO,(char*)&t i meout,sizeof(time o ut)0)。f p rint f(s t d e r r,fai 1e d to se t s e n d ti m eout:%dn,WSA

14、Get L a st E rro r();memset(&d e st_addr,0,sizeof(dest_ad d r);dest_ a dd r.sin_ f ami 1 y=AFINET;“f(h o st=geth o s tb y name(par _host)/返回相应于给定主机名的主机信息mem c p y(ch a r*)&des t_ad d r.s in_ad d r,host-h_a ddr,hos t h_l e n gth);*/r esolve addr ess t o hostna me3 i f(ho s t=g e th o stbyaddr(host-h_

15、addr,4,P F NET)o par_ h o st=host-h _ n a me;)e 1 se if(d est_addr.sin_ a d dr.s a d dr=inet_a d d r(par_host)=INA DDR_NONE)b gpr i nt f C U nkow n host%sn,pa r_hos t);exit(l);)叩 id=_g e tpid();p ri n t f(P i ng i ng%s%s:with%d b y t es of data:nn,pa r_ h os t,i n e t_ntoa(d est_addr.s in _ add r),S

16、END_SIZE);e fo r(i=0;i 1)sum+=*w+;。n le f t-=2;“f(n left=1)/解 决 IC M P报头为奇数个字节时累加最后一个 *(uns i g n e d c h ar*)(&a n s w e r)=大(uns i gne dchar*)w;sum十 二answer;)osum=(s u m 16)+(s u m&0 xfff f);3 s um+=(s u m16);eanswe r=su m;re t ur n answer;)打包in t pack(in t p a c k_ n o)(。i n t p a ck s i z e;os t

17、 ruct icmp*icm p;叩 acks i ze=8+SEND_S IZE;“c mp=(stru c t icmp*)send packet;icmp-i c m p_type=ICMP_ E CHO;icm p ic m p_code=0;i cmpicm p _chksum=0;icmp-i c mp_seq=p ack_ no;icmp-i c mp_ i d=pid;icmp icmp_ dat a=Get T ickCo unt();icm p i c mp_c h k s um=c a1 _c h ksum(unsi g ned sh o rt*)i c mp,pa c

18、ks i ze);/*校验算法*/re t urn p ac k s i ze;)/解包i nt u n p a ck(c h ar*b uf,int len)(s tru c t ip*ip;ostru c t icm p*icmp;doub 1 e r tt;int iphdrlen;oi p=(s t r uct ip*)b u f;p h d r 1 en=ip-i p_ h 1 *4;“cmp=(s t r u c t icm p*)(bu f+i p hdrlen);if(icmp-icmp_ ty p e=ICM P ECHOREPLY)&(icm p-icmp_ i d=p i

19、 d)b 1 e n=1 en-iphdrl e n-8;”t t=GetT i c k C ou n t()-icmp-i c m p _ data;p rintf(u R e ply f r om%s:byt e s=%d time=%.0 fm s T TL=%d i cmp_s e q=%un”,in e t_ntoa(from_addr.si n _ addr),3 1 en,t,ip-i P _ t tl,icm p i cmp_seq);Are t u rn 1;)r eturn 0;)发送void s end_p a c ke t()(int p a c ke t size;。

20、s t a ti c i nt p ac k _ n o=0;pac k e t s i ze=pack(p ac k _ no+);if(s e ndto(s o ck f d,se n dpac ket,p a ck e ts i ze,0,(struc tso c kad d r*)&de s t_addr,s i z eof(d est_ a ddr)=0)so s u ccess=un pack(re c v p ack e t,n);b e Is e if(WSAGe t L astE r ro r()=WSAE TIMEDOUT)(b r i n t f(Requ e st t

21、imed ou t An);4 实验结果3 return;33 0 w h i 1 e(!su c c e ss);5 总结本次课程设计较好地实现了规定做到的功能,但同时也碰到不少的困难和挑战。通过这次设计,不仅加深了对S ock e t 的原始套接字RAW编程的理解,同时也 对 IP 和 IC M P协议有了进一步的结识。这次设计的重要难点,在于数据包的发送和接受,TTL的计算,以及超市的判断。6 参考文献程良伦主编,网络工程概率论,机械工业出版社,20 2 3苏峰,黄金双,汤蕾编著,V is u a l C+.N e t 编程实例,清华大学出版社,2 0 23黄家辉编著,Interne t 与TCP/IP程序设计之C+B u i 1 der高手,清华大学出版社,2 0 23

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

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com