计算机网络中的敢死队,UDP协议你知多少

在程序员面试中,有一个经常被问到的网络协议,那便是TCP与UDP,可能TCP大家都比较熟悉,三次握手四次挥手,对于UDP可能陌生一点,觉得应用场景比较少,不过这几年,由于直播行业的快速发展,UDP的应用也越来越广,今天我们来学习下UDP协议 。
 

计算机网络中的敢死队,UDP协议你知多少

文章插图
 
 
UDP,用户数据包协议,又称不可靠数据包协议,顾名思义,就是不能保证数据一定能传输到目标机器,既然不能保证传达,为什么还要用这种协议呢?岂不是非常地不合理?
场景有位伟人说过,存在即为合理 。例如网络直播,网络直播采用的很多协议都是基于UDP的,为什么呢?在网络直播的业务中,是允许部分丢包的,即便我们丢失了部分帧,也能够正常的播放,并且用户不一定感受得到 。TCP是不允许丢包的,TCP协议会有复杂的重试机制,特别是在弱网环境下,一旦有数据发送失败,TCP协议就会不停地重试,导致新的视频内容没办法刷出来,那样子视频反而会一卡一顿 。同样,在我们经常玩的MOBA游戏中,例如王者荣耀或者英雄联盟,一旦包丢失了,重新获取到几秒钟前的包已经意义不大了 。
构成UDP的数据包非常的简单,包头只有源端口、目标端口、长度跟校验和四个字段,剩下的就是具体的包体了 。和TCP相比,这已经是精简到不能再精简了,每一个字段都是必须的 。源端口跟目标端口用来给操作系统定位是哪个应用来发送接收包信息,长度跟校验和用来校验UDP包是否正确 。
特点我们注意到,UDP的数据包并没有序列,所以,UDP不保证消息交付顺序,并且不确认,不重传,不排重,随心所欲,有包就发,不像TCP会优先发队首 。
UDP不跟踪连接状态,不建立连接也不关心对方是否能收到!
UDP不需要流量控制,不管网络的情况,没有拥塞控制 。
应用即使UDP这么的不靠谱,但是某些场景下的确需要这么搞 。UDP有三大使用场景 。
  • 多播,因为UDP不用建立连接,所以非常适合用来广播,要想,如果你是一个一万台机器组建的集群,建立连接的消耗的代价是非常大的 。
  • 网络好或者允许丢包的的内网应用,在公司内网,网络一般都非常好,这个时候非常适合使用UDP协议,消耗更小 。
  • 需要处理速度更快,可以容忍少数丢包 。UDP初生牛犊不怕虎,就跟敢死队一样,无论环境怎么样,都会一个劲地上,TCP就不这样了,一旦队列发生拥堵,就会等前面地处理完再处理 。
总结UDP虽然非常的简单,但是UDP的应用仍然非常广泛,可以关注我,后面我们再一起学习,一起分享 。大家的支持是我继续唠嗑的动力 。同名公众号(沙茶敏碎碎念)

【计算机网络中的敢死队,UDP协议你知多少】


    推荐阅读