专栏中心

EEPW首页 > 专栏 > ICMP协议(Ping)在STC51实验板上的实现

ICMP协议(Ping)在STC51实验板上的实现

发布人:mayer 时间:2009-09-06 来源:工程师 发布文章
ICMP协议(Ping)在STC51实验板上的实现

 

    今天跟大家讲一下ICMP协议及Ping程序在我的STC51实验板上的实现情况。开始还是介绍协议的基本知识,以下内容摘自TCP/IP详解第一卷第六章:

         ICMP经常被认为是IP层的一个组成部分。它传递差错报文以及其他需要注意的信息。ICMP报文通常被IP层或更高层协议(TCPUDP)使用。一些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  0ICMP包的类型、代码(回显请求),紫色的为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)服务

Keil C编译器常见警告与错误信息的解决方法

ADS5281 社区视频

视频 2010-03-11

德国初创杀进 RISC‑V,首款通用处理器流片

Groq向三星提出AI芯片扩产需求,推论芯片市场或迎爆发

智能计算 2026-03-10

ADS1115: 工业级最小尺寸16位 ADC

视频 2010-03-11

GPU进基站?AI-RAN的真争议

智能计算 2026-03-10

意法半导体Stellar P3E:车载边缘AI MCU 开启汽车多合一电控新时代

英特尔推出第二代酷睿系列处理器,搭载实时处理性能并扩充边缘 AI 产品矩阵

15W 无滤波器 D 类音频放大器 TPA3110D2

BQ27500 社区视频

视频 2010-03-11

Nordic扩展nRF54L系列,推出入门级低功耗蓝牙SoC

ADS6425 社区视频

视频 2010-03-11

Gartner提出挖掘人工智能价值的三大核心支柱

Keil C编译器常见警告与错误信息的解决方法

keil uv3正式版

存储涨价后遗症来了

网络与存储 2026-03-10

KEIL C51

资源下载 2007-02-16

CPU借AI热潮重获青睐,再度 “变酷”

智能计算 2026-03-10
更多 培训课堂
更多 焦点
更多 视频

技术专区