51单片机简单Ping的实现.doc
文本预览下载声明
51单片机简单Ping的实现
时间:2006-09-05 ? 来源: ? 作者: ? 点击:1628 ? 字体大小:【大 中 小】
??? Ping(Packet Internet Gopher分组网间网探测器)利用了ICMP(Internet Control Message Protocol互联网控制报文协议)协议的“回响”功能来实现主机/服务器是否有应答的测试。ICMP为路由器和主机提供了正常情况以外的通信,它是IP的一个完整的组成部分。ICMP包括降低传送速率的源站抑制报文、请求主机改变选路表的重定向报文以及主机可用来决定目的站是否可达的回送请求/回答报文。ICMP报文在IP数据报的数据区中传送。当主机/服务器接收到具有回响类型的ICMP报文时,就响应1个“回响应答”报文。本地机器收到该报文并确认之后即可认为该主机/服务器处于活动状态,从而本机与远程主机/服务器之间能够连通,也可以互相通信。??? 仿照DOS下的ping命令并根据51单片机资源现状,我实现了一个简单的ping功能。它的使用方法如下:??? (1)单片机--PC机 在Shell里使用“ping XXX.XXX.XXX.XXXcr”,如果连通,显示“Reply from XXX.XXX.XXX.XXX: bytes=32 TTL=XXX”,否则,显示“Request timed out.(XXX.XXX.XXX.XXX)”。??? (2)PC机--单片机 按照DOS里的常规操作即可??? 每个ping命令重复测试8次,即显示8次信息。??? 注意到显示内容与PC机上稍有不同,这是由于此处ping工作在多任务单窗口环境下,为了区分响应发送源,有必要增加源IP地址信息。另外,由于51资源限制,取消了time参数(time是本机与对方主机往返一次所用时间)显示。具体简化内容如下:??? (1)只支持“ping+IP地址”命令格式,域名方式和其他可选项均不可用??? (2)固定32字节测试包??? (3)不计算本机与对方主机往返一次所用时间,测试用时为1到2秒??? 总之,经过简化的ping能够完成最基本的连通测试功能。??? ??? 0??????????? 8???????? 16???????????????????? 31??? ------------------------------------------------??? | 类型(8或0) | 代码(0) |??????? 校验和???????? |??? ------------------------------------------------??? |??????? 标识符??????? |???????? 序号????????? |??? ------------------------------------------------??? |????????????????? 可选数据??????????????????? |??? ------------------------------------------------??? |??????????????????? 。。。??????????????????? |??? ------------------------------------------------??? ???????????? 图1 ICMP回送请求或回答报文格式??? ???????????????????? PingCycle??????????????????????? | 定时操作??????????????????????? V??? PingCmd? ----------------??????????? --------------??? --------|?? PingRequest|-----------|??????????? |????? 命令?? |????????????? |??? 请求??? |??????????? |???????????? |????????????? |??????????? |??????????? |???????????? |??? A???????? |??????????? |??? B?????? |???????????? |????????????? |??????????? |??????????? |??? --------|PingEcho????? |-----------|PingAnswer? |????? 回显?? ----------------??? 应答??? --------------??
显示全部