跳到主要内容

任务二 UDP协议

知识点​

1.UDP是一个什么样的协议?​

用户数据报协议(User Datagram Protocol,UDP) 是一个非常简单的协议。它为应用层的进程提供一个不可靠的、面向无连接的传输服务,避免了建立和释放一个连接所需的时间。

UDP 的"三不"保证:

1 不保证数据报的到达 2 不保证所传输的数据在字节顺序上是否正确 3 不重传丢失的数据

2.什么场合适合选用UDP?​

当应用层进程传输的数据量很少、可靠性要求不是特别高,而实时性要求高时,选用 UDP 就比较合适。典型例子:

  • 网络视频会议系统
  • 聊天系统
  • 流媒体(音视频)数据传输
  • 路由信息协议(RIP)中修改路由表

在这些场合下的容错方式:如果有一个消息丢失,在几秒之后另一个新的消息就会替换它——因此个别报文丢失并不会造成严重后果。

3.UDP协议有哪些特点?​

(1)无连接

UDP 是一个无连接协议,即在传输数据之前源端和终端不必须事先建立连接。当应用程序有数据需要向网络发送时,UDP 协议将尽可能快地把其发送至网络上。

端速度/处理特点
发送端UDP 发送数据的速度受应用程序生成数据的速度、计算机的处理能力和传输带宽的限制
接收端UDP 把每个消息段放在队列中,应用程序每次从队列中读一个消息段

(2)不维护连接状态,系统开销小

由于 UDP 传输数据不建立连接,因此也就不需要维护连接状态(包括收发状态等),因此服务器可同时向多个客户机传输相同的消息。这样就可以极大地减少系统开销,降低了流媒体的误码率和丢包率,并保证了流媒体播放的平滑性。

(3)面向报文

UDP 是面向报文的:发送方的 UDP 对应用程序转交下来的报文,在添加首部后即向下交付给网络层。这个过程中既不拆分也不合并报文。

对比思考:TCP 是面向字节流的,会把长数据切分成报文段、接收端再重组;UDP 保留应用层报文的边界,"一个报文一个数据报"。

(4)不可靠,但适合多媒体

UDP 是一种不可靠传输协议,它无法确保分组传输数据的可靠性。一旦分组数据在通信传输过程中出现丢包,UDP 协议无法对此进行检测和重传操作。

虽然 UDP 是一个不可靠的协议,但却是分发多媒体应用数据的一个理想协议。原因在于:多媒体应用更看重实时性和流畅性,宁可丢少量数据,也不愿因重传等待造成卡顿。

4.UDP数据报的格式是怎样的?​

UDP 数据报由 UDP 报头和 UDP 有效负载构成,其基本结构如图 4-18 所示,UDP 报头长度为 8 个字节。

16 位16 位
源端口 #目的端口 #
UDP 报文长度UDP 校验和
数据(有效负载)

即:报头由 4 个 16 位字段组成,共 4 × 2 = 8 字节;之后直接是数据,没有选项字段。

5.UDP报头各字段的含义是什么?​

字段长度含义
源端口16 位发送端应用程序的 UDP 端口
目的端口16 位目标端应用程序的 UDP 端口
UDP 报文长度16 位UDP 数据报的字节总数(包括头部和数据)
UDP 校验和16 位用于检查 UDP 数据报是否在传输过程中发生了错误

与 TCP 首部的对比:TCP 首部固定部分为 20 字节,有 14 个字段、6 个标志位,还要维护序号、确认号、窗口等;UDP 首部只有 8 字节、4 个字段,这正是 UDP "简单、开销小、转发快"的根本原因。

6.UDP与TCP有什么区别?​

比较项UDPTCP
连接方式无连接(发送前不建立连接)面向连接(三次握手)
可靠性不可靠(不保证到达、不保证顺序、不重传)可靠(重传肯定确认、滑动窗口)
数据形式面向报文,不拆分不合并,保留报文边界面向字节流,分段传输、接收端重组
首部长度8 字节,4 个字段20 字节(固定部分),14 个字段
传输速度快(无建立连接、无确认开销)相对慢(有建链、确认、重传、流量控制开销)
系统开销小,不维护连接状态大,需维护连接、序号、窗口等状态
通信方式一对一、一对多一对一
适用场合数据量少、实时性高、可容忍个别丢失:视频会议、聊天、流媒体、RIP要求数据完整无误:Web 浏览、文件传输、电子邮件
流量控制与拥塞控制无有(滑动窗口)

一句话记忆:TCP 求"准"(可靠、有序、可控),UDP 求"快"(简单、实时、开销小)。

7.传输层如何标识一个通信的进程?​

无论使用 TCP 还是 UDP,传输层都通过套接字(Socket) 来标识通信的双方:

套接字 = 主机的 IP 地址 + 端口号
组成标识对象
IP 地址网络中的主机
端口号主机中运行的进程/应用程序

常用固定端口(由 IANA 分配):Web 服务(HTTP)80、邮件服务(SMTP)25,此外 FTP 为 21、DNS 为 53 等。

UDP 与端口的关系:UDP 报头中的源端口和目的端口,正是用来完成这种"进程到进程"的寻址,这也是传输层"端到端通信"的具体体现。

8.UDP的工作过程可以怎样描述?​

阶段UDP 的处理
发送前不建立连接,直接准备发送
发送时应用进程把报文交给 UDP;UDP 加上 8 字节首部(填源端口、目的端口、长度、校验和)后直接交给 IP 层
传输中IP 层封装成 IP 数据包发送;UDP 不跟踪、不确认、不重传
接收时按目的端口把数据报放入相应应用进程的队列;应用进程每次从队列中读取一个消息段
异常时数据报丢失或出错,UDP 不通知应用进程(可由应用层自行处理)

9.UDP要点速查表​

项目关键内容
全称用户数据报协议(User Datagram Protocol)
服务类型不可靠、面向无连接
报头长度8 字节
报头字段源端口、目的端口、UDP 报文长度、UDP 校验和
字段长度各 16 位
是否分段不拆分、不合并(面向报文)
典型应用视频会议、聊天、流媒体、RIP
与 TCP 的核心差别无连接、不可靠、开销小、速度快