趣谈网络协议02
tcp 和 udp的区别
TCP 提供可靠交付,而 UDP 继承了 IP 包的特性,不保证不丢失,不保证按顺序到达。
TCP 是面向字节流的。UDP 继承了 IP 的特性,基于数据报的,一个一个地发,一个一个地收。
TCP 是可以有拥塞控制的。UDP 就不会,应用让我发,我就发,管它洪水滔天。
TCP 其实是一个有状态服务。而 UDP 则是无状态服务。
UDP 的三大特点
UDP 就像小孩子一样,有以下这些特点:
第一,沟通简单,不需要一肚子花花肠子(大量的数据结构、处理逻辑、包头字段)。前提是它相信网络世界是美好的,秉承性善论,相信网络通路默认就是很容易送达的,不容易被丢弃的。
第二,轻信他人。它不会建立连接,虽然有端口号,但是监听在这个地方,谁都可以传给他数据,他也可以传给任何人数据,甚至可以同时传给多个人数据。
第三,愣头青,做事不懂权变。不知道什么时候该坚持,什么时候该退让。它不会根据网络的情况进行发包的拥塞控制,无论网络丢包丢成啥样了,它该怎么发还怎么发。
UDP 的三大使用场景
第一,需要资源少,在网络情况比较好的内网,或者对于丢包不敏感的应用。
第二,不需要一对一沟通,建立连接,而是可以广播的应用。
第三,需要处理速度快,时延低,可以容忍少数丢包,但是要求即便网络拥塞,也毫不退缩,一往无前的时候。
udp实际使用例子:
网页或者app的访问
流媒体协议
实时游戏
IoT 物联网
移动通信领域
如果将 TCP 比作成熟的社会人,UDP 则是头脑简单的小朋友。TCP 复杂,UDP 简单;
TCP 维护连接,UDP 谁都相信;TCP 会坚持知进退;
UDP 愣头青一个,勇往直前;
UDP 虽然简单,但它有简单的用法。它可以用在环境简单、需要多播、应用层自己控制传输的地方。例如 DHCP、VXLAN、QUIC 等。