第十篇:UDP协议

传输层主要有两个协议:UDP协议和TCP协议。

 

TCP和UDP有哪些区别呢?

TCP是面向连接的,而UDP是面向无连接的。

 

什么叫面向连接,什么叫无连接呢?

在互通之前,面向连接的协议会先建立连接。例如,TCP会三次握手,而UDP不会。

 

为什么要建立连接呢?

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

 

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

 

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

 

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

 

——分割线——

 

UDP包头格式:

数据包经过MAC层解包,再经过IP层解包,到达传输层之后,发现是UDP数据包,再根据目的端口,交给对应的应用程序进行处理。

 

 

——分割线——

UDP的三个特点:

1、沟通简单,不需要大量的数据结构、处理逻辑、包头字段等。

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

3、它不会根据网络的情况进行发包的拥塞控制,无论网络包丢成啥样了,它怎么发还是怎么发。

 

——分割线——

UDP三大使用场景:

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

比如DHCP就是基于UDP协议的。一般获取IP地址都是内网请求,而且一次获取不到IP也没有关系,可以进行下次获取。

2、不需要一对一沟通,建立连接,而是可以广播的应用。比如DHCP就是一种广播的形式。

3、需要处理速度快,时延低,可以容忍少数丢包,但是要求即便网络拥塞,也会保持同样速率发送。

UDP简单,处理速度快,不像TCP在网络不好出现丢包的时候,拥塞控制策略会进行处理,降低发送速度,用户本来就卡,这下更卡了。

 

——分割线——

UDP使用案例:

1、网页或者APP应用:

大部分访问网页和手机APP都是基于HTTP协议的。HTTP协议是基于TCP协议的,建立连接需要多次交互,建立一次连接需要的时间会比较长,而且TCP可能会断了重连,就要消耗更多的时间。

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

 

2、流媒体协议:

直播协议主要用RTMP,这个协议是基于TCP的。TCP需要前一个包收到,后一个包才能继续处理,导致网络不好时,丢帧会很严重。而直播内容,实时性更加重要,宁可丢包,也不能卡顿。因而,很多直播应该,都基于UDP实现了自己的视频传输协议。

 

3、实时游戏:

实时游戏对时延的要求也很高,也是类似的原因,用TCP协议时,如果网络不好,前一个包没有传输完成,后一个包一直在等待,反而更不行。所以,一般采用自定义的可靠UDP协议,自定义重传策略,减少网络的影响。

 

总结:

1、TCP复杂,UDP简单;TCP面向连接、UDP无连接;TCP会对传输进行控制,UDP一往无前。

2、UDP有它特定的应用场景,它可以用在环境简单、需要多播、应用层自己控制传输的地方。

 

学习参考:

趣谈网络协议

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值