Skip to content

Lec 1.0: 介绍

计网核心:分层

计算机网络的核心就是分层

具体地,对于每一层,都

  • 利用下一层提供的接口
  • 实现本层的功能和接口
  • 从而为上一层提供服务

注:物理层的下一层可以视作宇宙的物理规律,应用层的上一层可以认为是

各层简介

The TCP/IP Five-layer Network Model | Parth Shandilya

如图,这是 5-layer model。

其中

  • 应用层提供应用到应用的服务。比如允许 Chrome, Firefox 与 Apache, Nginx 之间进行通信。
  • 传输层提供进程到进程(端口到端口)的服务。
  • 通过特殊的协议,可以将不可靠的服务变成可靠的
  • 通过区分端口,允许不同进程运行在同一个主机上
    • 从而一个主机可以提供多种服务,并通过端口号区分
  • 网络层提供端到端(主机到主机)的服务。
  • 这个服务是尽力而为的,i.e. 不可靠的

  • 数据链路层提供点到点的服务。

  • i.e. 主机到主机的过程中,会有很多跳。每一跳就是由两个网卡之间交互完成。网卡之间的交互,用的就是数据链路层协议。
  • 物理层将数字信号转换成光/电信号,借助各种媒介(光缆/同轴电缆/……)进行传输

各个层的介绍和协议

网络层

传统上,通过以下两个协议来进行工作:

  • Internet Protocol
  • 收到一个 IP 分组
  • 根据路由表,找到相应的表项
  • 通过对应的物理端口进行转发
    • 如果查不到,就按照默认的路径转走
  • 路由协议
  • 路由器之间交换路由信息
  • 然后通过路由算法来算出路由表

现代路由器,使用了 SDN 的方式。如下文所述:

从技术上讲,SDN 是通过将控制平面与数据平面分离而实现的。“平面”是一个网络术语,指的是联网过程所处位置的一种抽象概念。

  • 控制平面是引导网络流量的联网过程
  • 数据平面是穿越网络的实际数据

控制平面通过建立网络路由并传达应使用哪些协议来完成这个过程。

打个比方,控制平面是在城市道路交叉口工作的交通信号灯的集合。数据平面则更像是在道路上行驶、在路口停下并遵守交通信号灯的汽车。

在仅使用物理硬件的网络设置中,必须逐一配置各个路由器或交换机。控制平面(即,路由协议,计算出路由表)与数据平面和底层网络硬件紧密相连。

使用 SDN 时,控制平面(即,网络操作系统,计算出流表)与数据平面和实际硬件是分离的,从而能够从中央位置配置控制平面。

优势:

  1. 可编程
  2. 功能强大。如
  3. 负载均衡
  4. ……
  5. All in one,比如说防火墙等功能,均可以采用 SDN 实现

数据链路层

在相邻两点之间,传输以为单位的数据。

Lec 1.1:什么是 Internet

什么是 Internet

网络

网络就是无向图。与长度和形状均无关。就是一个拓扑。

计算机网络

计算机网络就是联网的计算机所构成的系统。

具体地,这里的“计算机”可以分为

  • 主机节点,比如说(联网的)手机、冰箱、空调、Web 服务器、……
  • 是数据的源或者目标
  • 往往由硬件、支持网络协议栈的 OS 以及之上运行的网络应用程序构成
  • 别称为 host, end-system 等等
  • 数据交换节点,比如说负载均衡设备(传输层、应用层)、路由器(网络层)、交换机(链路层)等等
  • 是数据的中转节点
  • 中转节点的配合,实现了数据从源节点到目标节点的传输

另外,除了节点(计算机)以外,还有,也就是通信链路。分为

  • 接入网链路:主机连接到互联网的链路
  • 主干链路:路由器间的链路

另外,链路的容量被称为带宽

互联网

由以 TCP/IP 协议为主的一簇协议支撑起的、使用的人数最多的网络,就是互联网。

特征:

  • “网络的网络”:由各个大大小小的网络(e.g. ISP)相互连接,从而形成的 Internet of Internet
  • RFC:用于提交你认为互联网应该有的改进等
  • IETF:非营利组织。筛选靠谱的 RFC,进行编号,并放在网站上。所有 IP 及 IP 以上的协议,都在 RFC 上。

什么是协议

定义:对等层的实体在通讯过程中,应该遵守的规则集合

对等层的实体,比如

  • 两个网络软件
  • 两个 TCP 模块(通常在操作系统内核中)
  • 两个 hosts
  • 两张网卡
  • ……

协议包含语法(每个字段代表的含义)、语义(字段中的具体二进制码代表的实际意思)、时序、动作。


总结:协议定义了在两个或多个通信实体之间交换的报文格式和次序,以及在报文传输和/或接收或其他事件方面所采取的动作。

什么是 Internet:从服务角度

从应用的角度来看,互联网是分布式的应用,同时扮演基础设施的角色,为(分布式)应用提供通讯服务

  • 实际上,主机应用层以下的所有层+互联网(我们目前可以认为只包含网络层及以下)一起为应用提供了服务。
  • 提供服务的形式,就是 (socket) API
    • 分为面向连接的服务(e.g. TCP/IP 协议)和无连接的服务(e.g. UDP 协议)
  • 互联网唯一存在的目的,就是为分布式应用提供服务。
  • i.e. 如果世界上没有分布式应用,也就不需要互联网了。

Lec 1.2:网络边缘

网络的结构

从结构上考虑网络,网络可以分为三个部分:

  • 网络边缘(edge):主机、应用程序(网络存在的理由)
  • 网络核心(core):互联着的路由器、“网络的网络”
  • “复用”线路,把所有的边缘节点接到一起
  • 接入网、物理媒体(access):有线/无线通信链路
  • 将网络边缘连接到网络核心

如下图所示:

image-20240224162106227

网络边缘

  • 端系统(主机)
  • 运行应用程序
  • 比如 Web、Email
  • 两种运行模式
  • Client-Server 模式
    • Server 是主,Client 是次
    • Server 先运行,Client 后运行
    • 所有资源都在 Server 上
    • 问题:在请求超过阈值之后,对每个 Client 的服务能力会呈现断崖式下降(而非线性),体现为服务器崩溃
  • Peer-To-Peer 模式
    • 每一个端系统,同时是 Server 和 Client
    • 具体地,在某些其他端系统眼中是 Server,在另外一些端系统眼中是 Client
    • 优点:每一个 Peer 在上线之后,在消耗服务资源的同时,还贡献了服务资源

服务模式

面向连接的服务

注意:“面向连接”不是“有连接”

“面向连接”是:状态只有应用知道、TCP 知道,而网络不知道。通信状态只在端系统中维护。

“有连接”是:状态所有都知道。通信状态在中间节点中也维护。

目标:在端系统之间传输数据。

面向连接的主要特征——握手:也就是在数据传输之前做好准备

  • 不仅是应用程序做好准备(i.e. 两者互相“打了招呼”),底层协议栈也做好了准备
  • e.g. 准备缓冲区、控制位置位、超时定时器设置好等等

例子:TCP

TCP 是 Internet 上面向连接的服务。TCP 服务 [RFC 9293] 可以

  • 可靠地(不重不错不漏)、按顺序地传送数据
  • 依靠确认和重传
  • 流量控制
  • 发送方不会淹没接收方
  • 拥塞控制
  • 当网络拥塞时,发送方降低发送速率

无连接的服务

例子:UDP

TCP 是 Internet 上无连接的服务。TCP 服务 [RFC 9293] 可以

  • 不可靠地、不一定按顺序地传送数据
  • 无流量控制
  • 无拥塞控制

作用:

  1. 性能、带宽开销小
  2. 为用户实现自己的可靠/流量控制/拥塞控制协议提供可能性

总结:

  • 使用 TCP 的应用
  • HTTP, FTP, Telnet, SMTP
  • 使用 UDP 的应用
  • 流媒体、远程会议、DNS、Internet 电话

Lec 1.3:网络核心

网络核心就是路由器的网状网络

数据的传输

数据在网络的传输方式有两种:电路交换、分组交换。

image-20240224233328530

电路交换

电路交换,就是为每个呼叫预留一条专有电路(如电话网),如图 image 另外,在电路交换中,网络资源(i.e. 带宽)被分成

  • 我们为一个呼叫分配一“片”。我们可以通过“频分”“时分”“波分”等方式,实现将一条线路分成多条小链路。 image-20240224203803800
  • 举例:某一条线路的带宽为 1.536 Mbps,通过时分的方式分成 24 份(从而一片的带宽就是 64 Kbps)。一用户通过其中一片来传输 640 Kb(its) 的数据,其中建立连接的时间为 500 ms,且传播延迟不能忽略不计 image-20240224204508411

电路交换不适合用于计算机之间传输数据,是因为有以下缺点:

  • 建立连接的时间太长(以秒为单位)
  • 计算机的请求往往是突发式的,因此电路交换极大地浪费带宽

分组交换

  • 将要传送的数据分成一个个范围:分组
  • 将分组从一个路由器传到相邻路由器(hop),一段段最终从源端传到目标端
  • 每段:采用链路的最大传输能力(带宽)

虽然有以下缺陷

  • 数据以数据包为单位进行存储-转发,因此每个数据必须要等到整个数据包都传到了,才能进一步转发。如图 image-20240224233439732
  • 因此在每个节点处的延迟增加
  • 数据包有排队时间
  • 可能会有丢包

但是,我们通过分组,实现了最重要的共享性


分组交换下的多路复用,其实是统计多路复用。也就是说,并没有明确规定那一段时间给哪一个源使用,而是按需分配。

电路交换和分组交换的定量分析

假设我们有 \(N\) 个用户,每个用户在每一刻活跃的概率只有 \(p \in [0,1]\),每个用户活跃时需要的带宽为为 100 Kbps,总带宽为 1 Gbps。

如果采用电路交换,那么,\(N\) 最大为 10000。

如果采用分组交换,那么,在任意时刻(或者一个足够小的时间段内),活跃用户的数量服从二项分布 \(X \sim \operatorname{Bin}(N,p)\)。我们不妨将其近似为正态分布 \(\operatorname{N}(Np,Np(1-p))\)。取 3-sigma,我们可以令 \(Np + 3 \sqrt{Np(1-p)} < 10000\),即可保证在绝大多数时刻下,不会出现丢包的情况。

  • 假设 \(p=0.1\),那么, \(N_{max} \approx 97194\)
  • 如果总带宽只有 1 Mbps,那么,大概只能只能 35 个用户(这里也不能近似为正态分布)。
  • 在那些 3-sigma 之外的时间,我们就利用缓冲区来应对。此时,延迟就会增加。
  • 3-sigma 之外的时间服从分布 \(T_{3\sigma} \sim \lim_{k \to \infty} \operatorname{Bin}(kT,0.27\%) / k = 0.27\%\)

分组交换下的数据传输

在分组交换下,每个分组携带目标地址等 metadata,路由器根据目标地址进行路由。

这里的分组,称为数据报(datagram)

  • 同时,路由器不维护主机和主机之间通信的状态。它唯一要做的是就是:查表、转发!
  • 对于维护状态的情况,我们使用的是虚电路(Virtual Circuit)
  • 端系统向网络发送指示虚电路启动与终止的报文,以及路由器之间传递的用于建立虚电路(即修改路由器表中的连接状态)的报文被称为信令报文,用来交换这些报文的协议常称为“信令协议”。

Lec 1.4:接入网和物理媒体

接入网就是将网络边缘接入到网络核心的部分。

住宅接入:DSL + 调制解调器(modem)

很早以前,每家每户有一条电话线,可以保证传输 300 Hz ~ 3.4 kHz (人耳听力范围)的信号。

通过 modem,我们得以将 0,1 信号,调制(比如不同振幅 or 不同频率代表 0,1)成载波,通过电线传输,然后再解调成数字信号。从而,我们得以在电话线上传输数据。

Pitfall:

  • 无法同时进行上网和打电话
  • 带宽太小,只有 56 Kbps

后来,人们挖掘了 4 kHz 以上的频率用作上网,4 ~ 50 kHz 用于上行,50 ~ 1000 kHz 用于下行。从而使得上行可以达到 1 Mbps,下行可以达到 10 Mbps 左右。

住宅接入:电缆模式 + modem

不仅是电话线路,电视线路甚至电网也可以用于类似的接入。

  • HFC: hybrid fiver coax
  • 非对称:最高 30Mbps 的下行传输速率,2 Mbps 的上行传输速率
  • 线缆和光纤网络将各个家庭用户接入到 ISP 路由器
  • 各用户共享到线缆头端的接入网络

接入网:家庭网络(Ethernet + WIFI)

如图,家庭路由器通过有线、无线的方式,借助 NAT 技术,在 cable/DSL modem 的转换下,将所有设备接入了互联网。同时配备了防火墙等高级功能。

image-20240225124257925

接入网:企业接入网络(Ethernet + WIFI)

image-20240225125049372

  • 范围大
  • 有多个接入点
  • 多层交换机

广域无线接入:3/4/5G + LTE

(详见之后)

物理媒介

如图,前者是导引型媒体,后者是非导引型媒体

image-20240225131111891image-20240225131046875

Lec 1.5:Internet 结构和 ISP

互连网络结构:网络的网络

  • 端系统通过接入 ISPs 接入互联网。
  • 住宅、公司、学校等

  • 接入的 ISP 必须是互联的

  • 因为任意两个端系统可互相发送分组到对方

  • ISP 的发展和演化受到经济、政治的影响,因此十分复杂


如图,如果 ISP 采用全连接的方式(如下图),那么

  • 代价很高——\(O(n^2)\)
  • 且不可扩展(扩展的代价为 \(O(n)\)

image-20240225133933652

分层

因此,ISP 产生了分层(如下图),总体上分为 global ISP 和 regional ISP

image-20240225134115230

也就是说,将每个接入 ISP 都连接到全局 ISP(全局范围内覆盖)

同时,客户 ISPs 和提供者 ISPs 有经济合约

竞争与合作

竞争:但是,一个 global ISP 进行垄断肯定是不行的(政治/经济因素),因此,世界上有很多个 global ISPs。

image-20240225134431717

合作:同时,每个 global ISP 都有一定的客户。因此,不同 ISPs 为了实现互联,就在之间建立了互联

  • 这些互联往往是对等互联(peering link),也就是双方都不花钱的互联
  • 有时候,ISP 为了方便与多个 ISPs 互联,就接入了 IXP

image-20240225135557850

业务细分

并不是所有的端用户直接接入 global ISP。大多数端用户还是先接入 regional ISP(如图)。

这样,端用户是 regional ISP 的客户,而 regional ISP 才是 global ISP 的客户。

image-20240225135744278

互联网内容提供商(Internet Content Provider)

经常,互联网内容提供商为了

  • 降低接入 ISP 的费用
  • 提高用户体验
  • 主要是降低延迟

就会

  • 在全球特定地区(e.g. 在重要的 ISP 机房附近)建立数据中心机房
  • 降低延迟
  • 通过自建/租用的专用线缆,在各大机房之间传输数据
  • 和 ISP 谈价格的时候,由于 ISP 不需要负担太多远距离传输,因此价格便宜一些

image-20240225141033701

总体结构

image-20240225141221763

层次模型

Tier 1 ISP

  • 国家/国际覆盖,速率极高
  • 不过,通常来说,点比较少

  • 直接与其他 Tier 1 ISP 相连

  • 通过 peering link/IXP 接入

  • 与大量的 Tier 2 ISP 和其他客户网络相连

  • 连接点的名称是 Point of Presence (POP)

Tier 2 ISP

向上给 Tier 1 ISP 交钱(有时也 peering),向下收 Tier 3 ISP 的费用,和 fellow Tier 2 ISP 经常 peering。

Tier 3 ISP

向上给 Tier 1/2 ISP 交钱,向下收 local ISP 的费用。

image-20240225142509782

ISP 之间的接入方式

image-20240225142936306

Lec 1.6:分组延时、丢失和吞吐量

分组延时

在路由器缓冲区的分组队列

  • 分组到达链路的速率,超过了链路输出的能力
  • 分组等待排到队头、被传输

从而产生了排队延时。

除了排队延时以外,还有处理延时(i.e. 处理数据包的延时)、传输延时(i.e. 将整个数据包传出/传入主机的时间)和传播延时(i.e. 数据包在两台主机之间传输的时间)

其中:

  • 传输延时 \(d_\text{trans} = L / R\),取决于数据包大小 \(L\) 和带宽 \(R\)
  • 传播延时 \(d_\text{prop} = D / c'\),取决于距离 \(D\) 和介质内光速 \(c'\)
  • 一般为几微秒到几百毫秒
  • 排队延时一定意义上是随机的,取决于拥塞程度
  • 处理延时一般为微秒数量级或者更少,很多情况下可以忽略不计

总延时等于四个延时之和: $$ d_\text{nodal} = d_\text{proc} + d_\text{queue} + d_\text{trans} + d_\text{prop} $$


我们可以粗略地分析一下排队延时。

假设

  • 到达以速率 λ 遵循泊松过程,并将系统状态从 i 移动到 i + 1。
  • 实际上不是泊松过程。这是最大的问题

  • 服务时间是确定性时间 D(服务速率为 μ = 1/D)。

  • 这是准确的
    • 不过,需要考虑传播延时和处理延时之和
  • 服务器按照先到先服务 (FCFS) 原则依次为队列前端的实体提供服务。服务完成后,实体离开队列,系统中的实体数量减少 1。
  • 这是准确的
  • 缓冲区大小无限,因此对可以容纳的实体数量没有限制。
  • 缓冲区大小其实是有限的,当然我们可以以后再讨论

那么,我们就可以套用排队论中的 M/D/1 模型(当然你也可以自己用 Continuous-Time Markov Chain 来分析),可知平均等待时间: $$ \omega_Q = \frac{D \rho}{2(1-\rho)} $$ 其中

  • 载荷 \(\rho = \frac \lambda \mu = \lambda D \approx \lambda d_\text{prop} = \frac {\lambda L} R\)

从而,

image-20240225184502269

延时及(去程)路由测试工具:Traceroute

Traceroute 的大致原理,就是

  • 逐次发送 TTL (Time To Live) 为从 1 到 MAX_HOP 的数据包
  • 数据包传统上是 ICMP 协议
  • (路由器)主机接收到数据包后,会 TTL -= 1。如果发现 TTL = 0,就会丢弃,并且向源主机返回一个错误信息
  • 从而,源主机就可以计算出和中间的路由器往返时间
    • 称为 RTT(Round Trip Time)
  • 目标主机需要另外考虑。我们可以向其一个随机高位端口进行请求。大概率那个端口是没有进程占用的。从而,主机会返回一个 ICMP 数据包,通知我们端口错误的信息
  • 从而,源主机就可以计算出和目标主机往返时间

丢包和重传

当路由器的缓冲区满了之后,或者 QoS 等等,就会导致丢包。

对于丢包,我们有三种重传模式:

  1. 上一跳重传
  2. 如果链路的物理媒介本身不可靠,往往链路本身会重传(也就是“上一跳重传”),从而进行亡羊补牢
    • 比如各种非引导型介质:WIFI、……
  3. 源主机重传
  4. 如果链路的物理媒介本身可靠,往往链路本身不会重传
    • 比如各种非引导型介质:以太网、……
  5. 此时,如果仍然希望重传,那么就必须要源主机重传
    • 比如利用 TCP
  6. 不重传
  7. 同上,除了使用的是 UDP 协议

吞吐量

源主机 A 到目标主机 B 链路中的瓶颈带宽,很大程度上影响了 A 到 B 的吞吐量。

Lec 1.7:协议层次和服务模型

服务(Service): - 低层实体向上层实体提供它们之间的通信的能力 - 服务用户(service user) - 服务提供者(service provider)

原语(Primitive): - 上层使用下层服务的形式,高层使用低层提供的服务,以及低层向高层提供服务都是通过服务访问原语来进行交互的形式

服务访问点 SAP(Services Access Point): - 上层使用下层提供的服务通过层间的接口—地点 - 例子: 邮箱 - 地址(address):下层的一个实体支撑着上层的多个实体,SAP有标志不同上层实体的作用 - 可以有不同的实现,队列 - 例子: 传输层的SAP:端口(port)

数据单元

image-20240226233936956

如图,这就是上层在 SAP 上调用下层提供的 API 的方式。

  • 注意:IDU 和 PDU 是不一样的。前者是物理上传给 API 的,后者是逻辑上传给对等层实体的。

分层思想

对付复杂的系统 - 概念化:结构清晰,便于标示网络组件,以及描述其相互关系 - 分层参考模型 - 结构化:模块化更易于维护和系统升级 - 改变某一层服务的实现不影响系统中的其他层次 - 对于其他层次而言是透明的 - 分层思想被认为有害的地方? - 分层必然会带来层间交互,而交互就会带来较低的效率

Internet 协议栈

应用层:网络应用

  • 为人类用户或者其他应用进程提供网络应用服务
  • FTP, SMTP, HTTP, DNS

传输层:主机之间的数据传输

  • 在网络层提供的端到端通信基础上,细分为进程到进程,将不可靠的通信变成可靠地通信
  • TCP, UDP

网络层:为数据报从源到目的选择路由

  • 主机主机之间的通信,端到端通信,不可靠
  • IP, 路由协议

链路层:相邻网络节点间的(以帧为单位进行的)数据传输

  • 2个相邻节点的通信,点到点通信,可靠或不可靠
  • 点对点协议PPP, 802.11(wifi), Ethernet

物理层:在线路上传送bit

  • 2个相邻节点的电磁波的承载

封装和解封装

image-20240227003534052

各层次的协议数据单元

  • 应用层:报文(message)
  • 传输层:报文段(segment):TCP段,UDP数据报
  • 网络层:分组(packet)(如果无连接方式:数据报 datagram)
  • 数据链路层:帧(frame)
  • 物理层:位(bit)