以太网协议介绍——UDP

注:需要先了解一些以太网的背景知识,方便更好理解UDP协议、
以太网基础知识一
以太网基础知识二

UDP协议

  • UDP即用户数据报协议,是一种面向无连接 的传输层协议 ,属于 TCP/IP 协议簇的一种。
  • UDP具有消耗资源少、通信效率高等优点,通常用来传输音频、视频等对实时性要求高的场合。

Q:什么是面向无连接

A:无连接即在传输数据时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。

从图中可以看出,以太网的数据包就是对各层协议的逐层封装来实现数据的传输 。
用户数据打包在 UDP 协议中,UDP协议又是基于IP协议之上的,IP协议又是走MAC层发送的。

即从包含关系来说:MAC帧中的数据段为IP数据报,IP报文中的数据段为UDP报文,UDP报文中的数据段为用户希望传输的数据内容。

这里着重介绍一下IP首部数据(其他的在以太网基础知识中对以太网数据包讲解内容中有涉及到)

这里给一个实际项目中用到的协议表:

从前面介绍的图 34.1.2 可以知道,UDP 的首部和数据位于IP 协议的数据段。既然已经有 IP 协议了,为什么还需要 UDP 协议呢?为什么我们选择的是 UDP 还不是传输更可靠的 TCP 呢?

Q:已经有 IP 协议了,为什么还需要 UDP 协议呢?

A:事实上数据是可以直接封装在 IP 协议里而不使用 TCP、UDP 或者其它上层协议的。

然而在网络传输中同一IP服务器需要提供各种不同的服务,各种不同的服务类型是使用端口号来区分的,例如用于浏览网页服务的 80 端口,用于FTP(文件传输协议)服务的 21 端口等。

TCP和 UDP 都使用两个字节的端口号,理论上可以表示的范围为0~65535,足够满足各种不同的服务类型。
Q:为什么选择的是 UDP 而不是传输更可靠的 TCP 呢?

A:TCP 协议与 UDP 协议作为传输层最常用的两种传输协议,这两种协议都是使用 IP 作为网络层协议进行传输。首先可以肯定的是:使用 FPGA 实现 TCP协议是完全没有问题的。但是,FPGA 发展到现在,却鲜有成功商用的 RTL 级的 TCP 协议设计,大部分以太网传输都是基于比较简单的UDP 协议。TCP协议设计之初是根据软件灵活性设计的 ,如果使用硬件逻辑实现,工程量会十分巨大,而且功能和性能无法得到保证,因此,TCP 协议设计并不适合使用硬件逻辑实现。UDP 协议是一种不可靠传输,发送方只负责数据发送出去,而不管接收方是否正确的接收。在很多场合,是可以接受这种潜在的不可靠性的,例如视频实时传输显示等。

TCP 协议与 UDP 协议的区别:

  1. TCP 协议面向连接,是流传输协议,通过连接发送数据,而 UDP 协议传输不需要连接,是数据报 协议;
  2. TCP为可靠传输协议,而UDP为不可靠传输协议。即TCP协议可以保证数据的完整和有序,而UDP 不能保证;
  3. UDP由于不需要连接,故传输速度比 TCP 快,且占用资源比 TCP 少;
  4. 应用场合:
    TCP协议常用在对数据文件完整性要求较高的一些场景中,如文件传输等。
    UDP常用于对通讯速度有较高要求或者传输数据较少时,比如对速度要求较高的视频直播和传输数据较少的 QQ 等。
相关推荐
xiaoye-duck5 分钟前
《Linux 网络编程》深入理解 epoll(上):从接口到底层内核工作机制剖析
linux·网络
anew___41 分钟前
《从零手写操作系统 (29):管道与重定向进阶——命名管道、Here Document与Shell语法扩展》
java·开发语言·前端·javascript·网络
奇牙coding1 小时前
GPT-5.5 API 报 401 但 GPT-5.4 正常怎么办?不是 Key 失效,是 Organization 头的强制校验变了
java·网络·gpt·ai
请输入蚊子1 小时前
CVE-2026-8260 D-Link DCS-935L缓冲区溢出漏洞 复现
网络·安全·web安全·iot
0+1111 小时前
Linux --应用层协议HTTP
网络·网络协议·http
紫神1 小时前
DDS 通信技术说明
网络·云原生·容器·k8s·dds·弱网
洋不写bug2 小时前
网络编程(二)TCP回显服务器与客户端通信详解
服务器·网络·tcp/ip·tcp·网络通信·javaee·回显服务器
K成长日志2 小时前
BLE Host层L2CAP--数据包格式
网络·物联网·无线通信·蓝牙·iot·ble
liangshanbo12152 小时前
主系统登录后,子系统怎么实现自动登录?
java·网络·数据库
谢亮_vipxieliang3 小时前
Go 并发安全性保障
服务器·网络·golang