"); //-->
今天跟大家讲一下ICMP协议及Ping程序在我的STC51实验板上的实现情况。开始还是介绍协议的基本知识,以下内容摘自TCP/IP详解第一卷第六章:
ICMP经常被认为是IP层的一个组成部分。它传递差错报文以及其他需要注意的信息。ICMP报文通常被IP层或更高层协议(TCP或UDP)使用。一些ICMP报文把差错报文返回给用户进程。
ICMP报文是在IP数据报内部被传输的,如下图所示。
ICMP报文的格式如上图所示。所有报文的前4个字节都是一样的,但是剩下的其他字节则互不相同。下面我们将逐个介绍各种报文格式。类型字段可以有15个不同的值,以描述特定类型的ICMP报文。
从上面的表格可以看到Ping程序就是利用ICMP中请求回显和回显应答的两种ICMP报文。“Ping”这个名字源于声纳定位操作。Ping程序由Mike Muuss编写,目的是为了测试另一台主机是否可达。该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答
(上图列出了所有的ICMP报文类型)。
一般来说,如果不能Ping到某台主机,那么就不能Telnet或者FTP到那台主机。反过来,如果不能Telnet到某台主机,那么通常可以用Ping程序来确定问题出在哪里。Ping程序还能测出到这台主机的往返时间,以表明该主机离我们有“多远”。
我的目标是,用PC Ping通我的板子。为此我首先编写了一段单片机程序,让我的板子接收所有的数据包,并通过串口打印出来,这样得到数据就便于分析了。当然,因为没有对数据进行任何处理所以也就没有任何响应了,它就好比是网络上的一个监听者。下面是板子上电后收到的一系列数据包,由于我在其间执行了PC上得Ping程序,所以显示的数据包中就包括PC发来的Ping报文。(这里使用了大虾电子网的SSCOM串口调试工具)
通过人工筛选(就是一个一个字节的与TCP/IP协议对照啦),找到了Ping报文(ICMP请求回显),下面我们来具体解读一下每个字段的含义,也算是对TCP/IP协议的一个复习。
红线标注的前六个字节为该数据包的目的MAC地址,接下来的蓝线标注的为源MAC地址。8 0(绿线)表明这是一个IP包,后面的十几个Byte在这里可以不管。
第二行褐色线标注的是源IP地址,橙色为目的IP地址。这些属于IP包头部分。下面的部分就属于ICMP报文了。
第三行绿线标注的8 0是ICMP包的类型、代码(回显请求),紫色的为ICMP校验和(2字节),后面的为ICMP报文内容。最后4个字节为整个数据包的CRC校验码(由网络控制器自动生成)。
知道了这个报文的含义后,组织回显应答报文就不是什么难事了。
首先,变换源、目的MAC地址和IP地址;
然后,将ICMP的类型字段由8改为0;
最后,校验和字段要加上8(因为类型字段减了8),这样才是正确的校验和。
其他内容不变,原封不动Copy即可。
经过上面三步,我们就得到了ICMP回显应答报文了,只要通过网络控制器发出去就OK了。下面就是用PC Ping我的板子的结果。
我这个STC51+DM9000A板子,响应时间=1ms。这点还是比较振奋的,因为记得看过一般51+RTL8019做的板子ping的延时是十几ms。抛开架构不谈,这些年51 MCU的速度还是提高了不少。现在还没有做什么优化,如果用上STC单片机的双DPTR,在copy数据报时应该还能提高不少速度,相信性能还有提升的空间。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
IAR扩展嵌入式开发平台,推出面向安全关键型应用的长期支持(LTS)服务
单开关多灯控制电路(3)
Keil C编译器常见警告与错误信息的解决方法
ADS5281 社区视频
USB问题请教
德国初创杀进 RISC‑V,首款通用处理器流片
单开关多灯控制电路(1)
Groq向三星提出AI芯片扩产需求,推论芯片市场或迎爆发
ADS1115: 工业级最小尺寸16位 ADC
GPU进基站?AI-RAN的真争议
路障闪烁告警电路(3)(HL9811)
路障闪烁告警电路(4)
意法半导体Stellar P3E:车载边缘AI MCU 开启汽车多合一电控新时代
Keil C51资料(下)
英特尔推出第二代酷睿系列处理器,搭载实时处理性能并扩充边缘 AI 产品矩阵
15W 无滤波器 D 类音频放大器 TPA3110D2
BQ27500 社区视频
Nordic扩展nRF54L系列,推出入门级低功耗蓝牙SoC
玩arm的朋友请进, 好东西
ADS6425 社区视频
单开关多灯控制电路(2)
Gartner提出挖掘人工智能价值的三大核心支柱
Keil C编译器常见警告与错误信息的解决方法
keil uv3正式版
USB问题请教
存储涨价后遗症来了
KEIL C51
玩arm的朋友请进, 好东西
ARM开发好工具
CPU借AI热潮重获青睐,再度 “变酷”