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

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

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

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

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

· UDP无连接,没有连接。所以它的发送和接受的开销就会小很多。

· UDP不保证数据可靠交付,所以不需要维护复杂的连接关系。

· UDP是面向报文的,添加在应用层下来数据头部,直接塞给IP层。

· UDP没有拥塞控制

· UDP至支持多播。

· UDP头部小,说明传输更多的数据内容

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

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

先看下图:

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

· 各16bit的来源端口和目的端口用来标记发送和接受的应用进程。因为UDP不需要应答,所以来源端口是可选的,如果来源端口不用,那么置为零。当运输层从IP层收到UDP数据报时,就是根据首部中的目的端口,把UDP数据报通过相应的端口,上交***的终点--应用程序。

如果接收方UDP发现收到的报文中的目的端口号不正确,就会丢弃改报文,并由网际控制协议ICMP发送“端口不可达”差错报文给发送方。ICMP应用Traceroute,就是让发送的UDP用户数据报故意使用一个非法的UDP端口,结果ICMP返回“端口不可达”差错报文,因而达到了测试的目的。

· 在目的端口后面是长度固定的以字节为单位的报文长度域,用来指定UDP数据报包括数据部分的长度,长度最小值为8byte。

· 首部剩下地16bit是用来对首部和数据部分一起做校验和(Checksum)的,这部分是可选的,但在实际应用中一般都使用这一功能。

· UDP和TCP的校验和都覆盖到了他们的首部和数据,而IP首部的校验和只覆盖了IP首部。

UDP和socket怎样配合使用?

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

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

UDP使用场景

· 需要资源少,在网络情况比较好的内网,或者对于丢包不敏感的应用。如DHCP协议就是基于UDP的。一般的获取IP地址都是内网请求,而且一次获取不到IP又没事。又比如基于UDP的RTP,TFTP,丢一帧数据问题也不大。再比如一些设备发现协议等等。

· 不需要一对一沟通,建立连接,而是可以广播的应用。DHCP就是一种广播的形式。VXLAN也是需要用到组播,也是基于UDP协议的。

· 需要处理速度快,时延低,可以容忍少数丢包,但是要求即便网络拥塞,也毫不退缩,一往无前的时候。

· QUIC是Google提出的一种基于UDP改进的通信协议,其目的是降低网络通信的延迟,提供更好的用户互动体验。

欢迎关注我的头条号,私信交流,学习更多网络技术!

下面是以十六进制格式存储的一个udp首部_【干货】论UDP协议,在现网中的不可缺少!...相关推荐

  1. 下面是以十六进制格式存储的一个 UDP 首部:~~~TCP连接使用1000字节的窗口值,而上一次的确认号是22001~~那么下一个报文段的序号是否就是 x + 1 呢?在本题中列出的 8 种情况下,画

    5-10 试说明运输层中伪首部的作用 用于计算运输层数据报校验和 5-11 某个应用进程使用运输层的用户数据报UDP,然而继续向下交给IP层后,又封装成IP数据报.既然都是数据报,可否跳过UDP而直接 ...

  2. uniny 物体运动到一个点停止_隐藏的几何:各类随机物体中的深层联系

    在"SLE曲线"结构中,随机性增加 | 来源:Jason Miller 标准几何体能够用简单规则描述,比如通过y = ax + b定义每条直线,而且各要素之间的关系也相对明了:两点 ...

  3. tp5讲一个值传到另外一个控制里_统计起源 第四讲:黑暗中诞生的天才——自由度与标准差...

    费歇尔小时候有很严重的视力损伤,因此医生禁止他晚上在灯光下阅读.即使后来上学时,他的数学导师也在黑暗中教他数学,黑暗使人强大,长期在黑暗中脑补使得费歇尔形成了强大的几何能力.这也是为什么费歇尔可以很轻 ...

  4. 100个犯人和一个亮灯泡_每个人都在一个开放的组织中更换灯泡

    100个犯人和一个亮灯泡 在以前的组织中,我与行政人员建立了良好的关系. 我购买了大量商品,那位员工帮助了我的团队处理我们的采购订单. 反过来,我们将帮助员工完成其他任务,例如在办公室更换烧坏的照明灯 ...

  5. 0x4DC0 是一个十六进制数,它对应的 Unicode 编码是中国古老的《易经》六十四卦的第一卦,请输出第 51 卦(震卦)对应的 Unicode 编码的二进制、十进制、八进制和十六进制格式。

    题目:0x4DC0 是一个十六进制数,它对应的 Unicode 编码是中国古老的<易经>六十四卦的第一卦,请输出第 51 卦(震卦)对应的 Unicode 编码的二进制.十进制.八进制和十 ...

  6. 在python中使用json格式存储数据

    在python中使用json格式存储数据 代码如下: import jsonlist1 = [{'A': [1, 2, 3, 4, 5, 6], 'B': [3, 4, 5, 6, 7]},{'C': ...

  7. opencv 解析yuv_OpenCV Mat格式存储YUV图像

    YUV图像用的比较多,而且YUV图像的格式众多(YUV格式可以参考YUV pixel formats),如何用OpenCV的Mat类型来存储YUV图像也是经常遇到的问题. 对于YUV444图像来说,就 ...

  8. python定义一个字典、存储雇员号和姓名_【一点资讯】python后端开发工程师考证试题...

    python开发工程师考证试题 选择题 题目 关于 Python 程序格式框架的描述,以下选项中错误的是 ( A ) A: Python 语言不采用严格的"缩进"来表明程序的格式框 ...

  9. 爬取中国大学排名并以csv格式存储

    爬取中国大学排名并以csv格式存储 import requests from bs4 import BeautifulSoup import bs4def get_content(url):try:u ...

最新文章

  1. 刷个B站的功夫就能把Python学了,微软放出短视频入门课,资料登上GitHub热榜第一...
  2. (操作系统实验)第四次说明
  3. 不想被时代抛弃,就别远离一线
  4. Unity3D 渲染统计窗口
  5. Go 官方未来会不会支持循环引用?
  6. python爬取拉勾网_(转)python爬取拉勾网信息
  7. 凸多边形、凹多边形、凸包算法
  8. java excel 分页显示_分页显示Excel数据
  9. java中cleanup的使用_java – google guava缓存invalidateAll()和cleanUp()之间的区别
  10. 【网络通讯开发系列】如何使用C语言编程通过UDP通讯解析域名
  11. Seata的四种模式介绍
  12. Python开发Windows桌面应用程序(一)PyCharm+PyQt5开发环境搭建
  13. 手机误删的照片怎么恢复?恢复方法分享
  14. 抖音自媒体上热门的诀窍,高效蹭实时热点的4个技巧
  15. python反距离权重法_使用Python进行反距离加权(IDW)插值
  16. java模拟excel排序_Apache-POI在excel中排序行
  17. 多商户商城系统功能拆解13讲-平台端会员管理
  18. PyQT5 - 打包为.EXE文件
  19. 石油专业:一文入门机器学习,以测井岩性分类预测为例
  20. 学会使用LoadRunner录制脚本

热门文章

  1. 工业机器人技术基础(1.1工业机器人的由来)
  2. 服务器系统盘留多少空间,C盘(系统盘)留多大空间合适
  3. mongorepository查询条件_MongoRepository的多条件查询和排序功能
  4. MSP430熔丝及加密总结
  5. linux中realplayer.rpm格式的软件安装,Linux中安装Realplay 10.0 的方法
  6. 别等到使用电化学工作站时才来了解这些
  7. 贿赂囚犯 Bribe the prisoners (动态规划)
  8. c语言3sum,3sum 4sum
  9. illustrator插件--常用功能开发--绘制手提袋--js脚本开发--AI插件
  10. echarts广东省地图数据显示