厘清学习计算机网络各层的前置知识
简单介绍计算机网络的定义、组成、功能、信息交换技术、分类、性能指标等,最后介绍网络体系结构中采用的分层网络模型的概念,为后续学习网络各层的功能打好基础
厘清学习计算机网络各层的前置知识
一、计算机网络的定义
1.1 计算机网络
集线器相关知识详见物理层,交换机相关知识详见数据链路层
- 计算机网络(Computer Network)
- 是一个将众多分散自治的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统
- 由若干节点(可以是计算机、集线器、交换机、路由器等)和连接这些节点的链路(可以是有线链路或无线链路)而组成
- 我们以基于网线连接的联机游戏场景为例
- 例如用一根网线将两个计算机连接在一起玩联机游戏,就形成了一个简单的计算机网络,即便断网后也可以继续联机游玩,其中两台计算机都是节点,网线是链路
- 若想更多计算机加入游玩,则可用集线器(Hub)或交换机(Switch)同样作为节点,来链接多台计算机
- 多台计算机同时向集线器发送数据时,集线器无法同时处理而容易造成冲突卡顿,故其现已不常用
- 而交换机则可以解决上述问题,且交换机间还可相互连接形成更大的网络,故其现今常用于校园和企业等进行组建内部网络
1.2 互连网
路由器相关知识详见网络层
- 不同的多个计算机网络之间,可以通过路由器(Router)进行连接,这样就形成了更大的计算机网络,这通常被称为互连网(小写internet)
- 家用路由器和路由器严格来说并不同,家用路由器相当于交换机(实现内网功能,实现设备间的互连,例如电视投屏)、路由器(与外部网络连接)外加一些其它功能的集合体
1.3 互联网
- 互联网(大写Internet)又称因特网,即把全球范围内的所有计算机网络连接起来的互连网,由互联网服务提供商(ISP, Internet Service Provider)实现(例如中国电信、移动、联通)
- 互连网是通用名词,可以使用任意通信协议
- 互联网是专用名词,必须使用TCP/IP协议通信,这相当于统一度量衡的作用
二、计算机网络的组成
2.1 从组成部分看
- 计算机网络主要包含以下部分
- 硬件
- 主机(Host)又称端系统(End System):如电脑、手机、服务器
- 通信设备:如集线器、交换机、路由器
- 通信链路:如网线、光纤
- 软件
- 通信设备中支持网络通信的软件(路由器即小型计算机,也可安装软件)
- 端系统中支持联网功能的软件(如浏览器、邮箱、网盘)
- 协议
- 由硬件和软件共同实现
- 规定计算机网络间的通信规则
- 硬件
- 以互联网为例,主机内安装网络适配器(网卡),配合一些软件就可实现协议提供以下功能
- 将主机数据发送到网络上
- 接收来自网络的数据
2.2 从工作方式看
2.2.1 网络边缘
- 网络边缘(Network Edge)
- 由连接到互联网上的主机及其软件组成
- 直接为主机用户服务
- 网络边缘的主机由接入网连接到边缘路由器(端系统主机去往任何其他远程端系统的路径上的第一台路由器),各种异构网络通过边缘路由器接入,将端系统连接到边缘路由器的方法主要有
- 有线网络接入:光纤到户(FTTH, Fiber To The Home)、同轴电缆、以太网等
- 无线网络接入:无线局域网WLAN(WiFi)、广域蜂窝接入网(4G/5G)、卫星广域覆盖等
2.2.2 网络核心
- 网络核心(Network Core)
- 由连接网络的分组交换(也称包交换)设备(路由器等)、通信链路(光纤、无线链路等)组成,将大量计算机网络中的海量端系统互联了起来
- 为网络边缘的主机及其软件服务
- 提供连通性:将不同主机连接在了一起
- 提供交换服务:在端与端间传输数据包时选择最合适的路径
2.3 从逻辑功能看
- 资源子网
- 是计算机网络中负责向用户提供可共享资源的部分
- 主要由连接到互联网上的主机构成(主机内部的网络适配器、底层协议属于通信子网)
- 通信子网(前面的网络核心可以看作属于通信子网范畴)
- 是计算机网络中负责计算机间信息传输的部分(是所有计算机通信介质的总称)
- 主要由通信链路、通信设备、协议组成
三、计算机网络的功能
- 实现数据通信:实现计算机间的数据传输,这是最基本最重要的功能
- 实现资源共享:硬件(如远程显卡算力)、软件(如应用商店)、数据信息(如视频文件)
- 提供可靠备份:将网络中的多台计算机相互作为替代机,防止数据丢失(如网盘服务器集群)
- 利用多台主机:
- 分布式处理:网络中的多台计算机并行处理复杂任务,提高运行效率(如大矩阵运算)
- 负载均衡:网络中的多台计算机分担繁重工作,防止任务过多导致处理不过来(如游戏中使用多台服务器均衡处理大量玩家请求)
四、网络中的交换技术
4.1 电路交换
用于电话网络
- 电路交换(Circuit Switching)即通过物理线路的连接,动态地分配传输线路资源
- 优点:
- 两端用户始终占用端到端间的专用物理线路,数据直接输送,传输效率高
- 缺点:
- 建立和释放专用线路的过程会产生额外的时间开销(适合低频率大数据量的传输,但计算机网络所需的是高频小数据量传输,如微信消息)
- 线路被双方独占,利用率低,且导致线路分配的灵活性差
- 数据传输过程中的交换节点(如下图的方框)不支持差错控制(无法发现传输过程中出现的错误并修正),这些错误可能会累积而导致消息失真
- 优点:
4.2 报文交换
用于电报网络
- 报文交换(Message Switching)通过存储转发(把传输的数据先存储在中间节点的内存内,再根据目的地转发至下一节点)的方式进行报文(包含控制信息与用户数据)的传输
- 优点:
- 通信无需建立连接,两个用户不会独占一条线路,线路利用率高(相比电路交换)
- 中间的交换节点进行存储转发的同时会采用校验技术进行差错控制
- 缺点:
- 报文的长度不确定,导致中间节点的内存空间管理更为麻烦
- 长报文的存储转发(缓存开销与时间开销)、差错控制(遇错重传代价高)开销更大
- 相比电路交换,存在存储转发的时间延迟
- 优点:
4.3 分组交换
用于现代计算机网络
- 分组交换(Packet Switching)将报文交换中的长报文分组切分为定长短报文,每个短报文由头信息/首部(Header)和数据组成
- 头信息包含源地址与目的地址、分组号等信息
- 短报文均传输到目的地后通过分组号拼接恢复为原先的长报文
- 分组交换的中间节点是分组交换机(例如路由器),其报文传输流程示例如下(从左到右阅读)
- 优点:
- 继承了报文交换的优点并改善了其缺点(方便了存储转发管理、降低了存储转发的时间开销与缓存开销、降低了出错概率以及差错控制的遇错重传开销)
- 缺点:
- 需要耗费额外资源存储转发每个分组的(对用户无意义的)头信息
- 相比电路交换,仍然存在存储转发的时间延迟
- 传输过程中可能会出现分组报文失序和丢失等错误,增大了差错处理的复杂度(虚电路交换)
- 优点:
4.4 性能分析对比
- 电路交换的性能分析如下(用黑色菱形的竖向边长每格代表一单位数据,假设每单位数据传输耗费1ms每格代表1ms的延时,数据交换总耗时如下图竖座标轴上对应的长度所示)
- 报文交换的性能分析如下
- 分组交换的性能分析如下
- 三种交换的性能对比如下
五、计算机网络的分类
5.1 按分布范围分类
- 个域网(PAN, Personal Area Network)又称无线个域网(WPAN, Wireless PAN)
- 覆盖范围一般在10米半径以内
- 用于便携式电子设备间的短距离通信(如蓝牙、ZigBee)
- 局域网(LAN, Local Area Network)
- 作用于有限的小型地理区域,本地管理者拥有在控制网络的权限
- 用于家庭、学校等环境中的资源共享与通信,允许多个设备连接到高带宽媒体,允许用户随时访问本地网络中的资源和服务(局域网游戏联机、打印机)
- 几乎所有局域网都使用以太网技术实现(交换机的全称是以太网交换机)
- 城域网(MAN, Metropolitan Area Network)
- 以广州大学城为例,该片区域内的计算机网络应当算是城域网(覆盖一个城市的网络),因为大学的校园网之间并不具备相互访问的权限,但若只讨论中山大学的内部校园网,则哪怕不同校区间的地理距离比大学城范围更大,也算是LAN
- 通常也采用以太网技术实现,因此常被纳入局域网的范畴内进行讨论
- 广域网(WAN, Wide Area Network)
- 作用于有限的大型地理区域(城市、国家甚至全球),互联网就是全球最大的WAN
- 通过多种通信技术(如光纤、卫星、微波)实现远距离数据传输,包含多种设备(路由器、交换机、调制解调器)和协议(TCP/IP等),建设和维护费用昂贵且管理复杂
5.2 按传输技术分类
- 按照传输技术分类如下
- 单播/点对点(Unicast/Point-to-Point)
- 数据只会从发送方直接送达接收方,不涉及其他设备
- 无需复杂的路由或寻址、延迟低、数据泄露风险低(适用于专线连接、VPN等)
- 广播(Broadcast)
- 当一台计算机发送数据分组时,广播范围内的所有计算机均会收到该数据分组,然后通过检查其目的地址决定是否接收该数据分组
- 所有设备都会收到,可能造成拥塞,效率低(适用于局域网广播、ARP等)
- 组播(Multicast)
- 数据包发送给一组特定的接收者(加入特定组播组的设备),范围可以跨越多个网络
- 仅目标组接收,效率更高,且节省带宽(适用于视频流、在线会议等场景)
- 单播/点对点(Unicast/Point-to-Point)
- 其中组播与广播并不相同
- 组播可以运行在广播式网络上(如以太网)但不依赖广播,而是通过组播路由优化
- 组播是属于网络层及以上的技术,而广播属于物理层或数据链路层的技术
5.3 按拓扑结构分类
总线型、环形、星型均常用于局域网,网状则适用于广域网
- 总线型结构(Bus Topology)
- 数据广播式地进行传输,存在总线争夺的问题
- 路由器从物理上看是星型拓扑结构,但其逻辑上是总线型
- 环形结构(Ring Topology)
- 数据广播式地进行传输,引入令牌(Token)解决了总线争夺的问题
- 2000年以前的令牌环网就属于环形结构
- 星型结构(Star Topology)
- 数据点对点地进行传输,不存在总线争夺的问题
- 以太网交换机与其连接的设备间不论是物理上还是逻辑上都是星型结构
- 网状结构(Net Topology)
- 数据通过中间节点点对点地逐一存储转发
- 由众多路由器构建的广域网就是网状结构
5.4 按使用对象分类
- 公用网络:面向公众开放的计算机网络
- 专用网络:组织内部专用的计算机网络
5.5 按传输介质分类
- 有线网络:网线、光纤等
- 无线网络:WiFi、5G、卫星等
六、计算机网络的性能
6.1 速率相关
6.1.1 速率
- 可以在Windows或MacOS的相关软件中查看网络传输的收发速率
- 信道(Channel)指的是向某一方向传输信息的通道,其不等同于通信线路,后者在逻辑上对应两条信道,包括一条接收信道和一条发送信道
- 数据传输速率/数据率比特率(Speed)指的是连接到网络上的节点在信道上传输数据的速率,常用单位有比特每秒(小写的
bit/s
或b/s
或bps
)、字节每秒(大写的Bps
等)
1
2
1Bps = 8bps
1MBps = 8Mbps
6.1.2 带宽
- 带宽(Bandwidth)指的是某信道所能达到的最高数据传输速率,故其单位与后者相同
- 节点间通信所能达到的实际最高速率,由链路带宽和节点接收数据的性能上限共同决定,所以如果家里购买了1000Mbps下行带宽,但家里的网线带宽上限为100Mbps(五类网线),那么最终的网络带宽就会被限制在100Mbps瓶颈上(六类网线则可达到1000Mbps)
- 通信原理课程里对带宽的定义稍有不同,但本质都是一致的
6.1.3 吞吐量
- 吞吐量(Throughput)指的是单位时间内通过某个网络(或信道、接口等)的实际数据量,其上限大小由带宽大小、网络负载情况等共同决定
6.2 时间相关
6.2.1 时延
- 时延/延迟(Delay)指的是数据(如报文、分组、比特)从网络或链路中的一端发送传输到另一端接收所需的时间,总时延由多段时延组成,如下图所示
- 其中发送时延等于数据大小除以发送速率,传播时延等于信道长度除以传播速度
- 其中处理时延和排队时延受网络负载状况、路由器性能等诸多因素影响,较为复杂
- 以下是一道例题
6.2.2 时延带宽积
- 时延带宽积指的是一条链路中已从发送端发出,但尚未到达接收端的最大比特数
- 链路:水管
- 时延:水管长度
- 带宽:水管横截面积
- 时延带宽积:水管的体积
6.2.3 往返时延
- 往返时延(RTT, Round-Trip Time)表示从发送方发送完数据,到发送方收到来自接收方的确认所经历的总时间(例如网络游戏中的同步会产生延迟,体现为客户端与服务端间的往返时延)
6.3 信道利用率
- 信道利用率指的是某个信道中有数据通过的时间的占比
- 不应太低,容易造成浪费资源
- 不应太高,容易导致网络堵塞
七、计算机网络体系结构
7.1 分层网络模型
7.1.1 计算机网络应实现的功能
- 计算机网络应当完成不限于以下的庞杂精密功能,可采用分层的设计思想(即把庞大复杂的问题转化为若干较小的局部问题)
- 差错控制:确保数据在传输过程中不失真
- 流量控制:发送端的发送速率必须使得接收端来得及接收,不能太快
- 分段和重装:发送端要将发送的数据划分为更小的单位,在接收端进行还原
- 复用和分用:发送端的几个高层会话复用一条底层连接,在接收端进行分用
- 建立和释放连接:交换数据前先建立一条逻辑连接,数据传输结束后释放连接
7.1.2 以物流系统引出分层设计
- 以下是以分层思想设计物流系统的示例,用其引出分层网络模型(Layered Network Model)
- 将整个系统所需实现的功能分配在每个层次中去执行
- 同一个功能也可在不同层次中重复出现,只要其设计合理
- 分层结构的设计是灵活的,可以根据实际需求增减层次
7.1.3 网络体系结构与分层网络模型
- 网络体系结构(Network Architecture)指的是计算机网络的各层及其协议的集合,即该计算机网络及其构建所完成功能的精确定义,这是抽象的表示而不涉及具体的软硬件实现,现实中其所使用的分层网络模型(Layered Network Model)有以下几种(引用神评:收藏、使用、传教)
7.2 网络协议与服务
7.2.1 实体、协议、接口、服务
- 从水平视角来看
- 实体:分层结构中第$n$层的活动元素(包含软件与硬件)称为该层的实体,采用相同分层结构的多个主机的相同层互为对等层,其实体互为对等实体
- 协议:网络协议(Network Protocol)是控制对等实体间水平通信规则的集合,对等实体间使用协议来实现交流
- 从垂直视角来看
- 接口:又称服务访问点(SAP, Service Access Point),即主机节点内相邻两层实体间交换信息的逻辑接口
- 服务:服务是下层为上层所垂直提供的功能调用,上一层的实体通过服务访问点请求相邻下层所提供的服务
- 从水平视角来看,下图规定了一个协议来实现应用层的压缩和解压缩功能,应用层对等实体间应当遵循该协议来实现数据传输过程中的压缩和解压缩
- 从垂直视角来看,数据会从一端的上层实体逐层向下打包,然后经由转发后传输给另一端的底层实体,再逐层拆包向上传递,最终在另一端的上层得到数据
7.2.2 PDU、SDU、PCI
- 协议数据单元(PDU)是对等层之间传送的数据单元(第$n$层记作n-PDU),由PCI和SDU组成
- 协议控制信息(PCI)是用于控制协议操作的信息
- 服务数据单元(SDU)是为完成相邻层实体所要求的功能而传输的数据
1
n-PCI + n-SDU = n-PDU = (n-1)-SDU
7.2.3 协议的三要素
- 协议由以下三个主要部分组成
- 语法,指定控制信息与数据的格式
- 如协议控制信息PCI的字节占用以及每个字节的含义、协议数据单元SDU的字节占用
- 语义,确定需要发出何种控制信息、接收方需完成何种动作并做出何种应答
- 如发送方发出数据后,接收方需要执行什么操作、执行完后是否需做出应答、应答的种类有哪些(如传输成功或失败)
- 时序,详细说明该以怎样的条件与顺序,执行语义中所规定的动作或应答
- 如发送方发出数据后若在一定时间内未收到接收方的传输成功应答,则重新发送数据
- 语法,指定控制信息与数据的格式
7.3 OSI参考模型
7.3.1 各层定义
- 开放式通信系统互联参考模型(OSI, Open System Interconnect)是ISO提出的七层网络框架,以下是常见设备实现的OSI层数(注意物理传输媒介被理解为物理层之下的第零层)
- 物理层(Physical)定义如何在相邻节点间的信道上传输二进制比特流,并屏蔽具体传输介质和物理设备的差异
- 定义机械接口:接口的物理尺寸大小,针口的数量、接口的线缆排列等
- 定义电子信号:电压、电流大小,如何以电子信号特征来表示$0$和$1$等
- 定义时序接口:每秒传送多少个不同信号(波特率)、每秒传送多少比特(比特率)等
- 数据链路层(Data Link)将物理层的比特流封装成数据帧(Frame)传送到网络层,或将网络层的帧传给物理层进行比特流传输
- 差错控制:
- 物理层传输中无法发现比特流的差错,数据链路层需通过建立节点间链路,使用各种控制协议提供能进行检错和纠错的可靠通信
- 帧包含多个比特,使用了基于某些协议的校验编码技术,例如使用额外的2bit校验编码,结合原有的bit交给物理层一并传输,在接收方收到数据后检测校验编码,决定是否需要丢弃并通知发送方重传等
- 流量控制:调节发送方的发送速度,防止发送端发送速度超过接收端的接收速度导致接收端缓存溢出
- 信道访问控制(MAC, Media Access Control):即物理地址(MAC Address),即理论上唯一的48位网络标识(烧录在网卡而不便更改),用于管理在同一信道中同时传输的信号
- 常用协议或介质:以太网、网卡、交换机、PPTP、L2TP、ARP、ATMP
- 差错控制:
- 网络层(Network)将数据链路层的帧封装为数据分组/数据包(Packet),将其从源节点转发到目的节点
- 路由选择(Routing):构造并维护路由表,选取数据分组在网络中从源端到目的端的最佳转发路径
- 分组转发:选取好路由路径后,将数据分组从发送节点的合适端口发送出去
- 异构网络互联:屏蔽异构网络的区别,实现异构网络的互联
- 拥塞控制:检测并处理网络拥塞
- 其它功能:以数据分组为单位的差错控制与流量控制(数据链路层以帧为单位)、可靠传输控制(数据接收方需返回确认接收的消息)、连接的建立与释放(虚电路,确保数据分组有序且不重复地到达目的地)
- 传输层(Transport)网络层转发数据分组并不清楚传输目标为哪个程序端口,故需由传输层实现主机间端到端/进程到进程(即主机端口到端口)的通信,端口以端口号标识,数据以报文段(Segment)为单位进行传输(报文在网络层拆分为数据分组)
- 复用和分用:发送端的几个高层实体复用一条低层的连接,在接收端再进行分用
- 其它功能:以报文段为单位的差错控制与流量控制、可靠传输、连接的建立与释放
- 传输模式:
- 可靠传输:更可靠的端到端数据传输,适合对通信质量有要求的应用场景(如文件传输等)
- 不可靠传输:更快捷轻量的端到端数据传输,适合对通信质量要求不高而对通信响应速度要求高的应用场景(如语音对话、视频会议等)
- 常用协议:TCP、UDP
- 会话层(Session)管理应用程序进程间的会话
- 会话管理:采用检查点机制,当通信失效时从检查点恢复通信(类似断点续传)
- 常用协议:SSL、TLS、DAP、LDAP
- 表示层(Presentation)解决不同主机上信息表示不一致的问题,确保从一个主机应用层发送的数据能被另一个主机应用层识别
- 数据格式转换:提供数据编码、格式转换、数据压缩、加密等功能
- 常用协议:LPP、NBSSP
- 应用层(Application)根据实际应用需求设计网络相关功能
- 常用协议:HTTP(网络浏览)、FTP(文件传输)、SMTP(电子邮件)、DNS等
7.3.2 数据单位
- 各层对等实体间的数据传输单元PDU如下
- 应用层:报文(Message)
- 表示层和会话层不会对报文进行拆分
- 传输层:报文段(Segment)
- 网络层:数据分组(Packet)
- 数据链路层:帧(Frame)
- 物理层:比特(Bit)
- 发送时从上向下,数据被逐层分段为更小的数据单位
- 接收时从下向上,数据被逐层重装为更大的数据单位
7.4 TCP/IP参考模型
7.4.1 各层定义
- TCP/IP参考模型由美国的ARPNET组织所使用,包含四层,以最主要的TCP和IP两个协议进行命名,先有TCP/IP协议栈然后才有TCP/IP参考模型,参考模型只是用于描述协议栈的
- 网络接口层/链路层(Host-To-Network)
- 网络硬件种类繁多且会迭代,不应当对其做过多的限制,故TCP/IP将OSI中地物理层和数据链路层合并为网络接口层
- 实现相邻节点间的底层数据传输(为网际层传输数据分组),但不规定具体怎么传输(这使得该模型的灵活性和适应性更强)
- 网际层/网络层/互联网层(Internet)
- 实现路由转发、分组转发、拥塞控制、网际互联等功能,这和OSI的网络层功能一致
- TCP/IP的网际层的数据传输并不可靠
- 因其网络接口层和网际层并实现差错控制(不进行局部纠错)、流量控制、连接管理、可靠性传输管理等功能,而是将这些全权交给传输层进行全局控制(其理念是全局正确就能保证局部正确)
- 这减轻了路由器作为网络核心部分的负载,而将实现这些功能的压力交给网络边缘部分去承担,有效降低了造价成本、大幅度提升了网络核心的性能
- 传输层(Transport)
- 应用层(Application)
- OSI中会话层管理会话、表示层格式转换的功能,在特定场景下并非必要,在TCP/IP中将二者通过协议统一整合到应用层作为可选择地功能,使得层次结构更清晰高效
7.4.2 对比OSI与TCP/IP
- 尤其注意网络层向传输层传输数据的可靠与否的区别
本文由作者按照 CC BY-NC-SA 4.0 进行授权