基于FPGA的UDP硬件发送模块设计与实现
UDP数据包发送过程及协议介绍
UDP数据发送与接收过程
发送、接收UDP包的过程如图1所示。
其中,UDP协议在OSI模型中的第四层,即传输层;而IP协议在网络层,传输层的下一层。
要发送的数据经过传输层和网络层,到达数据链路层,经过以太网MAC发送出去。所以还需加上MAC帧头,以符合以太网帧格式。整帧结构如表1。
UDP协议特点
UDP协议特点如下。
⒈UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
⒉由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台主机可同时向多个客户机传输相同的消息。UDP有不提供数据报分组、组装和不能对数据包排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。
⒊UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。
⒋吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。
⒌UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表。
⒍UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加帧头(header)后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。
由于UDP是不可靠的,若在网络质量令人不十分满意的环境下,UDP协议数据包丢失会比较严重。但是,由于UDP的特性:它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。
- 基于ARM9的UDP协议栈的设计与实现(11-27)
- 基于STM32的TCP/IP协议栈代码之UDP分析(11-18)
- 嵌入式Linux网络编程之:TCP/IP协议概述(09-13)
- UDP数据报与TCP传输应用系统的层间接口设计(12-08)
- 基于Android的VoIP系统的设计与实现(03-28)
- 基于Verilog HDL的RS-232串口通信在CPLD上的实现(06-05)