热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

UDP:userDatagramprotocol用户数据报协议无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETFRFC76

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包头如下所示:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 网卡工作原理及网络知识分享
    本文介绍了网卡的工作原理,包括CSMA/CD、ARP欺骗等网络知识。网卡是负责整台计算机的网络通信,没有它,计算机将成为信息孤岛。文章通过一个对话的形式,生动形象地讲述了网卡的工作原理,并介绍了集线器Hub时代的网络构成。对于想学习网络知识的读者来说,本文是一篇不错的参考资料。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了VoLTE端到端业务详解|VoLTE用户注册流程相关的知识,希望对你有一定的参考价值。书籍来源:艾怀丽 ... [详细]
  • SQL Server 2008 到底需要使用哪些端口?
    SQLServer2008到底需要使用哪些端口?-下面就来介绍下SQLServer2008中使用的端口有哪些:  首先,最常用最常见的就是1433端口。这个是数据库引擎的端口,如果 ... [详细]
  • Ansem 最新雄文:软着陆后,加密市场下阶段趋势与核心叙事
    市场最糟糕的时候已经过去,以太坊合并前不太会看到新的低点;但仍需来自关注宏观市场的不确定风险。撰文:Ansem ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了如何使用iptables添加非对称的NAT规则段,以实现内网穿透和端口转发的功能。通过查阅相关文章,得出了解决方案,即当匹配的端口在映射端口的区间内时,可以成功进行端口转发。详细的操作步骤和命令示例也在文章中给出。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 配置IPv4静态路由实现企业网内不同网段用户互访
    本文介绍了通过配置IPv4静态路由实现企业网内不同网段用户互访的方法。首先需要配置接口的链路层协议参数和IP地址,使相邻节点网络层可达。然后按照静态路由组网图的操作步骤,配置静态路由。这样任意两台主机之间都能够互通。 ... [详细]
  • 本文由编程笔记#小编整理,主要介绍了关于数论相关的知识,包括数论的算法和百度百科的链接。文章还介绍了欧几里得算法、辗转相除法、gcd、lcm和扩展欧几里得算法的使用方法。此外,文章还提到了数论在求解不定方程、模线性方程和乘法逆元方面的应用。摘要长度:184字。 ... [详细]
  • 本文介绍了一道经典的状态压缩题目——关灯问题2,并提供了解决该问题的算法思路。通过使用二进制表示灯的状态,并枚举所有可能的状态,可以求解出最少按按钮的次数,从而将所有灯关掉。本文还对状压和位运算进行了解释,并指出了该方法的适用性和局限性。 ... [详细]
author-avatar
手机用户2502939545
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有