计算机网络

计网的打底篇:网络从哪来(冷战产物)、怎么衡量好坏(性能指标)、怎么分类(拓扑/覆盖范围)、为什么分层、OSI 七层与 TCP/IP 各管什么。对应王道 408 第一章概述部分。

一、网络从哪来:冷战的产物

ARPANET 的诞生完全是国防需求:为了提高生存和反击能力,防止战略部署被一次摧毁(指挥系统串联,一断全断),美国国防部设计出一种分散的指挥系统(并联)——部分点被摧毁,其他点仍能正常工作。这其实就是"网"字的由来。

1969 年,美国国防部国防高级研究计划署(DOD/DARPA)资助建立 ARPANET(阿帕网),也就是 internet 的雏形:将各个结点的大型计算机,使用分组交换技术,通过专门的通信交换机和专门的通信线路相互连接。

最早的三大应用

  • E-mail:互发小文本文件(1972 年已 40 个结点)
  • FTP:利用文件传输协议(翻译后完成统一标准,便于沟通)发送大文本文件、数据文件
  • Telnet:通过一台电脑模拟成另一台远程电脑的一个终端,从而使用远程电脑上的资源(远程登录)

通信协议的诞生

年份 事件
1972 第一届国际计算机通信会议,成立 Internet 工作组,负责建立保证计算机间通信的标准规范
1973 美国国防部开始研究不同网络间的互联问题
1974 IP(Internet 协议)和 TCP(传输控制协议)问世,合称 TCP/IP 协议,定义了一种在计算机网络间传送报文(文件和命令)的方法
1983 ARPANET 全部计算机完成向 TCP/IP 的转换,并在 UNIX 上实现了 TCP/IP
1988 Internet 开始对外开放
1991 商业用户超过学术用户,里程碑

但网络实在太多了,于是提出:各个网络内部使用自己的通信协议,与其他网络通信时使用 TCP/IP 协议——不同层不同协议:

image-af7f0304

二、发展阶段:四步走

阶段 形态 特点
远程终端连接 单一主机 以主机为中心,终端(键盘、显示器)分布在各处与主机相连,用户通过本地终端使用远程主机
计算机网络阶段 局域网 多个主机互联,实现计算机与计算机间通信,终端用户可访问本地主机和通信子网上所有主机的软硬件资源;出现电路交换和分组交换概念
计算机网络互联阶段 广域网、Internet ISO 制定开放体系互联基本参考模型(OSI/RM),实现不同厂家计算机的互联;TCP/IP 协议诞生
信息高速公路 高速、多业务、大数据量 ATM 技术、ISDN、千兆以太网,交互式业务(网购……),目前在用

中国的节点:1994 年中国的网络连上世界,连网工作全部完成,中国网络域名确定为 cn

image-7804f140 image-638ca2dc image-004e8bb6

三、计算机网络是什么

计算机网络也是一个系统:一个利用通信线路和通信设备,将多个计算机的终端连接起来,并遵循一定的网络通信标准,以促进资源共享和信息传递的系统。

功能

功能 说明 例子
数据通信 数据在信道上传输,保证不同主机之间的连通性 文档、邮件的传输
资源共享 硬件共享 / 软件共享 / 数据资源共享 打印机共用;应用软件不用下载就能用;百度文库供大家下载
分布式处理 多台计算机各自承担同一工作的不同部分 Hadoop 平台
提高可靠性 某台主机宕机有替代机 另一条链路迂回到达
负载均衡 计算机之间配合工作

组成:资源子网 + 通信子网

组成元素就两类:网络节点通信线路

image-a984c902

网络节点分两种:

  • 端节点:信源和信宿节点(用户主机和用户终端)
  • 转发节点:网络通信过程中控制和转发信息的节点(交换机、路由器)——类似中转站

通信线路:传输信息的信道(电话线、电缆、无线电线路、光纤线缆)。

网络节点通过通信链路连接成计算机网络,从功能上分成两个子网:

image-48fbca8f
  • 虚线框外为资源子网:拥有资源的用户主机、请求资源的用户终端(端节点)
  • 虚线框内为通信子网:负责端节点之间传送报文,由转发节点和通信链路组成
image-88f5b765

IMP:存储转发 vs 广播

转发节点统称为接口信息处理器(Interface Message Processor,IMP)——专用于通信的计算机。有些 IMP 之间直接相连,有些必须通过其他 IMP 才可连接。

当 IMP 收到一个报文后,要根据报文的目标地址决定:提交给与它相连的主机,还是转发到下一个 IMP。这种通信方式叫做存储转发(广域网中常用):

存储,先到一个点,再看它的地址在哪里,是谁的转发给谁。

另一种通信方式是广播,常用于局域网。在局域网中 IMP 被简化成一个微处理芯片,每台主机或工作站中都设置一个 IMP。广播通信系统中,唯一的信道为所有主机共享,任何主机发出的信息所有主机都能收到:

广播通信:只要你在这条信道上,就能收到我的消息(大喇叭)。

四、性能指标

4.1 速率、带宽、吞吐量

速率:连接在计算机网络上的主机在数字信道上传送数据位数的速率,单位 b/s、Kb/s、Mb/s、Gb/s、Tb/s。

注意与存储容量的区别——速率以 10³ 为倍数,存储以 2¹⁰ 为倍数

速率 存储容量
单位倍数 10³(千、兆、吉、太) 2¹⁰(1 KB = 1024 B)
常用字母 小写 b(bit) 大写 B(Byte)
换算 1 Kb/s = 10³ b/s 1 Byte = 8 bit,1 KB = 1024 B

带宽:网络设备所支持的最高速度,单位同速率,是理想条件下的最高速率

吞吐量:单位时间内通过某个网络(或信道、接口)的数据总量(实际数量)。

🛣️ 公路比喻:带宽像马路——单行道还是双行道,不管马路中的速度如何,只管同一时间可通过的数量(宽度)。若有 4 条车道、限速 100km/h,由此可算出理论上单位时间可通过的车辆值(最大值),但一般达不到——车的性能不同速度也就不同(类比于速率不同),单位时间这些车辆通过速度的总和就是吞吐量。

带宽是理论值,吞吐量是实际值,速率是各终端的自身性质。

串一个例子:1000Mb/s 宽带的路由器连着两部手机和一台电脑,每部手机 10Mb/s,电脑 20Mb/s——速率就是 10Mb/s,带宽是 1000Mb/s,路由器吞吐量是 40Mb/s(三者之和)。

4.2 时延:四大类

时延 发生在哪 公式/说明
发送时延 数据从主机到信道上 发送的数据长度 / 发送速率
传播时延 数据在信道上传播 信道长度 / 电磁波在信道上的传播速率(除非材质改进,这个速度很难提升)
排队时延 路由器前等待 等前面数据处理完
处理时延 路由器内部 检查数据要送去哪、有没有出错

💡 使用高速链路(提高网速),只能减小发送时延,无法减少其他三个时延。

4.3 时延带宽积、RTT、利用率

时延带宽积 = 传播时延 × 带宽

表示链路可以容纳的比特数量——不断发送,直到第一个比特到达接收端才停止发送,这时链路上就充满了数据。所以它的单位是 bit,可以理解为用比特去描述链路的容量("以比特为单位的链路长度")。

往返时延 RTT:从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后立即发送确认),总共经历的时延。

RTT = 传播时延 × 2 + 处理时间(有时可能直接忽略)。

利用率

  • 信道利用率 = 有数据通过的时间 / (有 + 无数据通过的时间)
  • 网络利用率 = 所有信道利用率的加权平均值
image-b2dd58ac

⚠️ 利用率越高,延迟越大——不是利用率拉满就好。

导图收拢:

image-1adaf4ee

五、网络分类

5.1 按拓扑结构

网络拓扑结构指用传输媒体把各种设备互相连接起来的物理布局,是互连过程中构成的几何形状,能表示出服务器、工作站的配置和互相之间的连接。

image-be4368b3
拓扑 结构 优点 缺点
星型 各节点与中心节点连接,放射状 结构简单、建网容易、控制相对简单 集中控制,中心节点负载过重、可靠性低,线路利用率低
环型 各计算机连成一个闭合的环,点到点 初始安装简单,易找电缆故障点 节点增加后重新配置难度增加;单环上任一错误影响全网
总线型 一条高速主干电缆连接周围节点 信道利用率高、结构简单、便宜 同一时刻只能两节点通信,延伸距离和节点数有限;一处连接问题影响全网(局域网常用)
树型 分级集中控制 线路总长度短、成本低、易扩充、找路径方便 除叶节点外,任一节点或线路故障都会使系统受影响
网状型 节点间线路网状连接 路径多、碰撞阻塞少、局部故障不影响全网、可靠性高 关系复杂、建网不易、控制机制复杂(广域网一般用不完全连接网状)
混合型 两种以上拓扑同时使用 取长补短 网络配置难度大
蜂窝型 无线传输介质(微波、卫星、红外) 适用于城市网、校园网、企业网 无线局域网常用

5.2 按覆盖范围

类型 全称 特点
局域网 LAN Local Area Network 自备通信线路和设备,覆盖较小地理范围;没有网络通讯费用,传输快(10Mb/s~10000Mb/s)
城域网 MAN Metropolitan Area Network 覆盖城区范围,提供各种信息服务业务的高速网络
广域网 WAN Wide Area Network 租用公用通信线路和设备,覆盖较大地理范围;多个局域网串起来(广域网的底层一般都是局域网)

5.3 其他维度

维度 分类
按工作方式 集中式(一台功能强的主机分时服务远程终端)/分布式(多台独立计算机互连,如 Internet)
按传输技术 广播式网络(共享一个公共信道,总线型)/点对点式网络(节点间存在专用线路,多条路线择优选择)
按使用方式 校园网、内网(防火墙)、外网、企业网
按服务范围 公用网(电信)/专用网(军队)
按服务 通信网 ISP / 信息网 ICP
image-83f09465

六、分层:把大问题拆成小问题

6.1 为什么要分层

网络大多是分层的体系结构:每一层都建立在它的下层之上,向它的上一层提供一定的服务。一台设备的第 n 层与另一台设备的第 n 层进行通信的规则,就是第 n 层协议——收发双方同层协议必须一致,否则无法通信。

为什么?看一个"简单"的传输文件动作,之前要完成多少准备工作:

  1. 发起通信的计算机必须将数据通信的通路进行激活(清一下线路,确定好是可通过的)
  2. 要告诉网络如何识别目的主机
  3. 要查明目的主机是否开机、与网络连接是否正常
  4. 要弄清楚对方计算机中文件管理程序是否已经做好准备工作
  5. 确保差错和意外可以解决
  6. ……

这么小的一件事情就存在这么多问题,单独一个层面是很难解决的。于是把问题拆分为若干小问题,进行"分层"。

6.2 分层的基本原则

  1. 各层间相互独立,每层只实现一种相对独立的功能
  2. 每层之间的界面自然清晰、易于理解,相互交流尽可能少
  3. 结构上可分割,每层都采用最合适的技术实现
  4. 保持下层对上层的独立性,上层单向使用下层提供的服务
  5. 整个分层结构应该能促进标准化工作
image-87b6f886

6.3 三个关键概念:协议、服务、接口

概念 方向 生效范围 理解
协议 对等 对应层之间才奏效(第 4 层对第 4 层) 同层约定,第 4 层和第 4 层称为对等实体;不同层(3、4 间)不奏效
服务 自下而上,单向 相邻层之间才奏效 第 4 层享受第 3 层提供的服务;第 4 层不直接享受第 2 层服务,但都集成了——通过第 3 层间接享受
接口 桥梁 相邻两层之间 有了接口,上一层才能享受下一层提供的服务,为服务做铺垫

由此推出几条结论:

  • 网络体系结构是从功能上描述计算机网络结构的,是计算机网络的各层及其协议的集合(简称分层结构)
  • 第 n 层向第 n+1 层提供服务时,此服务不仅包含第 n 层本身的功能,还包含由下层服务提供的功能
  • 仅仅在相邻层间有接口,且所提供的具体实现细节对上一层完全屏蔽
  • 体系结构是抽象的,而实现是指能运行的一些软件和硬件
image-8dee8ac7

七、协议的三要素

在计算机网络中,通信的双方都是计算机。为了使计算机之间能正常通信,必须严格制定通信规则、约定和标准,准确地规定传输数据的格式和时序——这些规则、标准和约定就是网络通信协议

协议通常由三部分组成:

要素 管什么 一句话
语义 解释控制信息每个部分的意义,规定需要发出何种控制信息、完成什么动作、做出什么响应 要做什么
语法 用户数据与控制信息的结构和格式,以及数据出现的顺序 要怎么做
时序 对事件发生顺序的详细说明 何时做

协议要影响的四要素:规则、设备、介质、消息——规则管理消息如何发送、定向、接收和解释;设备彼此交换信息;介质把消息从一个设备传输到另一个设备;消息就是传输的信息单位。

最常用的协议族就是 TCP/IP(Internet 的标准)。TCP/IP 伴随其他协议工作,每种网络服务有对应的协议:

协议 对应服务
HTTP(超文本传输协议) 万维网(www)
SMTP(简单邮件传输协议)、POP(邮局协议) 电子邮件
XMPP、OSCAR 即时消息(Jabber、AIM)
SIP(会话初始协议) IP 电话

使用网络服务就需要使用对应服务的协议,这样才能实现两个终端的互通互信互联。

八、OSI 七层参考模型

ISO(国际化标准组织)提出的理论模型,从上到下七层:

image-75aedc6b image-362b148f image-8887d3c9
传输单位 一句话任务 代表协议
7 应用层 报文 所有能和用户交互、产生网络流量的程序 FTP、SMTP、HTTP
6 表示层 数据格式变换、加密解密、压缩恢复 JPEG、ASCII
5 会话层 建立、管理、终止会话;校验点同步 ADSP、ASP
4 传输层 报文段 / 用户数据报 端到端(进程到进程)通信 TCP、UDP
3 网络层 数据报 / 分组 把分组从源端传到目的端,路由选择 IP、ICMP、ARP、OSPF
2 数据链路层 把网络层传下来的数据组装成帧 SDLC、HDLC、PPP、STP
1 物理层 比特 在物理媒体上透明传输比特流 RJ45、802.3

8.1 应用层(7)

所有能和用户交互、产生网络流量的程序。(只有连网才能使用的程序都处于应用层,无需连网的记事本就不属于。)典型的应用层服务:文件传输 FTP、电子邮件 SMTP、万维网 HTTP。

8.2 表示层(6)

顾名思义,主要负责最后呈现在设备、屏幕上的东西——处理两个通信系统中交换信息的表示方式(语法和语义)。三个功能:

  1. 数据格式变换(翻译官):…0111011000… → 动画表情
  2. 数据加密解密:聊天中涉及"我的密码是*****",为防止传输过程中被抓包,数据传输前加密、到达目的地后解密
  3. 数据压缩和恢复:视频聊天,视频影像在链路上是被压缩的状态,到目的地后才解压缩

表示层其实不是一个单独的层次,在其他模型中它会被纳入应用层、会话层中。

8.3 会话层(5)

会话层建好连接,数据才能传过去——这就是它为表示层提供的服务:向表示层实体/用户进程提供建立连接,并在连接上有序地传输数据。这就是会话,也是建立同步(SYN)。

  • 进程:正在运行的程序(后台也算)
  • 会话间彼此独立而不影响(腾讯视频快进只会影响视频进度,而不会影响 QQ)
  • 功能:① 建立、管理、终止会话;② 使用校验点,使会话在通信失效时从校验点/同步点继续恢复通信,实现数据同步(传输大文件时断网了不用重头传,从之前停的位置开始)

8.4 传输层(4)

自下而上第一个面向端到端通信的层次(上 4 层属于端到端的通信,下 3 层属于点到点的通信),同时也是上三层资源子网和下三层通信子网的接口。主要负责主机中两个进程的通信,传输单位是报文段或用户数据报。

四大功能:

  1. 可靠传输 / 不可靠传输:可靠 = 需要得到"已收到"的答复才停止传输(有点像在线文件);不可靠 = 不管接收与否、是否丢失,发过去就完事了(给女神发"在吗")
  2. 差错控制:报文段丢了、顺序错了,传输层帮我们纠正
  3. 流量控制:控制发送方的速度(此流量非彼流量)
  4. 复用与分用:复用 = 多个应用层进程可同时使用下面运输层的服务;分用 = 运输层把收到的信息分别交付给上面应用层的相应进程

📱 复用分用例子:手机同时打开了 QQ 和微信,两个进程同时发消息——这些信息变成报文段放在一起使用传输层的服务(复用),但报文段上有标识端口号:QQ 发的标识 1,微信发的标识 2。到了接收端就识别这个端口号,明确要发送到哪个进程(分用)。

IP 与端口:端口号 port 是任何一个软件/应用都具备的,是应用的唯一代表,通常和 IP 地址在一块——IP 地址用来定位计算机,端口号用来定位计算机上的某个服务/应用。每个进程都会分配一个端口来标识,同一台计算机上端口号不能重复。协议:TCP、UDP。

8.5 网络层(3)

也叫 IP 层,最重要的一个层次。主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务,实现网际互联。传输单位是数据报

数据报与分组的关系:数据报过长时可以把它切割成一个一个小的分组再放到链路上传递,使得传输过程更灵活、消耗也更小。

四大功能:

  1. 路由选择:根据实时网络情况选择合适的路由,规划最佳路径
  2. 流量控制:协调发送端和接收端的速度
  3. 差错控制:对分组找错,可改则改,改不了就丢
  4. 拥塞控制:针对全局控制速度(比流量控制范围大)——若所有结点都来不及接收分组而要大量丢弃,网络就处于拥塞状态,要采取措施缓解

协议:IP、IPX、ICMP、IGMP、ARP、RARP、OSPF。

8.6 数据链路层(2)

网络层的下层,为网络层提供服务。主要任务是把网络层传下来的数据组装成帧(帧:数据链路层的传输单位)。

  1. 成帧:定义帧的开始和结束——对 …10011101010010101… 定义几种开始和结束的组合,定义好了才能提取出来进行下一步的解封装
  2. 差错控制:对帧错、位错有检错纠错功能,或简单丢弃防止浪费资源,或用可靠传输协议纠正
  3. 流量控制
  4. 访问(接入)控制:控制对信道的访问

协议:SDLC、HDLC、PPP、STP。

8.7 物理层(1)

把比特流转成电信号的形式放到链路上去传输,在物理媒体上实现比特流的透明传输。单位:比特。

透明传输:不管所传数据是什么样的比特组合,都应当能在链路上传送(你给什么就传什么)。直接变高低电频。

功能:

  1. 定义接口特性:连接电缆的插头要有多少个引脚?每一条引脚应该如何连接?
  2. 定义传输模式:单工(只可单方向,两方通信只能一人发送)、半双工(两边都可作为发送方和接收方,但同一时间只能一个人发——对讲机似的)、双工(类似于打电话)
  3. 定义传输速率:百兆网、十兆网
  4. 比特同步:需要"时钟",保证准确无误传输
  5. 比特编码:把 01 规定一下,用什么样的电压表示 0、什么样的电压表示 1

协议:RJ45、802.3。

8.8 发一个文件的全脉络

image-3501f97c

通过应用层里的软件发送文件 → 表示层帮忙压缩文件 → 会话层建立连接 → 传输层识别是哪个软件在发送、要发送到哪去 → 网络层找到最佳线路 → 数据链路层将数据按帧分组 → 物理层把 01 变成电信号,在线路上传播。

九、TCP/IP 模型

两个模型的出身完全不同:

  • OSI 是学者研究出的理论概念,是法律标准(先有模型后有协议)
  • TCP/IP 则是先投入实践,根据实践结果总结出的模型,是事实标准
image-5e45898d image-cd2175c2

以七层模型的思路分析 TCP/IP 参考模型:

TCP/IP 层 对应 OSI 说明
应用层 应用 + 表示 + 会话 包括所有的高层协议,把表示层和会话层都纳入其中
传输层 传输层 端到端,进程与进程的通信
网际层 网络层 和网络层差不多,最关键的部分:把数据报拆分成分组发给网络,并进行路由选择
网络接口层 数据链路 + 物理 与物理网络的接口,并未具体规定细节

TCP/IP 协议栈的"栈":得名于栈结构——TCP、IP 协议是最常用的,是这个栈结构的大头。

十、OSI 与 TCP/IP 的异同

相同点

  1. 都分层,将大问题拆分
  2. 都基于独立的协议栈的概念
  3. 都可以实现异构网络互联(不同厂家的计算机可联系起来)

不同点

  1. OSI 定义三点:服务、协议、接口
  2. OSI 先出现——模型先于协议发明,不偏向特定协议;TCP/IP 则先有协议后有模型
  3. TCP/IP 设计之初就考虑到异构网互联问题,故将 IP 作为重要层次
  4. 网络层和传输层,两模型的通信方式不同:
image-4c07a936
  • 面向连接:发送请求,连接成功后才能开始数据传输,传输完毕后必须释放连接
  • 无连接:直接进行数据传输

网络层有个重要协议 IP(强调面向无连接),所以两模型在网络层都有无连接通信。传输层是端到端、进程到进程之间的通信,主要是为了实现可靠传输而存在——为实现可靠传输就要建立好连接,所以在传输层都有面向连接通信。结合第 3 点,TCP/IP 特别看重网络层的 IP 协议、特别看重无连接的通信方式,因此 TCP/IP 在网络层只有无连接

十一、五层参考模型:考试与实际的主力

结合两者优点:OSI 的每层具体功能很清晰,TCP/IP 层次简单、功能交叉少。

image-f6c354e5
任务 协议
应用层 支持各种网络应用 FTP、SMTP、HTTP
传输层 进程间数据传输 TCP、UDP
网络层 源主机到目的主机的数据分组路由与转发 IP、ICMP、OSPF
数据链路层 把网络层传下来的数据报组装成帧 Ethernet、PPP
物理层 比特传输
image-9549c19c

十二、盲点自测

  1. ARPANET 为什么设计成"网"状? ——冷战国防需求:串联一断全断,并联(分散指挥系统)部分被摧毁仍能工作。
  2. TCP/IP 为什么能统一世界? ——1974 年问世定义了网络间传报文的方法,且允许各网内部用自己的协议、网间用 TCP/IP——不用推倒重来。
  3. 速率单位和存储单位为什么一个是 10³ 一个是 2¹⁰? ——行业惯例不同,还注意小写 b(bit)与大写 B(Byte)差 8 倍,宽带运营商报的都是 bit。
  4. 带宽、吞吐量、速率怎么区分? ——带宽是理论最高值(马路宽度),吞吐量是实际总量(实际车流总和),速率是单个终端的性质。
  5. 升级千兆宽带能解决所有卡顿吗? ——不能。高速链路只能减小发送时延,传播/排队/处理时延不受影响。
  6. 存储转发和广播的区别? ——存储转发按地址逐点转发(广域网),广播是共享信道上人人都能收到(局域网,大喇叭)。
  7. 协议和服务什么关系? ——协议是对等实体间的横向规则,服务是下层经接口向上层的纵向供给,单向且相邻。
  8. 端到端和点到点的分界在哪? ——传输层及以上是端到端(进程到进程),网络层及以下是点到点(设备到设备)。
  9. 复用分用靠什么实现? ——端口号:发送时多个进程的报文段共用传输层(复用),接收时按端口号交回对应进程(分用)。
  10. OSI 是法律标准、TCP/IP 是事实标准,差在哪? ——OSI 模型先于协议(理论先行),TCP/IP 协议先于模型(实践先行);后者因把 IP 放在核心位置而胜出。
  11. 为什么两模型的传输层都支持面向连接、网络层都支持无连接? ——传输层为了可靠传输需要建连接;网络层的 IP 是无连接的,TCP/IP 更是把无连接贯彻到底(网络层只有无连接)。

分层骨架立住了:七层各司其职,五层是学习和考试的主力。下面自底向上逐层展开协议细节。

⬅️ 00-计算机网络总览 🏠 00-基础与理论 ➡️ 物理层