每一个程序员应该都知道TCP,UDP协议 。UDP是用户数据报文协议,属于OSI模型中的传输层 。它是一种无连接的协议,也就说上一报文和下一报文在协议层没有任何联系,同时提供了简单的不可靠的传输服务 。
也就是说UDP是不可靠的,如果要想让数据可靠,就需要在业务层做纠错和检错功能 。比如:TFTP 。
那可能就会有同学问了,既然是不可靠的,为什么不直接使用IP协议呢?还要这么大费周章增加一种协议UDP呢?
其实其中一个最重要的原因就是IP协议中没有端口(port)的概念,它只是规定了两台主机之间的通信,并没有解决不同主机上应用程序之间的通信 。如果一个主机上的多个应用程序需要通信,直接用IP协议就无法数据区分数据到底哪个应用程序了 。
![UDP协议-看这篇就够了](http://img.jiangsulong.com/220402/2346154T3-0.jpg)
文章插图
可以理解为一个端口就是一个通信通道,当然UDP在IP协议的基础上增加了一些功能,所以我们来总结下:
- UDP无连接,没有连接 。所以它的发送和接受的开销就会小很多 。
- UDP不保证数据可靠交付,只是尽最大可能 。所以不需要维护复杂的连接关系 。
- UDP是面向报文的,添加在应用层下来数据头部,直接塞给IP层 。
- UDP没有拥塞控制
- UDP至支持多播 。
- UDP头部小,说明传输更多的数据内容
![UDP协议-看这篇就够了](http://img.jiangsulong.com/220402/2346152H5-1.jpg)
文章插图
UDP的首部到底是怎样的呢?先看下图:
![UDP协议-看这篇就够了](http://img.jiangsulong.com/220402/234615I93-2.jpg)
文章插图
从图中可以看出,UDP的首部由四部分组成:
- 各16bit的来源端口和目的端口用来标记发送和接受的应用进程 。因为UDP不需要应答,所以来源端口是可选的,如果来源端口不用,那么置为零 。当运输层从IP层收到UDP数据报时,就是根据首部中的目的端口,把UDP数据报通过相应的端口,上交最后的终点--应用程序 。
- 如果接收方UDP发现收到的报文中的目的端口号不正确,就会丢弃改报文,并由网际控制协议ICMP发送“端口不可达”差错报文给发送方 。ICMP应用Traceroute,就是让发送的UDP用户数据报故意使用一个非法的UDP端口,结果ICMP返回“端口不可达”差错报文,因而达到了测试的目的 。
![UDP协议-看这篇就够了](http://img.jiangsulong.com/220402/2346153423-3.jpg)
文章插图
- 在目的端口后面是长度固定的以字节为单位的报文长度域,用来指定UDP数据报包括数据部分的长度,长度最小值为8byte 。
- 首部剩下地16bit是用来对首部和数据部分一起做校验和(Checksum)的,这部分是可选的,但在实际应用中一般都使用这一功能 。
- UDP和TCP的校验和都覆盖到了他们的首部和数据,而IP首部的校验和只覆盖了IP首部 。
UDP和socket怎样配合使用随着我们进入传输层,我们也可以调用操作系统中的API,来构建socket 。Socket是操作系统提供的一个编程接口,它用来代表某个网络通信 。应用程序通过socket来调用系统内核中处理网络协议的模块,而这些内核模块会负责具体的网络协议的实施 。
这样,我们可以让内核来接收网络协议的细节,而我们只需要提供所要传输的内容就可以了,内核会帮我们控制格式,并进一步向底层封装 。因此,在实际应用中,我们并不需要知道具体怎么构成一个UDP包,而只需要提供相关信息(比如IP地址,比如端口号,比如所要传输的信息),操作系统内核会在传输之前会根据我们提供的相关信息构成一个合格的UDP包(以及下层的包和帧) 。看下图吧 。
![UDP协议-看这篇就够了](http://img.jiangsulong.com/220402/2346152193-4.jpg)
文章插图
UDP使用场景
- 需要资源少,在网络情况比较好的内网,或者对于丢包不敏感的应用 。如DHCP协议就是基于UDP的 。一般的获取IP地址都是内网请求,而且一次获取不到IP又没事 。又比如基于UDP的RTP,TFTP,丢一帧数据问题也不大 。再比如一些设备发现协议等等 。
- 不需要一对一沟通,建立连接,而是可以广播的应用 。DHCP就是一种广播的形式 。VXLAN也是需要用到组播,也是基于UDP协议的 。
- 需要处理速度快,时延低,可以容忍少数丢包,但是要求即便网络拥塞,也毫不退缩,一往无前的时候 。
推荐阅读
- Java架构师丨再不懂ZooKeeper,就安安心心把这篇文章看完
- 日本茶道可以看成是部日本发展史
- 最惊悚的10部恐怖小说排行榜 好看的恐怖小说推荐超经典
- 梦看见大便是什么意思 梦到大便是什么意思周公解梦
- 龙之国物语|野钓天气为王:四季钓鱼都看时机,什么天气鱼最好钓?一看便会!
- 淘宝有没有隐形降权 怎么看店铺隐形降权了
- 辞职或辞退,单位赔偿大有不同!劳动法:看完这个你就明白了
- 员工签订协议自愿放弃社保,万一出事了,谁背这个责?
- 冷却液多久换一次?用水能代替?看完就懂了
- 遭公司劝退如何应对?看看人家怎么做的 劝退的情形和应对方式