计算机网络基础(十四)---传输层-UDP协议详解

2023-11-03

文章内容概览

UDP协议简介

  • UDP(User Datagram Protocol:用户数据报协议)
  • UDP相对于TCP来说,是一个非常简单的协议

数据报:指的就是应用层所传输过来的一个完整的数据,UDP不会对这个完整的数据进行处理,不会进行拆分,也不会进行合并了再传输

从数据报的定义可以看出,UDP协议的数据长度,主要由应用层传输的数据长度所决定的,应用层传的数据越长,UDP数据报文就越长

UDP数据报的数据所处的位置

UDP首部

  • 端口号:端口号在之前的文章中有提到,它标记的是使用网络的进程(源端口号就是原机器正在使用网络的进程,目的端口号就是目的机器正在使用网络的进程)
  • 16位UDP长度:指的就是UDP数据报的长度(该长度包括UDP数据)
  • 16位UDP校验和:检测UDP的用户数据报在传输中是否出错
  • UDP数据:实际要发的数据

UDP的特点

1.UDP是一个无连接的协议

比如A和B进行电话通信,在通信之前,需要先拿出电话,然后拨号,这个是建立连接的过程。当电话拨通之后,说明连接已经建立起来了,此时就可以进行通信了。当通信之后,就将电话挂断,这个相当于结束连接。这个过程就是有连接的过程。而UDP是无连接的,也就是说,他在通信之前,不需要先建立连接,只要在想发数据的时候,直接就将数据发送出去了

2.UDP不能保证可靠的交付数据
  • 首先UDP是无连接的协议,在发送数据的时候想发就发,无法保证数据在网络中是否有丢失,即使有丢失,它也不会感知到
  • 从前边的UDP头部也可以看出来,它的头部非常简单,并没有提供任何的机制来保证数据可以可靠的传给对方
3.UDP是面向报文传输

UDP对应用层传输的数据并不会进行任何的处理,直接塞进UDP协议的数据中

4.UDP没有拥塞控制

如果把网络看做是一条公路,如果车辆特别多,就会导致拥塞。UDP并不会感知网络是否拥塞,不管是否拥塞,它都会尽量的把数据给发送出去

5.UDP的首部开销非常小

从上边的UDP首部图可以看出来,总共也就8个字节

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

计算机网络基础(十四)---传输层-UDP协议详解 的相关文章

  • UdpClient 在广播地址上接收

    在 c 中 我使用 UdpClient Receive 函数 public void StartUdpListener Object state try udpServer new UdpClient new IPEndPoint IPAd
  • 简单的udp代理解决方案

    我正在寻找可以代理我的 udp 数据包的解决方案 我有一个客户端向服务器发送 udp 数据包 它们之间的连接非常糟糕 导致大量数据包丢失 一种解决方案是使用一个新的代理服务器 它将所有数据包从客户端重定向到目标服务器 新的代理服务器与这两个
  • 错误的 UDP 校验和没有效果:为什么?

    我正在尝试测试 UDP 程序 如果它接收到 UDP 校验和错误的数据 会发生什么情况 奇怪的是 它似乎没有任何效果 并且有效负载被成功接收 至少在 OS X 上是通过环回接口成功接收的 下面是一个示例 其中使用以下方式发送数据SOCK RA
  • 为什么UDP服务器上的UDP客户端端口会改变

    我一直在关注一个简 单的 UDP 服务器 客户端教程 发现here http www binarytides com udp socket programming in winsock 我有一个关于客户端连接到服务器的端口的快速问题 仅从代
  • 将 Docker 容器连接到网络接口/设备而不是 IP 地址

    经过仔细的研究 测试和摆弄 我只能找到通过从 IP 端口转发来将 Docker 容器连接到给定接口的方法 这可以通过添加来完成 p Host IP Host Port Container Port to a docker run命令 我有一
  • UDP sendto 上的 ECONNREFUSED 错误

    我在使用正在写入的应用程序时遇到一些无法解释的行为 使用 sendto 向多个端口发送 UDP 数据 所有端口均使用套接字 PF INET SOCK DGRAM 0 为了一组客户端读取进程的利益 这些 sendto 偶尔会不可预测地触发经济
  • iOS 14 在进行本地网络广播时给出“操作系统错误:错误的文件描述符,errno = 9”

    做一点Jeopardy 风格问答 https stackoverflow blog 2011 07 01 its ok to ask and answer your own questions here 我正在 Flutter 中开发一个应
  • 什么是消息边界?

    什么是 消息边界 在以下情况下 TCP 和 UDP 之间的区别之一是 UDP 保留消息 边界 我理解之间的区别TCP and UDP 但我不确定的定义 消息边界 由于 UDP 在每个单独的数据包中包含目的地和端口信息 因此是否可以为消息提供
  • 对等网络应用程序的网络发现

    我希望有两个类 一个服务器类和一个客户端类 服务器类应该接收每个新客户端的 IP 地址和端口号并将它们存储在列表中 它应该为每个客户端提供已连接客户端及其 IP 地址的列表 然后 客户端可以使用 TCP 连接相互通信 问题是客户端不知道服务
  • Windows 操作系统中无法访问的 IP 套接字关闭时间

    这些代码通过用户数据报协议提供发送数据 下面有两个代码 当我使用第一个代码来处理无法访问的 IP 地址时 我得到了三秒的延迟 请查看新结果标题 只需打开新的 C 控制台应用程序并将这些代码粘贴到其中 第一个代码 using System u
  • 为什么通过UdpClient发送会导致后续接收失败?

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

    如果问题之前已得到解答 我提前表示歉意 但我已经搜索并没有找到任何对我有帮助的东西 正如问题标题所示 我正在尝试将包从服务器广播到一组侦听任何消息的客户端 客户端将计算一秒钟内收到的消息数 服务器端的事情是这样的 class Server
  • 为什么SOCKS5需要通过UDP中继UDP?

    The SOCKS5 https en wikipedia org wiki SOCKS SOCKS5协议 描述为RFC1928 https www rfc editor org rfc rfc1928提供对 UDP 的支持 总而言之 希望
  • 错误号:11,资源暂时不可用

    我正在使用 c 套接字来实现可靠的 UDP 协议 我正在使用以下代码在等待确认的套接字上设置超时 我不确定为什么会收到 errno 11 资源暂时不可用 set timer for recv socket struct timeval tv
  • UDP接收和发送Matlab

    我目前正在努力从外部设备接收数据包 然后将数据发送到另一个设备 我有一个工作 Simulink 模型 但我不知道如何在 Matlab 中对其进行编码 Matlab 中 UDP 接收块的参数如下图所示UDP 接收参数 https i stac
  • 使用多个 NIC 广播 UDP 数据包

    我正在 Linux 中为相机控制器构建嵌入式系统 非实时 我在让网络做我想做的事情时遇到问题 该系统有 3 个 NIC 1 个 100base T 和 2 个千兆端口 我将较慢的连接到相机 这就是它支持的全部 而较快的连接是与其他机器的点对
  • 如何从 DatagramPacket 中检索字符串[重复]

    这个问题在这里已经有答案了 下面的代码打印 B 40545a60 B 40545a60abc exp 但我想打印abc 以便我可以从接收系统检索正确的消息 public class Operation InetAddress ip Data
  • 通过 UDP 从服务器向 iPhone 发送大量实时处理的数据

    我正在实施一个远程应用程序 服务器将实时处理和渲染数据作为动画 准确地说 是一系列图像 每次渲染图像时 都会通过 UDP 将图像传输到接收 iPhone 客户端 我研究了一些UDP 我知道以下几点 UDP 的最大大小约为 65k 不过 iP
  • boost 是否有可移植的方式来使用 ntohl/htonl/ntohs/htons 类型函数?

    我正在使用 UDP 特别是 boost asio ip udp socket 套接字 如果有帮助的话 头文件是什么 我需要哪些标头 类来处理 UDP 提升下的网络字节排序 刚刚发现就足够了 include
  • 服务器作为 WebRTC 数据通道对等点

    目前是否有解决方案可以让您的服务器充当 WebRTC 连接的对等端 我对 WebRTC 感兴趣的原因不是它的点对点部分 而是因为它使您能够使用 UDP 您可以让玩家参与像 雷神之锤 这样的快节奏游戏 而无需任何插件 看来本质上是同一个问题之

随机推荐

  • 2021年 年终总结

    不知道你们写这个类似年终总结的时候是怎么打开思路的 每年到这个时候 心里总是想着晚两天再写吧 一直拖到快到31号了才开始 动笔 一般都会打开手机相册 看看这一年从一月一号开始都记录了什么 或者生活日常 或者美食 或者自恋自拍 或者在路上 今
  • Java中double,float类型比较大小或相等的方法-soanr扫描问题Floating point numbers should not be tested for equality

    由于在二进制表示中存储这些值的挑战 浮点数学是不精确的 更糟糕的是 浮点数学不是关联的 推动float或double通过一系列简单的数学运算 由于每个步骤发生的舍入 答案将根据这些操作的顺序而不同 即使是简单的浮点赋值也不简单 float
  • Tik Tok月活12亿 Tiktok和抖音有什么不同 ?

    Tik Tok月活12亿 Tiktok和抖音有什么不同 哈喽大家好 我是项柚 目前从事Tiktok从事2年 首先 我先给大家抛一个对比数据图 国内抖音和tiktok的用户区别以及月活量分布 国内抖音月活量是4个亿左右 tiktok国际抖音月
  • MySQL 服务正在启动 . MySQL 服务无法启动 服务没有报告任何错误 解决方案

    方法一 1 找到MySQL的安装目录 将data删除 注意该文件下会有一些你自己建立的数据库的数据 2 然后复制bin文件的路径 3 从开始里搜索cmd 右键以管理员身份运行 否则会出如下错误Install Remove of the Se
  • 计算机竞赛 深度学习 YOLO 实现车牌识别算法

    文章目录 0 前言 1 课题介绍 2 算法简介 2 1网络架构 3 数据准备 4 模型训练 5 实现效果 5 1 图片识别效果 5 2视频识别效果 6 部分关键代码 7 最后 0 前言 优质竞赛项目系列 今天要分享的是 基于yolov5的深
  • pnpm安装报错npm ERR code EEXIST

    pnpm安装报错 C Users admin working gt npm install g pnpm C Program Files nodejs pnpm gt C Program Files nodejs node modules
  • 高效程序员工作法(一)

    目录 前言 一 高效程序员的思考框架 思考框架 四个思考原则 以终为始 任务分解 沟通反馈 自动化 一句话总结 二 以终为始 如何让你的努力不白费 一句话总结 三 DoD的价值 你完成了工作 为什么他们还不满意 一句话总结 四 接到需求任务
  • java中map的几种常用实现类

    java为数据结构中的映射定义了一个接口java util Map 他实现了四个类 分别是 HashMap HashTable LinkedHash MapTreeMap Map不允许键重复 但允许值重复 1 HashMap 最常用的Map
  • Hbase建表操作--shell语句

    一 介绍 HBase是一个分布式的 面向列的开源数据库 源于google的一篇论文 bigtable 一个结构化数据的分布式存储系统 HBase是Google Bigtable的开源实现 它利用Hadoop HDFS作为其文件存储系统 利用
  • 机器学习之聚类算法:K均值聚类(二、算法案例)

    一 简易数据集的Kmeans实现 数据下载 提取码 quu3 导入库并载入数据 import numpy as np import matplotlib pyplot as plt 载入数据 data np genfromtxt kmean
  • 使用遗传算法解决多变量函数优化问题!

    很多朋友在碰到多变量值优化的问题的时候不能很好的将问题转化 利用有效编码的方法将解的个数 解的编码很好的很合理的进行设计 因此不能利用遗传算法进行问题的求解 其实 简单的来说 就是将多个变量的数值编码编排进去 进行组合 只需要增长基因个体的
  • python 如何合并多个dict

    a a 1 b 1 b a 2 b 2 c c 3 result dict tmp str result result update a print update format tmp a result tmp str result res
  • 06.网页布局

    布局方式 1 固定宽度布局 为网页设置一个固定的宽度 通常以px做为长度单位 常见于PC端网页 2 流式布局 为网页设置一个相对的宽度 通常以百分比做为长度单位 3 栅格化布局 将网页宽度人为的划分成均等的长度 然后排版布局时则以这些均等的
  • Qt中动态增加或移除QButtonGroup(按钮组)中指定子button(按钮)

    首先从QButtonGroup移除全局子button比较容易 直接remove就行 但是如果我们是动态往QButtonGroup中移除指定的子button 则相对比较麻烦 动态往QButtonGroup中增加子button QButtonG
  • zlib包的下载

    zlib包下载地址 http www zlib net 这里注意很多帖子都是直接给了具体的连接 比如 wget http www zlib net zlib 1 2 8 tar gz 然后 所以 这里不宜生搬硬套 直接去官网上看 源码地址
  • SpringBoot整合Zookeeper做分布式锁

    环境准备 zookeeper准备 首先你需要一个zookeeper服务器 或者是一个zookeeper集群 我已经准备好了一个zookeeper集群 如图 当然一个单节点的zookeeper也可以搭建分布式锁 如果你还没有zookeeper
  • cocos compile命令指定Android项目目录

    cocos2d x 3 5 创建项目 会自动添加几个平台的目录 例如 proj android proj ios 编译时执行命令 cocos compile p android s my project m debug 编译命令指定平台为
  • vue实现登录界面

    使用Vue实现简单的用户登录界面 登录成功以后查询账号用户类型进行相应的页面路由跳转 效果如下图所示 HTML部分
  • 如何让Vscode的鼠标滚轮滑动加上ctrl键可以调整字体大小?什么是setting.json?

    打开Vscode 按照以下步骤操作 文件 gt 首选项 gt 设置 gt 文本编辑器 gt 字体 gt 进入setting json中编辑 在setting json中加入代码 editor mouseWheelZoom true 如果你把
  • 计算机网络基础(十四)---传输层-UDP协议详解

    文章内容概览 UDP协议简介 UDP User Datagram Protocol 用户数据报协议 UDP相对于TCP来说 是一个非常简单的协议 数据报 指的就是应用层所传输过来的一个完整的数据 UDP不会对这个完整的数据进行处理 不会进行