UDP协议的详细解析

article/2025/9/21 2:01:53

UDP数据报

一、UDP的概述User Datagram Protocol,用户数据报协议
UDP是传输层的协议,功能即为在IP的数据报服务之上增加了最基本的服务:复用分用以及差错检测

UDP提供不可靠服务,具有TCP所没有的优势

  • UDP无连接,时间上不存在建立连接需要的时延。空间上,TCP需要在端系统中维护连接状态,需要一定的开销。此连接装入包括接收和发送缓存,拥塞控制参数和序号与确认号的参数。UCP不维护连接状态,也不跟踪这些参数,开销小。空间和时间上都具有优势。
    举个例子:

    DNS如果运行在TCP之上而不是UDP,那么DNS的速度将会慢很多。
    HTTP使用TCP而不是UDP,是因为对于基于文本数据的Web网页来说,可靠性很重要。
    同一种专用应用服务器在支持UDP时,一定能支持更多的活动客户机。

  • 分组首部开销小**,TCP首部20字节,UDP首部8字节。

  • UDP没有拥塞控制,应用层能够更好的控制要发送的数据和发送时间,网络中的拥塞控制也不会影响主机的发送速率。某些实时应用要求以稳定的速度发送,能容 忍一些数据的丢失,但是不能允许有较大的时延(比如实时视频,直播等)

  • UDP提供尽最大努力的交付,不保证可靠交付。所有维护传输可靠性的工作需要用户在应用层来完成。没有TCP的确认机制、重传机制。如果因为网络原因没有传送到对端,UDP也不会给应用层返回错误信息

  • UDP是面向报文的,对应用层交下来的报文,添加首部后直接乡下交付为IP层,既不合并,也不拆分,保留这些报文的边界。对IP层交上来UDP用户数据报,在去除首部后就原封不动地交付给上层应用进程,报文不可分割,是UDP数据报处理的最小单位。
    正是因为这样,UDP显得不够灵活,不能控制读写数据的次数和数量。比如我们要发送100个字节的报文,我们调用一次sendto函数就会发送100字节,对端也需要用recvfrom函数一次性接收100字节,不能使用循环每次获取10个字节,获取十次这样的做法。

  • UDP常用一次性传输比较少量数据的网络应用,如DNS,SNMP等,因为对于这些应用,若是采用TCP,为连接的创建,维护和拆除带来不小的开销。UDP也常用于多媒体应用(如IP电话,实时视频会议,流媒体等)数据的可靠传输对他们而言并不重要,TCP的拥塞控制会使他们有较大的延迟,也是不可容忍的

二、UDP的首部格式

UDP数据报分为首部用户数据部分,整个UDP数据报作为IP数据报的数据部分封装在IP数据报中,UDP数据报文结构如图所示:
在这里插入图片描述
UDP首部有8个字节,由4个字段构成,每个字段都是两个字节,
1.源端口: 源端口号,需要对方回信时选用,不需要时全部置0.
2.目的端口:目的端口号,在终点交付报文的时候需要用到。
3.长度:UDP的数据报的长度(包括首部和数据)其最小值为8(只有首部)
4.校验和:检测UDP数据报在传输中是否有错,有错则丢弃。
该字段是可选的,当源主机不想计算校验和,则直接令该字段全为0.
当传输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口,上交给应用进程。
如果接收方UDP发现收到的报文中的目的端口号不正确(不存在对应端口号的应用进程0,),就丢弃该报文,并由ICMP发送“端口不可达”差错报文给对方。

UDP校验

在计算校验和的时候,需要在UDP数据报之前增加12字节的伪首部,伪首部并不是UDP真正的首部。只是在计算校验和,临时添加在UDP数据报的前面,得到一个临时的UDP数据报。校验和就是按照这个临时的UDP数据报计算的。伪首部既不向下传送也不向上递交,而仅仅是为了计算校验和。这样的校验和,既检查了UDP数据报,又对IP数据报的源IP地址和目的IP地址进行了检验。
在这里插入图片描述
UDP校验和的计算方法和IP数据报首部校验和的计算方法相似,都使用二进制反码运算求和再取反,但不同的是:IP数据报的校验和之检验IP数据报和首部,但UDP的校验和是把首部和数据部分一起校验。

发送方,首先是把全零放入校验和字段并且添加伪首部,然后把UDP数据报看成是由许多16位的子串连接起来,若UDP数据报的数据部分不是偶数个字节,则要在数据部分末尾增加一个全零字节(此字节不发送),接下来就按照二进制反码计算出这些16位字的和。将此和的二进制反码写入校验和字段。在接收方,把收到得UDP数据报加上伪首部(如果不为偶数个字节,还需要补上全零字节)后,按二进制反码计算出这些16位字的和。当无差错时其结果全为1,。否则就表明有差错出现,接收方应该丢弃这个UDP数据报。
在这里插入图片描述

注意:
1.校验时,若UDP数据报部分的长度不是偶数个字节,则需要填入一个全0字节,但是次字节和伪首部一样,是不发送的。
2.如果UDP校验和校验出UDP数据报是错误的,可以丢弃,也可以交付上层,但是要附上错误报告,告诉上层这是错误的数据报。
3.通过伪首部,不仅可以检查源端口号,目的端口号和UDP用户数据报的数据部分,还可以检查IP数据报的源IP地址和目的地址。
这种差错检验的检错能力不强,但是简单,速度快


http://chatgpt.dhexx.cn/article/rQORWq1e.shtml

相关文章

UDP协议详解

一、UDP协议概述 传输层另一个重要的协议就是用户数据报协议 UDP。UDP 只在 IP 的数据报服务之上增加了很少一点的功能&#xff0c;这就是复用和分用的功能以及差错检测的功能。 <注> UDP(User Datagram Protocol&#xff0c;用户数据报协议) UDP的主要特点是&#xff1a…

截图文字识别工具

tkinter程序源码&#xff1a;初识Python&#xff0c;如有不足请多指教。 import tkinter as tk import keyboard # 安装&#xff1a; pip install keyboard from PIL import ImageGrab # pip install pillow import time from aip import AipOcr # pip install baidu-a…

电脑截图如何快速识别文字?3分钟教会你快速截图识别怎么做

电脑截图已经成为我们日常生活中的常见操作&#xff0c;无论是工作还是学习&#xff0c;我们都有可能需要截取电脑屏幕上的某个区域进行保存或分享。但是&#xff0c;有时候我们需要识别截图中的文字内容&#xff0c;这时候该怎么办呢&#xff1f;接下来&#xff0c;本文将为大…

python截图识别文字_10几行代码,用python打造实时截图识别OCR|python基础教程|python入门|python教程...

https://www.xin3721.com/eschool/pythonxin3721/ 你一定用过那种“OCR神器”&#xff0c;可以把图片中的文字提取出来&#xff0c;极大的提高工作效率。 &#xff01; 今天&#xff0c;我们就来做一款实时截图识别的小工具。顾名思义&#xff0c;运行程序时&#xff0c;可以…

chrome拓展 --截屏文字识别

文章目录 场景源代码功能实现点击在页面上出现裁剪框百度云文字识别复制选中 参考 场景 因为学习通题目都加密了复制过来也无法进行搜题 无奈写了这个插件 为什么使用插件的形式 而不是脚本 &#xff1f; 使用了html2canvas结果是比的是dom文字变成了加密过的 无法识别 于是使用…

微信怎么识别图片文字?其实操作很简单

微信作为中国最流行的社交媒体应用程序之一&#xff0c;已经成为人们分享照片和信息的主要平台之一。在微信中&#xff0c;用户可以轻松地将照片上传到朋友圈或与朋友共享。然而&#xff0c;在某些情况下&#xff0c;这些照片上可能有一些重要的文字信息&#xff0c;这些信息需…

电脑截图怎么识别文字?识别原理又是什么?

在日常工作和生活中&#xff0c;我们经常需要从图片或截图中提取文字&#xff0c;但是手动输入费时费力&#xff0c;因此电脑截图文字识别技术应运而生。本文将介绍电脑截图文字识别的原理和方法。 OCR技术的原理 OCR是一种光学字符识别技术&#xff0c;其原理是将图片中的文字…

C# 通用OCR识别 文字识别 中文识别

软件说明 基于以下两个开源项目&#xff0c;做了再次封装 https://github.com/paddlepaddle/PaddleOCR PaddleOCRSharp: 本项目是一个基于PaddleOCR的C代码修改并封装的.NET的OCR工具类库。包含文本识别、文本检测、基于文本检测结果的统计分析的表格识别功能&#xff0c;同…

手把手教截图识别文字

点击上方 毛利学python&#xff0c;选择置顶或星标 第一时间送达Python 技术干货&#xff01; 最近不想打字&#xff0c;直接截图然后识别出来文字&#xff0c;不就可以不用打吗&#xff1f;我就是太懒了。 keyboard 这个库让你可以控制和监控输入设备。 对于每一种输入设备&a…

屏幕可以截图识别文字?我来教你

我们经常浏览一些网页的时候&#xff0c;看到一些优美的文字&#xff0c;想将它复制下来&#xff0c;却发现粘贴的时候都是一些乱码之类的&#xff0c;以前我估计你们大多数的人都会选择用手抄&#xff0c;但是今天我来了&#xff0c;我给大家介绍一个非常有用的一个方法&#…

python截图识别文字_Python技术:截图文字识别工具

#01 截图文字识别工具 有时候在海报上面&#xff0c;图片上面&#xff0c;或者PDF文档中&#xff0c;经常出现一些唯美的文字。这个时候想要复制下来才发现不能复制。因为有的是图片&#xff0c;有的是PDF。 可以使用Python制作一个小工具&#xff0c;来识别图片上的文字。但…

这几个截图文字识别软件可以自动识别文字

从事新媒体行业的朋友&#xff0c;是不是经常在电脑桌面上或者在浏览也中临时截图识别文字呢&#xff1f;尤其是为了方便&#xff0c;直接识别图片转为文字的话&#xff0c;我们就可以节省了很多打字的时间。那你们知道怎么截图文字识别吗&#xff1f;今天我来教你们3个非常简单…

图片截图识别文字怎么操作?这两个方法不要错过

现如今&#xff0c;图片截图识别文字是一项非常有用的技术。很多小伙伴平时在工作或者生活中都会保存很多图片格式的资料文件把。如果遇到需要讲内容图区到文档中编辑的话&#xff0c;识别技术就可以帮助我们快速识别图片中的文字&#xff0c;从而节省大量的时间。那么图片截图…

python截屏图片识别点击,用python实现截屏识别其中的文字

大家好,欢迎来到 Crossin的编程教室 ! 你一定用过那种“OCR神器”,可以把图片中的文字提取出来,极大的提高工作效率。 今天,我们就来做一款实时截图识别的小工具。顾名思义,运行程序时,可以实时的把你截出来的图片中的文字识别出来。 下次,当你想要复制“百度文库”中的…

截图识别文字软件哪个好?推荐四个屏幕截图文字识别软件推荐?

屏幕截图识别文字可以帮助学生将教材中的重点内容进行截取和识别&#xff0c;加快学习效率&#xff1b;也可以帮助商务人士将会议纪要、报告等文本进行快速转换和编辑&#xff0c;提高工作效率&#xff1b;还可以将图片中的文字进行识别&#xff0c;方便大家快速处理大量的名片…

【Python应用】自制截图取词小工具-- 解锁文字识别新姿势

大家好 我是Yhen 很久不见呀 今天给大家分享一个自制的小工具—截图取词 及其制作过程 本工具是用Python写的 程序及代码的获取方式会在文末 文章目录 一.创作缘由二.项目简介三.思路分析四.代码演示五.程序及源代码获取方式 一.创作缘由 为什么会想到写这么一个小程序&#…

电脑截图如何快速识别文字

你知道电脑截图如何快速识别文字吗&#xff1f;电脑截图快速识别文字功能是一种非常实用的技术&#xff0c;它可以让用户在浏览网页或阅读文档时快速获取其中的文字信息。 在本文中&#xff0c;我将介绍4款支持电脑截图快速识别文字功能的软件&#xff0c;以帮助用户更好地了解…

1分钟教会你如何截图文字识别,建议收藏备用

在工作学习中大家难免会遇到一些疑问&#xff0c;像是领导发下了一张工作内容的图片呀&#xff0c;自己需要使用到里面的一些文本内容&#xff0c;但由于无法直接将文字直接提取出来&#xff0c;也无法拷贝粘贴&#xff0c;所以只能截下需用到的内容进行手动搬运&#xff0c;不…

三分钟教你怎么截屏识别文字内容

在大学写期末小论文的时候&#xff0c;经常需要上网搜索一些资料&#xff0c;不过现在网站一般都是需要开通会员才可以对文字进行复制&#xff0c;这让囊中羞涩的我比较难受&#xff0c;于是就上网搜索了一些可以进行截图文字识别的软件&#xff0c;总算是顺利的将小论文完成了…

怎么截图识别文字?这些方法值得收藏

在查阅资料的时候&#xff0c;小伙伴们是否有遇到过无法复制页面文字的情况&#xff1f;这时你们都会怎么做呢&#xff1f;是重新找一份资料吗&#xff1f;还是根据已有的文字信息&#xff0c;手动进行录入呢&#xff1f;这些操作都会很影响我们的工作学习效率。其实我们只需要…