【计算机网络】UDP报文详解

news/2024/10/18 8:36:57/

目录

一. UDP协议概述

二. UDP报文格式

首部

三. UDP的缓冲区


一. UDP协议概述

UDP——用户数据报协议,是传输层的一个重要协议

基于UDP的应用层协议有:DNS,TFTP,SNMP,NTP

协议全称默认端口号
DNSDomain Name Service(域名服务)53
TFTPTrivial File Transfer Protocol(简单文件传输协议)69
SNMPSimple Network Management Protocol(简单网络管理协议)通过UDP端口161接收,只有Trap信息采用端口162
NTPNetwork Time Protocol(网络时间协议)123

UDP的主要特点:

  1. UDP是无连接的。即发送数据前不需要建立连接,发送数据结束也没有连接释放,因此减少了开销和发送数据前的时延
  2. UDP使用尽最大努力交付。即不保证可靠交付,因此不需要维护复杂的连接状态表(有许多参数)
  3. UDP是面向数据报的。发送方的UDP对应用层交付的报文,在添加首部后直接交付给IP层。UDP对应用层交付的报文,既不合并,也不拆分,而是保留这些报文的边界。也就是说,应用层给UDP多长报文,UDP就发多长,一次发送一个报文,如下图。
  4. 在接收方的UDP,对于IP层交付的UDP用户数据报,在去除UDP首部后也直接交付应用层,不作任何处理,一次交付一个完整的报文。因此这就将控制报文长度的工作交给了应用层:应用层要选择合适大小的报文。若报文太长,UDP封装后交给IP层,IP层在传输时可能要进行分片处理,减低了IP层的效率。反之,应用层报文太短,效率也低
  5. UDP没有拥塞控制。因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用很重要,如IP电话,实时视频会议等,要求源主机以恒定的速率发送数据,并且允许在网络拥塞时丢失一部分数据,但不允许数据有太大的时延
  6. UDP支持一对一,一对多,多对一和多对多的交互通信
  7. UDP的首部开销小,只有8字节,比TCP的20字节的首部短

二. UDP报文格式

UDP报文有两大部分组成:报头+有效载荷(数据),其中有效载荷就是应用层交付给UDP协议层的报文

首部

在学习协议报文时,首先要解决两个问题:1. 报头和有效载荷如何分离  2. 有效载荷如何向上交付

第一个问题:报头和有效载荷如何分离

在UDP中,报头的大小是固定的——8字节。所以只要截取前8字节,后面就都是有效载荷了

第二个问题:有效载荷如何向上交付

UDP是传输层的,上层是应用层。而应用层程序会绑定端口号,UDP报头中有16位(bit位)目的端口号,根据端口号做到向上交付


UDP报头由4部分组成:

  1. 源端口号:发送方的端口号
  2. 目的端口号:目的主机的端口号
  3. UDP长度:UDP报文的长度,单位字节,包括报头和有效载荷
  4. UDP校验和:保证报文完整性和正确性,出错就丢弃

如果接收方 UDP 发现收到的报文中的端口号不存在,就丢弃该报文,并由国际控制报文协议 ICMP发送“端口不可达”差错报文给发送方

三. UDP的缓冲区

UDP报头中,UDP长度为16为,即最长UDP报文时64KB(包含报头),如果长度超过64KB,需要应用层手动分包,多次发送,并在接收方手动拼接

因为UDP是面向数据报的,上层一次交付多少数据,就发送多少数据,所以UDP是没有发送缓冲区的,但是有接受缓冲区,因为需要等待上层处理。所以UDP是全双工的(可同时收发数据)

结束语

本篇博客到此结束,感谢看到此处。
欢迎大家纠错和补充
如果觉得本篇文章对你有所帮助的话,不妨点个赞支持一下博主,拜托啦,这对我真的很重要。


http://www.ppmy.cn/news/1266224.html

相关文章

051:vue项目webpack打包后查看各个文件大小

第050个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使…

uniapp - 简单版本自定义tab栏切换

tab切换是APP开发最常见的功能之一,uniapp中提供了多种形式的tab组件供我们使用。对于简单的页面而言,使用tabbar组件非常方便快捷,可以快速实现底部导航栏的效果。对于比较复杂的页面,我们可以使用tab组件自由定义样式和内容 目录…

Openwrt源码下载出现“The remote end hung up unexpected”

最近项目原因需要下载openwrt21.02版本源码,花费了很多时间,找到正确方法后,发现可以节省很多时间,记录下过程,方便自己,可能方便他人。 一.问题阐述 openwrt21.02下载链接如下: git clone -…

基于深度学习的yolov5入侵检测系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介IntroductionYOLOv5 Overview入侵检测系统架构1. 数据采集2. YOLOv5模型训练3. 实时监测4. 告警与反馈 性能评估与优化 二、功能三、系统四. 总结 一项目简…

Spring框架中的四种常用设计模式

1、单例模式 Spring 的 Bean 默认是单例模式,通过 Spring 容器管理 Bean 的⽣命周期,保证每个 Bean 只被 创建⼀次,并在整个应⽤程序中重用。 2.工厂模式 Spring 使⽤⼯⼚模式通过 BeanFactory 和 ApplicationContext 创建并管理 Bean 对象…

2020年第九届数学建模国际赛小美赛C题亚马逊野火解题全过程文档及程序

2020年第九届数学建模国际赛小美赛 C题 亚马逊野火 原题再现: 野火是指发生在乡村或荒野地区的可燃植被中的任何不受控制的火灾。这样的环境过程对人类生活有着重大的影响。因此,对这一现象进行建模,特别是对其空间发生和扩展进行建模&…

Android Audio实战——音频链路分析(二十五)

在 Android 系统的开发过程当中,音频异常问题通常有如下几类:无声、调节不了声音、爆音、声音卡顿和声音效果异常(忽大忽小,低音缺失等)等。尤其声音效果这部分问题通常从日志上信息量较少,相对难定位根因。想要分析此类问题,便需要对声音传输链路有一定的了解,能够在链…

AcWing 3709:单链表节点交换 ← 四川大学考研机试题

【题目来源】 https://www.acwing.com/problem/content/3712/【题目描述】 输入一个单链表,依次交换前2个数,第3、4个数,第5、6个数,…,以此类推,直到操作完整个链表。 如果链表长度是奇数,则最…