您当前的位置:首页 > 电脑百科 > 网络技术 > 网络知识

UDP协议-看这篇就够了

时间:2019-07-11 11:06:09  来源:  作者:

每一个程序员应该都知道TCP,UDP协议。UDP是用户数据报文协议,属于OSI模型中的传输层。它是一种无连接的协议,也就说上一报文和下一报文在协议层没有任何联系,同时提供了简单的不可靠的传输服务。

也就是说UDP是不可靠的,如果要想让数据可靠,就需要在业务层做纠错和检错功能。比如:TFTP

那可能就会有同学问了,既然是不可靠的,为什么不直接使用IP协议呢?还要这么大费周章增加一种协议UDP呢?

其实其中一个最重要的原因就是IP协议中没有端口(port)的概念,它只是规定了两台主机之间的通信,并没有解决不同主机上应用程序之间的通信。如果一个主机上的多个应用程序需要通信,直接用IP协议就无法数据区分数据到底哪个应用程序了。

 

UDP协议-看这篇就够了

 

可以理解为一个端口就是一个通信通道,当然UDP在IP协议的基础上增加了一些功能,所以我们来总结下:

  1. UDP无连接,没有连接。所以它的发送和接受的开销就会小很多。
  2. UDP不保证数据可靠交付,只是尽最大可能。所以不需要维护复杂的连接关系。
  3. UDP是面向报文的,添加在应用层下来数据头部,直接塞给IP层。
  4. UDP没有拥塞控制
  5. UDP至支持多播。
  6. UDP头部小,说明传输更多的数据内容

下图展示是UDP和上下层的关系

 

UDP协议-看这篇就够了

 

 

 

UDP的首部到底是怎样的呢?

先看下图:

 

UDP协议-看这篇就够了

 

从图中可以看出,UDP的首部由四部分组成:

  • 各16bit的来源端口和目的端口用来标记发送和接受的应用进程。因为UDP不需要应答,所以来源端口是可选的,如果来源端口不用,那么置为零。当运输层从IP层收到UDP数据报时,就是根据首部中的目的端口,把UDP数据报通过相应的端口,上交最后的终点--应用程序。
  • 如果接收方UDP发现收到的报文中的目的端口号不正确,就会丢弃改报文,并由网际控制协议ICMP发送“端口不可达”差错报文给发送方。ICMP应用Traceroute,就是让发送的UDP用户数据报故意使用一个非法的UDP端口,结果ICMP返回“端口不可达”差错报文,因而达到了测试的目的。

 

UDP协议-看这篇就够了

 

 

  • 在目的端口后面是长度固定的以字节为单位的报文长度域,用来指定UDP数据报包括数据部分的长度,长度最小值为8byte。
  • 首部剩下地16bit是用来对首部和数据部分一起做校验和(Checksum)的,这部分是可选的,但在实际应用中一般都使用这一功能。
  • UDP和TCP的校验和都覆盖到了他们的首部和数据,而IP首部的校验和只覆盖了IP首部。

 

UDP和socket怎样配合使用

随着我们进入传输层,我们也可以调用操作系统中的API,来构建socket。Socket是操作系统提供的一个编程接口,它用来代表某个网络通信。应用程序通过socket来调用系统内核中处理网络协议的模块,而这些内核模块会负责具体的网络协议的实施

这样,我们可以让内核来接收网络协议的细节,而我们只需要提供所要传输的内容就可以了,内核会帮我们控制格式,并进一步向底层封装。因此,在实际应用中,我们并不需要知道具体怎么构成一个UDP包,而只需要提供相关信息(比如IP地址,比如端口号,比如所要传输的信息),操作系统内核会在传输之前会根据我们提供的相关信息构成一个合格的UDP包(以及下层的包和帧)。看下图吧。

UDP协议-看这篇就够了

 

 

UDP使用场景

  1. 需要资源少,在网络情况比较好的内网,或者对于丢包不敏感的应用。如DHCP协议就是基于UDP的。一般的获取IP地址都是内网请求,而且一次获取不到IP又没事。又比如基于UDP的RTP,TFTP,丢一帧数据问题也不大。再比如一些设备发现协议等等。
  2. 不需要一对一沟通,建立连接,而是可以广播的应用。DHCP就是一种广播的形式。VXLAN也是需要用到组播,也是基于UDP协议的。
  3. 需要处理速度快,时延低,可以容忍少数丢包,但是要求即便网络拥塞,也毫不退缩,一往无前的时候。
  4. QUIC是google提出的一种基于UDP改进的通信协议,其目的是降低网络通信的延迟,提供更好的用户互动体验。

 

结语

UDP没有TCP那么复杂,但是网络体系中不可缺少的协议。需要熟练的掌握该协议。



Tags:UDP协议   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
UDP协议是英文UserDatagramProtocol的缩写,即用户数据报协议,主要用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络...【详细内容】
2021-05-12  Tags: UDP协议  点击:(179)  评论:(0)  加入收藏
TCP协议协议特点:面向连接的可靠传输,报头20字节,存在流量控制机制(超时重发,丢弃重复数据,检验数据,分段排序,拥塞处理,滑动窗口机制,保证数据能从一端传到另一端。) TCP要保证丢失的p...【详细内容】
2020-06-01  Tags: UDP协议  点击:(354)  评论:(0)  加入收藏
一、Internet控制报文协议ICMP(Internet Control Message Protocol)ICMP是网络层的一个重要协议。ICMP协议用来在网络设备间传递各种差错和控制信息,它对于收集各种网络信息、...【详细内容】
2020-05-28  Tags: UDP协议  点击:(85)  评论:(0)  加入收藏
在互联网中,存在着各种不同层次的协议,它们分别的功能也是不同的。但做为网络工程师,对这些协议的使用以及区分是工作的必备技能。那今天以网络工程师的角度来告诉大家是怎么看...【详细内容】
2020-04-20  Tags: UDP协议  点击:(67)  评论:(0)  加入收藏
传输层定义了主机应用程序之间端到端的连通性。传输层中最为常见的两个协议分别是传输控制协议TCP ( Transmission Control Protocol)和用户数据包协议UDP(User Datagram Pro...【详细内容】
2020-03-15  Tags: UDP协议  点击:(121)  评论:(0)  加入收藏
DNS同时占用UDP和TCP端口53是公认的,这种单个应用协议同时使用两种传输协议的情况在TCP/IP栈也算是个另类。但很少有人知道DNS分别在什么情况下使用这两种协议。TCP与UDPTCP:...【详细内容】
2019-12-19  Tags: UDP协议  点击:(129)  评论:(0)  加入收藏
在程序员面试中,有一个经常被问到的网络协议,那便是TCP与UDP,可能TCP大家都比较熟悉,三次握手四次挥手,对于UDP可能陌生一点,觉得应用场景比较少,不过这几年,由于直播行业的快速发展...【详细内容】
2019-10-08  Tags: UDP协议  点击:(117)  评论:(0)  加入收藏
每一个程序员应该都知道TCP,UDP协议。UDP是用户数据报文协议,属于OSI模型中的传输层。它是一种无连接的协议,也就说上一报文和下一报文在协议层没有任何联系,同时提供了简单的...【详细内容】
2019-07-11  Tags: UDP协议  点击:(430)  评论:(0)  加入收藏
▌简易百科推荐
以京训钉开发平台接口文档为例,使用HttpClient类请求调用其接口,对数据进行增删改查等操作。 文档地址: https://www.yuque.com/bjjnts/jxd/bo1oszusing System;using System.C...【详细内容】
2021-12-28  Wednes    Tags:HttpClient   点击:(1)  评论:(0)  加入收藏
阿里云与爱快路由安装组网教程一、开通好阿里云轻量服务器之后在服务器运维-远程连接处进行远程 二、进入控制台后在root权限下根据需要安装的固件位数复制下面命令。32位:wg...【详细内容】
2021-12-28  ikuai    Tags:组网   点击:(1)  评论:(0)  加入收藏
HTTP 报文是在应用程序之间发送的数据块,这些数据块将通过以文本形式的元信息开头,用于 HTTP 协议交互。请求端(客户端)的 HTTP 报文叫做请求报文,响应端(服务器端)的叫做响应...【详细内容】
2021-12-27  程序员蛋蛋    Tags:HTTP 报文   点击:(5)  评论:(0)  加入收藏
一 网络概念:1.带宽: 标识网卡的最大传输速率,单位为 b/s,比如 1Gbps,10Gbps,相当于马路多宽2.吞吐量: 单位时间内传输数据量大小单位为 b/s 或 B/s ,吞吐量/带宽,就是网络的使用率...【详细内容】
2021-12-27  码农世界    Tags:网络   点击:(3)  评论:(0)  加入收藏
1.TCP/IP 网络模型有几层?分别有什么用? TCP/IP网络模型总共有五层 1.应用层:我们能接触到的就是应用层了,手机,电脑这些这些设备都属于应用层。 2.传输层:就是为应用层提供网络...【详细内容】
2021-12-22  憨猪哥08    Tags:TCP/IP   点击:(35)  评论:(0)  加入收藏
TCP握手的时候维护的队列 半连接队列(SYN队列) 全连接队列(accepted队列)半连接队列是什么?服务器收到客户端SYN数据包后,Linux内核会把该连接存储到半连接队列中,并响应SYN+ACK报...【详细内容】
2021-12-21  DifferentJava    Tags:TCP   点击:(10)  评论:(0)  加入收藏
你好,这里是科技前哨。 随着“元宇宙”概念的爆火,下一代互联网即将到来,也成了互联网前沿热议的话题,12月9日美国众议院的听证会上,共和党议员Patrick McHenry甚至宣称,要调整现...【详细内容】
2021-12-17  王煜全    Tags:Web3   点击:(14)  评论:(0)  加入收藏
一、demopublic static void main(String[] args) throws Exception { RetryPolicy retryPolicy = new ExponentialBackoffRetry( 1000, 3);...【详细内容】
2021-12-15  程序员阿龙    Tags:Curator   点击:(22)  评论:(0)  加入收藏
一、计算机网络概述 1.1 计算机网络的分类按照网络的作用范围:广域网(WAN)、城域网(MAN)、局域网(LAN);按照网络使用者:公用网络、专用网络。1.2 计算机网络的层次结构 TCP/IP四层模...【详细内容】
2021-12-14  一口Linux    Tags:网络知识   点击:(31)  评论:(0)  加入收藏
无论是在外面还是在家里,许多人都习惯了用手机连接 WiFi 进行上网。不知道大家有没有遇到过这样一种情况, 明明已经显示成功连接 WiFi,却仍然提示“网络不可用”或“不可上网”...【详细内容】
2021-12-14  UGREEN绿联    Tags:WiFi   点击:(25)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条