关于数据包丢失你需要知道的一切(以及如何避免它)

简介: 关于数据包丢失你需要知道的一切(以及如何避免它)

 image.gif编辑

当数据从一个地方传输到另一个地方时,一些数据包可能会被延迟、损坏甚至丢失。这就是所谓的数据包丢失。这很常见,但这并不意味着你必须接受它!

数据包丢失、延迟、抖动——如果你注意到互联网性能不佳,你可能会遇到其中一种或多种情况。

延迟与速度有关,但什么是数据包丢失,它如何影响用户的体验质量?更重要的是,你能做些什么?

什么是数据包丢失?

我们在网上所做的一切都是以数据包的形式传输的。把它想象成度假时的行李——你会把旅行所需的东西装在几件行李中,比如托运的行李箱、随身行李或背包。

image.gif编辑

为了使所有数据都适合并快速从A移动到B,网络减少了数据包的大小,并在数据包开始旅程之前对其进行加密。继续行李类比,这类似于你如何使用真空吸尘器包或立方体包装,甚至把卷起的衣服塞进鞋子里,在把行李箱锁紧之前尽可能多地挤进去。

可悲的是,生活中的一个事实是,有时,当你旅行时,你的托运行李会错过连接,在柏油路上被雨水磨损或浸湿,或者直接消失在a点和B点之间。沿着数字高速公路旅行的包裹也是如此。当数据从一个地方传输到另一个地方时,一些数据包可能会被延迟、损坏甚至丢失。这就是数据包丢失。

TCP与UDP

我们用来在互联网上传输数据的网络协议会产生数据包,但它们对数据包丢失的影响因使用的协议而异。

传输控制协议(TCP)模拟连接,如果数据包没有以完美的状态到达目的地,该协议将重新传输它。这使得TCP成为更可靠的选择,因为数据传输是有保证的。然而,它的速度并不为人所知。

另一方面,用户数据报协议(UDP)要快得多,因为协议中没有内置错误恢复。这使它更适合实时应用,但由于无法重新传输数据包,因此可靠性较低。

是什么导致数据包丢失?

从网络负载过大或者有其他的ddos黑客攻击活动,有几个因素会导致数据包丢失。

image.gif编辑

以下是一些最大的原因(我之前有一篇文章已经写过相关的因素

网络拥塞

如果使用时间很长,网络上的设备太多,或者带宽不够,网络通常会减慢数据传输速度。在这种情况下,就像夏季旅行高峰期的机场一样,丢失包裹/行李的可能性会增加。

硬件问题

数据包丢失也可能是由故障硬件造成的,如调制解调器、路由器或电缆。想象一下,你行李上的拉链在旅途中坏了。一路上会有东西掉出来,不是吗?

软件问题

同样,过时或出现故障的软件也会造成数据包丢失。我们都听说过人们的行李因航空公司系统故障而擅离职守的恐怖故事,将行李标记到错误的目的地。同样的事情也可能发生在数据包上。

网络攻击

就像投机取巧的小偷可能会从转盘上偷走一个箱子一样,分布式拒绝服务(DDoS)攻击和其他恶意活动也会干扰网络速度并造成数据包丢失。

数据传输错误

可悲的是,有时“事情”会发生,比如行李搬运工在登机时不小心把你的行李箱忘在了手推车上。你无法预测,但它是可能发生的。数据包也是如此。当他们在系统中旅行时,会遇到许多互联网交换点(IXP),每个交换点都提供了潜在的损坏或丢失机会。

数据包丢失正常吗?

根据思科的服务质量(QoS)教程,IP语音(VoIP)流量的数据包丢失应保持在1%以下。这被认为是可以接受的,因为丢失会话发起协议(SIP)VoIP呼叫中涉及的所有数据包的1%不会导致服务出现任何问题。

但这并不意味着你必须接受数据包丢失,尤其是当涉及到实时应用程序时。在这些情况下,任何超过2%的数据包丢失都会给用户带来问题,导致VoIP上的紧张对话或在玩《使命召唤》或《守望先锋》等在线多人游戏时错过镜头。这可能会让最终用户感到沮丧,在后一种情况下,可能会导致不必要的玩家流失。

如何避免或防止数据包丢失?

这完全取决于数据包丢失的原因。在许多情况下,您可能需要尝试一些不同的方法来找出问题的原因。然而,请始终从将网络安全作为优先事项开始,因为这将使您能够将网络攻击从可能的问题列表中划掉。

在网络拥塞的情况下,必须从监控网络速度和使用情况开始。从这里开始,您可以开始将数据传输转移到一天中不那么繁忙的时间。路由优化也将有助于防止拥塞,带宽的增加也是如此。

同样,对于软件问题,首先要监控不同软件程序的网络使用情况,然后重新启动或重置任何可能导致问题的软件。定期更新软件也很重要,以确保您拥有最新的版本,并确保您的错误检测软件正常运行。

当涉及到硬件问题时,首先检查您的硬件(包括所有电缆)是否损坏、老化和连接不良,并升级您需要的任何东西。同样重要的是,确保您使用的是正确类别的电缆,并具有适当的绝缘和屏蔽,以防干扰。最后,请确保您的所有硬件都是兼容的,并且您正在使用最合适的设置。

遗憾的是,数据传输中的错误可能很难做好准备,因为你并不总是知道原因。然而,有一些事情可以降低这些风险,例如我们前面提到的网络监控,它将帮助您更快地检测包丢失并消除变量。

还值得定期检查您的QoS设置,确保关闭任何设备(尤其是蓝牙设备)以减少潜在干扰,并尽可能使用有线连接。这比无线选项更稳定,使数据包在传输过程中损坏或丢失的可能性更小。

相关实践学习
自建数据库迁移到云数据库
本场景将引导您将网站的自建数据库平滑迁移至云数据库RDS。通过使用RDS,您可以获得稳定、可靠和安全的企业级数据库服务,可以更加专注于发展核心业务,无需过多担心数据库的管理和维护。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
相关文章
|
监控 测试技术 网络架构
网络优化利器:深入理解生成树Portfast
【4月更文挑战第22天】
619 0
|
存储 运维 安全
阿里认证哪个方向好?考试难不难?
如果想要获得一份好的工作,那么就需要拥有过硬的技能和专业的证书,对于从事信息通讯行业的人来说,拥有一份阿里云证书,对于提升自己的职业竞争力是有很大的帮助的。
|
算法 异构计算
m基于FPGA的电子钟verilog实现,可设置闹钟,包含testbench测试文件
该文介绍了基于FPGA的电子钟设计,利用Vivado2019.2平台进行开发并展示测试结果。电子钟设计采用Verilog硬件描述语言,核心包括振荡器、分频器和计数器。时间显示为2个十进制格式,闹钟功能通过存储器和比较器实现,当当前时间等于设定时间时触发。文中给出了Verilog核心程序示例,展示了时钟信号、设置信号及输出的交互。
577 2
|
存储 NoSQL Redis
【360开源】Pika最佳实践
Pika是360 热门的c++开源项目,基于rocksdb开发的大容量类Redis存储,力求在完全兼容Redis协议、继承Redis便捷运维设计的前提下通过持久化存储方式解决Redis在大容量场景下主从同步代价高、恢复时间慢、单线程相对脆弱、内存成本高等问题。
3213 0
|
机器学习/深度学习 自然语言处理 算法
AI 世界生存手册(一):从LR到DeepSeek,模型慢慢变大了,也变强了
大家都可以通过写 prompt 来和大模型对话,那大模型之前的算法是怎样的,算法世界经过了哪些比较关键的发展,最后为什么是大模型这条路线走向了 AGI,作者用两篇文章共5.7万字详细探索一下。
AI 世界生存手册(一):从LR到DeepSeek,模型慢慢变大了,也变强了
|
9月前
|
搜索推荐 小程序 数据可视化
网站用户访问分析入门:新手必懂的6个关键指标
如果你正在运营一个网站,无论是产品官网还是电商平台,用户访问分析一定是绕不开的一项工作。 但对很多刚入门的新手来说,打开一个数据平台,常常是一脸懵: PV?UV?跳出率?这些到底是什么?要看哪些指标才有用? 这篇文章,我们一起看看网站访问分析中最基础的6个核心指标,帮你快速理解并掌握基本的分析能力。
2063 0
|
SQL Prometheus 运维
Higress on K8s 5分钟开箱即用
Higress on K8s 5分钟开箱即用
Higress on K8s 5分钟开箱即用
|
JSON JavaScript 测试技术
掌握JMeter:深入解析如何提取和利用JSON数据
Apache JMeter教程展示了如何提取和使用JSON数据。创建测试计划,包括HTTP请求和JSON Extractor,设置变量前缀和JSON路径表达式来提取数据。通过Debug Sampler和View Results Tree监听器验证提取结果,然后在后续请求和断言中使用这些数据。此方法适用于复杂测试场景,提升性能和自动化测试效率。
|
JavaScript 前端开发
vue-day03 v-on事件处理,表单输入绑定
文章介绍了Vue.js中事件处理和表单输入绑定的使用。包括v-on指令监听事件、事件处理方法、内联处理器、访问原生DOM事件、事件修饰符、按键修饰符、系统修饰符、exact修饰符和鼠标按钮修饰符。同时,讲解了如何使用v-model实现单行文本、多行文本、复选框和单选按钮的双向数据绑定,并提供了修饰符的使用示例。这些特性使得Vue.js在处理表单输入和事件时更加灵活和方便。
vue-day03 v-on事件处理,表单输入绑定