“带宽”的本质

“带宽”的本质是什么?
又是什么决定了“带宽”?web

光纤

clipboard.png

互联网上两台电脑要相互通讯,它们须要有一个物理链接,提供信号传输介质。这种物理层线路,常见的传导材料有铜线和光纤,咱们经常使用的双绞线是铜线,它传输的是电信号,光纤传输的是光信号,但并非说光纤对信号的传播速度就比铜线更快。编程

不论是电信号仍是光信号,只要进入线路后,便可以进行快速的传播,这个速度称为传播速度,它的单位是“m/s”,即单位时间传播的距离。传播速度只与传播介质有关,铜线中电信号传播速度大约是2.3x10^8m/s,光纤中信号的传播速度大约为2.0x10^8m/s。服务器

这或许有点奇怪,光在真空中的传播速度不是3.0x10^8m/s吗?的确是,它不只仅只是可见光的传播速度,也是全部电磁波在真空中的传播速度,全部电磁波(包括可见光)在真空中的传播速度是常数,便是光速。网络

那为何光纤中的光信号传播速度要低一些呢?这是由于光纤在传播光信号时,利用了光的全反射原理,因此光信号在光纤中实际传播距离要大于光纤的长度。也就是说,看起来这段光纤长度只有1m,但这个光信号实际上可能传播了2m或者3米甚至4米更多,也就是弯弯曲曲的传播花了更多的时间才传输完这实际的1m,那速度天然是慢了点。函数

因而可知,不一样的传播介质中信号的传播速度几乎等于常量,恒定的,也就是说,不论数据发送装置(网卡)以多快的发送速度让数据以信号的形式进入物理线路,在物理线路中信号的传播速度几乎能够认为是同样快的而且恒定的。那为何又还要使用价格更昂贵的光纤,这涉及到一个信号衰减的问题。阿里云

信号在传播介质中的衰减,与传播介质以及信号传播方式有着密切的关系。好比咱们通常使用的双绞线,传输距离只能达到100m,更长的距离就须要经过中继器来延续信号,并且只能使用有限次的中继器,每次中继器转发信号又会消耗一些发送时间。光纤利用了光的全反射原理,微细的光纤封装在塑料套中,使得它可以弯曲而不影响光信号的传播。光纤中光的传导损耗比电信号在电线传导的损耗低的多,它的传输距离通常在数公里以上,因此光纤通常被用做长距离的传输,跨越太平洋的海底就是用的光缆。spa

带宽

咱们通常说的100M带宽,全称应该是100Mbit/s,或者100Mbps,后面的bit/s常常省略。接口

若是数据要从主机进入线路,通常会通过如下这些环节。队列

  1. 应用程序首先将要发送的数据写入该进程的内存地址空间,一般在程序开发中这只须要通常的运行时变量赋值便可。
  2. 而后应用程序会经过系统函数接口(好比send()函数)向内核发出系统调用,内核会将这些数据从用户态内存区(进程的内存空间)复制到内核维护的一段称为内核缓冲区的内存地址空间。这块地址空间的大小一般是有限的,全部要发送的数据将以队列的形式进入这里,这些数据可能来自于多个进程,每块数据都有一块额外的记号来标记它们的去向。若是要发送的数据比较多,那么该系统调用须要屡次进行,每次复制必定的数据大小,这个大小取决于网络数据包的大小以及内核缓冲区的承载能力。重复的系统调用体如今应用编程方面重复调用send()函数。
  3. 当数据写入内核缓冲区后,内核会通知网卡控制器前来取数据,同时CPU转而处理其余进程。网卡控制器接收到通知后,便根据网卡驱动信息得知对应内核缓冲区的地址,将要发送的数据复制到网卡缓冲区中。网卡缓冲区中的数据须要发送到线路中,同时释放缓冲区来获取更多要发送的数据。实际上只有二进制的信号才能够在线路中传输,所以这时就须要对数据进行字节到位的转换,这种转换就是将数据的每一个位按照顺序依次发出。发送时,网卡会使用内部特定的物理装置来生成能够传播的各类信号,好比在使用铜线线路时,网卡会根据0和1的变化产生不一样的电信号,而使用光钎线路时网卡会产生不一样的光信号。

咱们所讲的“带宽”是指数据的发送数度,准确说又分为“上行带宽”和“下行带宽”。上行带宽,又称出口带宽,就是本地电脑发送数据到外部的速度,上传文件的时候,本地可以以多块的速度把文件上传到远程服务器,这就取决于本地的上行带宽。下行带宽,也称为入口带宽,通俗的说就是下载速度。进程

不论是上行带宽仍是下行带宽,这些数据都是网卡发送和接收的,而它在实际中能有多块的速度,取决于几个因素。

这里以上行带宽,即本地把数据发送出去的发送速度为例,这个发送速度能有多块,有以下几个因素:

  • 数据发送装置将二进制信号传送至线路的能力,也称信号传输频率。这个实际上就是指网卡理论上每秒最大可以发送多少的数据,这是第一关,决定了理论上最大发送速度。好比咱们的百兆网卡,即是指网卡的最大发送速度为100Mbps,也就是网卡在1秒钟最多能够发出100Mb的数据,那么这个就决定了本地理论上的最高发送速度。
  • 线路对传输频率的支持程度。好比光钎一端的发射装置使用发光二极管(LED)或一束激光将光脉冲传输至光纤,光纤另外一端的接收装置使用光敏元件检测脉冲,从而将光脉冲中包含的二进制信息转换成数据。数据传播介质的并行度,能够称为“宽度”,好比在光纤传播中,咱们能够将若干条纤细的光纤组成光缆,这样能够在一个横截面上同时传输多个信号。也就是光纤越粗,组成光缆,那么这个通道就越宽,同一时刻可以容纳更多的电信号传输。
  • 网卡理论上能够每秒发送100Mb的数据,但实际上它每秒可以发送多少数据,直接决定性的,是由另外一端数据接收装置对二进制信号的接收能力。若是另外一端接收能力跟不上,那么这一端网卡就会主动下降数据的发送速度。而这种限制就主要是人为的。

为何限制带宽

clipboard.png

限制这个“带宽”其实是交换机,交换机能够限制入口速度和出口速度。

不少web站点都是托管在诸如阿里云等,它们会将咱们的服务器主机链接到交换机以接入互联网。这时候咱们服务器拥有本身的IP地址,当用户向这台服务器请求数据后,数据会从服务器流经交换机到达指定的路由器最后进入用户的电脑,而数据从服务器主机上发送出来,首先是发送到了交换机,交换机的须要进行存储和转发。也就是交换机从链接服务器的端口接收数据,存储到交换机内部的高速缓冲队列中,而后将其从链接路由器的端口发送出去,再通过路由器的转发进入另外一个网络,依次重复这个过程直到数据进入用户的电脑。

若是全世界就只有这一台服务器,用户访问就只这一台服务器,那么这部分数据流经每一个交换节点都会全心全意的作好转发工做,此时数据在各节点的发送速度均可以达到理论上设备所能达到的最大值。但实际上每处交换节点都有会同时转发来自其余主机的数据,这些不一样主机的数据都会汇进交换机的转发队列,交换机按照转发队列中的顺序来交错的发送这些来自不一样主机的数据,因此单历来自不一样主机的数据而言,交换机将其中一个主机的数据转发出去的速度,要小于这个主机将数据发到这个交换机的速度。

clipboard.png

这个意思是说,比方,主机A会源源不断的发送数据到交换机,主机B和C也会源源不断的发送数据到交换机,它们会在交换机中排队,交换机只能按照队列来一个个处理,把主机A的数据发送出去,在后面排队的主机B的数据就等到很着急,A的数据发完了,而后下一个再发送主机B的数据,而后再按照队列顺序,将主机C的数据发送出去。也就是说主机C的数据是等的最长的,对于排队的这每一个主机数据来讲,它们每一个都想最早最快的出门,可是门就这么点大,总有个前后顺序,那么这个交换机的上行带宽(出口带宽)就是个关键。

显然,这个交换机的出口带宽是有限的,它毫无疑问是个枪手货,而且互联网运营商不会白白的搭建网络,因此运营商在全部的基础交换节点上设置关卡,其中交换机就会对每一个主机进行限速,也就是限制数据从你的主机流入交换机转发队列的速度,而只要流入交换机转发队列的数据,都会按照交换机的出口速度流入其余网络。这种关卡设置实际上等于限制了你的主机发送数据的速度,也就是限制了主机的出口带宽(上行带宽),而这种限制就是经过限制交换机对你主机的数据的接收速度,来将你的发送速度紧紧控制在手里,由于数据链路层的流量控制是经过控制接收方来实现的。

若是一台主机独享10Mb带宽,也就是10Mbit/s的数据发送速度,换算的话就是1250kb/s,这种状况下,若是交换机的出口带宽是100Mb,那么交换机的设置应该保证来自广播域内其余主机的数据发送速度综合不超过90Mbit/s,以保证该主机任什么时候刻均可以以10Mbit/s的速度发送数据,这才叫独享带宽,它独享的是交换机的一部分出口带宽(上行带宽)。为了保证每台主机的独享带宽,那么这个交换机最多就只能容许10台主机连到这个交换机。

以上所说的这些发送速度(带宽)都是针对从发送端发出的全部数据而言,也就是上行带宽,可是这些数据每每来自于主机的多个进程,并且也要发往五湖四海不一样目的地,好比北京上海深圳三个用户经过http同时下载主机上的数据文件,这些数据不分你我地夹杂在一块儿从主机进入交换机,当它们进入某城市的交换节点时,你们就会分道扬镳分别前往三个不一样的目的地。从各个目的地的角度而言,单位时间接收到的数据必定比从服务器发出的数据少,这种从最终端体验到的速度通常称为“下载速度”,准确说是下行速度,用户端下载速度不管如何都小于服务器端的发送速度,在刚才的例子中,即使是三个目的地的下载速度总和也必定小于服务器对这些数据的发送速度。

对于家用带宽的限制也同样,宽带服务商会在你家接入的交换机上进行带宽限制,好比安装的是1Mb独享带宽,那么交换机链接到你家电脑的端口,将会以1Mbit/s的速度接收来自服务器的数据,而后再发送给你的主机,不管服务器发送数据有多块,也不管你的主机网卡是100Mb/s仍是更高,但实际上每秒可以接收多少,就是交换机每秒发送过来的1M的数据。固然,你的下载速度是受到运营商交换机的限制,可是要访问的远程站点的服务器的数据发送速度基本不变,由于它发出的数据不仅是到这一家,它会以它的最高速度源源不断的发送数据往五湖四海,只不过当前你主机的交换机本身减慢了对它的接收速度,远程服务器的发现你这里的交换机接收速度比较慢,那么它就会下降发往你这里交换机的频率,而以它本身最高的速度,优先把数据发往其余地区其余用户的交换机。

相关文章
相关标签/搜索