UDP协议

UDP协议

一、UDP协议

UDP ,即User Datagram Protocal 是一种无连接的传输层协议


二、UDP的首部格式

用户数据报UDP有两个字段:数据字段和首部字段

1.首部字段

首部字段只有8个字节,由4个字段组成,每个字段的长度都是2个字节

(1)源端口:源端口号,在需要对方回信时选用,不需要时可全0

(2)目的端口:目的端口号,在终点交付报文时必须使用

(3)长度: UDP用户数据报的长度,其最小值是8字节(即仅有首部,没有数据部分),单位为字节

在这里需要注意的是:UDP报文长度是用2个字节表示的,2个字节可以表示范围0~65535,换算即为64KB,所以一个UDP数据报最大只可以传输64KB的数据,所以会出现以下问题:
1.64KB是大还是小
答:是小,现在目前用手机拍摄一张照片需要几MB,对比可知
2.如果应用层数据报传输超过64KB,该如何处理?
方案一:在应用层通过代码的方式针对应用层数据报进行手动分包,拆成多个包通过多个UDP数据报进行传输,以货拉拉搬家为例,当你搬家的东西太多了,一辆货拉拉装不完,可以多叫几辆进行装车。
方案二:不使用UDP,使用TCP(TCP没有这样的限制),以货拉拉搬家为例,当你搬家的东西太多了,一辆货拉拉装不完,可以叫一辆比当前车的容量更大的车。
如果使用方案一,你需要重新设计一个协议,既耗时又耗力,而且你还需要让其他人认同你的协议,也需要让所有电脑都装上你的协议,这显然是不合理的,但是也不一定需要使用方案二,应用层还有其他协议,具体问题具体分析

(4)检验和:校验和是为了提供可靠的UDP首部和数据设计的,当检测UDP用户数据报在传输是否有错,有错就丢弃,当要计算校验和的时候,会在UDP用户数据报之前增加12个字节的伪首部,这种伪首部并不是UDP用户数据报的真正数据,只在计算校验和中时出现,临时添加,从而得到一个临时的UDP用户数据报,检验和就是通过这个临时的UDP进行计算校验,但是UDP也有可能不使用校验和,这时校验和字段里均填0,在这种情况下,由于不进行校验和计算,协议处理的开销就会降低,从而提高数据转发的速度,但是当UDP首部的端口号或者是IP首部的IP地址遇到破坏时,就可能造成不好的影响,所以不太推荐

在这里插入图片描述


三、UDP协议的特点

无连接,不可靠传输,面向数据流,全双工

1.无连接

UDP是无连接的,即发送数据之前无需建立连接(发送数据结束时也没有连接可以释放),因此减少了开销和发送数据之前的延时

2.不可靠传输

UDP使用尽最大努力交付,即不保证可靠交付,即使传输过程中出现丢包情况,UDP也不负责重发

3.面向数据流

发送方的UDP对于应用程序交下来的报文,在添加首部后就向下交付IP层,对于应用层交付下来的报文既不合并,也不拆分,而是保留这些报文的边界,简单而言,应用层发送多长,UDP就发送多长,有点类似于用户说什么就听什么的机制,很墙头草,这也就意味着应用程序必须选择合适的的长度,如果太长,下面的IP层需要增加开销进行分片,如果太短,会使IP数据报的首部的相对长度太大,从而降低效率

在这里插入图片描述

4.全双工通信

1.首先我们先区别两个概念,“全双工”和"半双工“

2.全双工:一个通信通道,可以双向传输(既可以发送,也可以接收)

类似一条八车道的公路,既可以过去,也可以回来
在这里插入图片描述

3.半双工:一个通信通道,只能单向传输

类似一根水管,是单向传输的,一次只能传输一遍边
在这里插入图片描述

4.说完这两个概念,我们再来理解UDP中的全双工:

UDP提供全双工通信,支持双向传输,UDP允许通信双方在任何时候都能发送数据。UDP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。

5.其他特点

1.UDP没有拥塞控制,因此当网络出现拥塞不会使主机的发送速率降低,这对某些实时应用是很重要的,很多的实时应用(如实时视频会议等)要求主机以恒定的速率发送数据,并且允许在网络发生拥塞时丢失一些数据,但却不允许数据有太大的延时, UDP正好满足这种要求
2.UDP支持一对一,一对多,多对一和多对多的交互通信
3.UDP的首部开销小,只有8个字节,比TCP的20个字节的首部要短


总结

UDP协议是无连接的传输层协议,它不保证数据传输的可靠性和顺序性。与TCP协议相比,UDP协议具有以下特点:

1.速度快:因为UDP协议不需要建立连接、确认数据包和重传丢失的数据包等操作,所以它的传输速度更快。

2.简单:UDP协议没有复杂的控制流程和错误处理机制,因此它比TCP协议更加简单易用。

3.应用场景广泛:由于UDP协议的速度快和简单,因此它适用于一些对实时性要求高但不需要可靠传输的应用,例如音视频流媒体、游戏等。

4.可靠性低:由于UDP协议不提供可靠性保证,因此它可能会出现数据丢失、乱序等问题,需要应用程序自行处理这些问题。

总之,UDP协议适用于一些对实时性要求高但不需要可靠传输的应用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值