• 【网络协议】聊聊UDP协议


    前面的几篇文章讲述了链路层和IP层,主要的话其实就是MAC地址,以及通过IP地址求MAC地址的ARP协议。PING的底层协议 ICMP
    。动态分配IP协议 DHCP等。而从今天开始我们开始讲述传输层协议,传输层主要就是UDP和TCP。

    TCP 和 UDP 有哪些区别?

    面试中常问到的其实就是TCP和UDP的区别,首先一个特别明显的区别就是TCP是面向连接的,UDP是无连接的
    连接其实就是在客户端和服务端之间维护连接,通过建立一定的数据结构来维护双方交互的状态,用这样的数据结构来保证所谓的面向连接的特性。

    第二点:TCP提供可靠交付,IP层其实没有保证数据的可靠性,TCP传输层保证来传输的数据,无差错、不丢失、不重复,并且按序到达。而UDP不保证可靠传输。并且不按顺序到达。

    第三点:TCP是面向字节流,发送的是一个一个的流,UDP是一个一个的数据报。

    第三点:TCP具备拥塞控制,也就是会根据丢包以及网络稳定情况进行调整自己发送数据的快慢。UDP其实不管三七二十一,只管发送。

    第四点:TCP是一个有状态服务。会明确记录包又没有到达,UDP是无状态的服务。

    在这里插入图片描述

    UDP 包头是什么样的?

    当目标机器收到包后,会不断取下MAC头,IP头。在IP头中标识的是UDP和TCP。就可以从中开始解析数据,但是处理完UDP数据之后,应该把数据交给谁处理,内核的事情处理完毕之后,应该交给应用程序,每个应用程序都有自己的端口,正是通过目的端口号进行区分的。
    所以UDP的格式是源端口号,目的端口号,剩下就是UDP长度以及UDP校验和。
    在这里插入图片描述

    UDP 的三大特点

    沟通简单,默认认为网络世界是美好的,不容易丢弃。
    可以互相传输数据,可以发送给其他人,也可以收到其他人发送的数据。
    不具备网络情况进行灵活处理。

    UDP 的三大使用场景

    虽然UDP不保证数据的可靠传输,但是针对一些场景来说,其实也非常适合使用UDP进行传输数据。

    1.网络情况比较稳定的情况 或者对于丢包场景不敏感的应用。而DHCP其实基于UDP协议的。获取IP协议是内网请求,所以针对这种场景比较适合。
    2.不需要建立连接,就可以广播的应用。可以承载广播或者多播的协议,DHCP就是一种广播的形式。
    3.处理速度快,时延低,可以容忍少数丢包,,因为不需要关心数据是否丢失等情况,所以不处理复杂的应用场景。

    UDP使用场景案例

    网页或者 APP 的访问

    原来网页和APP是基于HTTP的,HTTP基于TCP,建立连接比较耗费资源,所以提出来QUIC (quick udp internet connections)快速UDP互联网连接。目的是降低网络通信的延迟,提供更好的用户互动体验。

    流媒体的协议

    直播视频中其实最重要的就是实时性,可以间断的丢包,选择性的丢帧。所以很多直播应用,都采用的是UDP实现自己的视频传输协议。

    实时游戏

    游戏场景其实也是实时性比较高,游戏对实时要求较为严格的情况下,采用自定义的可靠 UDP 协议,自定义重传策略,能够把丢包产生的延迟降到最低,尽量减少网络问题对游戏性造成的影响。

    IoT 物联网

    移动通信领域

    小结

    本篇主要简单介绍了TCP和UDP的区别,在于TCP为保证数据的可靠传输有自己的一套机制,而UDP不是基于连接的,所以对于实时性场景一般都是采用UDP进行使用。

  • 相关阅读:
    SQL语句where与having区别、内连接,外连接,左右外连接,交叉连接
    MindSpore:【语音识别】DFCNN网络训练loss不收敛
    第16节——ref
    微服务之配置中心
    DGIOT平台基本功能介绍——物模型及指令通道相关部分介绍
    springboot java高校在线办公自动化系统Vue
    Linux-初学者系列_docker
    java毕业设计宠物领养饲养交流管理平台Mybatis+系统+数据库+调试部署
    Java 多线程 要点
    VUE识别访问设备是移动端还是pc端
  • 原文地址:https://blog.csdn.net/jia970426/article/details/134022730