51单片机简单Ping的实现

2007-12-25 10:46:17

字体变小 字体变大
Ping(Packet Internet Gopher分组网间网探测器)利用了ICMP(Internet Control Message Protocol互联网控制报文协议)协议的“回响”功能来实现主机/服务器是否有应答的测试。ICMP为路由器和主机提供了正常情况以外的通信,它是IP的一个完整的组成部分。ICMP包括降低传送速率的源站抑制报文、请求主机改变选路表的重定向报文以及主机可用来决定目的站是否可达的回送请求/回答报文。ICMP报文在IP数据报的数据区中传送。当主机/服务器接收到具有回响类型的ICMP报文时,就响应1个“回响应答”报文。本地机器收到该报文并确认之后即可认为该主机/服务器处于活动状态,从而本机与远程主机/服务器之间能够连通,也可以互相通信。
仿照DOS下的ping命令并根据51单片机资源现状,我实现了一个简单的ping功能。它的使用方法如下:
(1)单片机-- cr<”,如果连通,显示“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 |
回显 ---------------- 应答 --------------

图2 A Ping B 过程(全双工操作
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值