以太网UDP协议讲解

一.TCP/IP参考模型

1.概述

TCP/IP参考模型是计算机网络的祖父ARPANET和其后继的因特网使用的参考模型。ARPANET是由美国国防部DoD(U.S.Department of Defense)赞助的研究网络。逐渐地它通过租用的电话线连结了数百所大学和政府部门。当无线网络和卫星出现以后,现有的协议在和它们相连的时候出现了问题,所以需要一种新的参考体系结构。这个体系结构在它的两个主要协议出现以后,被称为TCP/IP参考模型(TCP/IP reference model);

2.四层模型

TCP/IP是一组用于实现网络互连的通信协议。Internet网络体系结构以TCP/IP为核心。基于TCP/IP的参考模型将协议分成四个层次,它们分别是:网络访问层、网际互联层(主机到主机)、传输层、和应用层。

  1. 应用层
    应用层对应于OSI参考模型的高层,为用户提供所需要的各种服务,例如:用户自己的数据传输(可带私有协议+数据),FTP、Telnet、DNS、SMTP等.
  2. 传输层
    传输层对应于OSI参考模型的传输层,为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。该层定义了两个主要的协议:传输控制协议(TCP)和用户数据报协议(UDP).
  3. 网际互联层
    网际互联层对应于OSI参考模型的网络层,主要解决主机到主机的通信问题。它所包含的协议设计数据包在整个网络上的逻辑传输。注重重新赋予主机一个IP地址来完成对主机的寻址,它还负责数据包在多种网络中的路由。该层有三个主要协议:网际协议(IP)、互联网组管理协议(IGMP)和互联网控制报文协议(ICMP)。
    IP协议是网际互联层最重要的协议,它提供的是一个可靠、无连接的数据报传递服务。
  4. 网络接入层(即主机-网络层)
    网络接入层与OSI参考模型中的物理层和数据链路层相对应。它负责监视数据在主机和网络之间的交换。事实上,TCP/IP本身并未定义该层的协议,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与TCP/IP的网络接入层进行连接。地址解析协议(ARP)工作在此层,即OSI参考模型的数据链路层。

二.传输协议打包格式

1.以太网帧格式link.

帧格式

前导码和帧开始符

一个帧以7个字节的前导码和1个字节的帧开始符作为帧的开始。7个8‘H’55 + 1个8’HD5。

报头

包含源地址和目标地址的MAC地址,以太类型字段和可选的用于说明VLAN成员关系和传输优先级的IEEE 802.1Q VLAN 标签;
以太网类型可参考以下链接的详细讲解:链接: link.
基于UDP协议的话主要用到IPV4(0X0800);
报头格式为:6byte目标mac地址+6byte源mac地址+IPV4(0X0800)

负载

负载数据长度为46-1500byte范围,由上层IP打包的数据报数据(IP数据报头+IP上层打包的传输数据);

帧校验码

帧校验码是一个32位循环冗余校验码,以便验证帧数据是否被损坏

帧间距

当一个帧发送出去之后,发送方在下次发送帧之前,需要再发送至少12个octet的空闲线路状态码。

2.IPV4数据报格式 link.

网际协议版本4(英语:Internet Protocol version 4,缩写:IPv4,又称互联网通信协议第四版)是网际协议开发过程中的第四个修订版本,也是此协议第一个被广泛部署和使用的版本。其后继版本为IPv6,直到2011年,IANA IPv4位址完全用尽时,IPv6仍处在部署的初期。
IPV4数据报格式

版本(Version)

版本字段占4bit,通信双方使用的版本必须一致。对于IPv4,字段的值是4。

首部长度(Internet Header Length, IHL)

占4bit,首部长度说明首部有多少32位字(4字节)。由于IPv4首部可能包含数目不定的选项,这个字段也用来确定数据的偏移量。这个字段的最小值是5(二进制0101),相当于5*4=20字节(RFC 791),最大十进制值是15。

区分服务(Differentiated Services,DS)

占6bit,最初被定义为服务类型字段,实际上并未使用,但1998年被IETF重定义为区分服务RFC 2474。只有在使用区分服务时,这个字段才起作用,在一般的情况 下都不使用这个字段。例如需要实时数据流的技术会应用这个字段,一个例子是VoIP。

显式拥塞通告( Explicit Congestion Notification,ECN)

在RFC 3168中定义,允许在不丢弃报文的同时通知对方网络拥塞的发生。ECN是一种可选的功能,仅当两端都支持并希望使用,且底层网络支持时才被使用。

全长(Total Length)

这个16位字段定义了报文总长,包含首部和数据,单位为字节。这个字段的最小值是20(20字节首部+0字节数据),最大值是216-1=65,535。IP规定所有主机都必须支持最小576字节的报文,这是假定上层数据长度512字节,加上最长IP首部60字节,加上4字节富裕量,得出576字节,但大多数现代主机支持更大的报文。当下层的数据链路协议的最大传输单元(MTU)字段的值小于IP报文长度时,报文就必须被分片,详细见下个标题。

标识符(Identification)

占16位,这个字段主要被用来唯一地标识一个报文的所有分片,因为分片不一定按序到达,所以在重组时需要知道分片所属的报文。每产生一个数据报,计数器加1,并赋值给此字段。一些实验性的工作建议将此字段用于其它目的,例如增加报文跟踪信息以协助探测伪造的源地址。[7]

标志 (Flags)

这个3位字段用于控制和识别分片,它们是:
位0:保留,必须为0;
位1:禁止分片(Don’t Fragment,DF),当DF=0时才允许分片;
位2:更多分片(More Fragment,MF),MF=1代表后面还有分片,MF=0 代表已经是最后一个分片。
如果DF标志被设置为1,但路由要求必须分片报文,此报文会被丢弃。这个标志可被用于发往没有能力组装分片的主机。
当一个报文被分片,除了最后一片外的所有分片都设置MF为1。最后一个片段具有非零片段偏移字段,将其与未分片数据包区分开,未分片的偏移字段为0。

分片偏移 (Fragment Offset)

这个13位字段指明了每个分片相对于原始报文开头的偏移量,以8字节作单位。
存活时间(Time To Live,TTL)
这个8位字段避免报文在互联网中永远存在(例如陷入路由环路)。存活时间以秒为单位,但小于一秒的时间均向上取整到一秒。在现实中,这实际上成了一个跳数计数器:报文经过的每个路由器都将此字段减1,当此字段等于0时,报文不再向下一跳传送并被丢弃,最大值是255。常规地,一份ICMP报文被发回报文发送端说明其发送的报文已被丢弃。这也是traceroute的核心原理。

协议 (Protocol)

占8bit,这个字段定义了该报文数据区使用的协议。IANA维护着一份协议列表(最初由RFC 790定义),详细参见IP协议号列表链接: link.。
常见的如下图所示;其他UDP为0x11,TCP为0X06;
常见协议的协议字段值

首部检验和 (Header Checksum)

这个16位检验和字段只对首部查错,不包括数据部分。在每一跳,路由器都要重新计算出的首部检验和并与此字段进行比对,如果不一致,此报文将会被丢弃。重新计算的必要性是因为每一跳的一些首部字段(如TTL、Flag、Offset等)都有可能发生变化,不检查数据部分是为了减少工作量。数据区的错误留待上层协议处理——用户数据报协议(UDP)和传输控制协议(TCP)都有检验和字段。此处的检验计算方法不使用CRC。

源地址(Source address)

一个IPv4地址由四个字节共32位构成,此字段的值是将每个字节转为二进制并拼在一起所得到的32位值。
例如,10.9.8.7是00001010000010010000100000000111。

目的地址(Destination address)

与源地址格式相同,但指出报文的接收端。

选项(Options)

附加的首部字段可能跟在目的地址之后,但这并不被经常使用,从1到40个字节不等。请注意首部长度字段必须包括足够的32位字来放下所有的选项(包括任何必须的填充以使首部长度能够被32位整除)。当选项列表的结尾不是首部的结尾时,EOL(选项列表结束,0x00)选项被插入列表末尾。

数据

数据字段不是首部的一部分,因此并不被包含在首部检验和中。数据的格式在协议首部字段中被指明,并可以是任意的传输层协议。

3.UDP数据打包格式 link.

用户数据报协议(英语:User Datagram Protocol,缩写:UDP;又称用户数据包协议)是一个简单的面向数据报的通信协议,位于OSI模型的传输层。该协议由David P. Reed在1980年设计且在RFC 768中被规范。典型网络上的众多使用UDP协议的关键应用在一定程度上是相似的。

在TCP/IP模型中,UDP为网络层以上和应用层以下提供了一个简单的接口。UDP只提供数据的不可靠传递,它一旦把应用程序发给网络层的数据发送出去,就不保留数据备份(所以UDP有时候也被认为是不可靠的数据报协议)。UDP在IP数据报的头部仅仅加入了复用和数据校验字段。

UDP适用于不需要或在程序中执行错误检查和纠正的应用,它避免了协议栈中此类处理的开销。对时间有较高要求的应用程序通常使用UDP,因为丢弃数据包比等待或重传导致延迟更可取。
UDP的分组结构

来源连接端口及目的连接端口

UDP报头包括4个字段,每个字段占用2个字节(即16个二进制位)。在IPv4中,“来源连接端口”和“校验和”是可选字段(以粉色背景标出)。在IPv6中,只有来源连接端口是可选字段。 各16bit的来源端口和目的端口用来标记发送和接受的应用进程。因为UDP不需要应答,所以来源端口是可选的,如果来源端口不用,那么置为零。在目的端口后面是长度固定的以字节为单位的长度域,用来指定UDP数据报包括数据部分的长度,长度最小值为8byte。首部剩下地16bit是用来对首部和数据部分一起做校验和(Checksum)的,这部分是可选的,但在实际应用中一般都使用这一功能;

报文长度

该字段指定UDP报头和数据总共占用的长度。可能的最小长度是8字节,因为UDP报头已经占用了8字节。由于这个字段的存在,UDP报文总长不可能超过65535字节(包括8字节的报头,和65527字节的数据)。实际上通过IPv4协议传输时,由于IPv4的头部信息要占用20字节,因此数据长度不可能超过65507字节(65,535 − 8字节UDP报头 − 20字节IP头部)。
在IPv6的jumbogram中,是有可能传输超过65535字节的UDP数据包的。依据RFC 2675,如果这种情况发生,报文长度应被填写为0。

校验和

校验和字段可以用于发现头部信息和数据中的传输错误。该字段在IPv4中是可选的,在IPv6中则是强制的。如果不使用校验和,该字段应被填充为全0。

校验和计算

UDP校验和计算

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《03米联客2020版fpga课程(udp以太网通信篇).pdf》是一份有关FPGA课程的学习资料,主题为UDP以太网通信。其目的是帮助学习者通过FPGA开发板实现基于UDP/IP协议的通信功能。 该资料通过实例展示如何搭建网卡设计平台、使用IP核构建UDP以太网通信模块、编写Verilog代码实现网络数据包的接收与发送等。同时,它还介绍了CDMA、AXI协议以及不同设计场景下的FPGA资源管理技巧等。 对于初学者来说,《03米联客2020版fpga课程(udp以太网通信篇).pdf》提供了一个较为系统和详细的FPGA学习方案,让他们可以更轻松地理解和应用FPGA技术。同时,对于已有一定FPGA开发经验的学习者,该资料也是一份有用的参考和进一步学习的推动。 总之,《03米联客2020版fpga课程(udp以太网通信篇).pdf》是一份值得学习和掌握的资料,可以为FPGA开发爱好者提供更加全面和深入的学习体验。 ### 回答2: 《03米联客2020版fpga课程(udp以太网通信篇).pdf》是一份非常详细的FPGA课程教材,主要讲授了使用UDP协议进行以太网通信的过程。该教材从基础概念讲起,包括了FPGA的基本结构、五种计算机总线结构、电脑与FPGA之间的数据传输方式等内容。 在UDP以太网通信篇的部分,该教材详细介绍了UDP协议的概念、UDP的头部结构、IP地址的使用方法以及以太网通信的流程等内容。并通过实例演示了FPGA与电脑之间通信的具体实现,包括FPGA端的IP地址设置、以太网发送及接收的例程等。 总的来说,该教材非常适合FPGA入门者学习,通过跟随书的实验,可以更直观地了解FPGA开发的具体步骤,提高自己的开发能力。同时,该教材对于FPGA的应用具有广泛的意义,可以扩大学生的知识面,提高其竞争力。因此,我认为《03米联客2020版fpga课程(udp以太网通信篇).pdf》是一份非常有价值的学习资料,值得广大FPGA爱好者认真学习。 ### 回答3: 《03米联客2020版fpga课程(udp以太网通信篇).pdf》是一份关于FPGA通信技术的教程。该教程主要介绍了FPGA在UDP以太网通信的应用。该教程包含了对UDP协议以太网协议的详细介绍,并给出了相应的设计案例。 整个教程分为六个部分。首先,作者介绍了UDP协议的特点以及与TCP协议的区别。其次,作者详细讲解以太网协议的组成结构与工作原理。接着,作者通过实例讲解了如何在FPGA板上实现UDP以太网通信,包括对通信程序的代码实现,以及对接收端和发送端的设计。 在教程的后面,作者还对FPGA通信技术未来的发展进行了展望。他认为,未来FPGA通信技术将会更加广泛应用于5G无线通信、物联网等领域,成为现代通信技术的重要组成部分。 总的来说,该教程将FPGA通信技术的基本原理讲解得十分详细,并通过案例的实现,让读者更好地理解了其应用流程。对于学习FPGA通信技术的工程师、研究人员以及爱好者来说,该教程是一份很不错的参考资料。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值