作为一个Java程序员,我们也需要对计算机的网络知识有一定的了解,本系列就是针对非运维小伙伴的网络常识介绍(不费脑子可以无聊的时候瞅一瞅),希望可以帮助到大家( ̄∇ ̄)/
常用的数据量单位:
连接在计算机网络上的主机在数字信道上传送比特数据的速率,也称为比特率/数据率。
常用的数据率单位:
计算
100MB大小的数据块,网卡发送速度为100Mbps,计算发送该数据块需要的时间
(1002^208 bit) / (10010^6 bit) = 10241024/ 10 000 000 = 8.388 s
吞吐量表示在单位时间内通过某个网络(或信道、接口)的数据量
吞吐量被经常用于对现实世界中的网络的一种测量,以便知道实际上到底有多少数据量能够通过网络。
吞吐量受网络的带宽或额定速率的限制。
注意吞吐量和带宽的区别:带宽指的是最大的传输速度,而吞吐量指的是实际传输速度
时延是个很重要的性能指标,指数据(一个报文或分组或比特)从网络/链路的一端传送到另一端所需要的时间,有时也称为延迟/迟延。
网络中的时延主要由以下几个不同的部分组成
发送时延
传播时延(取决于传输介质)
电磁波在信道中传播一定的距离需要花费的时间
传播时延的计算公式:
各介质的传输速率
自由空间:3*10^8 m/s
铜线:2.3*10^8 m/s
光纤:2.0*10^8 m/s
处理时延
处理时延指的是主机或者路由器在收到分组信息时花费的时间。例如分析分组的首部、从分组中提取数据部分、查找适当的路由等。
思考:现在我们暂时忽略处理时延。假定有一个长度为100 MB 的数据块(这里的M显然不是指10^6而是指2^20。B是字节,1字节=8比特)。在带宽为1 Mbits的信道上(这里的M显然是10^6)连续发送(即发送速率为1 Mbit/s),其发送时延是多少?
表示从发送端将数据发送到传输媒介开始,到发送端收到来自接收端的确认总经历的时间(不包含发送时延)
RTT由三个部分决定:
其中前两个部分的值作为一个TCP连接相对固定,路由器的缓存中的排队和处理时间会随着整个网络拥塞程度的变化而变化。所以RTT的变化在一定程度上反映了网络拥塞程度的变化。
RTT越小网络状况越好
利用率分为
根据排队论,当某信道的利用率增大时,该信道引起的时延也会迅速增加。
如果令Do表示网络空闲时的时延,D表示网络当前的时延,那么在适当的假定条件下,可以用下面的简单公式来表示D、Do和利用率U之间的关系为:
这里U是网络的利用率,数值在0到1之间:
因此,一些拥有较大主干网的ISP通常会控制它们的信道利用率不超过50%。
如果超过了,就要准备扩容,增大线路的带宽。
因此,信道利用率并非越高越好
丢包率即分组丢失率,是指在一定的时间范围内,传输过程中丢失的分组数量与总分组数量的比率。
丢包率是网络运维人员非常关心的一个网络性能指标,但对于普通用户来说往往并不关心这个指标,因为他们通常意识不到网络丢包。
分组丢失主要有两种情况:
分组在传输过程中出现误码(本来是0变成了1/1变成了0),被结点丢弃
分组到达一台队列已满的分组交换机时被丢弃(在通信量较大时就可能造成网络拥塞)
假设路由器R5当前的输入缓冲区已满,此时主机发送的分组到达该路由器。路由器没有存储空间暂存该分组,只能将其丢弃。实际上路由器会根据自身的拥塞控制方法,在输入缓存还未满的时候就主动丢弃分组。
因此,丢包率反映了网络的拥塞情况: