以太网UDP协议

一、什么是UDP协议

        前面已经介绍了以太网协议(以太网帧格式解析-CSDN博客)、ARP协议(以太网ARP协议解析_以太网arp包-CSDN博客)和ICMP协议(以太网ICMP协议-CSDN博客),下面我们介绍一下UDP协议。

        UDP协议,是一种面向无连接的传输层协议。同ICMP一样,UDP协议也是基于IP协议的一种协议。

        其优点:消耗资源少,通信效率高,适合FPGA实现。

        缺点:可靠性差,数据可能出现丢包。

二、UDP数据协议结构

协议类型名称字节数数值含义
数据同步前导码7字节

0x55_5555_

5555_5555

同步码,通过串行数据的“01”交替,实现数据的同步。
帧起始界定符1字节0xD5表示一帧的开始。后面紧跟以太网的帧头
以太网协议(14字节帧头)目的MAC地址6字节/以太网协议的第一个字段。指示目标设备(接收端)的MAC地址。分为广播地址、单播地址和多播地址。广播地址的数值为0xFFFF_FFFF_FFFF,用于和所有设备进行通信。
源MAC地址6字节/发送端的MAC地址。
长度/类型2字节/

当该字段的数值小于1536个字节时,表示的是数据的长度。

当为0x0800时,表示该数据包是IPv4协议包。

当为0x08DD时,表示该数据包是IPv6协议包。

当为0x0806时,表示该数据包是ARP协议包。

IP 协议(20字节首部,4字节对齐)版本0.5字节/IP 协议版本号。二进制的 0100 时表示 IPv4,设置为 0110 时表示 IPv6
首部长度0.5字节/表示 IP 首部一共有多少个 32 位(4 个字节)。没有可选字段时,首部有20个字节,此处为5.
服务类型1字节/服务类型为0时,表示一般服务。
总长度2字节/

IP数据报文总长度,包括首部+数据部分

标识2字节/表示数据报文的ID号,每发送一次报文,ID加1
标志0.5字节/

3 位标志(Flags)字段,

第 1 位为保留位;

第 2 位表示禁止分片(1 表示不分片 0:允许分
片);

第 3 位标识更多分片(除了数据报的最后一个分片外,其它分片都为 1)。

片偏移1.5字节/在接收方进行数据报重组时用来标识分片的顺序
生存时间1字节/防止丢失的数据包在网络中无休止的传播,一般设置为64或者128。
协议1字节/表示此数据报所携带上层数据使用的协议类型,ICMP 为 1,TCP 为6,UDP 为 17。
首部校验和2字节/该字段只校验数据报的首部,不包含数据部分
源IP地址4字节//
目的IP地址4字节//
可选字段//可有可无,一般忽略的时候,首部为20字节。注意可选字段长度必须是4字节整数倍。
UDP协议(8个字节帧头)源端口号2字节/

/

目的端口号2字节//
UDP长度2字节/首部长度+数据长度
UDP校验和2字节/大多数场景不检测校验,此处忽略
数据N字节/
以太网协议FCS4字节//

三、实例解析

        此处不再赘述wireshark抓包数据。有兴趣参考ARP或ICMP的抓包数据即可。

四、FPGA代码实现

        这里提供代码实现的参考,一份是米联客的代码工程,一份是正点原子的代码工程。前者的UDP模块为DCP文件,后者提供verilog源码。

        

  • 23
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值