【计算机网络】UDP协议

发布时间:2026/5/28 4:49:17

【计算机网络】UDP协议 目录引言网络基础UDP是什么UDP核心特性UDP报头UDP用武之地如何让UDP变可靠结语引言在线游戏中角色动作流畅、直播无延迟——这一切离不开一个看似“不靠谱”的协议UDP。为什么像视频通话、实时对战游戏这样高要求的场景反而选择不保证可靠性的UDP呢且听我细细道来。网络基础两个计算机中的进程要互相通信不仅需要知道对方的IP地址为了找到对方的计算机而且还要知道对方的端口号为了找到对方计算机中的对应进程。所以在讲UDP协议之前有个必不可少的知识就是要知道——IP和端口号。IP就是用来标识网络中不同主机的地址。端口号就是用来标识同一台主机中的不同进程。下面我举个例子我们在给某人写信时必须在信封上写明Ta的通信地址这是为了找到Ta的住所相当于IP地址并且还要写上收件人的姓名因为住所里可能不止Ta一个人这相当于端口号明白了这一点就够了下面我们正式进入UDP。UDP是什么UDP用户数据报协议User Datagram Protocol存在于传输层。UDP核心特性1无连接在发送数据之前不需要建立连接当然在发送数据结束时也没有连接可释放因此就减少了建立连接、断开连接的开销和发送前的时延。2不可靠尽最大努力交付。UDP没有确认机制没有丢包后的重传机制也不能确保数据报的按序到达先发送的数据报后到达。3面向数据报上图是网络传输的层状结构。发送方的UDP对应用层交下来的报文在添加完UDP报头后就向下交付到网络层了。也就是说UDP对应用层交下来的报文既不合并也不拆分应用层给多少就向下交付多少。如果应用层交付的数据很大导致报文太长UDP也不管照样向下面的网络层交付。但是如果报文太长发送时网络层可能要对报文进行分片这就降低了网络层的效率。由于UDP面向数据报的这一特点导致它不能够灵活的读写数据。用UDP发送100字节的数据如果发送端调用一次 sendto, 发送 100 个字节, 那么接收端也必须调用对应的 一次 recvfrom, 接收 100 个字节; 而不能循环调用 10 次 recvfrom, 每次接收 10 个字 节。4轻量高效报头仅8个字节比TCP报头的20字节少同时又因为它无连接所以传输延迟极低。以上的几个特性共同促成了UDP的——简单高效但不可靠。UDP报头UDP的报头很简单只有8个字节由4个字段组成每个字段长度都是2字节。● 源端口对方回信时需要知道源端口号。● 目的端口发送方在交付报文时需要知道目的端口号才知道报文要交给目的主机的哪个进程。● 长度UDP数据报的长度包含报头最小是8字节仅有报头。● 检验和检测UDP数据报在传输过程中是否有错有错就丢弃。UDP用武之地实时音视频传输容忍少量丢包但拒绝卡顿。在线游戏低延迟优先。DNS查询域名解析快速简单。如何让UDP变可靠UDP的不可靠主要体现在不保证数据包到达顺序、完整性可能丢包、不提供拥塞控制和重传机制。所以让UDP变可靠的思路就是保证包的到达顺序以及完整性然后在应用层提供拥塞控制和重传机制。1应用层添加确认应答机制ACK接收方收到数据包后发送ACK报文告知发送方。2数据包编号为每个数据包分配唯一序列号用于检测丢包和乱序。3超时重传发送方维护发送缓冲区发送方在超时未收到接收方的确认应答时重新发送未确认的数据包。4拥塞控制动态调整发送速率例如模仿TCP的AIMD算法防止网络过载。5前向纠错FEC除了发送原始数据包外额外发送校验包接收方接收到数据包和校验包后可以恢复部分丢包。结语不管是可靠还是不可靠我更喜欢理解为TCP/UDP的一种特性而不是优缺点它只是采用了另一种设计哲学用可控的“不完美”换取极致的效率。本篇博客到这里就结束啦欢迎大家批评指正感谢支持

相关新闻