UDP User Datagram Protocol 协议 RFC768
相对TCP,UDP更简单,UDP只需要传递数据,不需要建立链接,不保证顺序,没有重传(也就是数据丢了就丢了),没有拥塞控制。
虽然UDP本身看上去是不可靠的,但是我们可以在上一层(应用层)自己控制,编写逻辑来维护其可靠性。
UDP一般用作网络音视频流、网络电话视频会议等。因为这些场景的特点是偶尔丢失数据是可以接受的,不影响应用使用。
由于UDP的简单,所以包头更少,传输效率更高,并且没有TCP的ACK机制,也会减少相应开销。
协议头
|00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|
| Source port | Destination port |
| Length | Checksum |
| Data |
Source port 源端口 16bit
发送方端口
Destination port 目的端口 16bit
接收方端口
Length 数据长度 16bit
包括头和数据总共的长度,表示多少个字节。所以一个UDP数据包最小长度应该是8,表示有8个字节,8x8=64bit,正好保存一个完整的头。
Checksum 校验码 16bit
这个校验码是对一个伪头部,加上UDP完整的数据(头部和数据)进行校验,如果数据有填充,也要算上。伪头部就是从上一层(IP层)获得的一些数据。
Pseudo header 伪头部
0 7 8 15 16 23 24 31
+--------+--------+--------+--------+
| source address |
+--------+--------+--------+--------+
| destination address |
+--------+--------+--------+--------+
| zero |protocol| UDP length |
+--------+--------+--------+--------+
伪头部包含了,源地址、目的地址、填充、协议、UDP长度这些信息。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
2020-05-06 bind errno 88 9