1. TCP和UDP有哪些区别?
首先,建立连接是为了在客户端和服务端维护连接,而建立一定的数据结构来维护双方交互的状态
UDP:
- 面向无连接
- 继承IP包的特性:不保证不丢失,不保证按序到达
- 基于数据报,一个一个发,一个一个收
- 没有拥塞控制
- 无状态服务
TCP
- 面向连接
- 提供可靠交付:通过TCP连接传输的数据 无差错、不丢失、不重复、按序到达
- 面向字节流:发送的是一个流,没头没尾
- 拥有拥塞控制:可以根据网络环境调整自己的行为
- 有状态服务: 精确记着是否发送、是否接收、发送到哪、应该接收到哪
2. UDP
发送数据过程:发送UDP包达到目标机器 – MAC地址匹配,取下来,将剩下的包传给处理IP层的代码 – 把IP头取下来,匹配目标IP,解析UDP头格式 – 根据端口号,将数据交给相应的应用程序
4.UDP的三大应用场景
- 需要资源少,在网络情况比较好的内网,或者对于丢包不敏感的应用
- 不需要建立连接,而是可以广播的应用: UDP的不面向连接的功能,可以使得承载广播或多播的协议
- 需要处理速度快,时延低,可以容忍少数丢包,但是要求即便网络拥塞,也一往无前的时候