UDP协议

UDP英文全称是User Datagram Protocol,意思是用户数据报协议。
在传输层有两个重要的协议,一个是TCP,一个是UDP。这两个协议对于开发应用软件的人来说,也是最常用的两个协议,所以一定要研究明白。

TCP和UDP有哪些区别

tcp是面向连接的,UPD是无连接的。
面向连接就是传输数据之前,要先建立连接,tcp采用三次握手机制。建立连接的目的是为了维护客户端和服务端的连接,建立一定的数据结构维护双方数据传输的状态。
例如,TCP提供可靠的传输。保证数据无差错、不丢失、按顺序到达,由于ip包是没有可靠性保证的,所以TCP需要额外的方法来提供保证。
TCP是面向字节流的,对IP包处理之后,发送的时候是一个流。而UDP协议继承了IP的特性,基于数据包的,一个一个地发,一个一个地接收。
TCP可以有拥塞控制,根据情况调整发送速度,UDP没有拥塞控制。
TCP 其实是一个有状态服务,通俗地讲就是有脑子的,里面精确地记着发送了没有,接收到没有,发送到哪个了,应该接收哪个了。而UDP是无状态的服务。

UDP的包到达目标机器之后,发现mac地址匹配,就取下来,把剩下的包交给处理ip层的代码,把ip头取下来,如果目标ip匹配,就把里面的数据包发送给应用程序,具体是哪一个应用程序,要根据UDP报头里的端口号来确定。里面有源端口号和目的端口号,都是16位的。

UDP协议的特点
  1. 无连接的:发送数据之前双方不需要先建立连接,可以避免建立连接而消耗时间
  2. 面向报文的:对于从应用层传下来的报文,UDP只添加了首部就向下传给IP层了,不拆分也不合并,保留原来报文的大小。
UDP适合的使用场景
  1. 需要资源少,网络情况号的内网,或者对于丢包不太敏感的应用。比如DHCP就是基于UDP协议的,一般获取ip地址都是内网请求,而且一次获取不到也没事,过一会还有机会。
  2. 不需要一对一连接,可以广播或者多播的应用。例如DHCP就是一种广播的形式。对于多播,我们在讲 IP 地址的时候,讲过一个 D 类地址,也即组播地址,使用这个地址,可以将包组播给一批机器。当一台机器上的某个进程想监听某个组播地址的时候,需要发送 IGMP 包,所在网络的路由器就能收到这个包,知道有个机器上有个进程在监听这个组播地址。当由器收到这个组播地址的时候,会将包转发给这台机器,这样就实现了跨路由器的组播。
  3. 需要处理速度快,时延低,可以容忍少数丢包的情况。例如直播应用,丢失几个视频帧也没事,追求的不卡顿,播放流畅,很多会采用UDP实现自己的视频传输协议。在实时游戏中,由于维护 TCP 连接需要在内核维护一些数据结构,因而一台机器能够支撑的 TCP 连接数目是有限的,有很大限制。所以一般会才采用自定义的可靠UDP协议,自定义重传策略,能尽可能降低丢包产生的延迟。
参考文献

极客时间网络协议专栏

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值