本人在“极客时间”上购买了一套“趣谈网络协议”的课程,本文为该课程第10讲(第第10讲 | UDP协议:因性善而简单,难免碰到“城会玩” )的课程笔记。
tips:
- 二层是数据链路层,使用mac寻址,三层是网络层使用ip寻址。
- 传输层里比较重要的两个协议,一个是 TCP,一个是 UDP。
1.TCP和UDP的区别
1)TCP 面向连接,UDP 面向无连接
- 所谓的建立连接,是为了在客户端和服务端维护连接,而建立一定的数据结构来维护双方交互的状态,用这样的数据结构来保证所谓的面向连接的特性。
- TCP 提供可靠交付。而UDP 继承了 IP 包的特性,不保证不丢失,不保证按顺序到达。
- TCP 是面向字节流的。发送的时候发的是一个流,没头没尾。而UDP 继承了 IP 的特性,基于数据报的,一个一个地发,一个一个地收。
- TCP 是可以有拥塞控制的。并且 TCP是一个有状态服务,通俗地讲就是有脑子的,而 UDP 则是无状态服务。 没脑子。
2)如果 MAC 层定义了本地局域网的传输行为,IP 层定义了整个网络端到端的传输行为,这两层基本定义了这样的基因:网络传输是以包为单位的,二层叫帧,网络层叫包,传输层叫段。我们笼统地称为包。包单独传输,自行选路,在不同的设备封装解封装,不保证到达。基于这个基因,生下来的孩子 UDP 完全继承了这些特性,几乎没有自己的思想。
2.UDP 包头及特点
-
包头:包括源端口、目的端口、长度、校验和、数据等
包头 -
特点1,沟通简单
-
特点2,轻信他人,可以把数据给任何人
-
特点3,愣头青,做事儿不懂权变,无论网络丢包多严重,不会影响继续发包
3.UDP 的三大使用场景
- 第一,需要资源少,在网络情况比较好的内网,或者对于丢包不敏感的应用。
- 第二,不需要一对一沟通,建立连接,而是可以广播的应用。
- 第三,需要处理速度快,时延低,可以容忍少数丢包,但是要求即便网络拥塞,也毫不退缩,一往无前的时候。
- 例子:
网页或者 APP 的访问、流媒体的协议、实时游戏(游戏对实时要求较为严格的情况下,采用自定义的可靠 UDP 协议,自定义重传策略,能够把丢包产生的延迟降到最低,尽量减少网络问题对游戏性造成的影响。)、IoT 物联网、移动通信领域
UDP 总结
1)如果将 TCP 比作成熟的社会人,UDP 则是头脑简单的小朋友。TCP 复杂,UDP 简单;TCP 维护连接,UDP 谁都相信;TCP 会坚持知进退;UDP 愣头青一个,勇往直前;
2)UDP 虽然简单,但它有简单的用法。它可以用在环境简单、需要多播、应用层自己控制传输的地方。例如 DHCP、VXLAN、QUIC 等。
网友评论