【运输层】网络数据报协议 UDP

news/2024/5/18 15:29:34 标签: 网络协议, 运输层, UDP, 计算机网络原理

目录

UDP%20%E7%9A%84%E7%89%B9%E7%82%B9-toc" style="margin-left:80px;">1、UDP 的特点

UDP%20%E7%9A%84%E9%A6%96%E9%83%A8%E6%A0%BC%E5%BC%8F-toc" style="margin-left:80px;">2、UDP 的首部格式


        UDP 只在 IP 协议之上增加了很少的一些功能,比如复用、分用以及差错检测等。

UDP%20%E7%9A%84%E7%89%B9%E7%82%B9">1、UDP 的特点

        UDP是无连接的,即发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延。

        UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表(这里边有许多的参数)。

        UDP 是面向报文的。发送方的 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。也就是说,应用层交给 UDP 多长的报文,UDP 就照样发送,即一次发送一个报文,如下图所示:

        在接收方的 UDP,对 IP 层交上来的 UDP 用户数据报,在去除首部后就原封不动地交付上层的应用进程。也就是说,UDP 一次交付一个完整的报文。因此,应用程序必须选择合适大小的报文。若报文太长,UDP 把它交给 IP 层后,IP 层在传送时可能要进行分片,这会降低 IP 层的效率。反之,若报文太短,UDP 把它交给 IP 层后,会使 IP 数据报的首部的相对长度太大,这也降低了 IP 层的效率。

        UDP 没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。很多的实时应用(如IP电话、实时视频会议等)要求源主机以恒定的速率发送数据,并且允许在网络发生拥塞时丢失一些数据,但却不允许数据有太大的时延。UDP 正好适合这种要求。

        UDP支持一对一、一对多、多对一和多对多的交互通信

        UDP的首部开销小,只有 8 个字节,比 TCP 的 20 个字节的首部要短。

        UDP 工作原理:

        下图中在两个运输层之间有一条虚线,表示在两个运输层之间可以进行通信,而不是一条连接。但这种通信是不可靠的通信,即所发送的报文在传输过程中有可能丢失,同时也不保证报文都能按照发送的先后顺序到达终点。这正是 UDP 通信的特点:简单方便,但不可靠

UDP%20%E7%9A%84%E9%A6%96%E9%83%A8%E6%A0%BC%E5%BC%8F">2、UDP 的首部格式

        用户数据报 UDP 有两个字段:数据字段和首部字段。

        首部字段很简单,只有 8 个字节,由 4 个字段组成,每个字段的长度都是 2 字节。各字段意义如下:

        源端口:即源端口号。在需要对方回信时选用,不需要时可用全 0。

        目的端口:即目的端口号。这在终点交付报文时必须使用。

        长度UDP 用户数据报的长度,其最小值是 8(仅有首部)。

        检验和:检测 UDP 用户数据报在传输中是否有错。有错就丢弃。

        UDP 用户数据报首部中检验和的计算方法有些特殊。在计算检验和时,要在 UDP 用户数据报之前增加 12 个字节的伪首部。所谓“伪首部”是因为这种伪首部并不是 UDP 用户数据报真正的首部。只是在计算检验和时,临时添加在 UDP 用户数据报前,得到一个临时的 UDP 用户数据报。

        检验和就是按照这个临时的 UDP 用户数据报来计算的。伪首部既不向下传送也不向上递交,而仅仅是为了计算检验和

        至此,有关网络数据报协议 UDP 的介绍到此结束。


http://www.niftyadmin.cn/n/5469428.html

相关文章

地图资源工具3.1发布

地图资源工具3.1发布,进行了一些优化和修复: 地图资源工具从3.0开始,就不再支持WIN7系统了,如需在WIN7上使用请使用2.9。 1.去掉了一些不能用的在线地图,例如谷歌地图最近好像又不能用了,我将其去掉了&…

微信小程序怎么制作?制作一个微信小程序需要多少钱?

随着移动互联网的快速发展,微信小程序已成为连接用户与服务的重要桥梁。它以其便捷性和易用性,为各类企业和个人提供了一个全新的展示和交易平台。那么,如何制作一个微信小程序?又需要投入多少资金呢?本文将为您提供全…

Java中线程详解

文章目录 相关概念多线程概念实现方式继承Thread类实现Runnable接口利用Callable接口,FutureTask类来实现比较 常用方法线程安全产生的原因解决思想同步同步代码块同步方法Lock锁机制 死锁概念避免 状态线程间的通讯介绍方法生产者消费者案例 线程池介绍创建常用方法…

Leetcode刷题笔记——多维动态规划篇

Leetcode刷题笔记——多维动态规划篇 第一题:最小路径和 Leetcode64:最小路径和:中等题 (详情点击链接见原题) 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的…

51单片机入门_江协科技_19~20_OB记录的笔记

19. 串口通讯 19.1. 串口介绍: •串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信。 •单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大的…

CSS 实现伸缩导航仪表板侧边栏菜单

CSS 实现伸缩导航仪表板侧边栏菜单 效果展示 展开状态 收起状态 CSS 知识点 回顾曲面圆角的实现知识点 字体库准备 菜单的图标使用的是ionicons的图标库&#xff0c;所以需要页面需要引入对应的文件。 <scripttype"module"src"https://unpkg.com/i…

LabVIEW电力设备在线监测系统

LabVIEW电力设备在线监测系统 在电力行业中&#xff0c;变电站的稳定运行对于保障电力系统的安全性和可靠性至关重要。开发了一种基于LabVIEW软件开发的变电站电力设备在线监测系统&#xff0c;实时监控变电站内部的电力设备状态&#xff0c;确保电力传输的高效与安全。通过对…

使用subprocess包来在python代码实时查看GPU利用率

最近又被GPU利用率问题导致训练不高效的问题搞到了&#xff08;恼&#xff09;&#xff0c;所以在py使用代码看看是哪出了问题。 import subprocessdef get_gpu_utilization():# 运行nvidia-smi命令smi_output subprocess.check_output([nvidia-smi, --query-gpuutilization.…