[趣谈网络协议学习] 10 UDP协议:因性善而简单,难免碰到“城会玩”

TCP 和 UDP 有哪些区别?

  1. TCP面向连接,UDP无连接。
    所谓的建立连接,是为了在客户端和服务端维护连接,而建立一定的数据结构来维护双方交互的状态,用这样的数据结构来保证所谓的面向连接的特性。
  2. TCP提供可靠交付。
    通过TCP连接传输的数据,无差错、不丢失、不重复、并且按序到达。UDP则在数据发出之后就完成工作,不保证不丢失,不保证按顺序到达。
  3. TCP是面向字节流的。UDP是基于数据报的。
    TCP面向字节流,发送的时候是一个流,无头无尾;UDP基于数据报的,一个一个的发,一个一个的接收。
  4. TCP有流量控制和拥塞控制。
    TCP会监控网络状态和丢包情况来调整发送行为,UDP则不然。
  5. TCP是一个有状态服务。
    TCP是一个有状态服务,会记录数据发送情况(是否发送,是否接收,发送到那个了,接收到那个了);UDP则是无状态服务,不关注数据的发送和接收情况。

UDP 包头是什么样的?

UDP 包头

UDP三大特点

  • 沟通简单:相信网络世界,默认容易送达,不会丢包。
  • 轻信他人:不建立连接,可以给任何人发数据,别人也可以发送数据给他。
  • 愣头青,做事不懂变通:不会根据网络情况和丢包情况进行发送调整。

UDP三大使用场景

  1. 需要的资源少,网络比较好的内网,或对于丢包不敏感的应用。
    DHCP基于UDP,一般获取IP地址都是内网请求,且一次请求不到没有关系。TFTP基于UDP,批量安装操作系统时用到TFTP,没有操作系统系统的时候,不适合维护复杂的状态机。
  2. 不需要一对一沟通,可以广播的应用。
    DHCP时广播协议。D类地址是组播地址,VXLAN需要组播,也基于UDP。
  3. 需要处理速度快,时延低,可以容忍少数丢包,但要求即便网络拥塞,也毫不退缩。

基于UDP的“城会玩”的五个例子

  1. 网页或者APP的访问
    原来访问网页和手机 APP 都是基于 HTTP 协议的。HTTP 协议是基于 TCP 的,建立连接都需要多次交互,建立一次连接需要的时间会比较长,然而既然是移动中,TCP 可能还会断了重连。
    QUIC(Quick UDP Internet Connections)是谷歌提出的基于UDP改进的通信协议,目的是降低网络延迟提供更好的用户体验。QUIC 在应用层上,会自己实现快速连接建立、减少重传时延,自适应拥塞控。
    QUIC 可参看: 科普:QUIC协议原理分析Google QUIC 协议:从 TCP 到 UDP 的 Web 平台

  2. 流媒体的协议
    TCP 的严格顺序传输要保证前一个收到了,下一个才能确认,如果前一个收不到,下一个就算包已经收到了,在缓存里面,也需要等着。对于直播来讲,这显然是不合适的。
    对于视频播放来讲,有的包可以丢,有的包不能丢,因为视频的连续帧里面,有的帧重要,有的不重要,如果必须要丢包,隔几个帧丢一个,其实看视频的人不会感知,但是如果连续丢帧,就会感知了,因而在网络不好的情况下,应用希望选择性的丢帧。网络不好的时候,TCP 协议会主动降低发送速度,这回进一步导致卡顿。

  3. 实时游戏
    游戏有一个特点,就是实时性比较高。 TCP 的强顺序问题,如果出现一个数据包丢失,所有事情都需要停下来等待这个数据包重发。

  4. IoT 物联网
    物联网终端资源少,而维护 TCP 协议代价太大,对实时性要求也很高。

  5. 移动通信领域
    在 4G 网络里,移动流量上网的数据面对的协议 GTP-U 是基于 UDP 的。GTP 协议本身就包含复杂的手机上线下线的通信协议。如果基于 TCP,TCP 的机制就显得非常多余。

小结

  • 路由分静态路由和动态路由,静态路由可以配置复杂的策略路由,控制转发策略;
  • 动态路由主流算法有两种,距离矢量算法和链路状态算法。基于两种算法产生两种协议,BGP 协议和 OSPF 协议。

参考资料:

趣谈网络协议(极客时间)链接:
http://gk.link/a/106nW

科普:QUIC协议原理分析:
https://zhuanlan.zhihu.com/p/32553477

Google QUIC 协议:从 TCP 到 UDP 的 Web 平台:
https://www.infoq.cn/article/quic-google-protocol-web-platform-from-tcp-to-udp


GitHub链接:
https://github.com/lichangke/LeetCode
知乎个人首页:
https://www.zhihu.com/people/lichangke/
CSDN首页:
https://me.csdn.net/leacock1991
欢迎大家来一起交流学习

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值