TCP 和 UDP 有哪些区别?
TCP是面向连接的,UDP是面向无连接的。
所谓的建立连接,是为了在客户端和服务端维护连接,而建立一定的数据结构来维护双方交互的状态,用这样的数据结构来保证所谓的面向连接的特性。
例如:
- TCP提供可靠交付。通过TCP连接传输的数据,无差错、不丢失、不重复、并且按序到达。
- TCP是面向字节流的。UDP是基于数据报的。
- TCP是可以有拥塞控制的。
- TCP是一个有状态服务。
UDP 包头是什么样的?
UDP三大使用场景
1、需要的资源少,网络比较好的内网,或对于丢包不敏感的应用。DHCP基于UDP,一般获取IP地址都是内网请求,且一次请求不到没有关系。TFTP基于UDP,批量安装操作系统时用到TFTP,没有操作系统系统的时候,不适合维护复杂的状态机。
2、不需要一对一沟通,可以广播的应用。DHCP时广播协议。D类地址是组播地址,VXLAN需要组播,也基于UDP。
3、需要处理速度快,时延低,可以容忍少数丢包,但要求即便网络拥塞,也毫不退缩。
基于UDP的“城会玩”的五个例子
1、网页或APP的访问。QUIC(Quick UDP Internet Connections,快速UDP互联网连接)基于UDP,在应用层师兄快速连接建立、减少重传时延,自适应拥塞控制。
2、流媒体协议。
3、实时游戏。
4、IoT物理网。因为物联网终端资源少。
5、移动通信领域。因为移动通信网络协议本身比较复杂,TCP显得多余了。