什么是UDP协议?什么场景下会去用这种协议呢?

接口/总线/驱动

1135人已加入

描述

一、什么是UDP协议

传输层除了TCP协议,还有个很重要的协议:UDP协议。接下来看下UDP协议是个什么东西,它又是怎么工作的。

UDP(User Datagram Protocol):用户数据协议。先看看报头:

DNS

udp协议的头部结构

UDP协议的报头比TCP协议的报头简单很多。它的报头里面只有一个源端口,还有一个目标端口。这个和TCP里面一样,TCP里面也有一个源端口和目标端口。

然后这个端口肯定也是给应用层去寻找对应的应用程序来进行数据的处理。

所以,这个源目端口跟TCP是一样的。

剩下的就是16位UDP长度和16位UDP校验和,这个看下就行,不需要太去纠结。

那么这个里面有没有序号、确认号、标志位等?很明显,它没有。它的报头只有这四个部分,后面是数据部分了。

既然没有序号、确认号、标志位,它是怎么建立连接的呢?没有这些东西是没办法建立连接的,所以UDP协议和TCP协议有很大的不一样。

UDP协议不会建立连接。 客户端要去服务器那边去访问数据,基于UDP协议的话,是不会先去建立连接的。所以UDP是一个无连接的传输协议。 这是和TCP协议最大的区别。

TCP的序号和确认号是为了确保数据包没有被丢,确保数据的完整性和正确性。 既然UDP协议没有确认号和序号这2个部分,那它肯定是一个不可靠的协议。

我发了一个包过去,你也不会给我回一个确认消息,所以我不知道你有没有收到。既然是不可靠的协议,用UDP去发送数据,可能会出现 丢包

因为我发过去之后,你也没有给我发确认消息。我不知道你有没有收到,那我也不知道要不要给你重传。

像TCP,如果它没有收到对方的确认号,等一段时间后,它会进行一个重传。这就是为什么要确认号的原因啊,没有收到对方的确认号,我就认为你没有收到前面的包。所以我给你重新发一个。

那对于我们的UDP协议来说,你既然不会给我发确认,那你也没有连接可以依靠,所以你就是不可靠的。

缺点:

UDP里面出现了丢包、出错,这些都不管,这些都是被允许的。

二、什么场景下会去用这种协议呢?

比如说向百度服务器发起一个连接,像这样基于HTTP或者HTTPS的,这样是肯定不会用UDP的,是基于TCP的。

优点:

1.不需要可靠机制,只要求速度快。

既然我不给你发确认号,也不等你给我发重传消息。那 速度很快

2.什么样的应用运用UDP:流媒体、多媒体游戏、IP电话。像这样的应用是注重速度的。

如果打一个多媒体游戏,很卡,你再多给我发这样的可靠机制,其实我并不是很关心。因为我的数据流量特别大,我要求的是你速度快不卡就可以了。

如果你用网络打一个电话,你说话半天,对方隔一分钟,隔着二分钟才给你回,我刚刚听到你的话是不是要烦死,是不是要等死?所以这种,我只关心速度,中间有没有丢包我不是很关心,用UDP协议进行封装。

3.资源消耗特别小。

这类的音频和视频在传输的时候不关心丢不丢包,丢几个数据包,对我的整体的数据是不会产生太大的影响的。

所以以上场景下,我们就会去使用UDP协议。

三、UDP常用的协议

HTTP和HTTPS就要求数据可靠并且完整的,这种协议就用TCP。

DNS(域名解析协议) :通过域名寻找IP地址的这样一个协议,它常用的是UDP协议。其实它可以用TCP也可以用UDP,自己可以去控制的,但是默认用的是UDP协议。

SNMP :简单网络管理协议。

DHCP :动态主机配置协议。动态获取IP地址的。

除了可以静态配置IP地址,还可以动态获取IP地址。有些电脑,如果有管理员,只要你配个动态获取,会有一个DHCP的服务器,会给你自动发配一个IP地址,这就是DHCP协议。

动态路由协议RIP ,其实也是基于UDP协议的。

四、哪些应用是基于TCP协议的?

HTTP、HTTPS

文件传输协议FTP :文件传输肯定要求你是可靠的。

像这样的要求注重连接的协议,都用TCP协议。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分