丢失 UDP 数据包的可能性有多大?

2023-12-22

好的,我正在为网络课程编程,并且必须使用 UDP 在 Java 中实现一个项目。我们正在实现一个 HTTP 服务器和客户端以及一个以指定概率损坏数据包的“gremlin”功能。 HTTP 服务器必须在应用层将大文件分成多个段,以便通过 UDP 发送到客户端。客户端必须在应用层重新组装接收到的段。然而我想知道的是,如果 UDP 根据定义是不可靠的,为什么我必须在这里模拟不可靠?

我的第一个想法是,也许这只是因为我的导师在我们的案例中认为,客户端和服务器都将在同一台机器上运行,并且文件将从一个进程传输到另一个进程,甚至通过 UDP 也能 100% 可靠地传输,因为它位于同一台计算机上的两个进程之间。

这让我首先质疑,如果服务器和客户端保证是同一台物理机器上的两个进程,并且保证严格路由,那么 UDP 是否真的会丢失数据包、损坏数据包或乱序传送数据包仅通过本地主机,这样它就不会通过网络出去。

一般来说,我还想知道,对于给定的数据包,UDP 在用于促进​​地理位置相当的两个主机之间通过开放互联网进行通信时,丢弃/损坏/或无序传送数据包的粗略概率是多少彼此之间的距离是否遥远(比如美国普通宽带用户到 Google 的 CDN 之一之间的路线)?我主要只是想大致了解通过 UDP 进行通信时所经历的情况,它是否会丢弃/损坏/乱序大约 25% 的数据包,或者更像是大约 0.001% 的数据包数据包?

非常感谢任何能为我解答这些问题的人。


数据包丢失的发生有多种原因。主要是由个别链路错误和网络拥塞引起的。

当链路正常工作时,由于链路错误而导致的数据包丢失非常低。低于 0.01% 并不罕见。

由于拥塞而导致的数据包丢失显然取决于链路的繁忙程度。如果整个路径上有空闲容量,则该数字将为 0%。但随着网络变得繁忙,这个数字将会增加。当流量控制正确时,这个数字不会变得很高。几个丢失的数据包通常足以让某人降低传输速度,以防止数据包因拥塞而丢失。

如果丢包率达到 1%,就有问题了。这可能是拥塞控制算法响应数据包丢失的方式中的错误。如果它保持以相同的速率发送数据包,当网络拥塞并丢失数据包时,数据包丢失可能会更高,如果软件行为不当,则可能会丢失 99% 的数据包。但这取决于所涉及的链接类型。千兆位以太网使用反压来控制流量,因此,如果从源到目的地的路径是单个千兆位以太网段,则发送应用程序可能会减慢速度,并且永远不会看到实际的数据包丢失。

为了测试软件在丢包情况下的行为,我建议两种不同的模拟。

  1. 每个数据包以 10% 的概率丢弃并以 90% 的概率传输
  2. 每秒最多传输 100 个数据包或每秒 100KB,如果应用程序要发送更多数据包,则丢弃其余数据包。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

丢失 UDP 数据包的可能性有多大? 的相关文章

  • 支持 Kubernetes NodePort 服务的 SSL/TLS

    问题 我需要通过 https 向外部公开 Kubernetes NodePort 服务 设置 我已经在裸机上部署了 Kubernetes 并且已经部署Polyaxon https github com polyaxon polyaxon通过
  • 从不同进程通过套接字 (UDP) 回复客户端

    我有一个服务器而不是 命令处理程序 进程 它通过 UDP 接收消息 并通过其发布的 API 无论该进程采用何种 IPC 机制 与该进程进行通信 从而将要做的工作委托给不同的进程 我们的系统有多个协作进程 然后 该 API 调用的结果会从命令
  • 以编程方式启用 Internet 连接共享

    我可以手动执行此操作 方法是右键单击网络连接 打开 共享 选项卡 单击 允许其他网络用户通过此计算机的 Internet 连接进行连接 复选框 然后选择 家庭网络连接 在研究这个问题时 我发现了多组 COM 接口 1 Internet 连接
  • 使用多个 NIC 广播 UDP 数据包

    我正在 Linux 中为相机控制器构建嵌入式系统 非实时 我在让网络做我想做的事情时遇到问题 该系统有 3 个 NIC 1 个 100base T 和 2 个千兆端口 我将较慢的连接到相机 这就是它支持的全部 而较快的连接是与其他机器的点对
  • C# 套接字数据报溢出

    我是 C 新手 我有一个关于udp套接字的小问题 我有一个聊天服务器 它接收特定结构的数据包 udp 数据报 为什么程序在套接字缓冲区已满时才接收数据 难道以后的一切就不应该失去吗 也许会出现数据包碎片 数据包结构 udp headers
  • 如何从 DatagramPacket 中检索字符串[重复]

    这个问题在这里已经有答案了 下面的代码打印 B 40545a60 B 40545a60abc exp 但我想打印abc 以便我可以从接收系统检索正确的消息 public class Operation InetAddress ip Data
  • python 中的原始套接字和 sendto

    我正在努力将 scapy 与twisted 集成 但我在 OSX 上遇到了这个非常奇怪的错误 我似乎无法弄清楚 基本上我无法通过原始套接字发送有效的 TCP 数据包 包括 IP 标头 这就是我正在做的 import socket from
  • TCP 校验和可能无法检测到错误吗?如果是的话,这件事是如何处理的?

    如果 TCP 有效负载在传输过程中被损坏 则重新计算的校验和将与传输的校验和不匹配 太好了 到目前为止一切都很好 如果 TCP 校验和在传输过程中损坏 则重新计算的校验和将与现在损坏的校验和不匹配 太好了 到目前为止一切都很好 当有效负载和
  • 在 scapy 中通过物理环回发送数据包

    我最近发现了 Scapy 它看起来很棒 我正在尝试查看 NIC 上物理环回模块 存根上的简单流量 但是 Scapy sniff 没有给出任何结果 我正在做的发送数据包是 payload data 10 snf sniff filter ic
  • 什么是监控网络活动的好工具[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我经营的是小区 现在我正在寻找一个在服务器 Windows 或 Linux 上运行的监控工具 它可以跟踪
  • 无法从 run 方法中访问对象的属性(方法)! Java多线程

    我在 ServerConnectionManager 中有以下代码 public class ServerConnectionManager implements Runnable private DatagramPacket receiv
  • 用java实现我自己的远程桌面

    我正在尝试用java实现我自己的远程桌面解决方案 使用套接字和 TCP UDP 我知道我可以使用 VNC 或其他任何东西 但我想做的是学校的作业 因此 为了移动鼠标并单击 我可以使用 Robot 类 我对此有两个问题 发送视频怎么样 我知道
  • RTSP 设置后接收 RTP 数据包

    我正在尝试使用 Python 从 IP 摄像机流式传输 RTP 数据包 我能够使用 RTSP 协议发送描述 设置和播放命令 但是 我无法开始使用 RTP 传输实际视频流 这是代码 import socket def printrec rec
  • 尝试对无法访问的主机进行套接字操作

    一位客户在连接到我们的服务器服务的 WCF 客户端上报告了此错误 消息 尝试对无法访问的主机进行套接字操作 类型 System Net Sockets SocketException 从这个链接http msdn microsoft com
  • UDP SocketException - 通常只允许每个套接字地址使用一次

    尽管这里有很多非常相似的问题 但提供的答案都没有帮助我 这让我很难过 我有一个非常大的管理系统 我的任务是为其编写一些 UDP 数据包发送 接收 我已经编写了一个原型 一切都很好 所以我开始将我的代码合并到所述系统中 然而 我现在弹出了一个
  • Docker 容器与主机网络的网络性能非常慢

    我遇到了 Docker 容器和主机网络之间网络性能缓慢的问题 我在 Docker 论坛上提出了这个问题 但到目前为止还没有收到答案 Problem 设置 同一本地网络上的两台 Mac 第一个运行 MQTT 代理 mosquitto 第二个运
  • Android bindProcessToNetwork 和通过 MediaPlayer 的 RTSP 流

    我有一个应用程序正在使用bindProcessToNetwork 强制所有连接通过wifi 连接 这样做是因为 wifi 连接连接到没有互联网连接的相机 因此 Android 自然会尝试通过具有完整互联网连接的蜂窝数据连接推送所有流量 其代
  • 这种文件锁定方法可以接受吗?

    我们有 10 个 Linux 机器 每周必须运行 100 个不同的任务 这些计算机主要在我们晚上在家时执行这些任务 我的一位同事正在开发一个项目 通过使用 Python 自动启动任务来优化运行时间 他的程序将读取任务列表 抓取一个打开的任务
  • 如何使用 iPhone 将照片上传到服务器?

    我正在编写一个 iPhone 应用程序 它可以拍摄照片然后将其上传到服务器 如何使用 Cocoa 将照片上传到服务器 我想我在某处使用 NSUrl Thanks Header interface EPUploader NSObject NS
  • 使用的端口未显示在 netstat -a 结果中

    最近当我尝试启动 active mq 默认情况下在端口 61616 上启动 时 这个问题开始出现 但突然间 该端口上不再出现 JVM BIND 问题 即使重新启动计算机后问题也没有消失 主要问题是 Windows 7 上的 netstat

随机推荐

  • 关于纯头文件 C++ 库使用情况的可量化指标(基准)

    我试图用 SO 找到这个问题的答案 有很多问题列出了在 c 中构建仅头文件库的各种优缺点 但我还没有找到一个以可量化的方式做到这一点的问题 那么 从可量化的角度来看 使用传统上分离的 C 头文件和实现文件与仅使用头文件有什么不同 为简单起见
  • FlashDevelop - 为什么代码完成不适用于 mx.controls

    今天是我使用 Flex 和 FlashDevelop 的第一天 在我的 ActionScript 文件中 有这一行 import flash display SimpleButton FlashDevelop 意识到了这一点并且代码完成工作
  • Plone:升级 jQuery

    在 Plone 4 1 中使用 jQuery SlickGrid 插件并尝试调整网格列的大小会出错这个 jQuery 1 4 4 错误 http bugs jquery com ticket 7500 该问题已在较新的版本中得到修复 是否可
  • iOS 6 中 UIPickerView 选择行崩溃

    我的应用程序在 iOS 5 x 中完美构建和运行 但当我调用时它崩溃了selectRow inComponent animated 的方法UIPickerView在 iOS 6 中 code pickerview selectRow 1 i
  • 如何求这4个正方形的外角坐标? (如果图像旋转,形态闭/开不会保留正方形)

    我正在编码的工具中的第一个处理步骤是找到4个大黑色方块的外角坐标 然后 它们将用于进行单应变换 以便校正图像 取消旋转图像 也称为透视变换 最终获得矩形图像 这是 旋转和嘈杂 输入的示例 下载链接在这里 https i stack imgu
  • 邮差喷气背包 - 测试嵌套数据

    我在邮递员中进行了测试 并且响应返回了 嵌套 数据 我的意思是我们有响应的 数据 部分和 消息 部分 内部数据还有大量其他字段 这些字段是我需要使用 Jetpack 进行验证的字段 我怎样才能到达这些领域 JSON 响应如下所示 Data
  • Asp.net mvc 3 - 自定义模型绑定

    我有一个这样的模型 public string Name get set public IEnumerable
  • 意外返回匿名结构

    我正在尝试实现一种方法 该方法返回基于原始结构的修改后的结构 例如 type Project struct Username string Id uint Alias string Data json RawMessage Scheme S
  • Assert() - 它有什么用?

    我不明白的目的assert 我的讲师说断言的目的是发现错误 例如 double divide int a int b assert 0 b return a b 上述断言有道理吗 我认为答案是肯定的 因为如果我的程序 不应该与0 数字零 但
  • Karate 0.9.5:无法在并行执行中获取命令行选项

    我正在尝试将我的项目更新到最新的空手道版本 0 9 5 除了并行执行之外 一切正常 它没有考虑我使用命令行 Dkarate options 运行的标签 这是我的 TestParallel java 类 public class QaaTes
  • 我们可以将 XPath 与 BeautifulSoup 一起使用吗?

    我正在使用 BeautifulSoup 抓取 URL 并使用以下代码来查找td其类别为的标签 empformbody import urllib import urllib2 from BeautifulSoup import Beauti
  • 如何获取点击列表项的上下文以在 Nativescript 中的另一个页面中显示详细信息

    我正在尝试创建一个列表视图来显示硬编码数组列表中的数据及其工作良好 但我需要使用户能够单击任何项 目以在另一个页面中显示该项目的详细信息 我该怎么做 我尝试创建另一个数组来获取详细信息 并使 BindingContext 及其工作正常 但在
  • 通过 hbase shell 的行键?

    我在用 scan table name COLUMNS gt column family column qualifier LIMIT gt 2 列出 hbase 表中的 2 行 但我想知道是否可以使用 hbase shell 实现以下目标
  • Outlook 电子邮件转 pdf 安全提示

    我有一个任务 需要创建一个将 Outlook 电子邮件转换为 pdf 的程序 这是我的代码 Microsoft Office Interop Outlook Application app new Microsoft Office Inte
  • Google Oauth 弹出取消回调

    使用 Google 身份服务 GSI 时 我可以显示一个弹出窗口 要求用户连接他们的 Google 帐户 这是有很好的文档记录的 并且它与以下代码配合得很好 const client window google accounts oauth
  • SpriteKit:无法更改联系人回调中的节点位置

    我有一个具有动态物理体的节点 我想让它静止并在与另一个物体接触时改变它的位置 我设法使用此问题中提供的解决方案使主体静态 Sprite Kit 断言失败 typeA b2 dynamicBody typeB b2 dynamicBody h
  • 收集 Shiny R 中的所有输入标签

    受到这个答案的启发 收集整个 Shiny 应用程序中的所有用户输入 https stackoverflow com questions 41031584 collect all user inputs throughout the shin
  • SQLite 的 Android 持久性替代方案

    Android 中除了 SQLite 之外还有其他替代方案可以在手机中保存数据吗 我正在寻找类似 iOS coredata 的东西或更简单的东西 如键值存储 如果我们需要将其嵌入到应用程序中 尺寸相对较小的东西也很棒 谢谢您的帮助 如果您只
  • 搜索排序列表? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 什么是搜索或操作排序的 Pythonic 方法sequence https docs python or
  • 丢失 UDP 数据包的可能性有多大?

    好的 我正在为网络课程编程 并且必须使用 UDP 在 Java 中实现一个项目 我们正在实现一个 HTTP 服务器和客户端以及一个以指定概率损坏数据包的 gremlin 功能 HTTP 服务器必须在应用层将大文件分成多个段 以便通过 UDP