0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

以太网的心跳包组建设计方案

454398 来源:FPGA开源工作室 作者:FPGA开源工作室 2020-09-30 10:49 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

心跳包就是在客户端和服务器间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包。心跳包在GPRS通信和CDMA通信的应用方面使用非常广泛。数据网关会定时清理没有数据的路由,心跳包通常设定在30-40秒之间。所谓的心跳包就是客户端定时发送简单的信息给服务器端告诉它我还在而已。代码就是每隔几分钟发送一个固定信息给服务端,服务端收到后回复一个固定信息如果服务端几分钟内没有收到客户端信息则视客户端断开。本次设计中,心跳包时间间隔为1秒。

一、心跳包触发器

设计一个 1 秒定时器,每隔一秒就产生一个心跳包触发脉冲,用于下一步心跳包的组建。

二、心跳包粗略框架

本次以太网的心跳包结构如下所示:

本次发送 64 个全为0的数据,当然这个数据是自定义的,因此心跳包总长度为118。此外目的/源 MAC 地址、目的/源 IP 地址、目的/源 port 等值可以用参数的方式先写好。利用刚刚设计的心跳包触发脉冲,我们就能组建这个心跳包了。表中黄色部分为后面需要校验的值,可以先填0进去,后面再覆盖掉这三处即可。代码也没什么说的,用参数和case语句即可。

点击电脑 Win + R 键,输入 cmd,再出入 ipconfig -all,按回车键,即可看到自己电脑的 MAC 地址等参数。

三、心跳包填充:IP校验和UDP校验

1、IP校验方法

IP 校验就是把 IP 首部 20byte 按 2byte(即 16bit)分开后相加,结果如果大于 16’hffff,就将超出 16’hffff 的部分与相加结果的低 16 位相加,直到最终结果小于 16’hffff 为止。最后把小于 16’hffff 的结果取反作为 ip_checksum。高字节在前,低字节在后,替换掉前面在心跳包中填充的 0。

(1) 校验和字段清0

假设有一段以太网包前面没有对 IP 校验和字段清0,而是赋了别的值,例如 IP 首部为:45 00 00 30 80 4c 40 00 80 06 b5 2e d3 43 11 7b cb 51 15 3d,b5 2e 字段即为 IP 校验和字段,清0后数据就变成了:45 00 00 30 80 4c 40 00 80 06 00 00 d3 43 11 7b cb 51 15 3d。

(2) 反码求和

4500+0030+804c+4000+8006+0000+d343+117b+cb51+153d = 34ace,将超过 16’hffff 的部分(即3)与低 16 位(即4ace)上,结果为:3+4ace=4ad1,因为 4ad1 小于 ffff,故作为 Ip_checksum 的反码。

(3) 取反得最终结果

将 4ad1 取反得 b52e,这就是本包数据最终的 IP 校验和,再将 b52e 填充到对应位置即可。

2、UDP校验方法

(1) 校验方法

UDP_checksum 计算稍微复杂一点,需要加入 IP 伪头部,将 IP 伪头部、UDP 首部的 8 个 bytes 和数据包部分按 2byte(即 16bit) 分开后相加,结果如果大于16’hffff,就将超出 16’hffff 的部分与相加结果的低 16 位相加,直到最终结果小于 16’hffff 为止。最后把小于 16’hffff 的结果取反作为 UDP_checksum。高字节在前,低字节在后,替换掉前面在心跳包中填充的0。

(2) UDP结构

UDP_checksum 的组成如图所示。

可以看到,IP 伪头部包含了 IP 源地址,IP 目的地址,一个字节的 0,协议号和 UDP_len ,在前面做的千兆以太网图像传输项目中 IP 源地址,IP 目的地址,协议号都是固定的,而通过上一篇博客设计的 UDP_len 为:UDP首部 8byte + 数据长度 64byte = 8+64='h0048。在设计的时候可以先单独将 IP 伪头部计算出来。

3、计算的时序安排

ip_checksum 和 udp_checksum 计算完成,该数据填充的位置已经经过,那么就没办法将数据填充到原来填充 0 的位置了,但我们想要将其组成完整的以太网包,这一步是不可避免的,那么我们该怎么解决呢?我们可以考虑一下,建立一个足够大的 RAM ,在计算 ip_checksum 和 udp_checksum 的同时将前面心跳包数据存储到 RAM 中,当这一包数据全部计算完再将 RAM 中的数据读出。当读出到要填充 ip_checksum 和 udp_checksum 的位置时,将计算出的两个值取反后填充到对应位置即可。

4、时序图

四、心跳包填充:CRC校验

1、CRC校验范围

CRC校验另起一段,是因为要先算完前面的 ip 校验值和 UDP 校验值才行。CRC校验时必须先去除帧头(即前面的7个55和1个d5),还得去掉帧尾(即后面4个数据,前面我们直接在这填了0)。当 CRC 校验值计算完成后,即可将其填充至数据的末尾 4 位即可。

2、CRC校验方法

(1)CRC校验初始值和空闲值都设置为 32‘hffffffff,即全 1 状态。

(2)计算结果需高低位对调,因为我们计算时是先从高位输入的,所以最后高低位需要对调。

(3)最后结果取反,高低位对调后的结果再取反,即可得到 CRC 的校验值。

3、CRC校验部分代码
always @(posedge sclk) begin
if(rst) begin
crc32_value end
else if(crc_en) begin
crc32_value[ 0] crc32_value[ 1] crc32_value[ 2] crc32_value[ 3] crc32_value[ 4] crc32_value[ 5] crc32_value[ 6] crc32_value[ 7] crc32_value[ 8] crc32_value[ 9] crc32_value[10] crc32_value[11] crc32_value[12] crc32_value[13] crc32_value[14] crc32_value[15] crc32_value[16] crc32_value[17] crc32_value[18] crc32_value[19] crc32_value[20] crc32_value[21] crc32_value[22] crc32_value[23] crc32_value[24] crc32_value[25] crc32_value[26] crc32_value[27] crc32_value[28] crc32_value[29] crc32_value[30] crc32_value[31] end
end

4、时序图

由于这次 CRC 校验值是在末尾,因此不需要用到 RAM 也来得及填充。

至此,我们组建了以太网发送的心跳包,下一步就可以发送了。

编辑:hfy


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 以太网
    +关注

    关注

    41

    文章

    5926

    浏览量

    179569
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1398

    浏览量

    119833
  • 触发器
    +关注

    关注

    14

    文章

    2051

    浏览量

    63048
  • 时序
    +关注

    关注

    5

    文章

    403

    浏览量

    38629
  • 时序图
    +关注

    关注

    2

    文章

    61

    浏览量

    22891
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于以太网芯片的应用层方案

    聚焦于以沁恒微电子以太网芯片(如CH394/CH395及集成型MCU CH32V317等)为基础构建的多种高效应用层方案,阐述其如何以简化的硬件与低成本,实现丰富的网络功能。
    的头像 发表于 12-09 14:47 129次阅读
    基于<b class='flag-5'>以太网</b>芯片的应用层<b class='flag-5'>方案</b>

    以太网设备高温流量测试丢问题案例(晶振篇)

    测试人员发现一个奇怪的现象,设备在白天的测试中,均无丢现象,夜间设备继续运行,但是第二天一早就会发现已发生丢。该设备的用户接口是百兆以太网接口,利用5类非屏蔽双绞线与SmartBits连接,由于端口............
    的头像 发表于 11-21 15:37 3483次阅读
    <b class='flag-5'>以太网</b>设备高温流量测试丢<b class='flag-5'>包</b>问题案例(晶振篇)

    以太网模块被忽视的角落 #电磁兼容EMC #电子工程师 #电子元器件 #磁珠 #滤波电容 #以太网

    以太网
    深圳市韬略科技有限公司
    发布于 :2025年07月25日 17:35:35

    以太网入门:从零开始,掌握以太网基础知识!

    以太网作为现代通信技术的基石,其重要性不言而喻。无论是日常网络应用,还是AI对高速大带宽网络的需求,以太网都扮演着不可或缺的角色。本文将从零开始,带您了解以太网的基础知识,帮助您快速入门。什么是
    的头像 发表于 06-09 14:00 4117次阅读
    <b class='flag-5'>以太网</b>入门:从零开始,掌握<b class='flag-5'>以太网</b>基础知识!

    Microchip LAN9211-ABZJ 集成 10/100 以太网 PHY的以太网控制器

    Microchip LAN9211-ABZJ 集成 10/100 以太网 PHY的以太网控制器
    的头像 发表于 06-04 14:56 815次阅读
    Microchip LAN9211-ABZJ 集成 10/100 <b class='flag-5'>以太网</b> PHY的<b class='flag-5'>以太网</b>控制器

    四路CAN转以太网#三格电子

    以太网
    三格电子科技
    发布于 :2025年05月23日 14:00:21

    双通道CAN转以太网#CAN转以太网#三格电子

    以太网
    三格电子科技
    发布于 :2025年05月12日 13:17:05

    Modbus转以太网终极方案:三步实现老旧设备智能升级

    传输 ✅ 速度差距:Modbus RTU波特率115.2kbps vs 千兆以太网 ✅ 系统孤岛:无法接入SCADA/MES等现代管理系统 ✅ 传输稳定性:Modbus RTU数据传输丢率高,以太网
    发表于 04-24 10:37

    串口转以太网芯片选型指南:2025十大以太网模块品牌盘点与应用方案解析

    随着物联网(IoT)、工业自动化和智能设备的广泛普及,串口转以太网技术的需求持续增长。串口转以太网芯片作为实现串口设备联网的核心组件,在工业控制、数据采集、智能家居等领域起到了至关重要的作用。然而
    的头像 发表于 04-09 15:30 1651次阅读

    以太网线缆测试解决方案

    工业以太网是指在工业环境的自动化控制及过程控制中应用以太网的相关组件及技术。工业以太网会采用TCP/IP协议,和IEEE 802.3标准兼容,但在应用层会加入各自特有的协议。
    的头像 发表于 03-21 14:12 1645次阅读
    <b class='flag-5'>以太网</b>线缆测试解决<b class='flag-5'>方案</b>

    广成科技CAN转以太网模块的作用和应用

    CAN转以太网模块是一类能够将CAN总线数据转换为以太网数据的设备,通常用于实现CAN总线与以太网总线之间的互联互通。在智能锁柜和智能文件交换箱中,CAN转以太网模块可以实现将本地CA
    的头像 发表于 03-20 13:58 1015次阅读
    广成科技CAN转<b class='flag-5'>以太网</b>模块的作用和应用

    国产芯片替代方案:解析沁恒以太网PHY芯片

    沁恒国产以太网PHY芯片:高性能替代方案助力国产化升级
    的头像 发表于 03-12 10:40 3242次阅读

    汽车以太网ESD保护

    电子发烧友网站提供《汽车以太网ESD保护.pdf》资料免费下载
    发表于 02-08 18:17 1次下载
    汽车<b class='flag-5'>以太网</b>ESD保护

    汽车以太网的演化进程

    汽车以太网最早追溯至2012年的EAVB,2015年10月,第一个汽车以太网物理层标准802.3bw问世,速率是100Mbps。到2020年以后,100Mbps汽车以太网开始普及,如今除了汽车电子
    的头像 发表于 02-07 09:49 2469次阅读
    汽车<b class='flag-5'>以太网</b>的演化进程

    单对以太网供电技术的演进和应用

    单对以太网(SPE)是一种新兴的以太网通信标准,与通常使用四对线的传统以太网不同,它只使用一对线进行数据传输。对于那些空间和重量受限的应用,例如汽车、工业和物联网(IoT)设备,这是一项非常实用的技术。如果通过此方式还能实现远端
    的头像 发表于 01-15 14:17 3261次阅读
    单对<b class='flag-5'>以太网</b>供电技术的演进和应用