趣谈网络协议(六)UDP协议

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lwl2014100338/article/details/84309652
TCP与UDP有哪些区别?

(1)TCP是面向连接的,UDP是面向无连接的

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

(3)TCP提供可靠交付。通过TCP连接传输的数据,无差错、不丢失、不重复、并且按序到达,而UDP继承了IP包的特性,不保证不丢失,不保证顺序到达

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

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

(6)因而TCP其实是一个有状态服务,通俗地讲是有脑子的,里面精确地记着发送了没有,接收到没有,发送到哪个了,应该接收哪个了,错一点都不行。而UDP是无状态服务,通俗地说是没脑子的,发出去就发出去了


UDP包头是什么样的?

在这里插入图片描述


UDP的三大特点

(1)沟通简单,前提是它相信网络世界是美好的,秉承性善论,相同网络通路默认就是很容易到达的,不容易被丢失的

(2)轻信他人。它不会建立连接,虽然有端口号,但是监听在这个地方,谁都可以可以传给他数据,它也可以传给任何人数据,甚至可以同时传给多个人数据

(3)愣头青,做事不懂权变。不知道什么时候该坚持,什么时候该退让。它不会根据网络的情况进行发包的拥塞控制,无论网络丢包丢成啥样了,它都该怎么发怎么发


UDP的三大使用场景

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

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

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


基于UDP的五个例子
网页或者APP的访问

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


流媒体的协议

很多直播应用,实现了自己的视频传输协议


实时游戏

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


猜你喜欢

转载自blog.csdn.net/lwl2014100338/article/details/84309652