丢失 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 数据包的可能性有多大? 的相关文章

  • BSSID可以作为唯一标识符吗?

    我正在构建一个 Android 应用程序 列出用户周围的所有 wifi 网络 当用户尝试使用特定服务时 我的应用程序需要有关用户网络的信息 当我的应用程序从用户网络获取所有信息时 它会自动在我的数据库表中插入一个新行 其中包含所有这些必要的
  • 为什么我们可以将 sockaddr 转换为 sockaddr_in

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

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

    我试图找出数据包丢失和数据包重复问题之间的区别 有谁知道 数据包重复 是什么意思 和TCP检测到丢失时重传数据包一样吗 No In TCP 数据包 的传递是可靠的 我认为在这种情况下术语数据应该更好 因为它是面向流的协议 数据包丢失和重复是
  • Android 中客户端服务器通信的选项

    我目前正处于论文项目的研究阶段 我的项目是一个针对移动设备的订票系统 我选择以 Android 为目标 我预计需要带有中央服务器的客户端 服务器架构 因此目前正在研究 Android 如何与这样的服务器进行通信 服务器将授予客户端访问票务信
  • igraph 中的颜色特定节点

    我正在尝试为节点 6 和 7 着色 无论从对象 d 中选择什么字母 g lt graph from literal 1 2 3 4 5 6 7 Rename sum up all the vertices d lt c a b c d e
  • 如何获取Linux中进程或端口的网络带宽使用情况

    我想获取每个进程的网络带宽使用情况 我找了很多这方面的资料 比如iftop nethogs http nethogs sourceforge net Linux进程浏览器 http sourceforge net projects proc
  • 接收UDP数据包

    假设我的程序通过网络 UDP 发送 1000 字节 它是否保证接收方将 一批 接收 1000 个字节 或者他可能需要执行多次 读取 直到收到完整的消息 如果后者为真 我如何确保同一消息的数据包顺序不会 混淆 按顺序 或者协议可能保证这一点
  • 您可以bind()和connect() UDP连接的两端吗

    我正在编写一个点对点消息队列系统 它必须能够通过 UDP 运行 我可以任意选择一侧或另一侧作为 服务器 但这似乎不太正确 因为两端都从另一端发送和接收相同类型的数据 是否可以绑定 和连接 两端 以便它们只能彼此发送 接收 这似乎是一种非常对
  • 在 Linux/Ubuntu 计算机上通过 Python/Django 设置网络设置

    我正在为嵌入式计算机开发一个简单的网络界面 计算机将附带一个静态默认 IP 然后需要由可能不懂技术 Linux 的安装技术人员进行更新 基本上我需要从 Django 应用程序更改以下系统设置 IP地址 Subnet 默认网关 DNS 服务器
  • 设备锁定时,互联网音乐播放器无法加载歌曲(打瞌睡模式?)

    我正在构建一个音乐播放器 可以播放互联网上的歌曲 我注意到 通常 当一首歌曲结束并且必须加载另一首歌曲时 应用程序不会播放下一首歌曲 我等啊等 终于决定解锁手机以了解发生了什么 令人惊讶的是 设备解锁后立即开始播放以下歌曲 第一次我以为这只
  • 比较 TCP 校验和与 Scapy?

    我试图在使用 Scapy 作为嗅探器时识别校验和不正确的数据包 我可以通过访问获得原始校验和 packet TCP chksum 然后我使用删除它 del packet TCP chksum 我想做类似的事情 if originalChec
  • P2P网络游戏/应用程序:类似“战网”匹配服务器的不错选择

    我正在制作一个网络游戏 1v1 游戏中是 p2p 不需要游戏服务器 然而 为了让玩家能够 找到彼此 而不需要在另一种媒介中协调并输入IP地址 类似于网络游戏的现代时代 我需要有一个协调 匹配服务器 我无法使用常规网络托管 因为 客户端将使用
  • 本地主机:8080 是什么意思? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有什么区别本地主机 网络 vs 本地主机 8080 web TCP IP 连接始终与 IP 地址建立 您可以将 IP 地址视为某台计算机的
  • IP 标志的不分段位在哪里使用?

    我很想知道 IP 标志的 不分段 DF 位在哪里使用 因为碎片对于更高层来说是不可见的 并且他们也不关心 我也在寻找一个例子 预先非常感谢 碎片并不总是对所有上层都可见 一些早期 甚至可能是当前 微控制器 TCP IP 堆栈没有实现碎片处理
  • 如何使用 Kryonet 通过网络发送对象?

    我是网络新手 我正在尝试将我使用 java 创建的棋盘游戏联网 我的一个朋友向我推荐了 Kryonet 库 到目前为止 一切都很棒 我不必处理套接字 我遇到的问题是发送对象 主要是 我有一个 Board 类型的对象 该对象包含其他对象 例如
  • 我应该害怕使用 UDP 进行客户端/服务器广播通话吗?

    我在过去的两天里阅读了每一篇StackOverflow问题和答案 以及googling当然 关于印地TCP and UDP协议 以便决定在我的用户应用程序和 Windows 服务之间的通信方法中应该使用哪一种 从我目前所看到的来看 UDP是
  • 为什么 UDP 服务器中只有一个套接字?

    我正在准备考试 发现了这个问题 典型的 UDP 服务器可以使用单个套接字来实现 解释一下为什么 对于 TCP 驱动的服务器 我发现创建了两个套接字 一个用于所有客户端访问服务器 另一个用于每个客户端的特定 套接字 用于服务器和客户端之间的进
  • 扭曲多种协议

    我希望为我正在从事的项目学习扭曲 该项目需要服务器响应 HTTP 请求以及通过 TCP 连接的其他协议 Twisted能够同时处理多种协议吗 我想使用 Twisted Web 来帮助处理 HTTP 但同时需要响应其他端口上的 TCP 连接
  • 如何使用 VB.NET 打开受密码保护的共享网络文件夹?

    我需要在网络上打开受密码保护的共享文件夹才能访问 Access 97 数据库 如何打开文件夹并输入密码 在这里找到http www mredkj com vbnet vbnetmapdrive html http www mredkj co

随机推荐

  • 关于纯头文件 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