• UDP协议概述


    传输层里比较重要的两个协议,一个是 TCP,一个是 UDP。TCP 是面向连接的,UDP 是面向无连接的。

    所谓的建立连接,是为了在客户端和服务端维护连接,而建立一定的数据结构来维护双方交互的状态,用这样的数据结构来保证所谓的面向连接的特性。

    TCP 提供可靠交付。通过 TCP 连接传输的数据,无差错、不丢失、不重复、并且按序到达。我们都知道 IP 包是没有任何可靠性保证的,一旦发出去,就像西天取经,走丢了、被妖怪吃了,都只能随它去。但是 TCP 号称能做到那个连接维护的程序做的事情,这个下两节我会详细描述。而 UDP 继承了 IP 包的特性,不保证不丢失,不保证按顺序到达。

    TCP 是面向字节流的。发送的时候发的是一个流,没头没尾。IP 包可不是一个流,而是一个个的 IP 包。之所以变成了流,这也是 TCP 自己的状态维护做的事情。而 UDP 继承了 IP 的特性,基于数据报的,一个一个地发,一个一个地收。

    还有 TCP 是可以有拥塞控制的。它意识到包丢弃了或者网络的环境不好了,就会根据情况调整自己的行为,看看是不是发快了,要不要发慢点。UDP 就不会,应用让我发,我就发,管它洪水滔天。

    网络传输是以包为单位的,二层叫帧,网络层叫包,传输层叫段。我们笼统地称为包。

    UDP 的三大特点:沟通简单、轻信他人、愣头青,做事不懂权变。

    UDP 的三大使用场景:

    1、需要资源少,在网络情况比较好的内网,或者对于丢包不敏感的应用

    2、不需要一对一沟通,建立连接,而是可以广播的应用。

    3、需要处理速度快,时延低,可以容忍少数丢包,但是要求即便网络拥塞,也毫不退缩,一往无前的时候。

    如果应用自己觉得,有的包丢了就丢了,没必要重传了,就可以算了,有的比较重要,则应用自己重传,而不依赖于 TCP。

     QUIC(全称 Quick UDP Internet Connections,快速 UDP 互联网连接)是 Google 提出的一种基于 UDP 改进的通信协议,其目的是降低网络通信的延迟,提供更好的用户互动体验。

    QUIC 在应用层上,会自己实现快速连接建立、减少重传时延,自适应拥塞控制。

    UDP在网页或者 APP 的访问、流媒体的协议、实时游戏、IoT 物联网、移动通信领域。

    此文章为9月Day10学习笔记,内容来源于极客时间《趣谈网络协议》,推荐该课程。

  • 相关阅读:
    LeetCode每日一题——2652. Sum Multiples
    linux邮件发送
    Android系统稳定性简述
    【TCP/IP】【调试】丢包、流不通、错包等问题查证手段系列之二——防火墙
    Jetpack之Navigation的使用(一)
    java常见的设置模式(下)
    【SwiftUI项目】0011、SwiftUI项目-费用跟踪-记账App项目-第3/3部分 -日期指定选定-新增费用页面
    Solidity中的calldata,storage,memory
    新书上市|一位家长的忠告:长大后不成才的孩子,父母都忽视了这个点!
    oracle数据库禁用触发器
  • 原文地址:https://blog.csdn.net/key_3_feng/article/details/132796181