这篇文章是学习中科大自动化系郑烇老师《计算机网络》MOOC的笔记。课程录像可以在 这里 观看,教材是《计算机网络-自顶向下方法(第7版)》,课件可以在 这里 下载。

本篇内容对应课程录像的 P4 1.2 网络边缘P5 1.3 网络核心,欢迎讨论交流。

网络结构

可以将互联网分为三个子系统:网络边缘 (Edge)、网络核心 (Core) 和接入网 (Access)。

  • 接入网:将边缘的主机系统接入到网络核心;
  • 网络边缘:主机和网络应用,提供网络服务;
  • 网络核心:分布式地连接所有边缘节点,确保任意两个端系统之间可以相互通信。

三个子系统之间的关系

网络边缘

网络边缘主要是由数以亿计的端系统/主机组成的。

不同端系统之间的通信模式

  • 客户端/服务器(C/S)模式,客户端主动向服务器发送请求,服务器响应请求并返回资源。在这种模式里,服务器占据主导,客户端属于从属地位。
    • C/S模式可能会带来一些问题,由于服务器一般是集中部署的,在遇到大量集中请求时,容易导致服务器本身和附近的通信链路出现“供不应求”的状况,导致应用无法正常提供服务,可扩展性差。
  • 对等(Peer-Peer, P2P)模式,对于一台主机来讲,在不同的会话中,服务器或客户端的角色可能会发生转变:一个节点可以向另一个节点/同时向多个节点请求资源,也可以向另一个节点/同时向多个节点提供资源。
    • 在P2P模式中,随着主机规模的扩大,请求资源和提供资源的节点将同步增加,这种分布式的通信有利于增加可靠性和效率,迅雷、电驴等下载工具便是利用了P2P的原理。

基础设施对网络应用提供服务的模式

复习第一篇笔记中的概念:基础设施是与网络应用相对的。在计算机网络的分层结构中,基础设施包括应用层在网络应用进程之下的所有元素。比如,在一个特定的端到端连接中,双方端系统上应用进程之外的软硬件设施都可以称为基础设施。

  • 采用网络设施的面向连接的服务。其主要特征是先“握手”,两个边缘节点互相确认已经建立了连接状态再传输数据,但是这种连接仅仅是在边缘节点内部进行了确认,或者说这类服务从物理上并不保证网络连接的可靠性。TCP是典型的面向连接的服务,其本身的特性包括确保通信的可靠性、流量控制和拥塞控制。

流量控制:协调发送方的发送速度和接收方的接收速度,确保符合两方端系统的处理能力。
拥塞控制:监测连接的通畅性,当网络拥塞时会降低传输速率。

  • 采用基础设施的无连接的服务。其主要特征是发送方和接收方直接传输资源。UDP是典型的无连接服务,它不具备可靠性,也没有流量控制和拥塞控制,但对于一些场景还是十分适用。

一般来讲,适用TCP的应用包括HTTP\FTP\SMTP等;而适用UDP的应用包括DNS\流媒体\远程会议等。

网络核心

网络核心是由大量路由器组成的网状网络。

Q:数据怎样通过网络进行传输?
A:有电路交换(Circuit Switch)和分组交换(Packet Switch)两种方式。

电路交换

在传输数据之前,先通过信令系统在网络核心中为两个端系统的通信建立一条独享的链路,其中链路可以以多个线路片(pieces)拼接而成。建立链路之后,端系统之间的通信性能就能被保证。但是,如果呼叫没有数据发送,就会导致资源的浪费。

一般来讲,传统电话的网络都是采用电路交换。

将两个节点之间链路带宽划分成多个Pieces,可以极大提高电路连接的效率。划分的方法主要有以下三种:

  • 频分多路复用(Frequency-Division Multiplexing, FDM):将可用的增益频率划分为若干小段,每个用户使用其中的一段频率传输数据;
  • 时分多路复用(Time-Division Multiplexing, TDM):首先确定一个大的周期 TT,在一个周期内划分长度为 tt 的若干个时槽(slots),每个用户每隔TT后使用一个slot来传输数据;
  • 波分多路复用(Wave-Division Multiplexing, WDM):一般为光纤通信的时候采用,不同用户使用不同波段来传输数据。

电路交换的核心就是为呼叫预留端到端的专用资源,先建立连接再交换数据。

电路交换不适合计算机之间的通信。原因是:连接建立时间长;计算机之间的通信具有较强的突发性(有时候有,有时候没有),造成资源浪费;交换节点需要维护大量连接关系,可靠性不高。

分组交换

分组交换有两个核心的要素:

  • 第一是链路的带宽不再分为多个Pieces,传输时使用全部带宽;
  • 第二是传输的数据被分为一个个分组,即Packets。

网络核心中交换节点负责分组的暂时存储和转发。节点只有在存储完整的数据包后才能进行转发,而不是像电路交换那样只负责把每一个比特都立即转出去。因此,分组交换的延迟比电路交换高,且可能有排队的时间延迟;此外,如果输出缓存队列用尽,那么分组就可能会被抛弃,造成丢包。

分组交换下网络核心的关键功能是路由转发。路由是决定分组采用的源到目标的路径,转发是从路由器的输入链路转移到输出链路;路由是全局功能,转发是路由器的内部功能,两种功能相互配合。

分组交换仍然会有多路复用,比如说划分时间片,各个用户轮流使用。但其划分方式不固定,称为统计多路复用

分组交换的特点是资源共享、按需使用,因此其所能容纳的用户更多。
我们可以使用随机模型来验证两种交换方式容纳用户数的区别。例如,存在一个 1Mbps1Mbps 带宽的通信链路,有若干个端系统可能使用该链路。每个用户在时间尺度上有 p=0.1p=0.1 的概率处于活跃状态,活跃时会占用 100Kbps100Kbps 带宽发送数据。
如果使用电路交换,显然这个通信系统最多只能容纳 1Mbps100Kbps=10\frac{1Mbps}{100Kbps} = 10 个用户,这是由于为了保证用户活跃时能够及时传送数据,必须事先在用户和目标之间建立好连接,这就会占用固定的带宽。
在分组交换的情况下,由于不需要时刻保持连接,只需在用户活跃后占用带宽发送数据,活跃时间一过,便可释放带宽,因此系统可以十分灵活的调配资源。假设有3535位用户,我们可以计算同时不超过10个用户活跃的概率为

n=09(35n)pn(1p)35n99.96%.\sum_{n=0}^9 \tbinom{35}{n} p^n (1-p)^{35-n} \approx 99.96\%.

这就是说,采用分组交换后,从时间尺度来看有 99.96%99.96\% 的概率这个系统可以正常为35个用户提供服务。如果考虑到分组交换本身在网络拥塞时可以使用排队来延迟处理超量的请求,显然分组交换对于大流量和高并发的承载能力远高于电路交换。

分组交换网络按照有无网络层的连接,同样有有数据报虚电路两种传输方式。

  • 数据报(datagram)方式中,每个分组都携带目标主机的完整地址,各个分组独立进行路由;
  • 虚电路(virtual circuit)中每个分组携带电路号,而对应的两个主机要提前在网络中建立虚拟的连接,具体表现为在各个节点中存储虚电路表以供节点转发接收到的分组。