用户数据报协议UDP

2023-11-15

UDP的格式

载荷存放的是:应用层完整的UDP数据报

报头结构: 

  • 源端口号:发出的信息的来源端口
  • 目的端口号:信息要到达的目的端口
  • UDP长度:2个字节(16位),即UDP总长度为:2^16bit = 2^10bit * 2^6bit = 1KB * 64 = 64KB.所以一个UDP的最大长度为64KB
  • UDP校验和:网络的传输并非稳定传输,还有很多额外的因素.校验和可以在一定程度上判断传输的信息是否正确

UDP的特点

  1. 无连接:对目的IP与端口号直接传输,不要建立连接(类似于寄信)
  2. 不可靠:只负责发送,如果发送失败也不会给发送端返回任何错误信息(只负责发,发完就不管了)
  3. 面向数据报:应用层交给UDP的报文不会被进行拆分,UDP按照原样进行发送.同样也不会进行合并.
  4. 只有接收缓冲区:发送的信息会直接交给内核.在接收缓冲区中不能保证收到信息的顺序与发送的一致,缓冲区满后丢弃新的UDP数据.
  5. 全双工:UDP的socket既能发送也能接收

拓展

基于UDP怎样实现可靠传输 :

针对不可靠,可引入确认应答.确保接收端收到信息后返回应答.

针对信息接收与发送的顺序不一致,可引入序列号.给每一个发送的UDP加上一个序列号,接收端对序列号进行一定的排序可得到发送时的UDP数据顺序

还可额外引入一个超时重传,可能发送端因为网络阻塞信息没能发送到接收端,接收端无法接收信息也不会应答.当一定时间后,发送端没有收到答应可以进行信息的重传

基于UDP发送大于64KB的数据:

既然无法在传输层对数据报进行分拆,程序员可以在应用层对要发送的数据报进行手动一定的拆分.拆分成多个包后,通过多个UDP进行发送出去

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用户数据报协议UDP 的相关文章

  • UDP 数据报中发送的消息未经过净化?

    我的代码如下 一切都按照我想要的方式进行 但是当我的消息收到时 它们的末尾有很多框 有点像这样 消息 你好 如何才能让接收和打印的内容仅为 Message hello 我非常感谢任何帮助 import java io import java
  • GCDAsyncUDPSocket源地址返回null

    谷歌代码问题镜像 https groups google com forum topic cocoaasyncsocket grhjZSMLr3U https groups google com forum topic cocoaasync
  • C# UDP广播和接收示例

    问题 我正在尝试将 udp 套接字绑定到特定地址 我会广播一条消息 同一个套接字需要能够接收消息 当前代码 static void Main UdpClient Configuration new UdpClient new IPEndPo
  • 什么是 STUN?它是否需要端口转发服务器?

    我对没有基础服务器的 p2p 通信进行了一些研究 并通过了 STUN 据我所知 STUN 是 NAT 打孔 的一种方式 不需要对等方进行端口转发即可连接 这是正确的吗 打孔到底是什么意思 这一切看起来都很脆弱 因为如果不需要端口转发 它就会
  • UDP 服务器套接字缓冲区溢出

    我正在 Linux 上编写 C 应用程序 我的应用程序有一个 UDP 服务器 它在某些事件上向客户端发送数据 UDP 服务器还接收来自客户端的一些反馈 确认 为了实现这个应用程序 我使用了一个 UDP 套接字 例如int fdSocket
  • Spark Scala UDP 在侦听端口上接收

    中提到的例子http spark apache org docs latest streaming programming guide html http spark apache org docs latest streaming pro
  • Java UDP中如何获取实际数据包大小`byte[]`数组

    这是我上一个问题的后续问题 Java UDP发送 接收数据包一一接收 https stackoverflow com questions 21866382 java udp send receive packet one by one 正如
  • NodeJS UDP 多播如何

    我正在尝试将 UDP 多播数据包发送到 230 185 192 108 以便每个订阅的人都会收到 有点卡住了 我相信它的广播正确 但似乎无法从任何客户端获取任何信息 Server var news Borussia Dortmund win
  • 用于接收 UDP 数据包的可变大小缓冲区

    我有一个 UDP 套接字 它将接收一些可能不同大小的数据包 并且我异步处理它 socket async receive from boost asio buffer buffer 65536 senderEndpoint handler 这
  • 为什么UDP服务器上的UDP客户端端口会改变

    我一直在关注一个简 单的 UDP 服务器 客户端教程 发现here http www binarytides com udp socket programming in winsock 我有一个关于客户端连接到服务器的端口的快速问题 仅从代
  • 搜索所有网络上的设备

    我想实现一个代码 通过它我可以列出网络上连接的 upnp 兼容媒体渲染器设备 我用谷歌搜索了这个并找到了以下代码扭曲的网站 https twistedmatrix com documents current core howto udp h
  • Java UDP 服务器,并发客户端

    下面的代码足以接受并发 UDP 传输吗 更具体地说 如果 2 个客户端同时传输 当我调用 receive 时 DatagramSocket 会将传输排队并一一传送它们 还是只有一个能够通过 DatagramSocket socket new
  • Go:如何接收整个 UDP 数据报

    我的问题 使用 net Read 方法仅复制给定字节数组或切片大小的字节数 当然 我不想每次都分配最大 64 kB 的 UDP 数据报 有没有go如何确定数据报的大小 位于数据报头中 或再次读取直到数据报完全读取 Try 从UDP读取 ht
  • 为什么我们可以将 sockaddr 转换为 sockaddr_in

    我明白为什么强制转换很有用sockaddr to sockaddr in 但我不明白这怎么可能 据我所知 它们的大小相同sockaddr in添加了sin zero使其大小相同 我想知道编译器如何知道从哪里获取信息sockaddr in如果
  • 为什么通过UdpClient发送会导致后续接收失败?

    我正在尝试创建一个 UDP 服务器 它可以向所有向其发送消息的客户端发送消息 真实情况要复杂一些 但最简单的方法是将其想象为一个聊天服务器 之前发送过消息的每个人都会收到其他客户端发送的所有消息 所有这一切都是通过UdpClient 在单独
  • 使用 STUN 打孔

    我目前正在尝试通过 Internet 发送 UDP 消息 并且必须为端点 A 和 B 都位于 NAT 后面 设置防火墙 为此 我想使用 STUN 服务器进行打孔 当 A 创建对 STUN 服务器的请求 例如 私有 85 1 1 12 600
  • Python UDP广播不发送

    我正在尝试从 Python 程序到两个 LabView 程序进行 UDP 广播 我似乎无法发送广播 我不确定我的套接字初始化错误在哪里 广播似乎足够简单 据我所知 其他电脑没有收到任何数据 另外 我将来还需要这个程序来接收来自其他电脑的数据
  • UDP 广播发送失败:在 Linux 2.6.30 上“网络无法访问”

    我用udp广播写了一个程序 代码段如下 struct sockaddr in broadcast addr socklen t sock len sizeof broadcast addr bzero broadcast addr sock
  • 为什么 UDP 服务器中只有一个套接字?

    我正在准备考试 发现了这个问题 典型的 UDP 服务器可以使用单个套接字来实现 解释一下为什么 对于 TCP 驱动的服务器 我发现创建了两个套接字 一个用于所有客户端访问服务器 另一个用于每个客户端的特定 套接字 用于服务器和客户端之间的进
  • 如何使用 Nmap 检索 TCP 和 UDP 端口? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我需要在使用 Nmap 的同一扫描中以尽可能最快的方式检索 TCP 和 UDP 端口 我会尽力解释得更好 如果我使用最常用的命令 nmap 192 1

随机推荐

  • uni-app搜索-历史记录

    效果图
  • 自建纯内网iot平台服务,软硬件服务器全栈实践

    基于以下几个考虑 自制硬件设备 mqtt内网服务器 1 米家app不稳定 逻辑在云端或xiaomi中枢网关只支持少部分在本地计算 2 监控homeassistant官方服务有大量数据交互 可能与hass安装小米账户有关 3 硬件 原理图 l
  • 【windTerm

    前言 随着时间的推移 在我们的日常工作中对于 SSH 工具的新鲜感日益不足 好多同学都在寻求一款新奇的 好用的 SSH 客户端 虽然目前市场上现存的 MobaXterm FinalShell CRT Putty Tabby 等工具已经能够满
  • Matlab/Simulink-PSFB移相全桥电路仿真搭建

    1 前言 Simulink零基础 PSFB移相全桥电路仿真搭建 PSFB电路仿真 移相全桥短路仿真 十分钟让你掌握PSFB移相全桥电路的闭环控制 移相全桥 PSFB DC DC转换器经常用于降压高直流母线电压 并在中大功率应用中提供隔离 P
  • python 线程池threadpool(使用篇)

    最近在做一个视频设备管理的项目 设备包括 摄像机 DVR NVR等 包括设备信息补全 设备状态推送 设备流地址推送等 如果同时导入的设备数量较多 如果使用单线程进行设备检测 那么由于设备数量较多 会带来较大的延时 因此考虑多线程处理此问题
  • python定义类的时候继承object类

    区别在于python2和python3 python3继承不继承object类都没有区别 但是python2继承object类的话 可以获得更多的魔术方法 静态方法 类方法的构造 类属性的快速访问 定制类实例的实现方法 PS python2
  • Python request content 和 text 的区别

    Python request content和text的区别 text 返回的是 unicode 型的数据 一般是在网页的 header 中定义的编码形式 content 返回的是 bytes 二级制型的数据 也就是说你如果想要提取文本就用
  • (20181206)在线计算GPS周、北斗周、周内日、年积日、简化儒略日

    介绍两个用于在线计算GPS周 周内日 年积日 简化儒略日的网站 网站一 http www gnsscalendar com 使用说明 网站二 http webapp geod nrcan gc ca geod tools outils ca
  • 根据相同主键,合并其他字段值,形成一条记录(oracle)

    将具有相同的主键INVT PROD ID值 其他列值CLAUSE MEMO CLAUSE TP CD BBCK DT使用 进行合并 形成一条记录 select INVT PROD ID MAX subStr CLAUSE MEMO 3 CL
  • Echarts折线图的部分修改

    x轴刻度的隐藏显示 xAxis axisTick show true false x轴的显示隐藏 xAxis axisLine show true false y轴去掉0刻度线 yAxis min 0 scale true axisLine
  • 基于openlayer4实现多个popu展示

    这个超出屏幕能自动平移 没有试 https blog csdn net qq 27186245 article details 82227282 https blog csdn net qq 27186245 article details
  • spring redis和缓存的应用

    spring redis和缓存的应用 1 在springboot项目中引入redis的包 即在pom xml文件中导入一下依赖 刷新maven可看见右侧依赖 2 使用缓存前在项目启动类 Demo1Application 中开启缓存 3 启动
  • 百度AI加速器-百度智能云千帆大模型平台专项首期开营

    9月2日 3日 百度AI加速器 百度智能云千帆大模型平台专项计划第一期加速营在百度大厦举办 经过为期一个月的招募 上海烯牛信息 北京谷器数据 北京烽火万家 上海知潜等15家AI创业企业入选并参与首期开营仪式 入营企业将获得百度智能云提供的一
  • xshell中文件操作的一些常见Linux命令

    1 文件操作的相关shell命令 文件名 执行这个文件 mv 文件名 文件位置 将文件移动到该位置 cp 文件1 文件2 复制文件1到文件2处 如果文件2没有会创 rm f 删除指定目录下的所有文件 rm rf filename 删除指定目
  • 计算机网络复习5----给主机配置IP地址

    在给主机配置IP地址时 哪一个能使用 A 29 9 255 18 B 127 21 19 109 C 192 5 91 255 D 220 103 256 56 答案为a 解析 B 127用于本地的回环测试不能 所以不能配置给主机 一旦出现
  • 掌握Python的X篇_27_Python中标准库文档查阅方法介绍

    前面的博文介绍了python的基本语法 模块及其导入方法 前人将各种方法封装成模块 库 函数供我们使用 如何去使用前人做好的东西 那就需要去查阅文档 今天就介绍python中官方文档的查阅方式 对于初学者而言 python自带的文档就已经足
  • Python入门最完整的基础知识大全【纯干货,建议收藏】

    前言 作为一个有着9年Python开发经验的老码农 今天我就为大家带来了Python的基础知识点 全篇干货 建议大家动动手指收藏起来 一定能够帮助你顺利入门Python 1 环境搭建 Python由荷兰数学和计算机科学研究学会的Guido
  • unity中,什么是万向锁?

    文章目录 一 介绍 二 解决unity万向锁的方法 一 介绍 在Unity中 万向锁 Gimbal Lock 是指使用欧拉角旋转时可能会出现的一种问题 导致物体的旋转变得不稳定或无法实现所期望的旋转 欧拉角旋转是通过绕三个轴 通常是x y和
  • 使用socket判断http请求或http响应的传输结束

    使用socket判断http请求或http响应的传输结束 先把header直到 r n r n整个地收下来 1 传输完毕就关闭connection 即recv收到0个字节 2 有内容 if Transfer Encoding chunked
  • 用户数据报协议UDP

    UDP的格式 载荷存放的是 应用层完整的UDP数据报 报头结构 源端口号 发出的信息的来源端口 目的端口号 信息要到达的目的端口 UDP长度 2个字节 16位 即UDP总长度为 2 16bit 2 10bit 2 6bit 1KB 64 6