UDP:user Datagram protocol 用户数据报协议
无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17(0x11)
UDP协议的主要作用是将网络数据流量压缩成数据包的形式。一个典型的数据包就是一个二进制数据的传输单位。每一个数据包的前8个字节用来包含包头信息,剩余字节则用来包含具体的传输数据。
UDP报头使用两个字节存放端口号,所以端口号的有效范围是从0------65535

熟知端口号(well-known prot number)

数值为0-1023,这些数值可以在网址www.iana.rog查到,IANA把这些端口号指派给TCP/IP最重要的一些应用程序,让所有的用户都知道。

登记端口号

数值在1024-49151。这类端口号是为没有熟知端口号的应用程序使用的。使用这类端口号必须在IANA按照规定的手续登记,防止重复。

客户端使用的端口号

数值在49152-65535。由于这类端口号仅在客户进程运行时才动态选择,因此又叫短暂端口号。这类端口号是留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程使用的端口号,因此可以把数据发送个客户进程。通信结束后,刚才已使用过的客户端端口号不复存在,这个端口号就可以供其他客户进程使用。


----UDP的长度是指包括包头和数据部分在内的总字节数。因为报头的长度是固定的,所以该域主要被用来计算可变长度的数据部分(又称为数据负载)。数据报的最大长度根据操作环境的不同而各异。理论上,包含报头在内的数据报的最大长度为65535字节。

---- UDP协议使用报头中的校验值来保证数据的安全。校验值首先通过特殊的算法计算得出,在传递到了接收方之后,还需要再重新计算。因此UDP协议可以检测是否出错。虽然UDP提供有错误检测,但检测到错误时,UDP不做错误校正,知识简单地把损坏的消息段扔掉,或者给应用程序提供警告信息。
‘’’’’'由于每次需要发送的数据都不相同,而且校验和内容在发送数据段之前就需要计算出来,不像MAC层是在所有数据都发送完成之后才发送CRC校验值,因此在UDP组包时,校验值的计算是一个不太好处理的地方,在UDP要求不是很严格的地方校验和其实是可以忽略的,因此,在使用verilog实现,为了提升效率并节约FPGA资源,将校验和字段忽略。这样一来,UDP数据包的组包就百年的非常简单了。
’ -----------------------------------------------------------------------------------------------------------------------------------------------------‘
IP协议的介绍

IP首部:20个固定字节+可选字段
每一行32位bit
4字节的32bit值按照以下次序来传输,首先0-7bit,其次8-15比特,然后16-23bit,最后是24-31bit。(这种传输次序称之为big—endian)

首部长度,说明了首部必须为4的倍数,最大值15(说明IP首部长度最大为60bit)。当IP首部长度为20时(无可选字段),该值为5.(5*4=20)
总长度指整个IP数据报的长度,包括首部和数据部分,16bit,最长可达65535

服务类型:指示了报文的优先权等,默认全部0
片标识:是否属于同一个数据段,IP报文的分片ID。全0即可
片偏移:全0即可
生存周期:TTL,典型值32or64
上层协议类型:指封包所使用的网络协议类型,常用协议号:00IP,01ICMP,06TCP,17UDP

IP报头校验和:是根据IP首部计算的校验和,不对首部后面的数据进行计算,其计算方法为:
在发送数据时候,为了计算IP的校验和,应该按照如下步骤:
1.将校验和字段置0,然后将IP包头按照16bit分为多个单元,如包头长度不是16bit的倍数,则用0bit填充到16bit的倍数。
2.对各个单元采用反码加法运算(即高位溢出位会加到低位,通常的补码运算是直接丢掉溢出的高位),将得到的和的反码填入校验和字段
例如,我们使用IP协议发送一个数据长度为30个字节的数据包,发送端IP为192.168.0.2,接收端IP为192.168.0.3 则IP包头如下所示:




UDP千兆以太网FPGA_verilog实现(四、代码前期准备-UDP和IP协议构建)相关推荐

  1. UDP千兆以太网FPGA_verilog实现(一、知识搜集)

    2018年11月11日 星期日 近段时间打算在FPGA--quartus上实现千兆以太网 一.对网卡的重新认识: 网卡工作在ISO/OSI的最后两层:物理层和数据链路层. 1.物理层:定义了数据传送与 ...

  2. UDP千兆以太网FPGA_verilog实现(三、代码前期准备-时序要求)

    GMII接口的时序: RXCLK和GTXCLK信号有着相同的功能,都是125M时钟信号,且两者之间的相位差很小,可以忽略,这两个时钟信号控制着RXD[7:0].RXDV.RXER.TXD[7:0]和T ...

  3. UDP千兆以太网FPGA_verilog实现(五、以太网帧的结构)

    以太网帧格式如下:

  4. 千兆以太网TCP协议的FPGA实现。

    千兆以太网TCP协议的FPGA实现 Lzx 2017/4/20 写在前面,这应该是我大四最后一个工程性的作品了,以后要养成写文档记录的习惯.说明下,本工程为纯verilog实现的硬件TCP收发器,不同 ...

  5. 【紫光同创国产FPGA教程】【第二十三章】千兆以太网传输实验

    本原创教程由芯驿电子科技(上海)有限公司(ALINX)创作,版权归本公司所有,如需转载,需授权并注明出处(http://www.alinx.com). 适用于板卡型号: PGL22G 1. 简介 本实 ...

  6. 千兆以太网(3):发送——组建以太网心跳包

    心跳包就是在客户端和服务器间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包.心跳包在GPRS通信和CDMA通信的应用方面使用非常广泛.数据网关会定时清理 ...

  7. 千兆以太网PHY芯片调试-88E1111(RGMII接口-数据收发ECHO测试) Verilog实现python测试

    千兆以太网PHY芯片调试-基于RGMII接口的88E1111(数据收发ECHO测试) 先放结果: Py测试代码: import socket #网络通信 TCP,UDP DST_IP = '192.1 ...

  8. 基于FPGA的数据采集、通讯和存储系统设计(即FPGA+RTL8211千兆以太网+SD卡存储+RTC+Uart+AD7606数模转换+电流放大采集等硬件设计及程序验证)

    本文主要介绍了学生期间自己做的一个小项目,便于学习初期对fpga的整体把握,涉及了很多常见.常用.常考和面试常问的知识点. 可以作为入门后的拓展学习和应对一些找工作的项目面试. 下面对硬件及软件代码进 ...

  9. 基于Xilinx artix 7的FPGA高级应用(二):千兆以太网通信(原理篇)

    本项目是基于Xilinx Artix7 XC7A35T芯片 以太网芯片选用的是RTL8211EG PHY芯片 MAC 和PHY接口标准是GMII 开发工具是vivado 2018.3 FPGA高级应用 ...

最新文章

  1. 利用FLASH和XML做炫酷图片相册
  2. 虎年云原生落地技术趋势
  3. Android之开发者应该收藏的优秀博客和技术网站
  4. FreeMarker笔记 前言第1章 入门
  5. shedlock 重启系统报错问题_闲谈ShedLock解决分布式定时任务重复执行问题
  6. CentOS7.2下python安装pip-8.0.2管理
  7. AD库文件(元件库+封装库+3D模型)
  8. FFmpeg转码B帧
  9. oracle诉讼_Oracle诉Google:Aaaaand诉讼又回来了! [更新]
  10. java joda time_Java使用JodaTime处理时间
  11. Confluence团队协同工具使用文档
  12. 2019年Java程序员的学习路线
  13. 随机论---生命起源随想
  14. Flash Builder 4.7 破解安装
  15. java毕业设计创达内部管理系统Mybatis+系统+数据库+调试部署
  16. 2021第一届网刃杯网络安全大赛-老练的黑客
  17. python27怎么新建项目_Ren'Py引擎从入门到放弃(2) —— 成功创建第一个工程
  18. cracking_game逆向分析
  19. 什么是 MetaTrader 4(MT4) 以及如何使用它?
  20. 某区“四位一体”智慧政务管理云平台协同办公系统实践案例

热门文章

  1. Spring Sleuth和Zipkin跟踪微服务
  2. 【VS开发】Return与Exit的区别
  3. SPC.NET,为5年的开发做个结尾
  4. Javascript数组操作方法
  5. unix下网络编程之I/O复用(二)
  6. [html] Google map的地理编码javascript例子 -- Google map geocoder example
  7. UA MATH567 高维统计III 随机矩阵4 欧氏空间上的集网与覆盖
  8. JavaScript DOM 向文档添加新的元素
  9. android ADT学习总结
  10. 图解在Matlab中初步操作一下3D图形学算法