网络基础(四)-UDP协议
参考文献
- 编程必备基础 大话HTTP协议[慕课]
- 趣谈网络协议
- WireShark数据包分析实战(第三版)
- TCP-RFC793
- TCP/IP详解 卷1: 协议
- 图解网络-小林coding
- UDP-RFC768
UDP
UDP
头部格式
1 | 0 7 8 15 16 23 24 31 |
- 源端口号(16位)和目标端口(16位): 主要是告诉UDP协议应该把报文发给哪个进程.
- 包长度: 该字段保存了UDP首部的长度跟数据的长度之和.
- 校验和: 校验和是为了提供可靠的UDP首部和数据而设计.
- Data octets 就是一个字节一个字节的数据,Octet 是 8 位.
UDP
的优点
- 传输效率高: 由于 UDP 不需要进行连接建立、数据确认和重传等操作,因此相比 TCP,它的传输效率要高一些.在对数据实时性要求较高的场景下,使用 UDP 能够更快地传输数据.
- 适用于数据量较小的场景: 由于 UDP 不需要进行分段和重组等操作,因此它对数据大小没有限制,可以传输任意大小的数据.在对数据量较小的场景下,使用 UDP 更加方便.
- 开销较小: 由于 UDP 不需要进行连接建立等操作,因此它的开销较小.在资源受限的移动设备和嵌入式系统等场景下,使用 UDP 更加合适.
- 无拥塞控制: 由于 UDP 不会进行拥塞控制,因此它可以在网络拥塞的情况下继续发送数据,不会受到 TCP 等协议的限制.
UDP
和TCP
的区别以及各自的使用场景
区别
- 连接性: TCP 是面向连接的协议,而 UDP 是面向无连接的协议.在 TCP 中,数据传输之前需要先建立连接,而在 UDP 中,数据传输之前不需要建立连接.
- 数据可靠性: TCP 是可靠传输协议,它会对数据进行确认和重传,以保证数据的可靠性.而 UDP 是不可靠传输协议,它不会对数据进行确认和重传,因此数据的可靠性没有 TCP 高.
- 传输效率: 由于 TCP 需要进行连接建立、数据确认和重传等操作,因此相比 UDP,它的传输效率要稍低一些.
- 数据大小限制: 由于 TCP 需要进行分段和重组等操作,因此它对数据大小有一定的限制,一般情况下最大传输单元(MTU)为 1460 字节.而 UDP 对数据大小没有限制,可以传输任意大小的数据.
使用场景
- TCP 适用于对数据可靠性要求较高的场景,
- 例如文件传输、电子邮件、网页浏览、远程控制(SSH)等需要准确传输数据的场景.
- UDP 适用于对数据实时性要求较高的场景,
- 例如视频通话、在线游戏、音频实时传输、DNS、Ping等需要快速传输数据的场景.
- 需要资源少,在网络情况比较好的内网,或者对于丢包不敏感的应用
- 不需要一对一沟通,建立连接,而是可以广播的应用.
- 需要处理速度快,时延低,可以容忍少数丢包,但是要求即便网络拥塞,也毫不退缩,一往无前的时候.
UDP 报文的最大长度
- UDP(User Datagram Protocol)是无连接的、面向数据报的协议.每个 UDP 报文包含一个数据报头和数据部分.
- UDP 数据报的总长度由 IP 层的最大传输单元(MTU)和 UDP 协议本身的限制决定.具体来说:
- 报文头部: 8 字节
- UDP 数据部分的最大长度: 65507 字节(即 65535 - 8 - 20)
- IP 层的最大报文长度为 65535 字节,其中包括 IP 报头(通常为 20 字节)和 UDP 报头(8 字节),所以 UDP 数据部分的最大长度为 65507 字节.
- 然而,实际使用中,报文大小通常会受到网络 MTU(最大传输单元)的限制.以太网的典型 MTU 为 1500 字节,减去 IP 头和 UDP 头的长度后,数据部分最大为 1472 字节.如果报文超过 MTU,IP 层会对其进行分片,但这可能会降低性能,并增加丢包风险.
- 总之:
- 理论上,UDP 数据报的最大长度是 65507 字节.
- 实际使用中,推荐保持在网络 MTU 范围内(如 1472 字节),以避免分片.
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 HoleLin's Blog!