网络原理——UDP

1、 与TCP的关键区别

特性 UDP TCP
连接方式 无连接 面向连接
可靠性 不可靠 可靠
数据顺序 不保证顺序 保证顺序
传输速度 更快 相对较慢
头部开销 8字节 20-60字节
流量控制
拥塞控制
适用场景 实时应用、广播/多播 可靠性要求高的应用

2、UDP 报文结构

报文结构大致可以分为首部和载荷(需要传输的数据部分),首部又有源端口、目的端口、长度、校验和几个部分,起大小都是 2 字节。

端口号:是一个无符号的整数,范围在 0~65535

UDP长度:这里的长度是表示的整个 UDP 的长度,所以一条 UDP 数据报的最大为 64 KB

校验和:验证 UDP 数据报在传输过程过程当中是否发生出错

3、理解 UDP 的 "不可靠"

应⽤层交给 UDP 多⻓的报⽂ , UDP 原样发送, 既不会拆分, 也不会合并;

⽤ UDP 传输100个字节的数据: • 如果发送端调⽤⼀次sendto, 发送100个字节, 那么接收端也必须调⽤对应的⼀次recvfrom, 接收100 个字节; ⽽不能循环调⽤10次recvfrom, 每次接收10个字节;

也就意味着 UDP 只管发送,不会管接没接受到。

4、UDP使⽤注意事项

我们注意到, UDP 协议⾸部中有⼀个16位的最⼤⻓度. 也就是说⼀个 UDP 能传输的数据最大长度是 64K(包含 UDP ⾸部). 然⽽64K在当今的互联⽹环境下, 是⼀个⾮常⼩的数字. 如果我们需要传输的数据超过64K, 就需要在应⽤层⼿动的分包, 多次发送, 并在接收端⼿动拼装;

5、为什么不扩容 UDP 长度

很多人有疑惑,既然两字节不够,把它改成 4 字节不就能解决,为什么不扩容呢?

其主要原因就是在设计之初的定位为 "轻量级最小可行协议" ,国际互联网工程任务组(IETF)刻意保持其精简性,将复杂功能交由应用层实现。

而且互联网已经发展那么多年了,全球大大小小的设备都在遵守最初的协议,若现在扩容 ,将会使得,原来的设备无法解析数据报,产生错误。

所以我们可以的使用 TCP 来替代~~

相关推荐
星辰落满衣1 分钟前
股票实时交易数据之Python、Java等多种主流语言实例代码演示通过股票数据接口
java·开发语言·python
利刃大大6 分钟前
【SpringBoot】Spring IOC && DI && 五大注解 && Bean && 扫描路径 && 依赖注入
java·spring boot·spring
William_cl8 分钟前
【CSDN 精品专栏】ASP.NET Razor 变量输出 @变量名:从入门到避坑,新手也能写对!
java·数据库·asp.net
尤物程序猿26 分钟前
spring的监听器的几种使用方式
java·数据库·spring
老华带你飞27 分钟前
学生请假管理|基于springboot 学生请假管理系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·后端·spring
毕设源码-钟学长31 分钟前
【开题答辩全过程】以 基于java的点餐猫在线个性化点餐系统的设计与实现为例,包含答辩的问题和答案
java·开发语言
一 乐1 小时前
校务管理|基于springboot + vueOA校务管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·spring
元气满满-樱1 小时前
DHCP服务部署
网络
摇滚侠1 小时前
面试实战 问题三十四 对称加密 和 非对称加密 spring 拦截器 spring 过滤器
java·spring·面试