如上图所示,一般来说,PSTN
(公共交换电话网)由上面这些本地回路、交换局、干线组成。
计算机网络是通信技术与计算机技术紧密结合的产物。既然涉及到通信技术,就需要先了解一下通信系统模型。通信系统模型是信源经过发送设备到信道,在信道传输过程中可能会接收到部分干扰,最终将信号传输到信宿:
由于信源和信宿通常是计算机,因此将其称之为计算机网络。当计算机与计算机之间距离远、数量多了之后,通过交换网络将主机互联在一起。
全球最大的互联网络Internet
将数以百万计的互联的计算设备(主机hosts
=端系统end systems
)连接在一起,通过像光纤,铜缆,无线电,卫星等通信链路可以将计算机连接在一起,但是数量多了,距离远了之后就需要交换网络,比如一些路由设备(routers
)和交换机(switches
)实现分组转发。
而这里面一个核心的问题就是:能否保证应用数据有序交付。这里就引入了另外一个概念协议,相当于网络信息传输的法律,每个信息都按照这个协议工作就可以达到这一点。
网络协议
网络协议就是计算机网络中数据交换必须遵循的规则。具体来说,这个协议需要规定通信实体之间所交换的格式、意义、顺序以及针对收到信息或发生的事件所采取的”动作“。
一般来说不同的协议,它的功能是不一样的,所要完成的任务也是不同的,交换的信息不同,信息的格式也不一样。但是作为一个协议,它有三个基本的要素:
- 语法(
syntax
):定义数据与控制信息的结构或格式,如果是底层信息的话,那定义的可能就是信号电平。 - 语义(
semantics
):需要发出何种控制信息,完成何种动作以及做出何种响应。也就是告诉计算机这个信息要干嘛,就像寄快递需要填写收件人的地址信息和电话号类似。还有就是发错了咋办。 - 时序(
Timing
):时序定义协议双方需要遵循的事件顺序。以及交换信息的速度匹配问题。
数据交换
那如何将源主机发送的数据通过网络核心送达目的主机呢?如果每个主机都和另外的一个主机通过链路连接,那肯定是不行的,因为主机的数量太过庞大。现在常用的是通过交换设备将各个主机连接在一起,每个主机只需要一个链路连接到交换设备即可。这种方式也存在问题,交换设备的端口与主机数量正相关,因此设立多个交换设备,将交换设备互联在一起组成交换网络,这样就更加灵活。
交换网络需要将数据进行转发。这就需要交换设备在物理上或者逻辑上建立端口之间的连接,将一个端口的数据转移到另外一个端口。这里就会涉及到如何来动态分配传输资源这样一个问题:
从技术分类上来分可以分为:电路交换、报文交换、分组交换这三大类。
电路交换
最典型的电路交换网络就是电话网络。两台电话机之间先拨号请求建立链路,之后进行通信,完成之后链路释放:
链路一旦建立,所占有的资源不能被第三方共享,也称为独占资源。但是并不是独占其经过的物理链路,物理链路可以被用于多路复用(Multiplexing
)技术。
多路复用通过将链路/网络资源(如带宽)划分为”资源片“,然后每路呼叫独占分配到的资源进行通信。
依据复用的方法不同可以将其分为以下几类:
- 依据各用户占用不同的频率带宽资源不同的:频分多路复用( frequency division multiplexing-FDM )
- 依据用户所占用的时间间隙的不同:时分多路复用( time division multiplexing-TDM )
- 依据光的频分复用:波分多路复用(Wavelength division multiplexing-WDM)
- 码分多路复用( Code division multiplexing-CDM ):为每个用户分配一个唯一的
m bit
码片序列,各用户使用相同频率载波,利用各自码片序列编码数据。编码信号=(原始数据) x (码片序列)
。但是需要保证各个用户码片序列相互正交(orthogonal
)。
报文交换
报文是发送信息的整体,比如像一个文件,一张图片这样。按照报文交换,发送信息的时候需要将整个信息发送给路由器,然后路由器决定如何转发这个报文。
分组交换
如果将报文拆分成一系列小的数据包(每个数据包通常会加上一个头部信息),每个小的数据包相当于一个分组。
因此它会有一个报文的拆分和重组过程,这个过程就会产生一些额外的开销。
如上下图所示,A/B
都需要传输数据,这里并不像电路交换一样先分配带宽等资源,而是以1.5Mb/s
全部转发,按需共享链路。
报文交换与分组交换均采用存储-转发交换方式,区别在于报文交换以完整报文进行”存储-转发“而分组交换以较小的分组进行”存储-转发“。
通过这种分组交换的方式可以减少传输延迟,因为路由器不需要等待全部报文接收完毕再往下一个路由器发送数据。对于路由器的缓存也较少。
如上图所示:其传输时间由报文传输时间加上路由的延迟时间两部分构成。
但是并不是说分组交换绝对优于电路交换,因为通信之前并没有占用网络的资源,大家构造分组,向网络上进行发送,势必出现很多用户向网络中发送数据,超越了网络的传输能力,可能产生拥塞(congestion
)。因此在分组网络中通常会有一些协议来处理数据传输和拥塞控制。
计算机网络性能
任何一个系统都需要一些指标来衡量这个系统。
速率
速率即数据率(data rate
)或称数据传输速率或比特率(bit rate
),是计算机网络中最重要的一个性能指标。表示单位时间(秒)传输信息(比特)量。单位:b/s(或bps)、kb/s、Mb/s、Gb/s。这里的K = 1 0 3 }M=103、 G=109。
速率往往是指额定速率或标称速率。比如说某个网络是100M
,指的是这个网络理想的数据传输速率,实际上可能并不一定能达到。
带宽
“带宽”(bandwidth
)原本指信号具有的频带宽度,即最高频率与最低频率之差,单位是赫兹(Hz)。
计算机网络中所说的带宽:网络的“带宽”通常是数字信道所能传送的“最高数据率”,单位:b/s
(bps)。也就是最大数据传输速率。根据单位可以判断两个带宽的不同。
常用的带宽单位:
延迟/时延(delay或latency)
还有一类指标为时间问题,我们把它称之为时延。之前在说分组交换的时候介绍过其中一种延迟叫传输延迟,发送一个分组,从第0
个比特开始发送,到最后一个比特分组的发送完成,这段时间就是这个分组的传输延迟。分组在网络中传输,除了这个传输延迟之外,还有其它的延迟。
分组在路由器缓存中排队时发生的丢包和时延。
B
的数组分组到达了一个路由器,路由器会按照存储转发的方式将其收下来,收下来之后先暂存,然后确定了这一个分组在哪一个链路进行转发之后,再在这个链路上进行转发,如果这个链路正在转发其它的分组,它就得排队等,这也需要时间,叫排队延迟。
当轮到转发这个分组的时候,才从第一个比特开始发,依次类推直到发完。这个时间就是传输延迟。
任何一个路由器供排队缓存的空间是有限的,如果缓存满了还有源源不断的分组到达,那就没地方放了。此时就会发生丢包现象。
总结来说就是当分组到达速率超出输出链路的容量的时候,这种现象就难以避免了。
- 四种分组延迟
分组从达到一个节点开始,到这个分组成功转发到下一个路由器所消耗的时间,主要有4种:
- 结点处理延迟
分组达到一个路由器,路由器需要对这个节点需要处理,这个时间称之为结点处理延迟(nodal processing delay
) dproc。这个处理通常需要检查一下分组有没有错(差错检测);根据分组携带的地址信息,看看应该在哪个接口将其发出去(确定输出链路);还有一些其它的事情。现在路由器的处理能力都比较强,一般来说这个时间比较短 (一般来说不会超过毫秒级,当然也要看讨论的问题是一个什么样的层级的)。
- 排队延迟
当分组确定从哪一个输出链路往外传输的时候,而那个链路刚好在传输其它分组的时候,它就得在这个路由器上进行排队,这个时间的消耗通常称之为排队延迟(queueing delay
)dqueue。
很显然这个排队时间是很不确定的,取决于路由器拥塞程度。
- 传输、传播延迟
当链路开始传输一个分组的时候,传输第一个比特开始,到最后一个比特发完,需要一段时间,这段时间称作传输延迟(transmission delay
)d t r a n s d_{trans}dtrans。传输延迟取决于以下几点:
- 分组长度L bits)。
- 链路带宽R bps)。
通过电信号、光信号、无线信号传输到下一个节点。而在这个介质上传播也需要时间,我们将其称之为传播延迟(propagation delay
) dprop。取决于以下几点:
在分组交换过程中,一个分组从到达某一个节点开始,到其离开这个节点到达下一个节点,这样所谓的一跳过程中,所消耗的时间可表示为:
时延带宽积
计算机网络中另一个经常听到的描述就是时延带宽积,有时也称为带宽时延机。一段链路,或者称之为一段信号它的传播延时乘以这段链路的带宽(最高的数据传输速率)。
可以理解为这个链路上能够容纳多少个比特,因此链路的时延带宽积又称为以比特为单位的链路长度。
分组丢失(丢包)
队列缓存容量有限,分组到达已满队列将被丢弃 (即丢包)。
不同的网络对于丢包的处理是不一样的,有些丢掉就丢掉了,有些则会选择重发。也就是:丢弃分组可能由前序结点或源重发(也可能不重发)。
在网络中,丢包是一个要考虑的现象。一般用丢包率来衡量这个丢包的现象:
吞吐量/率
吞吐量/率(Throughput)说的实际上也是一种速率。
吞吐量:表示在发送端与接收端之间传送数据速率 (b/s)。这样一个两端之间数据传输的实际速率。有两种指标:
- 即时吞吐量:给定时刻的速率。
- 平均吞吐量:一段时间的平均速率。
如果考虑一个互联网的实际场景:
每条"连接"的端到端吞吐量取决于最小值:
实际情况下,通常取决于瓶颈链路,一般是端系统或者主机。
参考
本文为中国大学mooc
的课程笔记:https://www.icourse163.org/course/HIT-154005