首页 > 其他分享 >网络传输中的重要参数(1)

网络传输中的重要参数(1)

时间:2023-06-08 20:27:30浏览次数:60  
标签:RTT ACK 网络 发送 传输 参数 时延 数据包

网络传输中的重要参数(1)

目前从事于音视频流媒体领域的我,主要工作在传输层与应用层的交界处,研究如何针对流媒体场景实现高效而可靠的传输协议。工作两年比较深刻的体会之一就是网络传输是个看似简单清晰实则到处是坑的领域,本系列将首先对网络传输中重要的几个参数进行梳理,讨论各个参数的实际意义,以及各自常见的获取方式。

理想的传输链路

在上层将需要传输的数据划分为一个个小于MTU的数据包Packet后,在理想的传输链路中,发送端即按照上层Packet交付的顺序,通过socket将数据按序交付给接收端。整个数据交付流程没有延迟,没有丢失,完全按序。

谁又不想拥有这样完美的传输体验呢?但现实往往比理想残酷一些,在实际场景中,还有很多因素会影响传输体验。其实这些因素是显而易见且易于理解的,只是这里进行一下简单的归纳与总结。

延时与RTT

无论在哪里,主机之间的数据传输都是通过下层各种各样的物理数据链路实现的,基站、交换机与网桥等设备将一个个独立的数据链路们相连,打通互联网的每一个角落。既然信号在网络中进行物理传输,那自然需要时间,即端到端延时。为了明确端到端延时的概念,这里首先需要明确几个概念,首先是传播时延传输时延

传播时延:是指电磁信号或光信号在传输介质中传播一定的距离所花费的时间,即从发送端发送数据开始,到接收端收到数据(或者从接收端发送确认帧,到发送端收到确认帧),总共经历的时间。

传输时延:是指结点在发送数据时使数据块从结点进入到传输媒体所需的时间,即一个站点从开始发送数据帧到数据帧发送完毕(或者是接收站点接收一个数据帧的全部时间)所需要的全部时间。

通俗点解释,传播时延是信号在物理介质内传播的时延,比如对于一个电磁波信号,在10km的距离传输1bit所需要的时间为10km/c,c即为光速,对应该时间也就是传播时延。传输时延则为设备将一个Packet所有的bit推入网络所需要的时间(收端则为接收需要的时间),这个时长不受限于传输介质,而更受限于具体的设备性能。除了传播时延与传输时延之外,端到端的传输还需要经历端上设备以及传输路径中各个节点的处理时延排队时延,处理时延即设备检查分组(这里只分组交换中的分组,简单理解也可以当做Packet)的首部,差错验证等需要的时间。排队时延则为数据在端上缓冲中等待被处理的时间,举个简单的例子,假设发端的发送速率\(v_{send}\)大于接收端的处理速率\(v_{recv}\),那么收端便会由于处理不过来到达的而外数据而将这些数据临时缓存起来处理,Packet在缓存中等待的时间即为排队时延,如果缓存为0,排队时延也自然为0,如果缓存很大,排队时延也会跟随着增长,如果缓存已满,则会发生丢包。

综上,传播时延、传输时延、处理时延以及排队时延共同组成了端到端时延,即数据(分组或Packet)从发送端到接收端总花费的时间。

\[端到端时延 = 传播时延 + 传输时延 + 处理时延 + 排队时延 \]

除了端到端时延之外,另外一个重要(也许更重要)的与时间相关的指标为RTT(Round-trip delay time,RTT),即往返时间/来回通信延迟,参考维基百科的定义:“在双方通信中,发讯方的信号(Signal)传播(Propagation)到收讯方的时间,加上收讯方回传消息到发讯方的时间”,可以简单理解为发端到收端的端到端延时+收端到发端的端到端延时,由于现在基本所有的传输场景都支持双向通信,且为了支持可靠传输,发端需要收端的反馈以确认数据是否成功到达,发送+反馈这样一来一回的机制让RTT参数在可靠传输协议的设计中占据重要的地位。在丢包恢复(ARQ)与流控(CC)等领域,RTT也起着重要作用,坑先挖好,日后再谈。

\[RTT = 端到端延时_{s2r} + 端到端延时_{r2s} \]

常见的RTT获取方法依赖于ACK确认机制,即收端接受到数据包后,会像发端回复一个ACK告知该数据包已经被成功接受,ACK的内容一般是数据包的序号Seq,具体跟随使用的传输协议而定。在发端收到ACK后,便能够根据数据包发送的时间与ACK接收的时间对RTT进行采样与估计,假设数据包的Seq为k即有RTT采样值为

\[RTT_{samp}^k = t_{recvAck}^k - t_{send}^k - ACKdelay^k \]

这里\(t_{recvAck}^k\)为该包收到ACK的时间,\(t_{send}^k\)为该包发送的时间,\(ACKdelay^k\)为收端的处理时延,即接收到包到发送ACK的时间。在获取采样值之后,我们便可以利用各种各样的滤波方法对RTT值进行预测估计了,比较常用的是指数加权移动平均法EWMA(TCP使用的方案),计算复杂度低,易于实现,效果也不错,这里不再展开,贴个链接:https://www.cnblogs.com/keye/p/14958351.html。

丢包率

上学的时候我们的教材是经典的《计算机网络-自顶向下方法》,我记着原文写的“如果将网络传输领域最重要的10个问题拿出来,可靠传输是第一位的有力候选者”(肯定有出入,懒得回去验证了),为什么可靠传输这么重要,因为他能够保证传输层之上各个应用的正常工作,为用户正常的互联网产品体验提供保障。为什么可靠传输这么困难,因为它面向的是底层未知的传输链路,面对随时可能发生的各种情况导致的丢包。

丢包的种类有很多,根据数据链路的不同发生的形式也不同,在共享介质的网络里可能会发生多个终端间的冲突(感兴趣的可以了解下CSMA相关的协议),在非共享介质下也可能由于链路中节点的处理错误或是上面提到的缓存已满而导致的丢包。anyway,对于发端而言,相对可以简单的把丢包分为两类:随机丢包拥塞丢包,拥塞丢包即为在链路拥塞,收端缓存满时候,新到达的数据包由于无处缓存而被丢失导致的丢包,随机丢包即除了拥塞丢包之外的其他(手动狗头)。

发端能够准确的识别丢包类型与丢包强度对于发端高效利用带宽有着重要的意义,这里先不对如何利用进行展开,主要关注丢包强度,一般我们使用丢包率lossRate来描述这一特性,丢包率的定义为“传输中所丢失数据包数量占所发送数据组的比率”,理解起来比较简单直白,即一段时间内,记发端发送的包数个数为n,其中收到ACK的个数为m,\(\frac{n-m}{m}\)即为简单的丢包率估计,需要注意的是对于那些刚刚发送的包,一般不纳入统计,因为这些包可能未发生丢包,只是还没有收到ACK。上一节提到,包往返的时间是RTT,或许取now-RTT直接的一段时间进行丢包率的采样是更好的选择。采样伴随着误差,在得到丢包率的采样后,不同的策略也同样可以通过滤波手段进一步估计网络中实际的丢包表现,进一步决定策略的调整与适配。

小结

本文简单梳理了网络传输中RTT与丢包率两个参数的定义(物理意义)与常见的获取收端,在人均百兆带宽的今天,丢包率和RTT就能够很大程度上对网络画像进行有效的描述,后续的ARQ与CC等可靠传输策略也离不开对于这两个参数的理解与应用。


本文来自博客园,转载请注明原文链接:https://www.cnblogs.com/mapleumr/p/17464980.html

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。

标签:RTT,ACK,网络,发送,传输,参数,时延,数据包
From: https://www.cnblogs.com/mapleumr/p/17464980.html

相关文章

  • 使用axios的post方法传输对象数据和后台数据进行解析判断
    使用vue的v-model绑定生成对象数据的通过axios传输数据操作的时候,对象中属性的命名必须和实体中的一致。实体:privateIntegerid;privateStringname;privateStringnickname;privateStringpassword;privateIntegerage;privateStringgend......
  • 基于聚类和神经网络的图像颜色提取和评分方案
    概述图像颜色提取的前端React方案,基于canvas,使用K均值聚类算法提取主要颜色(颜色量子化),用离线训练的神经网络进行评分,附带可视化方案和相关动画。详细本文github地址:colorful-color。体验 demo。一、目录结构本项目是基于React编写的,build目录下有编译好的版本,编译源......
  • Python网络爬虫--选定地区对未来7天天气情况的分析
    (一)、选题背景在当今信息化时代,天气情况是人们生活中非常重要的一部分。因此,将Python网络爬虫和数据可视化技术应用到天气预报分析中,可以为人们提供更加精确、直观的未来天气预报信息。通过使用Python网络爬虫技术获取最新的天气数据,并结合数据可视化技术,将数据以图表、地图等形......
  • 智安网络|等保是什么?企业都必须做等保吗?
    只要你接触安全类工作,听得最多的一个词,一定是“等保。”那么,到底什么是“等保”呢?等保是指信息系统安全等级保护,是国家网络安全法规定的一项制度。等保分为一级至三级,其目的是为了对涉及国家安全、国家重要信息基础设施、重要公共服务信息系统等重要网络或信息系统的安全进行保护。......
  • 有哪些内外网都能传输文件的工具-镭速
    随着互联网的快速普及,不同地区的人们之间进行了更为频繁的交流与合作。对于企业和组织而言,文件的共享和传输也变得越来越重要,特别是在不同的地理位置之间。此时,一个既可在内网使用,又能在外网实现高速传输的工具就显得尤为重要。传统上,企业内部使用的文件传输工具一般都是FTP等协......
  • 有哪些内外网都能传输文件的工具-镭速
    随着互联网的快速普及,不同地区的人们之间进行了更为频繁的交流与合作。对于企业和组织而言,文件的共享和传输也变得越来越重要,特别是在不同的地理位置之间。此时,一个既可在内网使用,又能在外网实现高速传输的工具就显得尤为重要。传统上,企业内部使用的文件传输工具一般都是FTP等协......
  • 基于LSTM(长短时极记忆网络)与AR自回归模型的时间序列预测
    前一段时间股市有一些大的波动,其实很早就有人说过,股市有风险,投资需谨慎。不过如果能有一个比较适合的模型进行预测就好了。今天我介绍一下,时间序列预测分析。本人也是深度循环网络的小白,所以也算是与大家共勉了哈。有问题还希望大家多多指正。闲话少说,上代码首先先读入numpy中的......
  • 一文读懂大厂面试的计算机网络面试题目(超详细整理)(TCP/IP,OSI,HTTP协议)
    对于大厂的面试来说,掌握基本的计算机网络知识十分必要,但是说实话就单单是博主觉得,看书去复习,是最好的“安眠药”,哈哈哈,所以具有针对性的去学习更加的有效果,所以直接看大厂的高频面试题,快速建立知识结构体系。以下的一些是博主通过博览众多平台的博客推文进行的汇总:1.计算机网络OS......
  • 网络层 :IP协议详解
        网络层的目的就是实现终端节点之间的通信,即点对点通信。具体功能包括路由选择与地址管理等。    这一层主要有IP和ICMP两个协议组成,在这里就先重点讲解IP协议,后面会单独将IP协议相关的如ICMP,DNS,NAT,NAPT,DHCP等协议单独写一篇博客汇总。    IP层协议......
  • Docker(八):容器互联之自定义网络
    在Docker中每一个容器都是一个独立的个体,相互之间不能进行信息的传输。这里学习一种让容器可以相互联系的方法——自定义网络。一、创建自定义网络命令:dockernetworkcreate--driver网络模式--subnet子网地址--gateway网关网络名称测试:--driverbridge 这里是以创建的......