计算机网络 Chap.1 计算机网络体系结构
本系列计算机网络博文基于Bilibili王道计算机教育的免费考研课程整理而来, 目的在于系统的梳理计算机专业课的基础知识, 并为将来的面试做好充分的准备.
除本系列外, 计算机考研相关还包括数据结构 / 操作系统 / 计算机组成原理的相关内容.
引子, 为什么要考计网?
在开始梳理前, 稿主认为有必要明确, 为什么是计网? 计网在整个计算机体系中占据了什么样的地位?
课程中的这张图非常清晰的表述了关于我们会梳理的几门课程的地位. 计网 , 主打一个连接性, 两台物理上隔离的设备是如何做到互相通信的? 这就是我们要研究的核心问题.
1.1 计算机网络概述
1.1.1 计算机网络的概念
计算机网络(Computer Network) 的完整概念其实并没有一个确切的定论, 我们这里给出一种参考:
概念: 计算机网络
计算机网络 是一个将众多 分散的 , 自治的 计算机系统, 通过通信设备与线路连接起来, 由功能完善的软件实现 资源共享 和 信息传递 的系统
我们随后要明确三个名词的区别, 这三个名词非常相似, 但在计网中意义并不相同.
- 计算机网络(Computer Network) : 简称 网络 , 是由若干 结点(node) 和连接这些结点的 链路(link) 组成的系统.
概念: 结点
计网中的结点有很多种, 包含计算机, 集线器, 交换机, 路由器等等.
概念: 链路
请读者不要被这个名词所误导, 链路可以是有线的, 亦可以是无线的.
- 互连网(internet) : 指的是网络中存在 路由器 使两个子网能够相互连接的一个计算机网络.
注意: 路由器
在计网中所说的 路由器 , 与我们当前通常提及的 家用路由器 概念并不完全一致, 这是因为, 家用路由器为了保证便利性, 往往集合了 路由器 与 交换机 的功能.
- 互联网(Internet) : 也叫 因特网 , 是由各大ISP和国际机构构建的, 覆盖全球范围 的互连网.
概念: ISP(Internet Service Provider)
ISP, 即互联网服务提供商, 下属有高级路由器将各个大型互连网进行连接. 国内典型案例有: 中国移动 / 联通 / 电信
注意: 协议差别
在 互联网(Internet) 中, 使用的通信协议是有严格规定的, 必须为 TCP / IP通信协议 , 而在 互连网(internet) 中, 通信协议可以是自主协定的.
1.1.2 计算机网络的组成和功能
聊完了概念, 我们来看看计网里面到底有啥玩意.
我们先从 具体的组成部分 的角度来切入, 从组成部分看, 计算机网络可以分为三个大部分:
- 硬件
- 主机(End System, 端系统) : 如手机, 计算机, 智能家居等. 指的是这些设备连接在网络的 末端
- 通信链路 : 如网线, 光纤, 同轴电缆等
- 通信设备 : 如集线器, 交换机, 路由器等
- 软件
- 装载在主机和通信设备上, 目的是方便用户使用, 实现资源共享.
- 协议
- 规定了计算机网络中的通信规则
- 由硬件和软件共同实现
从 工作方式 上来看, 计算机网络也能被分为以下两部分:
- 边缘部分
- 这部分的网络直接为用户服务, 主要由 主机 以及其上的软件组成.
- 核心部分
- 这部分的网络目的是为 边缘部分 提供服务, 主要由大量网络以及连接它们的路由器组成.
随后, 我们了解一下计算机网络这玩意能干啥.
其实从日常生活中我们已经接触到了很多方面:
- 数据通信
- 资源共享
- 硬件资源
- 软件资源
- 数据资源
- 分布式处理
- 提高可靠性
- 负载均衡
- …
注意: 数据通信
这是计算机网络中 最基本, 最重要 的功能, 没了它, 后续所有的功能都无法实现(没了这玩意这个家得散)
例子: 分布式处理
一个控制端将一个很复杂的任务分成多个小部分, 分配给处在能够连接的网络中的其余主机, 这即分布式处理的方法.
例子: 提高可靠性
比如你的文件在某个云盘上被备份了, 显然它不应该只被存储了一份, 它应当是在这个云盘下属的多个服务器上都被存储了, 这才能保证厂商服务的可靠性. 这个备份工作就得靠计网对不?
1.1.3 计算机网络中的 交换
我们首先要明白, 交换 到底是个啥玩意.
我们此前解释过, 在网络中的端到端通信过程中, 中途需要经过很多 结点 , 这些结点能够将我们的信息根据某种规则进行传递, 并最终传递至目标端. 而所谓 交换 , 指的正是这个过程.
概念: 交换
网络设备(如交换机、路由器等)根据一定的规则转发数据包(或数据帧)的过程.
了解概念后, 我们看看有哪些 交换方式 :
- 电路交换
- 报文交换
- 分组交换
所谓 电路交换 , 指的是网络为通信双方分配一条 专用的 物理路径, 并且在通信过程中, 这条路径全程归通信双方所有.
其优势为 数据传输稳定; 速率高 .
其劣势为 线路利用率低; 线路分配的灵活性差 .
注意: 电路交换的适用场景
电路交换往往适用于 频次低, 传输量大 的数据通信. 它的方式由早期的 电话网络 发展而来.
但很遗憾, 在计算机网络中, 往往展现出 频次高, 传输量小 的特点. 通信请求往往是突发性的, 因此电路交换并不适用于当前的计算机网络.
捯饬 报文交换 之前, 我们得先搞明白 报文 是个啥东西.
概念: 报文(Message)
报文 是数据的一种封装形式, 通常表现为由以下三部分组成的一串数据: 报文头(Header) , 数据部分(Payload) , 报文尾(Trailer) .读者可以暂且将其理解为 带有发送方 / 接收方地址的数据信息 即可
所谓 报文交换 , 就是网络中的结点能够根据报文中发送方 / 接收方的信息(通常处于报文头中), 自主选择一条合适的转发路径, 并将该报文转发至接收方处.
其优势为: 无需提前建立连接; 通信线路由于报文的转发策略而可以灵活分配; 线路利用率高; 支持差错控制 .
概念: 差错控制
差错控制 指的是信息传输过程中, 如果因为意料之外的原因导致信息发生了改变, 中间的结点能够由一些报文中附带的信息(通常处于报文头中)察觉到这一点, 甚至将报文进行修正.
其劣势为: 报文通常不定长, 存储转发的缓存开销大, 管理难度大; 长报文易出错, 重传代价高 .
注意: 报文交换的适用场景
报文交换与计算机网络的适用场景非常类似, 即 频次高, 传输量小 的数据通信. 它来源于战争时期的 电报通信 .
同时, 我们也意识到了, 报文交换的绝大多数问题都来源于 报文过长 这种可能性.
分组交换 的思路与 报文交换 及其类似, 同时修正了部分报文交换的缺点.
嫌报文太长容易出错? 那我们把长报文切开就好了嘛.
概念: 报文分组
报文分组 , 指将原先很长的数据分成 定长的 多个部分, 并将每个部分单独添加上一个 首部 (作用与报文交换中的首部相同).
由于这里对报文分组了, 因此首部中相对于原先报文中的控制信息自然就要多一块来表示这是第几个分组. 我们称作 分组号 .
这种方式中, 中间的结点(也称 分组交换机 )会根据首部中的 IP地址 来判断发送的起点和终点, 并将一个个的定长分组存储转发至通信终点.
其继承了 报文交换的全部优势 , 且额外改进了其劣势, 即 分组定长, 存储转发管理开销小; 出错概率低; 重传代价低 .
其劣势为: 与报文交换相比, 控制信息占比增加; 与电路交换相比, 存储转发时延较高; 且存在 分组失序, 丢失 现象 .
概念: 虚电路交换
即参考了 电路交换 的思想, 在分组交换的交换方式上, 让交换双方预先进行连接, 并使后续数据传输全程处于该连接线路上.
需要明确的是, 这种 虚电路交换 并不存在电路交换上面的 线路独占 现象.
注意: 分组 Vs 虚电路?
在当前的互联网中, 分组交换最终被作为最广泛应用的交换策略.
这得从问题的解决方来考虑, 在分组交换中, 分组失序, 丢失现象的解决方是通信两端 ; 而在虚电路交换中, 这个问题的解决方是中间的交换结点 .
从当前的普遍情况而言, 通信两端的处理性能通常是要高于中间结点的性能的, 因此最终选择了前者.
唠完三种交换的基础概念, 我们分析一下这哥仨的 性能 .
上图的设定为:
- 每一跳传播时延1ms
- 电路交换机建立 / 释放吓一跳连接耗时1ms
- 接收方处理连接请求耗时2ms
- 数据传输速率0.5kb/ms
- 报文大小4kb
该流程总耗时 25ms , 如果仅看 报文传送 的过程, 则仅花费 11ms .
上图设定为:
- 每一跳传播时延1ms
- 数据传输速率0.5kb/ms
- 报文大小4kb
- 报文存储转发时延2ms
该流程共花费 31ms .
上图设定为:
- 每一跳传播时延1ms
- 数据传输速率0.5kb/ms
- 报文大小4kb
- 分组大小1kb
- 分组存储转发时延0.5ms
该流程共花费 17.5ms .
总结一下
单从数据传输速率上讲, 其实电路交换最优, 分组其次, 报文最差. 但由于分组的扩展功能较多(如差错控制, 线路分配等此前描述的优势), 并且对于线路的利用率极高, 因此最终当前互联网采用了 分组交换为主 的方式.