财讯中国

51单片机简单Ping的实现

来源:网络 2022-01-22 06:00:01

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 | 回显 ---------------- 应答 -------------- 图2 A Ping B 过程(全双工操作,反过来亦可,未画出反向过程) 图1所示为ICMP回送请求/回答报文格式(即Ping包格式),在实现网卡驱动程序后,Ping的实现简化为填写报文(详见伪代码清单)。如图2所示,完整ping过程我主要用4个函数实现。Ping请求(PingRequest)、Ping应答(PingAnswer)、收到应答后回显(PingEcho)、定时操作(PingCycle)。 PingRequest完成Ping请求。当输入Ping命令后,调用此函数,发出请求包。 PingAnswer完成Ping应答。它工作在后台,每当收到发给自己IP的请求包就自动应答。 PingEcho显示应答信息。每当收到应答就立即显示相关信息。 PingCycle定时操作pingbuf记录缓冲区。每秒钟扫描一次,并根据当前情况和状态进行状态变迁。

- ---------------------------------------------------- | | 状态(status) | 次数(times) | 内存句柄(memhandle) | | ---------------------------------------------------- N个| 。。。 | | ---------------------------------------------------- | | 状态(status) | 次数(times) | 内存句柄(memhandle) | - ---------------------------------------------------- N=MaxLenPingBuf 图3 pingbuf记录缓冲区格式

IP地址要先转换成MAC地址才能在以太网上传输,如果ARP缓存里没有对应项,则需要较长时间查找(网络传输时间相对于CPU时间)。为了不阻塞进程,我设计了一个pingbuf记录缓冲区,如图3所示。此表1秒钟被查询一次,根据当前情况改变状态。它包括状态、次数、内存句柄三个域。“次数”字段指示测试剩余数,为0表示测完,同时改变状态为0以表明此记录项现在空闲。“内存句柄”字段保存ICMP报文缓冲区首址指针。“状态”字段记录状态号,含义如下: 0---空闲 1---已发出但无应答 2---已发出且应答 3---等ARP 4---第一次准备发(用于同步1秒时钟) 状态变迁图如图4所示。 图4略,详见伪代码清单PingCycle,请自行画出状态图。 这个实现里还使用了ping命令处理、IP地址转换、校验和计算等辅助程序,详见伪代码清单。IP协议使用统一的CheckSum算法计算和验证数据报的首部校验和。将首部视为一个16位的整数序列,并定义校验和是首部中所有16位整数的和的二进制反码。同样和数及补码也被定义使用二进制反码算法。所有TCP/IP协议的校验和计算和数据包的校验均由CheckSum子程序完成。不过需要注意的是TCP和UDP的校验需要加上伪头部。需要首部校验和计算及验证的包为:IP、ICMP、UDP、TCP。相互间的差别仅在于求和数据不同,算法都采用CheckSum。详见源程序清单。(提示:IP包头从版本号、首部长度、服务类型到目的站IP地址(如果不含IP选项)共20字节;ICMP校验和只覆盖ICMP报文。对比UDP、TCP伪首部和IP首部相似点,可以不必单独分配伪首部缓冲区,而直接利用IP缓冲区计算校验和。观察知IP头邻接数据,采取一定措施可实现直接计算。即先将IP寿命字段清0,协议字段赋相应值,校验和赋UDP/TCP包长度值,并加上12,表示伪首部的3长字长度,完成计算后向IP包首部添入正确寿命、校验和值,见图5。)

0 8 16 31 0 8 16 31 ---------------------------- --------------------------- | 寿命 | 协议 | 首部校验和 | | 源站IP地址 | ---------------------------- --------------------------- | 源站IP地址 | | 目的站IP地址 | ---------------------------- --------------------------- | 目的站IP地址 | | 零 | 协议 | UDP/TCP长度 | ---------------------------- --------------------------- | 数据 | | UDP/TCP包数据 | ---------------------------- --------------------------- IP包格式(局部) UDP、TCP伪首部+数据格式 图5 IP包格式(局部)和UDP、TCP伪首部格式对比图

伪代码清单:

PingRequest(IP地址) //Ping请求{ //申请小号内存 pICMP=OSMemGet(); //填写以太网帧 目的MAC地址=ping命令传入的IP地址解析后得到的物理地址 源MAC地址=本节点MAC地址 类型=0x0800 //IP包 //填写IP帧 版本号首部长度=0x45 服务类型=0 总长度=60 标识符=GlobalID++ //全局变量16位GlobalID加1 标志分片偏移量=0x0000 寿命=0x80 协议=0x0001 //icmp 首部校验和=0x0000 源IP地址=本节点IP地址 目的IP地址=ping命令传入的IP地址 首部校验和=CheckSum(IP首部和长度) //计算IP包首部校验和 //填写ICMP帧 类型=8 //8 请求 0 应答 代码=0 校验和=0x0 标识符=0x0300 序号=GlobalID 校验和=CheckSum(ICMP首部和长度) //计算ICMP包首部校验和 //将ICMP包登记在PingBuf中 for(i=0;iMaxLenPingBuf;i++){ if(PingBuf[i].status==0){ PingBuf[i].times=0x8; //测试8次 PingBuf[i].ip=ping命令传入的IP地址; PingBuf[i].memhandle=内存句柄; PingBuf[i].status=4; //第一次准备发(用于同步1秒时钟) break; } } if(i==MaxLenPingBuf) 释放内存;}

PingAnswer(*输入包缓冲区首址pBUF) //Ping应答{ //改写以太网帧 目的MAC地址=源MAC地址 源MAC地址=本节点MAC地址 //改写IP帧 寿命=寿命-1 目的IP地址=源IP地址 源IP地址=本节点IP地址 首部校验和=0x0000 首部校验和=CheckSum(IP首部和长度) //计算IP包首部校验和 //改写ICMP帧 类型=0 //8 请求 0 应答 校验和=0x0 校验和=CheckSum(ICMP首部和长度) //计算ICMP包首部校验和 //直接发送ICMP包至TxQFIFO缓存 OSQSend(QID,*pBUF);}

关键词: 51单片机 Ping DOS

相关新闻

51单片机简单Ping的实现
2022-01-22 06:00:01
1月21日联想包场环球影城?怕是个误会
2022-01-21 22:38:25
央视曝光:被套路! 租手机1年的钱 能卖两台!
2022-01-21 22:38:16
苹果承认iPhone 13屏幕存在问题 或召回
2022-01-21 22:38:05
智能监控防盗报警系统
2022-01-21 22:30:24
芯硕精密机械落户天津开发区
2022-01-21 22:30:17
广播背景音乐系统设计方案
2022-01-21 22:30:11
阿尔卡特朗讯招聘
2022-01-21 22:30:05
数码摄影入门基础知识
2022-01-21 22:29:59
联发科全球首次成功演示Wi-Fi 7:产品明年见
2022-01-21 21:21:46
曝三星Tab S8系列平板国行版正在路上 全系骁龙8
2022-01-21 21:21:35
苹果关闭iOS 15.2验证通道:升级后将无法降级
2022-01-21 21:21:24
外星人最薄笔记本X14来了:RTX 3060+12代酷睿i9
2022-01-21 21:21:13
索尼回应微软收购动视暴雪:游戏仍可出现PS平台
2022-01-21 21:21:03
完美的复刻,永恒的经典!MS IE3.0拆解
2022-01-21 21:00:37
中九机对机升级方法
2022-01-21 21:00:29
网友原创 DELL 灵越N5010 15R 拆机图解
2022-01-21 21:00:21
PLC在恒压供水系统中的应用设计
2022-01-21 21:00:13
WCDMA标准及它的3个版本
2022-01-21 21:00:06
ARM Win10/Win11项目越做越好 有35款手机可运行
2022-01-21 19:51:44
补足“半成品”短板?极氪成立上海智能研发中心
2022-01-21 19:51:33
广告费用为0 特斯拉为什么不打广告?官方释疑
2022-01-21 19:51:23
中国移动宽带用户数首次锐减:少了45.9万户
2022-01-21 19:51:13
京东方2021年赚翻了 预计净利润可达260亿元
2022-01-21 19:51:02
骁龙8 Gen 1 黑鲨5系列手机发布官宣海报
2022-01-21 19:39:10
暴雪 CEO:重建玩家信任
2022-01-21 19:39:00
雅马哈纯电踏板车:2.3万元
2022-01-21 19:38:49
目标女玩家 雷蛇推出全套HelloKitty
2022-01-21 19:38:38
冬奥会临近 南方人如何体验雪地的乐趣?
2022-01-21 19:38:26
世界银行总裁批评微软700亿美元收购暴雪
2022-01-21 19:38:15
双方回应 吉利拟收购魅族手机事宜后续
2022-01-21 19:38:03
holtek单片机图文全面详解
2022-01-21 19:30:34
世界首台光量子计算机在中国诞生
2022-01-21 19:30:25
移动电源维修的四个方法
2022-01-21 19:30:18
通信系统中接收链的差分滤波器设计(上)
2022-01-21 19:30:12
场效应管工作原理- -场效应管工作原理也疯狂
2022-01-21 19:30:05
先导式电磁阀工作原理
2022-01-21 19:29:59
销量600万破国产纪录!《永劫无间》手游版来了
2022-01-21 18:22:26
OPPO公布信号供电新技术:告别电池成为可能
2022-01-21 18:22:19
首款万元骁龙8机皇来袭!三星S22曝光:2月9日发
2022-01-21 18:22:11
OPPO展示了“信号供电,告别电池”的技术
2022-01-21 18:22:04
行业首家定制光学镜头 努比亚史上最强Z系列旗舰
2022-01-21 18:21:56
比亚迪不寂寞 东风将打造高端新能源越野车
2022-01-21 18:21:48
蔚来7kW、11kW家用直流充电桩上线:包安装
2022-01-21 18:21:39
我国首次实现了低轨宽带卫星可以批量生产
2022-01-21 18:21:30
哈啰出行已经申请了“小哈元宇宙”的商标
2022-01-21 18:21:21
iPad劲敌!亚马逊不慎泄露三星Tab S8 Ultra价格
2022-01-21 18:21:11
宁德时代、B站、上汽集团三方成立私募公司
2022-01-21 18:21:01
容声承诺:每卖1台超空间冰箱,向阿拉善捐赠1棵树!
2022-01-21 18:09:06
曝吉利拟收购魅族手机 双方回应亮了
2022-01-21 18:08:55
王金亮:容声冰箱将开辟“健康“养鲜”新赛道
2022-01-21 18:08:41
登陆PS4/PS5 《地平线:西之绝境》2022年2月18日发售
2022-01-21 18:08:29
iPhone 13 Pro拍摄 苹果公布2022虎年短片《卷土重来》
2022-01-21 18:08:17
iPhone 13出现粉屏问题,客服回应因系统卡死
2022-01-21 18:08:04
虹膜支付:看一眼就能付款
2022-01-21 18:00:37
L298N电机驱动电路设计
2022-01-21 18:00:30
微软向中国补交8.4亿税款 疑涉反避税
2022-01-21 18:00:23
更高效的视音频及广播:R & S, IBC 2013
2022-01-21 18:00:17
东芝发布全新企业广告 点亮未来无限可能
2022-01-21 18:00:10
投影仪原理- -投影仪原理背后的故事
2022-01-21 18:00:04
克丽缇娜集团荣获第十一届公益节两项殊荣
克丽缇娜集团荣获第十一届公益节两项殊荣
2022-01-21 16:55:29
蔚来7kW、11kW家用直流充电桩上线:包安装
2022-01-21 16:53:03
我国首次实现了低轨宽带卫星可以批量生产
2022-01-21 16:52:34
哈啰出行已经申请了“小哈元宇宙”的商标
2022-01-21 16:52:04
iPad劲敌!亚马逊不慎泄露三星Tab S8 Ultra价格
2022-01-21 16:51:34
宁德时代、B站、上汽集团三方成立私募公司
2022-01-21 16:51:03
快来数0 京东方2021年预计净利润26000000000元
2022-01-21 16:42:47
库克:能不能不开放侧载 苹果CEO库克致电美参议员
2022-01-21 16:42:35
Vidda喜提新年开门红 2022前三周销量同比提升207%!
2022-01-21 16:42:24
Siri语音识别能力增强 HomePod系智能音箱推15.3 rc版固件更新
2022-01-21 16:42:14
ROG光魔系列实力超凡揽括多个奖项
2022-01-21 16:42:02
杭州女孩就地过年“历险记”:成年人的崩溃从年夜饭开始
2022-01-21 16:41:50
动视暴雪员工认为被微软收购可能会救了公司
2022-01-21 16:41:36
Redmi K50下月见!官宣直屏快充骁龙8
2022-01-21 16:41:26
索尼Xperia手机要上魅族Flyme?大V回应绝了
2022-01-21 16:41:14
这一招“混合云”,是十五年的“功力”
2022-01-21 16:41:04
京东苹果新年活动:iPhone13 mini破5000
2022-01-21 16:40:54
今年发布 英特尔Arc Alchemist系DG2游戏独显跑分来啦
2022-01-21 16:40:40
【手慢无】希捷18TB硬盘好价 仅需4868元
2022-01-21 16:40:25
混合云安全优势凸显 IBM预测2022年安全五大趋势
2022-01-21 16:40:10
创想三维3D打印机亮相迪拜世博会中国馆,向世界展示“中国智造”
2022-01-21 16:39:56
三星电子卢泰文:为日新月异的世界创立崭新的智能手机标准
2022-01-21 16:39:34
喜讯 | 创想三维产品荣获“2021当代好设计”等大奖
2022-01-21 16:39:14
小米上架双接口U盘 手机也能用只要99元
2022-01-21 16:38:52
奖金超8000元 富士康补贴iPhone 13产线
2022-01-21 16:38:34
《仙剑客栈 2》计划今年上线:经营类
2022-01-21 16:38:20
先加进QQ群 拯救者 Y90双擎风冷电竞手机开启内测报名
2022-01-21 16:38:03
几款不错的场效应管功放电路图
2022-01-21 16:30:56
风速计原理
2022-01-21 16:30:46
传感器工作原理
2022-01-21 16:30:38
什么是MID(移动互联网设备)
2022-01-21 16:30:30
电脑电源电路原理图
2022-01-21 16:30:22
调制解调器是什么
2022-01-21 16:30:10
LCD1602程序代码及显示流程图
2022-01-21 16:29:59
"怕上火,贴王老吉" 王老吉红魔联名散热背夹曝光
2022-01-21 15:09:48
只抽不卖哦 Xbox推“萌虎迎新版”Xbox Series S主机套装
2022-01-21 15:09:37
吉利要做手机了!拟收购魅族手机 目前交易正在进行中
2022-01-21 15:09:28
三星2022 QLED和“自由家”Lifestyle电视获全球顶级机构认证
2022-01-21 15:09:19
下月发布?王腾爆料小米12 Ultra
2022-01-21 15:09:08
《恭喜恭喜》限时免费体验 国行版《舞力全开》上线5首中文歌曲
2022-01-21 15:08:56

热门文章

热点专题