用c语言实现ping程序功能

用c语言实现ping程序功能

ID:14206889

大小:46.50 KB

页数:17页

时间:2018-07-26

用c语言实现ping程序功能_第1页
用c语言实现ping程序功能_第2页
用c语言实现ping程序功能_第3页
用c语言实现ping程序功能_第4页
用c语言实现ping程序功能_第5页
资源描述:

《用c语言实现ping程序功能》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、用C语言实现Ping程序功能(zt)用C语言实现Ping程序功能作者:zhchhui发表时间:2003-07-0320:05:41大部分人用ping命令只是作为查看另一个系统的网络连接是否正常的一种简单方法。在这篇文章中,作者将介绍如何用C语言编写一个模拟ping命令功能的程序。ping命令是用来查看网络上另一个主机系统的网络连接是否正常的一个工具。ping命令的工作原理是:向网络上的另一个主机系统发送ICMP报文,如果指定系统得到了报文,它将把报文一模一样地传回给发送者,这有点象潜水艇声纳系统中使用的发声装置。例

2、如,在Linux终端上执行ping localhost命令将会看到以下结果:PINGlocalhost.localdomain(127.0.0.1)from127.0.0.1:56(84)bytesofdata.64bytesfromlocalhost.localdomain(127.0.0.1):icmp_seq=0ttl=255time=112usec64bytesfromlocalhost.localdomain(127.0.0.1):icmp_seq=1ttl=255time=79usec64bytesfr

3、omlocalhost.localdomain(127.0.0.1):icmp_seq=2ttl=255time=78usec64bytesfromlocalhost.localdomain(127.0.0.1):icmp_seq=3ttl=255time=82usec---localhost.localdomainpingstatistics---4packetstransmitted,4packetsreceived,0%packetlossround-tripmin/avg/max/mdev=0.078/0.

4、087/0.112/0.018ms由上面的执行结果可以看到,ping命令执行后显示出被测试系统主机名和相应IP地址、返回给当前主机的ICMP报文顺序号、ttl生存时间和往返时间rtt(单位是毫秒,即千分之一秒)。要写一个模拟ping命令,这些信息有启示作用。要真正了解ping命令实现原理,就要了解ping命令所使用到的TCP/IP协议。ICMP(InternetControlMessage,网际控制报文协议)是为网关和目标主机而提供的一种差错控制机制,使它们在遇到差错时能把错误报告给报文源发方。ICMP协议是IP层

5、的一个协议,但是由于差错报告在发送给报文源发方时可能也要经过若干子网,因此牵涉到路由选择等问题,所以ICMP报文需通过IP协议来发送。ICMP数据报的数据发送前需要两级封装:首先添加ICMP报头形成ICMP报文,再添加IP报头形成IP数据报。如下图所示IP报头ICMP报头ICMP数据报IP报头格式由于IP层协议是一种点对点的协议,而非端对端的协议,它提供无连接的数据报服务,没有端口的概念,因此很少使用bind()和connect()函数,若有使用也只是用于设置IP地址。发送数据使用sendto()函数,接收数据使用

6、recvfrom()函数。IP报头格式如下图:在Linux中,IP报头格式数据结构(定义如下:structip{#if__BYTE_ORDER==__LITTLE_ENDIANunsignedintip_hl:4;/*headerlength*/unsignedintip_v:4;/*version*/#endif#if__BYTE_ORDER==__BIG_ENDIANunsignedintip_v:4;/*version*/unsignedintip_hl:4;/*headerlen

7、gth*/#endifu_int8_tip_tos;/*typeofservice*/u_shortip_len;/*totallength*/u_shortip_id;/*identification*/u_shortip_off;/*fragmentoffsetfield*/#defineIP_RF0x8000/*reservedfragmentflag*/#defineIP_DF0x4000/*dontfragmentflag*/#defineIP_MF0x2000/*morefragmentsflag*/#

8、defineIP_OFFMASK0x1fff/*maskforfragmentingbits*/u_int8_tip_ttl;/*timetolive*/u_int8_tip_p;/*protocol*/u_shortip_sum;/*checksum*/structin_addrip_src,ip_dst;/*sourceanddestaddress*/}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。