以太网UDP测试实验

news2024/9/24 17:11:51

目录

一.UDP简介

1.1UDP概述

1.2UDP协议

二.实验任务

三.模块设计

3.1总体模块设计

3.2UDP模块设计

3.2.1udp_rx模块设计

3.2.2udp_tx模块设计

四.板级验证 


一.UDP简介

1.1UDP概述

           UDP (User Datagram Protocol)用户数据协议 是一种面向无连接的传输层协议,属于 TCP/IP 协议簇的一种。 UDP 具有消耗资源少、通信效率高等优点,通常用来传输音频、视频等对实时性要求高的场合。
           UDP TCP 是传输层中非常重要的两个协议,以下是两者的区别。

1.2UDP协议

        可以看出UDP和ICMP在以太网帧里面的位置一样。

        UDP 首部共 8 个字节,同 IP 首部一样,也是一行以 32 位( 4 个字节)为单位。
        源端口号 16 位发送端端口号,用于区分不同服务的端口,端口号的范围从 0 65535
目的端口号: 16 位接收端端口号。
        UDP 长度 16 UDP 长度,包含 UDP 首部长度 + 数据长度,单位是字节( byte )。
        UDP 校验和 16 UDP 校验和。 UDP 计算校验和的方法和计算 IP 数据报首部校验和的方法相似,但不同的是 IP 数据报的校验和只检验 IP 数据报的首部,而 UDP 校验和包含三个部分: UDP 伪首部, UDP 首部和 UDP 的数据部分。伪首部的数据是从 IP 数据报头和 UDP 数据报头获取的,包括源 IP 地址,目的 IP地址,协议类型和 UDP 长度,其目的是让 UDP 两次检查数据是否已经正确到达目的地,只是单纯为了做校验用的。

二.实验任务

         本节实验任务是上位机通过网口调试助手发送数据给 FPGAFPGA 通过以太网接口接收数据并将接收到的数据发送给上位机,完成以太网 UDP 数据的环回。同时电脑可以通过命令行窗口发送 ping 命令给 FPGA,FPGA 通过以太网接口接收数据并将接收到的数据发送给电脑,完成以电脑 ping 开发板的实验测试。

三.模块设计

3.1总体模块设计

PLL模块:因为gmii_to_rgmii模块中的输入延时控制IDELAYCTRL中需要用到PLL倍频输出的200MHZ时钟。

FIFO模块:以太网单次会接收到大量数据,因此本次实验需要一个 FIFO 模块用来缓存数据,由于本次实验所使用的 GMII 接收时钟和 GMII 发送时钟实际上为同一个时钟,但是为了方便后面实验因此这里使用的是异步 FIFO。 

arp模块:根据arp协议对接收数据进行解析,并按照arp协议格式发送报文。

icmp模块:根据icmp协议对接收数据进行解析,并按照icmp协议格式发送报文。

udp模块:根据udp协议对接收数据进行解析,并按照udp协议格式发送报文。

rth_ctrl模块:因为arp、icmp、udp模块的数据不能同时进入FIFO缓存,因此该模块控制选择此3个模块中的某一个缓存进入FIFO。

3.2UDP模块设计

         这里模块设计思路和ICMP实验中一样。

3.2.1udp_rx模块设计

3.2.1.1整体模块设计图

 3.2.1.2波形图

               gmii_rx_dv:当复位信号rst_n拉高后,该信号在下一个脉冲来临时也拉高,代表GMII 输入数据有效信号,然后gmii_rxd[7:0]开始输入以太网报文。

               rec_en:当接收数据到下图中的蓝色数据段时,rec_en开始拉高,rec_data就是下图中的蓝色用户数据。

            rec_byte_num : 为以太网接收的有效字数,主要用于统计以太网接收的有效字数,在当数据接收完成后,将该信号的数据传递到发送模块。
 3.2.1.3状态转换图

           整体与icmp实验完全一样。注意:在中间状态如前导码错误、MAC 地址错误、协议类型错

误、不是 UDP 协议错误以及 IP 地址错误时跳转到 st_rx_end 状态而不是跳转到 st_idle 状态。因为中间状态在解析到数据错误时,单包数据的接收还没有结束,如果此时跳转到 st_idle 状态,此时eth_rxdv为1,会误把有效数据当成前导码来解析,所以状态跳转到 st_rx_end 。而 eth_rxdv 信号为 0 时,单包数据才算接收结束,所以 st_rx_end 跳转到 st_idle 的条件是 eth_rxdv=0 ,准备接收下一包数据。
3.2.1.4代码+仿真波形解析
3.2.1.4.1空闲状态

         空闲状态下,gmii_rx_dv为高电平,并且gmii_rxd传入一个8位55信号,代表要开始接收以太网报文,因此跳转至下一状态。

         仿真时,将gmii_tx_en赋值给gmii_tx_en,代表仿真时udp模块中的接收数据和发送数据是同步进行的。

         下图中的仿真波形的红色代表该空闲状态下的波形。

    

3.2.1.4.2接收前导码状态

           根据以太网帧报文格式,接收7个8‘h55+1个18'hd5。因为空闲状态下已经接收一个8’h55,因此这里只接收 6个8‘h55+18'hd5即可。只要任何一个8位数据出错,就发出error信号,停止接收。

           仿真时 发送的数据就是接收的数据。

3.2.1.4.3接收以太网帧头状态

                该状态下接收6Byte目的MAC地址+6Byte源MAC地址+2Byte以太网协议类型。并判断目的MAC地址和以太网类型协议是否有误,因为该实验是UDP测试(UDP位于IP协议中)实验,若协议类型例如 0x0800 代表 IP 协议(网际协议)、0x0806 代表 ARP 协议(地址解析协议)。

               由仿真波形可知,接收的目的MAC地址为ffffff(广播类型),接收的以太网协议为0800,均无误。 

3.2.1.4.4 接收IP首部状态

         该段代码作用有二,第一判断协议类型是icmp还是udp, ICMP 为 1 , TCP 为6, UDP 为 17 ,若不是则发出error信号。第二是判断目的IP地址是否为开发板的IP,若不是则发出error信号,终止接收数据。

       结合前面状态整合下来就是判断报文是不是IP协议,是进一步判断是不是UDP协议,还有目的MAC地址和IP地址。

      当仿真位于cnt=0时,5X4=20,故gmii_rxd=20。

     当仿真位于cnt=9时,gmii_rxd=17,结合icmp实验中的 ICMP 为 1 , TCP 为6, UDP 为 17,可知该报文数据是UDP协议。 

 由仿真图可知,发送的目的IP地址为192.168.1.10和开发板的IP保持一致,des_ip是16进制的目的IP。

 3.2.1.4.5接收UDP首部状态

               该状态主要是获取 蓝色数据段的长度,根据仿真波形图可以看出,接收到的UDP长度为18,而UDP首部长度为8,18-8=10.

3.2.1.4.6接收数据段状态

         该状态的作用有二,第一将接收到的数据暂存起来,第二暂存接收的数据段长度

         由仿真波形可知,一共接收了10个数据,故长度为10.当接收完毕后,代表一包以太网数据接收完,故rec_pkt_done拉高。 

 3.2.1.4.7终止状态

            该状态作用是接收填充数据段和crc校验码,因为上面数据段共10个,还需填充8个,紧接着是crc校验码,以上全部接收完毕则跳转至空闲状态。 

3.2.2udp_tx模块设计

3.2.2.1整体模块设计图

 3.2.2.2波形图

              tx_start_en:当复位信号拉高后,该信号持续一个脉冲,表示可以开始发送以太网数据 。

              gmii_tx_en:为 GMII 输出数据有效信号,gmii_txd GMII 输出数据,当 gmii_tx_en 信号拉高,GMII 开始发送数据,当 gmii_tx_en 信号拉低表示数据发送完成。

              tx_req:表示从fifo中读数据请求。

              tx_done: 为以太网发送完成信号,当一包数据发送完成后且 CRC 校验完成后,tx_done 会拉高一个时钟周期,表示 UDP 发送完成。

3.2.2.3状态转换图

          同ICMP实验中的一样,只不过少了DCP首部和数据校验状态。 

3.2.2.4代码+仿真波形分析
3.2.2.4.1起始信号

           因为tx_start_en是异步信号,它来自udp_rx模块中的rec_pkt_done信号,这里捕捉它的上升沿变信号,因此需要对其打三拍。

 仿真文件中激励信号如下,代表清零信号消失后将tx_start_en拉高,并设置发送数据的字节数为10.

仿真波形如下。

3.2.2.4.2寄存各段长度

                以上代码的作用是依次计算出下图中的蓝色模块长度、绿色模块长度、紫色模块长度。

                         由下面仿真模型可知,10+28=38,10+8=18,仿真正确。 

3.2.2.4.3空闲状态

                         

                           该段代码作用有三。第一:按照上面两个表格将IP首部和UDP首部更新到变量ip_head中。第二:若arp包发来的目的ip地址有更新,则将IP更新到ip_head[4]中。第三:若目的MAC地址有更新,则将MAC新值更新到eth_head值中。若无更新,则采用默认值。

                          由于以上两个变量是中间变量,并非该模块的输入输出信号,故无仿真波形。

3.2.2.4.4IP首部校验模块

                       以上代码作用,将IP首部数据累加,累加和有进位继续累加,直至没有进位,将和按位取反,即可得校验值。

 3.2.2.4.5发送前导码

3.2.2.4.6发送MAC帧头

     包含6Byte目的MAC地址+6Byte源MAC地址+2Byte以太网协议类型。

      仿真波形中1是目的MAC,2是源MAC,3是IP协议类型。

3.2.2.4.7发送IP首部+UDP首部

             该状态作用有二。第一发送IP首部+UDP首部。第二提前两个clk将向FIFO中读数据请求信号拉高。因为有时序延迟。

 仿真波形中的1相当于发送了上面表格的第一行;2相当于发送了表格中第二行数据;3相当于发送表格中第三行数据,4相当于发送了表格中第四行数据。

 

上面仿真波形中的1、2、3相当于依次发送了上面两个表格中的数据。

注意3中的tx_req,只有提前将该信号拉高,下面一个状态才能准时从FIFO中读取数据发送出去。

 3.2.2.4.8发送数据段

              该状态下,gmii_txd一直等于tx_data,只不过赋值区间在由别的计数器控制。当实际发送数据个数<18,则由real_tx_data_num=18控制,当实际发送个数大于18,则由data_cnt计数器控制。

       有下面仿真波形图可知,当发送完10个数据时,提前将tx_req拉低。并且剩余8个数据填充aa。

四.板级验证 

            首先设置PC端的IP地址如下。

   然后打开抓包工具wireshark,用于捕捉PC端和开发板发送的以太网报文。

      紧接着打开正点原子的网口调试工具,向开发板发送10个字节的数据。

         上图中1是第一次发送的报文,只发送了01.

         2是第二次发送的报文,发送了10个数据。

         3表示发送的报文包数。

         4表示总共发送的数据个数。

         5表示总共接收的数据个数。

         此时打开抓包工具,找到ARP协议

            1中代表电脑向开发板发送的ARP请求,2表示开发板向电脑回馈的ARP应答包含开发板自身的MAC地址。

1中代表电脑向开发板发送UDP协议报文,2表示开发板向电脑环回UDP协议报文。

3中表示端口号和校验码,4中表示发送的10个数据分别是01 02 03 04 05 06 07 08 09 10 

            上图展示的是开发板返回电脑端的报文数据,可以看出还回数据中 不足18字节,这里自动补充了8个数据。

          再次发送报文,只不过这次发送20个数据。

  上图中显示当发送数据大于18个,则不会再填充额外的数据。 

         上图显示ICMP通信正常。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1981733.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

65、zookeeper+kafka实现订阅号生产及阅读

前言回顾 elk es–elasticsearch l–logstash k–kibana f–filebeat 一、elkfk kafka带入集群当中 zookeeper集群kefka集群 zookeeper是一个开源的&#xff0c;分布式的&#xff0c;为分布式架构提供协调服务的APACHE的项目。 保存元数据。 1.1、zookeeper的工作机…

微信支付海外走红,中国企业跨境支付‘轻装上阵’

当我们谈论中国企业走向世界&#xff0c;拓展海外市场的征程时&#xff0c;一个不可忽视的助力者就是微信支付。它不仅是一个支付工具&#xff0c;更是连接中国企业和全球消费者的桥梁&#xff0c;让中国企业在海外也能享受到与国内同等的支付便利与信任。 早在2016年1 月 15 …

AGV的四点关键技术,你都了解吗?

AGV 在现代化工业的发展中&#xff0c;提倡高效&#xff0c;快速&#xff0c;可靠&#xff0c;提倡将人从简单的工作中解放出来。机器人逐渐替代了人出现在各个工作岗位上。机器人具有可编程、可协调作业和基于传感器控制等特点&#xff0c;自动导向小车&#xff08;Automated …

吃透张宇1000题和660题,能保底100分吗?

暑假已经过一半了&#xff0c;很多人都在埋头做题&#xff0c;如果你选择的是1000题660题 一定要好好看这篇笔记&#xff01; 因为很多人做题做到现在&#xff0c;有点迷茫 主要的迷茫点有三个&#xff1a; 1、为什么1000题和660题也都做不少了&#xff0c;遇到新题&#x…

[MRCTF2020]Ezpop1

打卡题目 代码审计 果我们把modifiy对象的var改为php伪协议&#xff0c;然后成功调用invoke魔术方法就可以读出flag 调用invoke魔术方法需要将对象当做一个函数来使用&#xff0c;这样invoke方法就会自动调用 <?php class Modifier { protected $var "php:…

多模态大模型系列解读

人类通过视觉、语言等多种表征媒介&#xff08;模态&#xff09;与世界互动&#xff0c;每种模态都可能在某个方面的表达和交流上有它自己的优势&#xff0c;融合在一起帮助我们更系统、更完整地理解这个世界。随着技术的发展&#xff0c;大预言模型基本实现独立自然的表达&…

IP 地址在 SQL 注入攻击中的作用及防范策略

数据库在各个领域的逐步应用&#xff0c;其安全性也备受关注。SQL 注入攻击作为一种常见的数据库攻击手段&#xff0c;给网络安全带来了巨大威胁。今天我们来聊一聊SQL 注入攻击的基本知识。 SQL 注入攻击的基本原理 SQL 注入是通过将恶意的 SQL 代码插入到输入参数中&#xf…

搭建pxe网络安装环境实现服务器自动部署(基于rhel7)

1.kickstart自动安装脚本制作 1.1开启主机图形 init 5 1.2打开vmware左上角的编辑&#xff0c;打开虚拟网络编译器 1.3安装/启动图形工具 kickstart ​ [rootrhel7 ~]# ls /root/ anaconda-ks.cfg initial-setup-ks.cfg [rootrhel7 ~]# less /root/anaconda-ks.cfg //此…

SSM相关

文章目录 SSM导坐标相关类config文件夹下result文件夹下其他文件夹下自定义异常类 拦截器相关分模块开发可选依赖&#xff08;不透明&#xff09;排除依赖&#xff08;不需要&#xff09;聚合继承 mvn命令 SSM 导坐标 <build><plugins><plugin><groupId…

【方法】如何给7Z压缩包添加密码?

在日常工作中&#xff0c;我们经常需要将文件或文件夹压缩成7Z压缩文件&#xff0c;这样可以节省空间或方便传输。对于重要而敏感的压缩文件&#xff0c;往往还需要设置密码保护。下面一起来看看如何给7Z压缩包添加密码。 我们可以使用7-ZIP解压缩软件&#xff0c;按以下步骤来…

Linux常用命令------文件管理

1.新建目录 mkdir是创建目录的命令 mkdir text mkdir 创建多个目录 mkdir -p a/b/c2.创建文件夹 touch是创建文件夹的命令 touch 文件名 touch 创建多个文件夹 touch a.txt b.txt c.txt3.删除文件 rm 是删除文件的目录删除一个文件&#xff1a; rm example.txt 强制删除一…

【EI稳定检索】第二届计算机技术与建模国际会议(ICCTM 2024)

第二届计算机技术与建模国际会议 2024 International Conference on Computer Technology and Modeling 【1】会议简介 第二届计算机技术与建模国际会议&#xff08;以下简称“该会议”&#xff09;是一个汇聚了全球科学家、学者、工程师及学生的重要学术盛会。会议旨在展示当前…

易捷OA协同办公软件 ShowPic 任意文件读取漏洞复现

0x01 产品简介 易捷OA协同办公软件是在“让管理更简单”和“实时协同”的理念的指导下&#xff0c;”本着“简约、实时、快捷、省钱”的产品定位&#xff0c;结合数千家客户的管理实践和当前最先进的IT技术开发出来的全新一代协同产品&#xff0c;在云计算、全文检索、手机应用…

打造零碳工厂,引领绿色发展新潮流

随着全球气候变化的加剧&#xff0c;我国政府提出了“双碳”战略&#xff0c;即力争在2030年前实现碳达峰、2060年前实现碳中和。企业作为国家经济的支柱&#xff0c;积极响应国家政策&#xff0c;推进自身可持续发展&#xff0c;是实现“双碳”目标的重要环节。国内多家头部新…

springboot 博客交流平台-计算机毕业设计源码56406

摘要 博客交流平台 作为一种重要的网络平台&#xff0c;为用户提供了展示自我、分享经验和与他人互动的空间。在国内外&#xff0c;研究者们关注博客交流平台 的各个方面&#xff0c;并取得了显著的进展。研究内容主要包括用户体验和界面设计、社交化和互动性、多媒体内容支持、…

EasyCVR视频转码:T3视频平台不支持GB28181协议,应该如何实现与视频联网平台的对接与视频共享呢?

EasyCVR视频管理系统以其强大的拓展性、灵活的部署方式、高性能的视频能力和智能化的分析能力&#xff0c;为各行各业的视频监控需求提供了优秀的解决方案。 T3视频为公网HTTP-FLV或HLS格式的视频流&#xff0c;目前T3平台暂不支持国标GB28181协议&#xff0c;因此也无法直接接…

【练习】使用DevEco Studio编写点赞案例

效果展示 效果说明 如果当前处于未点赞状态&#xff0c;那么点击将点赞数1&#xff0c;并且颜色变为粉色&#xff1b;如果当前已经处于点赞状态&#xff0c;那么点击点赞按钮&#xff0c;点赞数-1&#xff0c;并且颜色恢复为最初的颜色。 知识点 点击交互事件onClick http:…

海博思创HyperBlock II液冷储能系统荣获AS/NZS 3000国际认证

近日&#xff0c;海博思创的HyperBlock II液冷储能系统凭借卓越性能&#xff0c;荣获TV莱茵颁发的AS/NZS 3000认证证书。这标志着海博思创产品成功通过了澳大利亚和新西兰的产品检测认证&#xff0c;成为全球领先的储能产品之一。 AS/NZS 3000是全球领先的电工行业标准之一&…

重装系统之必装神器!错过它们?你的电脑将失去灵魂!

重装系统之必装神器&#xff01;错过它们&#xff1f;你的电脑将失去灵魂&#xff01; 致读者: 点击上方 “雪之梦技术驿站” → 点击右上角“ … ”→ 点选“设为星标★ ” 加上星标&#xff0c;就不会找不到我啦&#xff01; 偷偷溜进文章的小广告&#xff0c;别害羞&#xf…

普华-PowerPMS APPGetUser SQL注入致RCE漏洞复现

0x01 产品简介 PowerPMS是上海普华科技自主研发的移动端工程项目管理产品。支持中英文切换,可与普华PowerOn、PowerPiP系列产品配套使用。产品与工程项目为核心,为项目各参建方提供包括任务管理、文档管理、质量检查、安全检查、施工日志、进度反馈、即时消息等功能在内的服…