计算机网络体系结构
计算机网络:一些互联的、自治的计算机系统的集合。
- 互联:通过通信链路连接在一起。
- 自治:每台计算机都有自己的操作系统,资源管理、进程调度等。
功能: 资源共享、信息传递、协作计算、分布
计算机网络的组成
组成部分上来看:由硬件和软件与协议组成。
工作方式来看:包括边缘部分和核心部分(中间的网络以及连接网络的路由器)。
按照功能组成:
- 通信子网:负责数据传输,包括传输介质、通信设备、通信控制软件。(物理、链路、网络)
- 资源子网:负责资源管理,包括计算机、存储设备、打印机等。(会话、表示、应用)
计算机网络的分类
-
WAN(广域网):覆盖范围广,跨越城市、国家、甚至全球。
-
LAN(局域网):覆盖范围小,一般在一个建筑物内。
-
MAN(城域网):覆盖范围介于 LAN 和 WAN 之间,一般在一个城市内。
-
PAN(个人区域网):覆盖范围更小,一般在一个房间内。
-
广播式网络:所有主机共享一个信道,一个主机发送的数据包可以被所有主机接收。(ethernet)
-
点对点网络:每一对主机之间有一条专用的通信链路。
性能指标
速率
数据率、数据传输率、比特率,单位为 bps(bit per second)
连接在计算机网络上的主机在数字信道上传送数据位数的速率
带宽
带宽原本指的是信号的频带宽度,即模拟信号最高频率与最低频率之差,单位是 Hz。
在计算机网络中,带宽指的是数字信道中某一点到另一点所能通过的最高数据传输速率,单位是 bps。也就是单位时间内进入信道的数据数量。
主机向数字信道发送数据的速率+数字信道传播电磁波的频率
即使用主机向数字信道发送数据的速率描述数字信道能够传输数据的能力,因为传播电磁波的频率是固定的。
带宽表达的是信道的最高通信能力,速率表达的是主机的通信能力
吞吐量
用来表达信道的实际传输速率,
表示单位时间内通过某个网络(或信道、接口)的数据量,单位是 bps。
吞吐量受网络的带宽或网络的额定速率的限制。
是对线路实际传输速率的一个度量。
时延
指数据从网络的一端传输到另一端所需的时间。
-
发送/传输时延:主机发送数据所需的时间。从发送分组的第一个比特到发送完最后一个比特的时间。
\[d_{send} = \frac{L}{R} = \frac{L}{B} \] -
传播时延:数据通过信道传播所需的时间。取决于信道的长度和电磁波在信道上的传播速率。
\[d_{prop} = \frac{d}{s} \] -
排队时延:数据在路由器或交换机的队列中等待所需的时间。等待输出/输入缓冲区的时间。
\[d_{queue} \] -
处理时延:数据在路由器或交换机中处理所需的时间。检错、查找转发表、计算校验和等。
\[d_{proc} \]
高速链路实际上是影响的带宽,而不是传播速率。
时延带宽积
时延带宽积是指在网络中传输的数据量与网络的带宽之积,用来描述某一时刻链路中的数据量。
往返时间 RTT
从发送方发送数据到接收方接收到确认信息所需的时间,总共经历的时间。
信道利用率
指出某一信道有百分之多少的时间有数据通过
分层结构中的概念
层次栈/分级栈:为了降低网络设计的复杂性,将网络分为若干层,每一层都有自己的功能,只与相邻的层进行通信,实现网络的模块化设计。
对等体: 在不同计算机上构成相同层次的实体
协议
协议是一组规则的集合,规定了同一层上的对等实体之间交换的消息格式和消息含义。
协议由语法、语义和时序(同步)三个要素组成。
- 语法:规定了消息的格式,包括消息中的各个字段的含义和位置。
- 语义:规定了消息的含义,即对消息中的各个字段的解释与功能。
- 时序:规定了操作的条件与顺序关系
接口
接口定义了下一层向上一层提供的哪些原语操作与服务,是同一节点内相邻两层交换信息的连接点。
相邻两层的实体通过服务访问点 SAP(Service Access Point)进行通信。
相当于只提供了一个函数名、参数、返回值,而没有具体的实现。
比如如下的接口:
def quick_sort(arr: List[int]) -> List[int]
服务
服务定义了下一层向上一层提供的功能(或者说该层能够代表用户执行哪些操作)。不涉及具体实现,只是定义了功能。
服务是由一组原语操作组成的,原语操作是服务的具体体现,由哪些原语取决于提供服务的本质。
服务是语义化的,而接口是语法化的,即服务是我能提供快速排序
, 接口是我提供了一个函数 quick_sort供你调用
。
服务于协议的关系
- 服务是面向用户的,协议是面向计算机的。
- 服务是功能的描述,协议是规则的描述。
- 上一层的协议需要下一层的服务。
- 提供给上一层的服务需要下一层的协议。
消息格式
每一层报文都分为两个部分:SDU 与 PDI,共同构成 PDU
- SDU(Service Data Unit):服务数据单元,是上一层传递给下一层的数据,第 n 层的 SDU 是第 n+1 层的 PDU。
- PCI(Protocol Control Information):协议控制信息,是为了实现协议功能而添加的控制信息,用于控制协议的传输。
- PDU(Protocol Data Unit):协议数据单元,是在协议控制信息的基础上添加了协议控制信息的数据单元。
n-SDU + n-PCI = n-PDU = (n-1)-SDU
分层的依据
- 各层之间是相互独立的;
- 每一层需要有足够的灵活性;
- 各层之间完全解耦。
连接与可靠性
每一层可以向上层提供两种类型的服务
面向连接的服务
面向连接的服务是指在通信之前需要建立连接,通信结束后需要释放连接。
通常,在建立连接之前,通讯双方需要进行使用参数的协商,以确定通信所需要的资源,比如带宽等。
而电路就是与通信相关资源的另一种称呼。
无连接的服务
无连接的服务是指通信双方不需要建立连接,直接发送数据。
每一条消息都携带了完整的目标地址。消息/报文在不同层有不同的名字,比如在网络层叫做数据包。
不可靠的无连接服务通常叫做数据报服务。
可靠服务与不可靠服务
- 可靠服务:保证数据的完整性、有序性、无丢失、无重复。
- 不可靠服务:不保证数据的完整性、有序性、无丢失、无重复。而是尽力而为。通过用户发现错误并要求重传。
OSI 七层模型
为了达到所有异构网络的互联互通,国际标准化组织(ISO)制定了 OSI 七层模型。
Open System Interconnection,开放式系统互联。
TCP/IP 四层模型
TCP 是一个面向连接的可靠的字节流传输协议,提供了数据完整性、有序性、无丢失、无重复的服务。
UDP 是一个无连接的不可靠的数据报传输协议