问题标签 [packet-loss]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - LAN UDP太多包丢失/损坏C#
我一直在研究一些代码,它允许我通过 UDP 从我的游戏引擎(Unity)共享屏幕到我的安卓手机。
该过程实际上只是截取屏幕截图,将它们解码为 jpeg 字节数组并将这些字节数组拆分为多个包(如果需要)。
当我运行该项目时,它实际上是在发送图像,但有些图像在接收时会失真或混乱。
所以我对缓冲区大小进行了一些调整,我注意到增加接收 UDP 客户端的缓冲区大小实际上改善了数据丢失/损坏。但不幸的是,仍然有太多用户无法忽略的损坏数据。
过了一会儿,主机(我的手机)就崩溃了。我认为这与包缓冲区大小有关,也许它被淹没了?
无论如何,这是处理连接的一段代码。我目前只以一种方式发送数据(计算机 - >手机),但它已设置为将其他信息从我的手机发送到我的计算机(但这是为了以后,我需要先让它工作)。
目前我将变量bufferSize
设置为20.000
,切片图像数据包是序列化类(带有帧 ID、包 ID、图像数据等),总大小为15.200
ish。
我知道 UDP 的后果,但我真的需要尽可能低的延迟。我应该切换到 TCP 吗?现在的图像大小只是在测试蓝色背景上有一些粒子的立方体的图像。我认为当传输更复杂的图像时,JPEG 压缩文件也会增加。
谢谢!
video - NAL 单元 丢失 软件 , 丢包 , 视频
我正在尝试流式传输高清视频并将丢失插入其数据包。
我在我撰写的有关高清视频流的论文的参考文献中找到了“NAL Unit Loss Software”。但我找不到这个文件。它被删除了!
有没有人可以帮我找到这篇论文?我希望这篇论文能帮助我推广我的工作。
任何建议都会有所帮助。
论文全文:S. Wenger,“NAL Unit Loss Software”JCT-VC 文档,JCTVCH0072,2012 年 2 月
tcp - 使用 rawcap 修复“捕获文件中缺少的字节”?
我正在使用rawcap tcp 捕获工具来捕获 Windows 上的 localhost 数据包。
我有一条巨大的溪流,有多个
'捕获文件中缺少 XXXX 个字节'
在捕获的文件中。
我怎样才能防止这种情况?如何从 localhost 捕获完整的 TCP 数据包?
还有其他我可以使用的工具吗?
谢谢
c# - 通过网络发送更大的序列化对象会导致故障行为
我一直在努力通过网络为我一直在从事的一个小项目序列化一个对象。我使用的代码几乎完美无缺,有时字节无法正确加载,但只需重新加载 UI 即可解决。但是,当在同一个系统上进行通信时,但一旦您进入不同的系统,代码只能部分工作。一旦我尝试通过网络发送一个大小为 30 的字符串数组,服务器就会停止报告接收包,奇怪的是,没有任何东西会持续引发错误。有几个错误不时弹出:
这是我在控制台中不断遇到的主要错误,我不知道如何处理它。我在网络编程方面不是很有经验,所以我不知道哪里出了问题。
我主要担心的是,由于某种原因,当客户端尝试发送超过 330 个字节时,服务器停止报告接收字节,并导致整体故障行为。服务器肯定会显示接收到连接,但由于某种原因,简单会立即将其终止。如果有人知道发生了什么或如何解决它,我将非常感谢您的帮助!
提前致谢!
客户:
服务器:
networking - TCP 中连续重复 ACK 中的重传
在 TCP 中的快速重传逻辑中,TCP 在发送方收到 3 个重复的 ACK 时重传数据包。但是,如果发送方收到 6 个重复的 ACKS 怎么办?
以下程序是我的想法,
1) 发送方发送大量具有大窗口大小的数据包
2) 第一个数据包被丢弃
3) 接收方发送包含第一个数据包的 seq # 的 ACKS。其他 ACK 将具有相同的 ack 号。(例如,发送方发送 1,2,3,4,5,6,7,数据包 1 被丢弃。然后,接收方发送 ACK 1,1,1,1,1,1,1)
4) 发送方得到 3 个 dup ack 并重新传输丢弃的数据包 但是,接收方仍然发送 6 个 dup ack,因为接收方没有得到重新传输的数据包。因此,接收方将发送重复的 ACK,直到收到丢弃的数据包
5) 发送方再次获得 3 个 dup ack,并重新发送数据包。
因此,发送方会反复重传数据包。我觉得这很奇怪。上述过程(场景)有什么问题吗?或者是否有任何 TCP 逻辑可以防止上述问题?
networking - 丢包对“Long not so Fat Network”有什么影响?
我正在通过 HTTP 从远程服务器流式传输视频。我在客户端使用 Wireshark 捕获数据包,我注意到连接的客户端不时停止发送数据包,每次暂停几秒钟。RTT 介于 170ms 和 200ms 之间,带宽为 20Mbps,连接丢包率高达 5.8%,我可以看到服务器的广告窗口大小从 14KB 缓慢启动到接近 64KB(窗口值大小=501,[计算的窗口大小值=64128],窗口大小缩放因子=128)。
我的困惑是为什么客户端不时停止发送数据包,而服务器的连接接收缓冲区根本没有填满?
在这种情况下丢包会影响什么(浏览器流视频)?
我正在考虑这种可能的情况:
浏览器使用单个连接流式传输视频(HTTP 重用相同的 TCP 连接),在服务器向客户端发送响应时未及时收到客户端 ACK,因此服务器停止并继续等待 ACK 重传,同时,客户端正在等待服务器响应数据包,当然还有来自服务器的 ACK。一段时间后,客户端开始重新传输 ACK,一切都恢复正常,我从捕获的数据中注意到暂停后的即时数据包是从客户端到服务器的。
这种理解是否正确,是否有意义?
ios - iOS BLE丢包、重复包的原因
我使用单个 BLE 设备构建了 3 个不同的应用程序。设备同时向 2 个应用程序发送多个传感器的多个值。相同的数据包同时发送到 2 个应用程序。在 Android 应用程序中,它们很好。
但是,在 iOS 设备中,存在一些数据包丢失和数据包重复的情况。
数据包大小为 20 字节,以 20 Hz 传输,这几乎是 iOS BLE 建议的限制(据我所知)
数据包重复的详细信息。我复制了部分日志。为简化起见,App 名称为 A 和 B。
两个应用程序都收到了相同的数据包。
2016-09-21 21:26:37.212
2016-09-21 21:26:37.267
而且模式变了。一些 UI 显示发生了变化。
复制
在 App A 中,12 ea 相同的数据包来了。(0.6秒,0.002秒间隔)
2016-09-21 21:26:37.269
在第 1 个和第 2 个数据包之间,有 0.5 秒的延迟,并且有 UI 操作(显示更改、音频播放)
2016-09-21 21:26:37.853
在 App B 的那段时间里,正常的数据包来了。
所以 App A 丢失了这些数据包。
2016-09-21 21:26:37.272
2016-09-21 21:26:37.722
2016-09-21 21:26:37.782 B <= 在 App A 中重复的相同数据包
在下面的文章中,发送数据包时出现问题,但在我的情况下没有发送动作。
Q1 > 是性能问题吗?我使用的是 iPad mini,它与 ipad 2 的 CPU 相同。相当旧的一个。Q2> 有没有可能是 iOS 的 bug 造成的?Q3> 性能问题会导致这个问题吗?
streaming - 流式传输h264时libjrtp丢失数据包
我有几个 Axis IP 摄像机,我想通过 RTP 将它们的 H264 输出流式传输到我的应用程序。到目前为止,大部分时间一切都在工作,通常使用一台相机。一旦我连接了多个摄像头,我在使用的每个 jrtplib 实例上都会收到很多丢失的数据包,从而导致视频质量不佳(伪影、损坏的图像等)。
因此,我创建了一个小型测试设置,仅连接一台相机并仅使用一个 jrtplib 实例,代码或多或少直接取自样本。
即使通过这个简单的测试,我得到了丢失的数据包(丢失的序列号),我还检查了丢失的序列号是否只是延迟了,但没有。
但是当我添加transparams.SetRTPReceiveBuffer
到一个相当高的值时,比如 1048576 字节,它会停止丢失数据包,至少对于这个示例是这样。
在我的真实世界代码中,增加接收缓冲区没有帮助。我还尝试将其session.Poll()
移至单独的线程。
使用 Wireshark 捕获 UDP 数据包显示没有丢弃数据包,所以它与 libjrtp 相关?有没有人有这方面的经验,或者甚至建议使用另一个图书馆?我在这一点上非常卡住......
感谢您的任何提示,也许这只是一个小问题,我只是没看到
问候
android - 通过 Android N 测量丢包率
我正在开发一个旨在测试网络诊断的项目。我现在正在处理的部分涉及测试 TCP 和 UDP 连接。测量点之一是 TCP 和 UDP 的数据包丢失。
过去我使用过:('/statistics/rx_dropped'
我将省略该文件路径的开头部分),只要说它指向指定网络接口上总共丢弃的数据包数就足够了。
但是,在Android N中,这个文件需要root才能读取,我不能假设这个应用程序所在的手机是 root 的。
有没有人有一种体面的方法来测量客户端至少不需要生根的 TCP 的数据包丢失?
我最了解网络术语,所以不要害羞,我问的原因是因为我测量的方式必须相当优雅(使用一些现有的 java/android 库或找到从设备读取数据包丢失的合法方法)。
linux - 故意丢包
我想测试我的应用程序的健壮性。所以我想要一个 linux 命令,它会在几纳秒内丢弃几个数据包。我正在从多播 IP 端口接收这些数据包。