第一章:计算机网络体系结构

一、计算机网络的概念

1. 理论

  • 计算机网络(Computer Networking,简称网络) 是一个将众多分散的、自治的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递(数据通信)的系统。
  • 计算机网络的组成:由若干 结点(node)和连接这些结点的 链路(link)组成。
    • 结点:可以是计算机、集线器(Hub)、交换机(Switch)、路由器(Router)等
    • 链路:可以是有线链路、无线链路

2. 计算机网络、互连网、互联网的区别

  • 计算机网络(Computer Networking):如上。
  • 互连网(internet):通过路由器把两个或多个计算机网络互相连接起来,形成规模更大的计算机网络,也可称为 “互连网”
  • 互联网(因特网、Internet):由各大 ISP(Internet Service Provider,互连网服务提供商如电信移动联通)和国际机构组建,覆盖全球范围的互连网。互联网必须使用 TCP / IP 协议 通信,互连网可使用任意协议通信。

二、计算机网络的组成、功能

1. 组成

  • 从组成部分看:硬件:软件、 协议
    • 硬件:
      • 主机(端系统,end system):如电脑、手机、物联网设备
      • 通信设备:如集线器、交换机、路由器
      • 通信链路:如网线、光纤、同轴电缆
    • 软件:方便用户使用,实现资源共享。如 Email 客户端、聊天软件等。
    • 协议:
      • 规定计算机网络中的通信规则
      • 由硬件、软件共同实现,如:网络适配器 + 软件 实现网络通信协议。
  • 从工作方式看:
    • 边缘部分:
      • 工作方式:直接为用户服务(通信、资源共享)
      • 主要由连接到互联网上的主机及其软件组成
    • 核心部分:
      • 工作方式:为边缘部分提供服务(连通性、交换服务)
      • 由大量网络和连接这些网络的路由器组成
  • 从逻辑功能看:
    • 资源子网
      • 计算机网络中运行应用程序,向用户提供可共享的硬件、软件和信息资源的部分
      • 主要由连接到互联网上的主机组成
    • 通信子网
      • 计算机网络中负责计算机间信息传输的部分。即把计算机和其他用户装置互连在一起的所有通信设备和介质的总称。
      • 主要由 通信链路 + 通信设备 + 协议 构成
      • 主机内部实现信息传输的网络适配器、底层协议属于通信子网的范畴

2. 功能

  • 数据通信 :实现计算机之间数据传输。是最基本、最重要的功能
  • 资源共享:共享硬件、软件、数据资源
  • 分布式处理:将某个复杂任务分配给网络中多台计算机处理,如大矩阵运算、MapReduce
  • 提高可靠性:网络中各台计算机互为替代机,如服务器集群网络、数据冗余备份
  • 负载均衡:网络中各台计算机共同分担繁重工作
  • 其他:满足社会需求、生活所需。

三、交换技术

1. 电路交换

  • 电路交换(Circuit Switching):通过物理线路的连接,动态地分配传输线路资源。
  • 电路交换的过程:
    1. 建立连接(尝试占用通信资源)
    2. 通信(一直占用通信资源)
    3. 释放连接(归还通信资源)
  • 优点:
    • 通信前从主叫端到被叫端建立一条 专用的物理通路,在通信的全部时间内,两个用户 始终占用 端到端的 线路资源。数据直连,传输速率高
  • 缺点:
    • 建立 / 释放连接,需要额外的时间开销
    • 线路被通信双方独占,利用率低
    • 线路分配的灵活性差
    • 交换节点不支持 “差错控制”(无法发现传输过程中的发生的数据错误)
  • 适用于:
    • 低频次、大量地传输数据

2. 报文交换

  • 报文交换(Message Switching):由控制信息和用户数据组成,由存储转发的方式传输数据。
  • 存储转发 的思想:把传送的数据单元先存储进中间节点,再根据目的地址转发至下一节点。
  • 优点:
    • 通信前无需建立连接
    • 数据以 “报文” 为单位被交换节点间 “存储转发”,通信线路可以灵活分配
    • 在通信时间内,两个用户无需独占一整条物理线路。相比于电路交换,线路利用率高
    • 交换节点支持 “差错控制”(通过校验技术)
  • 缺点:
    • 报文不定长,不方便存储转发管理
    • 长报文的存储转发时间开销大,缓存开销大
    • 长报文容易出错,重传代价高

3. 分组交换

  • 分组交换将报文(不定长)拆分为控制信息和数据
    • 控制信息:包含源地址、目的地址等
    • 数据拆分为若干个分组(Packet),每个分组(定长)包含了首部和分组数据
      • 首部(Header):即分组的控制信息,包含源地址、目的地址、分组号等
  • 优点:
    • 通信前无需建立连接
    • 数据以 “分组” 为单位被交换节点间 “存储转发”,通信线路可以灵活分配
    • 在通信时间内,两个用户无需独占一整条物理线路。相比于电路交换,线路利用率高
    • 交换节点支持 “差错控制”(通过校验技术)
  • 由上可见,分组交换继承了报文交换的优点,并改进以下问题:
    • 分组定长,方便存储转发管理
    • 分组的存储转发时间开销小、缓存开销小
    • 分组不易出错,重传代价低
  • 缺点:
    • 相比于报文交换,控制信息占比增加
    • 相比于电路交换,依然存在存储转发时延
    • 报文被拆分为多个分组,传输过程中可能出现失序、丢失等问题,增加处理的复杂度

4. 虚电路交换技术

  • 基于分组交换的交换技术
  • 虚电路交换的过程:
    1. 建立连接(虚拟电路)
    2. 通信(分组按序、按已建立好的既定路线发送,通信双方不独占线路)
    3. 释放连接

5. 交换技能性能对比

假设每一跳传播时延 = 1ms,数据传输速率 = 0.5kb/ms,报文大小 = 4kb,存储转发中间节点一定要接受完整个报文后,才能解析并转发。

  • 电路交换:建立、释放下一跳连接耗时 = 1ms,接收方处理连接请求需要 2ms。则数据传送耗时 11ms
    在这里插入图片描述
  • 报文交换:报文存储转发时延 = 2ms。则数据传送耗时 29ms。
    在这里插入图片描述
  • 分组交换:分组大小= 1kb,分组存储转发时延 = 0.5ms。则数据传送耗时 17.5ms。
    在这里插入图片描述
电路交换报文交换分组交换
完成传输所需时间👍 最少 (排除建立 / 释放连接耗时)👎🏿 最多👌🏻 较少
存储转发时延👍 无👎🏿 较高👌🏻 较低
通信前是否需要建立连接?👎🏿 是👍 否👍 否
缓存开销👍 无👎🏿 高👌🏻 低
是否支持差错控制?👎🏿 不支持👍 支持👍 支持
报文数据有序到达👍 是👍 是👎🏿 否
是否需要额外的控制信息👍 否👌🏻 是👎🏿 是 (控制信息占比最大)
线路分配灵活性👎🏿 不灵活👍 灵活👍 非常灵活
线路利用率👎🏿 低👍 高👍 非常高

四、计算机网络的分类

1. 按分布范围分类

  • 广域网(Wide Area Network,WAN)
    • 范围:几十 - 几千公里
    • 跨省 / 跨国 / 跨洲
  • 城域网(Metropolitan Area Network,MAN)
    • 范围:几千米 - 几十千米
    • 一个或几个相邻城市
    • 通信技术:常采用 “以太网技术”,因此常并入局域网范畴探讨
  • 局域网(Local Area Network,LAN)
    • 范围:几十米 - 几千米
    • 学校 / 企业 / 工作单位 / 家庭
    • 通信技术:以太网技术
  • 个域网(Personal Area Network,PAN)
    • 范围:几十米以内
    • 通常是通过无线技术将个人设备连接起来的网络,因此也常称为无线个域网(WPAN)

2. 按传输技术分类

  • 广播式网络:
    • 当一台计算机发送数据分组时,广播范围内所有计算机都会收到该分组,并通过检查分组的目的地址决定是否接收该分组。
    • 例如:所有无线网络都是广播式
  • 点对点网络:
    • 数据只会从发送方 “点对点” 发到接收方,精准送达。
    • 例如:路由器转发的数据分组

3. 按拓扑结构分类

  • 总线型结构
    • 数据 “广播式” 传输,存在 “总线争用” 的问题。
    • 例如:集线器连接的设备,在物理上是星型拓扑,在逻辑上是总线型拓扑
  • 环形结构
    • 数据 “广播式” 传输,通过 “令牌” 解决总线争用问题,令牌顺环形依次传递,拿到令牌者可使用总线。
    • 例如:令牌环网
  • 星型结构
    • 由中央设备实现数据的 “点对点” 传输,不存在 “总线争用” 问题
    • 例如:以太网交换机连接的设备,物理上和逻辑上都是星型结构
  • 网状结构
    • 数据通过各中间节点逐一存储转发,属于 “点对点” 传输。
    • 灵活、可靠性高、控制复杂、线路成本高。
    • 例如:由众多路由器构建的广域网

4. 按使用者分类

  • 公用网:
    • 向公众开放的网络。
    • 例如:宽带、手机使用的互联网
  • 专用网:
    • 仅供某个组织内部使用的网络。
    • 例如:政府、银行的内部网络

5. 按传输介质分类

  • 有线网络:如网线、光纤
  • 无线网络:如 5G、Wi-Fi、卫星

五、计算机网络的性能指标

1. 速率

  • 信道(Channel):表示某一方向传送信息的通道(信道 ≠ 通信线路),一条通信线路在逻辑上往往对应一条发送信道和一条接收信道。
  • 速率(Speed):指连接到网络上的节点在信道上传输数据的速率。也称为数据率、比特率、数据传输速率。
  • 速率单位:bit/s、b/s、bps。
  • 单位区别
    KMGT
    计网1031061091012
    机组、操作系统210220230240
  • 节点间通信实际能达到的最高速率,由带宽、节点性能共同限制。

2. 带宽

  • 带宽(bandwidth):某信道所能传送的最高数据率,单位 bps。
    • 通信原理中的带宽与计网中的带宽不同,通信原理中的带宽表示信道允许通过的信号频带范围,单位 Hz。例如光纤带宽约 500MHz。
  • 信道带宽越大,传输数据的能力越强。

3. 吞吐量

  • 吞吐量(Throughput):指单位时间内通过某个网络(或信道、接口)的实际数据量(实际的综合数据率)。
  • 吞吐量受带宽限制、受复杂的网络负载情况影响。

4. 时延

  • 时延(Delay):指数据(一个报文或分组,甚至比特)从网络(或链路)的一端传送到另一端所需的时间,也成为延迟或迟延。
  • 总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延
    • 发送时延:又名传输时延,指节点将数据推向信道所花的时间。 发送时延 = 数据长度( b i t ) 发送速率( b i t / s ) 发送时延=\frac{数据长度(bit)}{发送速率(bit/s)} 发送时延=发送速率(bit/s数据长度(bit
    • 传播时延:电磁波在信道中传播一定的距离所花的时间。 传播时延 = 信道长度( m ) 电磁波在信道中的传播速度( m / s ) 传播时延=\frac{信道长度(m)}{电磁波在信道中的传播速度(m/s)} 传播时延=电磁波在信道中的传播速度(m/s信道长度(m
    • 处理时延:被路由器处理所花的时间(如:分析首部、查找存储转发表)
    • 排队时延:数据排队进入、排队发出路由器所花的时间

H1 给 H2 发送一个数据分组。分组大小 = 1000B,H1 往链路 A 发送数据的速率为 100Mbps,路由器往链路 B 发送数据的速率为 80 Mbps。链路 A 传播时延为 0.01 ms,链路 B 传播时延为 0.05 ms。不考虑路由器的处理时延、排队时延,求传输整个分组的总时延。

  • H1 → 链路 A:分组发送时延 = 1000B / 100Mbps = 8000b / 108bps = 8 * 10-5s = 0.08ms
  • 路由器 → 链路 B:分组发送时延 = 1000B / 80Mbps = 8000b / 8 * 107bps = 10-4s = 0.1ms
  • 总时延 = 0.01 + 0.08 + 0.05 + 0.1 = 0.24ms

5. 时延带宽积

  • 时延带宽积,指一条链路中,已从发送端发出但尚未到达接收端的最大比特数。
  • 时延带宽积 = 传播时延 × 带宽。单位为 bit。

6. 往返时延

  • 往返时延(Round-Trip Time,RTT):表示从发送方发送完数据,到发送方收到来自接收方的确认总共经历的时间。
    在这里插入图片描述
  • 往返时延 RTT = t2 + t3 + t4 + t5
    • t2:数据的单向传播时延
    • t3:接收方收到数据后的处理时延
    • t4:确认的发送时延
    • t5:确认的传播时延(通常 t5 与 t2 相等)

7. 信道利用率

  • 信道利用率:某个信道有百分之多少的时间是有数据通过的。 信道利用率 = 有数据通过的时间 有数据通过的时间 + 没有数据通过的时间 信道利用率 = \frac{有数据通过的时间}{有数据通过的时间+没有数据通过的时间} 信道利用率=有数据通过的时间+没有数据通过的时间有数据通过的时间
  • 利用率低回浪费带宽资源;利用率太高可能导致网络拥塞。

六、计算机网络的分层结构

1. 分层的设计思想

  1. 将庞大而复杂的问题,转化为若干较小的局部问题。
  2. 将复杂的计算机网络在逻辑上划分为多个层次,并将各种 “功能” 安排在合适的层次中
  3. 不同类型的节点,实现的功能层次可能不一样
  4. 分层结构的设计并不唯一,可以根据实际需求增加或减少层次
  5. 同一个功能可以在多个层次中重复出现。

2. 计算机网络体系结构

  • 网络体系结构(Network Architecture):是计算机网络的各层及其协议的集合,是计算机网络及其构件所应完成的功能的精确定义(不涉及实现)
  • 实现(Implementation):是在遵循体系结构的前提下,用何种硬件或软件完成这些功能的问题。
  • 体系结构是抽象的,而实现是具体的。 每一层需要支持若干个协议,每一个协议对应实现的若干功能。
  • 三种常见的计算机网络体系结构:
    1. TCP / IP 模型:美国防部阿帕网(ARPANET)项目的后续结果,是事实上的标准。
    2. OSI 参考模型:由国际标准化组织 ISO 提出的法律标准。
    3. 五层模型:综合前两者,便于学习,用于教学。
      在这里插入图片描述

3. 各层之间的关系

  • 水平视角:
    • 实体:在计算机网络的分层结构中,第 n 层中的活动元素(软件 + 硬件)通常称为第 n 层实体。不同机器上的同一层成为对等层,同一层的实体成为对等实体
    • 协议:即网络协议(Network Protocol),是控制对等实体之间进行通信的规则的集合,是水平的
  • 垂直视角:
    • 接口:即同一节点内相邻两层的实体交换信息的逻辑接口,又称为服务访问点(Service Access Point,SAP)
    • 服务:服务是指下层为紧邻的上层提供的功能调用,是垂直的
  • 上一层实体通过接口,请求相邻下层的服务。

4. PDU、SDU、PCI

  • 协议数据单元(PDU):对等层次之间传送的数据单位。第 n 层的 PDU 记为 n-PDU。
  • 服务数据单元(SDU):为完成上一层实体所要求的功能而传送的数据。第 n 层的 SDU 记为 n-SDU。
  • 协议控制信息(PCI):控制协议操作的信息。第 n 层的 PCI 记为 n-PCI。
  • 三者的关系为:n-SDU + n-PCI = n-PDU = (n-1)-SDU。( 翻译: PDU 由 SDU 和 PCI 组成,本层的 PDU 作为下一层的 SDU)

5. 协议三要素

  • 协议由语法语义同步(时序) 三部分组成。
  • 语法:
    • 数据与控制信息的格式。
    • 例如:协议控制信息(首部)部分占几个字节;每个字节是什么含义;协议的数据部分最多有多少字节
  • 语义:
    • 需要发出何种控制信息、完成何种动作及做出何种应答。
    • 例如:协议中需要明确规定:发送方发完数据后,接收方是否需要应答,以及应答的种类有哪些(如传输成功、传输失败)
  • 同步:
    • 也叫时序。执行各种操作的条件、时序关系等,即事件实现顺序的详细说明。
    • 例如:发送方发完数据后,接收方需要立即应答。如果发送方在 10 秒内未收到传输完成应答,则发送方会再次发送数据。

七、OSI 参考模型

1. 各层的名称、顺序和功能

  • 将大的数据拆分成多个更小的数据,叫做数据的 分段
  • 将更小的数据组装成大的数据,叫做数据的 重装
  • 另外:物理传输媒体(如双绞线)属于第 0 层
  1. 物理层:
    • 单位:比特(bit)
    • 实现相邻节点之间比特(0 / 1)的传输
    • 定义电路接口参数(如:形状、尺寸、引脚数等)
    • 定义传输信号的含义、电气特性 (如:5V 代表 1,1V 代表 0;每比特电信号持续时间 0.1ms)
  2. 数据链路层:
    • 单位:帧(Frame)
    • 确保相邻节点之间的链路逻辑上无差错
    • 差错控制:检错 + 纠错;或 检错 + 丢弃 + 重传
    • 流量控制:协调两个节点的速率
  3. 网络层:
    • 单位:分组、数据报(Packet)
    • 把分组从源节点转发到目的节点
    • 路由选择:构造并维护路由表,决定分组到达目的节点的最佳路径
    • 分组转发:将 “分组” 从合适的端口转发出去
    • 拥塞控制:发现网络同色,并采取措施缓解拥塞
    • 网际互联:实现异构网络互联
    • 其他功能:差错控制、流量控制、连接建立与释放、可靠传输管理
  4. 传输层:
    • 单位:报文段(Segment)
    • 实现端到端通信(即实现进程到进程的通信,“端” 指 “端口”)
    • 复用和分用:发送端几个高层实体复用一条低层的连接,在接收端再进行分用
    • 其他功能:差错控制、流量控制、连接建立与释放、可靠传输管理
  5. 会话层:
    • 管理进程间会话
    • 会话管理:采用检查点机制,当通信失效时从检查点继续恢复通信
  6. 表示层
    • 解决不同主机上信息表示不一致的问题
    • 数据格式转换:如编码转换、压缩解压、加密解密
  7. 应用层
    • 单位:报文(Message)
    • 实现特定的网络应用
    • 功能繁多,根据应用需求设计,例如 HTTP 协议

2. 常见网络设备的功能层次

  • 主机:1 - 7 层
  • 集线器:1 层
  • 交换机:1 - 2 层
  • 路由器:1 - 3 层

八、TCP / IP 模型

1. 各层的名称、顺序和功能

  1. 网络接口层:
    • 实现相邻节点间的数据传输(为网络层传输 “分组”)。
    • 具体怎么传输不作规定(不具体描述网络接口层的功能、协议),具有更强的灵活性、适应性
  2. 网络层:
    • 只保证 “尽最大能力交付”,仅向上层提供无连接不可靠的服务(数据报)
    • 网络核心部分(路由器)的功能简单,负载低
    • 功能:路由选择、分组转发、拥塞控制、网际互联
  3. 传输层:
    • 在 TCP / IP 模型中,由传输层负责保证数据传输的正确性、可靠性
    • 可向上层提供:有连接可靠的服务(TCP)、无连接不可靠的服务(UDP)
    • 功能:复用和分用、差错控制、流量控制、连接建立与释放、可靠传输管理
  4. 应用层:
    • 功能:实现特定的网络应用(功能复杂且多样)
    • 如果某些应用需要数据格式转换、会话管理功能,就交给应用层去实现

第二章:物理层

一、通信基础基本概念

1. 信源、信宿、信号、信道

  • 信源: 信号的来源(即数据的发送方)
  • 信宿: 信号的归宿(即数据的接收方)
  • 数据: 即信息的实体(如:文字、声音、图像),在计算机内部数据通常是二进制。
  • 信道: 信号的通道(一条物理线路通常包含两条信道,即发送信道、接收信道)
  • 信号: 数据的载体(数字信号的信号值是离散的、模拟信号的值是连续的)

2. 码元

  • 每一个信号就是一个 “码元”,信号周期称为码元宽度。
    • 4 进制码元:每个码元(信号)可能有 4 种状态。
    • 8 进制码元:每个码元(信号)可能有 8 种状态。
  • 如果一个周期内可能出现 K 种信号,则 1 码元 = l o g 2 K log_2K log2K bit。(3 bit 可携带 8 种信号)
  • 优点:每个 “信号周期” 可以传输更多信息。
  • 代价:需要加强信号功能,并且对信道的要求更高。

3. 速率

  • 波特率:
    • 每秒传输几个码元
    • 单位:码元 / 秒,或波特(Baud)==> M 波特 = M 码元 / 秒 M 波特=M码元/秒 M波特=M码元/
  • 比特率:
    • 每秒传输几个比特
    • 单位:bit/s,或 b/s、bps
  • 若一个码元携带 n 比特的信息量,则波特率 M Band 对应的比特率为 M × n M×n M×n b/s

二、信道的极限容量

1. 带宽

  • 带宽(bandwidth):信道带宽越大,传输数据的能力越强。
  • 在计算机网络中,带宽表示某信道所能通过的 ”最高数据率“。单位 bps。
  • 在通信原理中,带宽表示某信道允许通过的信号频带范围。单位 Hz。

2. 噪声

  • 信号:是数据的载体,在信道上传输。
  • 噪声:对信道产生干扰,影响信道的数据传输效率。
  • 信噪比:
    • 采用无单位记法: 信噪比 = S / N = 信号的功率 噪声的功率 信噪比=S/N=\frac{信号的功率}{噪声的功率} 信噪比=S/N=噪声的功率信号的功率
    • 采用分贝(dB)记法: 信噪比 = 10 l o g 10 S N = 10 l g S N (单位 d B ) 信噪比=10log_{10}{\frac{S}{N}}=10lg{\frac{S}{N}}(单位dB) 信噪比=10log10NS=10lgNS(单位dB
  • 信噪比越高,噪声对数据传输的影响越小。

3. 奈奎斯特定理

  • 奈奎斯特定理(奈氏准则):对于一个理想低通信道(没有噪声、带宽有限的信道),信道的频率带宽为 W W W(单位 Hz),一个码元可能出现 K K K 种信号,则 极限波特率 = 2 W B a n d = 2 W l o g 2 K b / s 极限波特率=2WBand=2Wlog_2Kb/s 极限波特率=2WBand=2Wlog2Kb/s

    在一条带宽为 200 kHz 的无噪声信道上,若采用 4 个幅值的 ASK 调制,则该信道的最大数据传输速率是 2 × 200 k H z × l o g 2 4 = 800 k b p s 2×200kHz×log_24=800kbps 2×200kHz×log24=800kbps

  • 如果波特率太高,会导致 “码间串扰”,即接收方无法识别码元
  • 带宽越大,信道传输码元的能力越强
  • 奈奎斯特定理并未对一个码元最多可以携带多少比特做出解释

4. 香农定理

  • 对于一个 有噪声、带宽有限 的信道,信道的频率带宽为 W W W(单位 Hz),信噪比 S / N S/N S/N无单位记法,则 极限比特率 = W l o g 2 ( 1 + S / N ) b p s 极限比特率=Wlog_2(1+S/N)bps 极限比特率=Wlog2(1+S/N)bps

    若链接 R2 和 R3 链路的频率带宽为 8kHz,信噪比为 30 dB,该链路实际数据传输速率约为理论最大数据传输速率的 50%,则该链路的实际数据传输速率约为__40kbps__。

    • 信噪比 = 10 l o g 2 S / N = 30 d B ⟹ S / N = 1 0 3 = 1000 信噪比 = 10 log_2S/N = 30 dB \Longrightarrow S/N=10^3=1000 信噪比=10log2S/N=30dBS/N=103=1000
    • 极限比特率 = 8 k × l o g 2 ( 1 + 1000 ) ≈ 80 k b p s 极限比特率=8k×log_2(1+1000)≈80kbps 极限比特率=8k×log2(1+1000)80kbps
    • 实际传输速率 = 80 k p b s × 50 % = 40 k b p s 实际传输速率=80kpbs×50\%=40kbps 实际传输速率=80kpbs×50%=40kbps
  • 提升信道带宽、加强信号功率、降低噪声功率,都可以提高信道的极限比特率。
  • 结合奈奎斯特定理,可知,在带宽、信噪比确定的信道上,一个码元可以携带的比特数是有上限的

三、编码与调制

1. 概念

  • 编码: 二进制数据转为数字信号。
  • 解码: 数字信号转为二进制数据
  • 调制: 二进制数据转为模拟信号。
  • 解调: 模拟信号转为二进制数据
  • 变换器: 将二进制数据转换为信号。
  • 反变换器: 将信号转换为二进制数据
  • 网络适配器是编码解码器,光猫是调制解调器。

2. 常用的编码方式

  • 不归零编码(NRZ):低 0 高 1,中不变
  • 归零编码(RZ):低 0 高 1,中归零
  • 反向非归零编码(NRZI,Non-Return-to-Zero Inverted):跳 0 不跳 1 看起点,中不变
  • 曼彻斯特编码:跳 0 反跳 1 看中间中必变。 可分为:
    • 上 0 下 1(常用 IEEE 802.3)
    • 上 1 下 0
    • 以太网默认使用曼彻斯特编码
    • 曼彻斯特编码和差分曼彻斯特编码都是中必变,如果中间跳变方向和二进制能够一一对应,就是曼彻斯特编码,否则是差分曼彻斯特编码。
  • 差分曼彻斯特编码:跳 0 反跳 1 看起点中必变

在这里插入图片描述

  • 编码特点
    编码自同步能力是否浪费带宽抗干扰能力
    不归零编码不浪费弱👎
    归零编码浪费弱👎
    反向非归零编码若增加冗余位,可支持自同步浪费一点,但不多弱👎
    曼彻斯特编码浪费
    差分曼彻斯特编码浪费

3. 常用的调制方式

  • 基带信号:来自信源的数字信号,需调制后才能在某些信道上传输。
    在这里插入图片描述
  • 调幅(AM,Amplitude Modulation)
    • 又名:幅移键控(ASK,Amplitude-Shift Keying)

    假设:一个信号周期为 4 π 4π 4π 毫秒,记信号值为 y y y,记时间为 x x x,正弦波振幅为 0、1
    y = { 0 × s i n 2 x 表示二进制 0 1 × s i n 2 x 表示二进制 1 y = \begin{cases} 0×sin2x & \text{表示二进制 0} \\[2ex] 1×sin2x & \text{表示二进制 1} \\ \end{cases} y= 0×sin2x1×sin2x表示二进制 0表示二进制 1

  • 调频(FM,Frequency Modulation)
    • 又名:频移键控(FSK,Frequency-Shift Keying)

    假设:一个信号周期为 4 π 4π 4π 毫秒,记信号值为 y y y,记时间为 x x x,正弦波频率为 1、2
    y = { s i n 1 x 表示二进制 0 s i n 2 x 表示二进制 1 y = \begin{cases} sin1x & \text{表示二进制 0} \\[2ex] sin2x & \text{表示二进制 1} \\ \end{cases} y= sin1xsin2x表示二进制 0表示二进制 1

  • 调相(PM,Phase Modulation)
    • 又名:相移键控(PSK,Phase-Shift Keying)

    假设:一个信号周期为 4 π 4π 4π 毫秒,记信号值为 y y y,记时间为 x x x,正弦波相位为 0、 π π π
    y = { s i n ( x + 0 ) 表示二进制 0 s i n ( x + π ) 表示二进制 1 y = \begin{cases} sin(x+0) & \text{表示二进制 0} \\[2ex] sin(x+π) & \text{表示二进制 1} \\ \end{cases} y= sin(x+0)sin(x+π)表示二进制 0表示二进制 1

  • 正交幅值调制(QAM)
    • 将 AM、PM 结合起来,形成叠加信号
    • 若设计 m m m 种幅值、 n n n 种相位,则将 AM、PM 信号两两复合,可调制出 m n mn mn 种信号,则 QAM 的 1 码元 = l o g 2 m n log_2mn log2mn bit
    • 常用的 QAM 调制方案:QAM-16(16 种方案,1 码元 = l o g 2 16 log_216 log216 = 4 bit)、QAM-32、QAM-64、QAM-128

四、传输介质

1. 常用传输介质

  • 导向型
    • 有线传输介质,信号朝固定方向传播
    • 双绞线、同轴电缆、光纤
  • 非导向型
    • 无线传输截止,信号朝四面八方传播
  • 以太网对有线传输介质的命名规则:速度 + Base(Baseband,基带传输,即【采用曼彻斯特编码】传输数字信号) + 介质信息

    10Base5:10 Mbps,同轴电缆,最远传输距离 500 m
    10Base2:10 Mbps,同轴电缆,最远传输距离 200 m
    10BaseF*:10 Mbps,光纤。* 可以是其他信息,如 10BaseFL、10BaseFB、10BaseFP
    10BaseT*:10 Mbps,双绞线。* 可以是其他信息,如 10BaseT1S、10BaseT1L
    1000BaseT1:1000 Mbps,双绞线。
    2.5GBaseT:2.5 Gbps,双绞线。

  • 无线传输:
    • 本质上都是电磁波。电磁波的公式: C = λ ⋅ F C=λ·F C=λF C C C 为光速, λ λ λ 为波长, F F F 为频率。
    • 电磁波频率、波长呈反比关系
      • 频率越高,数据传输能力越强
      • 波长越短,“信号指向性” 越强,信号越趋于直线传播
      • 波长越长,“绕射性” 越好,也就是信号穿墙能力越强。
    • 长波更适合长距离、非直线通信。
    • 短波更适合短距离、高速通信,若用于长距离通信需建立中继站;短波信号指向性强,要求信号接收器对准信号源

  1. 双绞线:
    在这里插入图片描述

    • 主要构成:两根导线相互绞合而成,分为
      • 屏蔽双绞线(STP,Shielded),有屏蔽层
      • 非屏蔽双绞线(UTP,Unshielded),没有屏蔽层
    • 抗干扰能力:较好。绞合、屏蔽层可以提高抗电磁干扰能力
    • 代表应用:局域网、早期电话线
    • 提高绞合度、增加屏蔽层的作用:
      1. 抗电磁干扰能力强
      2. 信道噪声功率低
      3. 信道极限速率高
  2. 同轴电缆
    在这里插入图片描述

    • 主要构成:内导体(用于传输信号)+ 外导体屏蔽层(用于抗电磁干扰)
    • 抗干扰能力:好。屏蔽层带来良好的抗干扰性
    • 代表应用:早期局域网、早期有线电视
    • 内导体越粗,电阻越低,传输过程中信号衰减减小,传输距离越长。
  3. 光纤
    在这里插入图片描述

    • 主要构成:纤芯(高折射率)+ 包层(低折射率)

    • 分类:

      • 单模光纤(SMF,Single-Mode Fiber):纤芯更细,直径小于一个波长,只能传输一条光线,信号传输损耗低,适合长距离传输。
        在这里插入图片描述

      • 多模光纤(MMF,Multi-Mode Fiber):纤芯更粗,可同时传输多条光线,信号传输损耗更高,适合近距离传输,远距离传输光信号容易失真。
        在这里插入图片描述

    • 抗干扰能力:非常好,光信号对电磁干扰不敏感

    • 其他优点:信号传输损耗小,长距离传输时中继器少,很细很省布线空间

    • 利用光的全反射特性,在纤芯内传输光脉冲信号

  4. 无线传输介质

    • 无线电波:
      • 波长较长
      • 特点:穿透能力强、传输距离长、信号指向性弱
      • 如:手机信号、WiFi(频率为 2.4 GHz)
    • 微波通信
      • 也叫短波通信
      • 特点:频率带宽高、信号指向性强、保密性差(容易被窃听)
      • 如:卫星通信(卫星作为信号中继器,传播时延较大,高速卫星信号频率为 40 GHz)
    • 其他:红外线通信、激光通信等信号指向性强

2. 物理层接口的特性

  1. 机械特性:指明接口所用接线器的形状和尺寸、引脚数目和排列、固定和锁定装置等;
  2. 电气特性:指明在接口电缆的各条线上出现的电压的范围、传输速率、距离限制等;
  3. 功能特性:指明某条线上出现的某一电平的电压的意义;
  4. 过程特性:或称规程特性,指明对于不同功能的各种可能事件的出现顺序。

五、物理层设备

1. 中继器(Repeater)

  • 中继器只有两个端口,通过一个端口接收信号,将失真信号整形再生,并转发至另一端口(信号再生会产生一些时延)
  • 仅支持半双工通信(两端连接的节点不可同时发送数据,会导致冲突)
  • 中继器两个端口对应两个 “网段”

2. 集线器(Hub)

  • 本质上是多端口中继器。集线器将其中一个端口接收到的信号整形再生后,转发到所有其他端口
  • 各端口连接的节点不可同时发送数据,会导致 “冲突”
  • 集线器的 N 个端口对应 N 个 “网段”,各网段属于同一个 “冲突域”,因此 集线器不能隔离冲突域

3. 设备特性

  • 冲突域:也叫碰撞域,如果两台主机同时发送数据会导致冲突,则这两台主机处于同一个冲突域。处于同一冲突域的主机在发送数据前需要进行 “信道争用”。
  • 集线器、中继器 不能无限串联,如:10Base5 的 5-4-3 原则(最多只能串联 5 个网段,使用 4 台集线器或中继器,共有 3 个网段可以连接计算机)
  • 集线器连接的网络,物理上是星形拓扑;逻辑上是总线型拓扑,数据广播式传输,存在信道争用问题
  • 集线器连接的各网段共享带宽。
  • 集线器可以连接不同的传输介质,因此两个网段的物理层接口特性可以不同(这意味着集线器连接的网络,物理层协议可以不同)
  • 集线器如果连接了速率不同的网段,会导致所有网段速率向下兼容

第三章:数据链路层

一、数据链路层的功能

1. 基本概念

  • 使用物理层提供的 “比特传输” 服务
  • 为网络层提供服务,将网络层的 IP 数据报(分组)封装成帧,传输给下一个相邻结点
  • 物理链路:传输介质(0 层)+ 物理层(1 层)实现了相邻结点之间的物理链路。
  • 逻辑链路:数据链路层需要基于物理链路,实现相邻结点之间逻辑上无差错的 “数据链路(逻辑链路)”

2. 功能总览

  1. 封装成帧(组帧)
    • 帧定界:如何让接收方能够确定帧的界限
    • 透明传输:接收方链路层要能从收到的帧内恢复原始 SDU(服务数据单元),让网络层感受不到将分组封装成帧的过程
  2. 差错控制,发现并解决一个帧内部的位错
    • 方案一:接收方发现比特错后丢弃帧,发送方重传帧(仅需采用 检错编码
    • 方案二:由接收方发现并纠正比特错误(需采用 纠错编码
  3. 可靠传输,发现并解决帧错
    • 帧丢失
    • 帧重复
    • 帧失序
  4. 流量控制:控制发送方发送帧的速率别太快,让接收方来得及接受
  5. 介质访问控制
    • “广播信道” 需要实现此功能。广播信道在逻辑上是总线型拓扑,多个结点需争抢传输介质的使用权
    • “点对点信道” 通常不需要实现此功能。点对点信道通常意味着两个结点之间有专属的传输介质,不用抢

二、组帧(封装成帧)

1. 主要实现

  • 帧定界:如何让接收方能够确定帧的界限
  • 透明传输:接收方要能够去除 “帧定界” 的附加信息,把帧 “恢复原貌”
  • 帧由首部、数据部分、尾部构成:
    在这里插入图片描述
    • 首、尾主要是一些控制信息,如:帧定界信息、校验码、帧类型、帧序号等

2. 字符计数法

  • 原理:在每个帧开头,用一个定长计数字段(比如 8 位二进制)表示帧长
  • 帧长 = 计数字段长度 + 帧的数据部分长度
    • 计数字段长度为 1 字节,数据部分长度为 6 字节,则帧长为 7 字节,计数字段为 00000111
  • 最大缺点:任何一个计数字段出错,都会导致后续所有帧无法定界

3. 字节填充法

  • 使用 ASCII 控制字符
    • SOH,Start of Header,报头开始,0x01
    • EOT,End of Transmission,传输结束,0x04
    • ESC,Escape,换码(转义、溢出),0x1B
  • 如果帧的数据部分包含 “特殊字符”,则发送方需要在这些 “特殊字符” 前填充 “转义字符 ESC”(接收方要做逆处理)

4. 零比特填充法

  • 使用特殊的比特串 0x7E 标记帧开始、帧结尾
  • 发送方需要对帧的数据部分进行处理,每当遇到连续 5 个 1,就填充一个 0
  • 接收方需要对帧的数据部分进行逆处理,每当遇到连续 5 个 1,就删掉后面的一个 0
  • HDLC、PPP 协议使用的是零比特填充法组帧

5. 违规编码法

  • 使用违规信号,表示帧的开头和结尾,该方法需要物理层的配合
  • 例如采用曼彻斯特编码时,使用 “中间不跳变” 作为 “违规信号”,标记帧的开头、结尾

三、差错控制

1. 主要实现

  • 发现并解决一个帧内部的 “位错”
  • 异或(模 2 加)运算:两比特相异时,结果为 1,否则为 0
    • 0 ⊕ 0 = 0
    • 0 ⊕ 1 = 1
    • 1 ⊕ 0 = 1
    • 1 ⊕ 1 = 0

2. 检错编码

  • 接收方发现比特错后丢弃帧,并同志发送方重传帧
Ⅰ. 奇偶校验码

在这里插入图片描述

  • 奇校验码:整个效验码(有效信息位和校验位)中 “1” 的个数为奇数
  • 偶校验码:整个效验码(有效信息位和校验位)中 “1” 的个数为偶数。
    • 发送方:所有位进行异或运算,得到的结果即为偶校验码。
    • 接收方:所有位进行异或运算,若结果为 1 说明出错。
  • 缺点:奇偶校验码仅能检测出奇数位错误,无纠错能力。

给出两个编码 1001101 和 1010111 的奇校验码和偶校验码
设最高位为校验位,余 7 位是信息位,则对应的奇偶检验码为:
奇校验:11001101、01010111
偶校验:01001101、11010111

Ⅱ. 循环冗余校验码

在这里插入图片描述

  • 也叫 CRC 码(Cyclic Redundancy Check)

  • 基本思想:数据发送、接收方约定一个 “除数”。 K K K 个信息位 + R R R 个检验位作为 “被除数”,添加校验位后需保证除法的余数为 0。接收方收到数据后,进行除法检查余数是否为 0,若余数非 0 说明出错,则进行重传或纠错。

  • 如何构造

    设生成多项式为 G ( x ) = x 3 + x 2 + 1 G(x)=x^3+x^2+1 G(x)=x3+x2+1,信息码为 101001

    1. 确定 K 、 R K、R KR
      K K K = 信息码的长度 = 6, R R R = 生成多项式最高次幂 = 3,校验码位数 N = K + R = 9 N=K+R=9 N=K+R=9
    2. 确定生成多项式对应的二进制码
      生成多项式 G ( x ) = 1 × x 3 + 1 × x 2 + 0 × x 1 + 1 × x 0 G(x)=1×x^3+1×x^2+0×x^1+1×x^0 G(x)=1×x3+1×x2+0×x1+1×x0,对应二进制码 1101
    3. 移位
      信息码左移 R R R 位,低位补 0
    4. 相除
      对移位后的信息码,用生成多项式进行模2除法,产生(3 位 R R R 位)余数 001。对应的 CRC 码为 101001 001。 110101 1101 ∣ 101001000 ‾ 1101     ‾ 1110         1101        ‾ 0111     0000           ‾ 1110 1101        ‾ 0110     0000    ‾ 1100 1101  ⁣ ‾ 001 \begin{array}{r} 110101\\ 1101\overline{|101001000}\\ \underline{1101\;\,\quad\quad}\\ 1110\quad\;\;\;\,\\ \underline{1101\quad\;\;\,\,}\\ 0111\quad\;\,\\ \underline{0000\,\;\;\,\,\;}\\ 1110\quad\\ \underline{1101\;\;\,\,}\\ 0110\,\,\,\\ \underline{0000\,\,}\\ 1100\\ \underline{1101\!}\\ 001 \end{array} 1101011101∣10100100011011110110101110000111011010110000011001101001
  • 如何检错
    • 接收方收到 101001001,用 1101 进行模 2 除,余数为 000,代表没有出错。余数非 0,代表出错。
    • 可检测出所有奇数个错误
    • 可检测出所有双比特的错误
    • 可检测出所有小于等于检验位长度的连续错误
  • 如何纠错
    • 只用来检错,不会用来纠错,但是具有纠错能力
    • K K K 个信息位, R R R 个检验位,若生成多项式选择得当,且 2 R ≥ K + R + 1 2^R≥K+R+1 2RK+R+1,则 CRC 码可纠正 1 位错

3. 纠错编码

  • 由接收方发现并纠正比特错误
Ⅰ. 海明校验码
  • 思路:将信息位分组进行偶校验,每个分组对应一个校验位,通过校验位标注出错位置。

  • 纠错能力为 1 位,检错能力为 2 位。

  • 需要多少校验位?

    • 设信息位 n n n 位,校验位 k k k
    • k k k 位校验位可表示 2 k 2^k 2k 种状态
    • 2 k ≥ n + k + 1 2^k≥n+k+1 2kn+k+1(一种正确状态)
    n12-45-1112-2627-5758-120
    k234567

    有信息位 1010

    • 已知 n n n 为 4,由 2 k ≥ n + k + 1 2^k≥n+k+1 2kn+k+1 可知, k k k 为 3。
  • 检验位的分布
    • 检验位 P i P_i Pi 放在海明码位号为 2 i − 1 2^{i-1} 2i1 的位置
    • 信息位按顺序放到其余位置
    • 比如: P 1 P_1 P1 放在第 2 1 − 1 = 1 2^{1-1}=1 211=1 的位置, P 3 P_3 P3 放在第 2 3 − 1 = 4 2^{3-1}=4 231=4 的位置

    由上可知,信息位 4 位 1010,校验位有 3 位。

    • P 1 P_1 P1 放在位置 1, P 2 P_2 P2 放在位置 2, P 3 P_3 P3 放在位置 4
    • H 7 H 6 H 5 H 4 H 3 H 2 H 1 D 4 D 3 D 2 P 3 D 1 P 2 P 1 1 0 1 0 \begin{array}{|c|c|c|c|c|c|c|} \hline H_7 & H_6 & H_5 & H_4 & H_3 & H_2 & H_1 \\ \hline D_4 & D_3 & D_2 & P_3 & D_1 & P_2 & P_1 \\ \hline 1 & 0 &1 &&0 \\ \hline \end{array} H7D41H6D30H5D21H4P3H3D10H2P2H1P1
  • 求校验位值
    • 将信息位的位置序号用 k k k 位二进制数表示出来
    • 检验位 P i P_i Pi 与位置序号二进制数第 i i i 位为 1 的信息位归为同一组,进行偶校验

    由上可知,信息位的位置序号有 3、5、6、7,转为二进制数为
    3: 0    1    1
    5: 1    0    1
    6: 1    1    0
    7: 1    1    1
          P3  P2  P1

    • P 1 = H 3 ⊕ H 5 ⊕ H 7 = D 1 ⊕ D 2 ⊕ D 4 = 0 ⊕ 1 ⊕ 1 = 0 P_1=H_3⊕H_5⊕H_7=D_1⊕D_2⊕D_4=0⊕1⊕1=0 P1=H3H5H7=D1D2D4=011=0
    • P 2 = H 3 ⊕ H 6 ⊕ H 7 = D 1 ⊕ D 3 ⊕ D 4 = 0 ⊕ 0 ⊕ 1 = 1 P_2=H_3⊕H_6⊕H_7=D_1⊕D_3⊕D_4=0⊕0⊕1=1 P2=H3H6H7=D1D3D4=001=1
    • P 3 = H 5 ⊕ H 6 ⊕ H 7 = D 2 ⊕ D 3 ⊕ D 4 = 1 ⊕ 0 ⊕ 1 = 0 P_3=H_5⊕H_6⊕H_7=D_2⊕D_3⊕D_4=1⊕0⊕1=0 P3=H5H6H7=D2D3D4=101=0
    • H 7 H 6 H 5 H 4 H 3 H 2 H 1 D 4 D 3 D 2 P 3 D 1 P 2 P 1 1 0 1 0 0 1 0 \begin{array}{|c|c|c|c|c|c|c|} \hline H_7 & H_6 & H_5 & H_4 & H_3 & H_2 & H_1 \\ \hline D_4 & D_3 & D_2 & P_3 & D_1 & P_2 & P_1 \\ \hline 1 & 0 &1 &0&0&1&0 \\ \hline \end{array} H7D41H6D30H5D21H4P30H3D10H2P21H1P10
  • 求全校验位
    • 为了区分是 1 位错还是 2 位错,需要对整体进行偶校验

    由上可知,海明码为 1010010,加上全校验位后为 11010010

    • H 全 H 7 H 6 H 5 H 4 H 3 H 2 H 1 P 全 D 4 D 3 D 2 P 3 D 1 P 2 P 1 1 1 0 1 0 0 1 0 \begin{array}{|c|c|c|c|c|c|c|c|} \hline H_全&H_7 & H_6 & H_5 & H_4 & H_3 & H_2 & H_1 \\ \hline P_全& D_4 & D_3 & D_2 & P_3 & D_1 & P_2 & P_1 \\ \hline 1&1 & 0 &1 &0&0&1&0 \\ \hline \end{array} HP1H7D41H6D30H5D21H4P30H3D10H2P21H1P10
  • 纠错
    在这里插入图片描述

    • P 1 、 P 2 、 P 3 . . . P_1、P_2、P_3... P1P2P3... 所属各分组进行异或(分组偶校验),求得 S 1 、 S 2 、 S 3 . . . S_1、S_2、S_3... S1S2S3...
    • S S S 全为 0 且全体偶校验成功,说明无错误
    • S S S 不全为 0 且全体偶校验失败,说明有 1 位错误,纠正即可
    • S S S 不全为 0 且全体偶校验成功,说明有 2 位错误,需要重传
    • 海明码检错能力只有 2 位,因此如果位错 ≥ 3 则需另外讨论

    已知正确的海明码为 11010010,若接收方接收到 11010000,然后进行检错和纠错:

    • S 1 = P 1 ⊕ D 1 ⊕ D 2 ⊕ D 4 = 0 ⊕ 0 ⊕ 1 ⊕ 1 = 0 S_1=P_1⊕D_1⊕D_2⊕D_4=0⊕0⊕1⊕1=0 S1=P1D1D2D4=0011=0
    • S 2 = P 2 ⊕ D 1 ⊕ D 3 ⊕ D 4 = 0 ⊕ 0 ⊕ 0 ⊕ 1 = 1 S_2=P_2⊕D_1⊕D_3⊕D_4=0⊕0⊕0⊕1=1 S2=P2D1D3D4=0001=1
    • S 3 = P 3 ⊕ D 2 ⊕ D 3 ⊕ D 4 = 0 ⊕ 1 ⊕ 0 ⊕ 1 = 0 S_3=P_3⊕D_2⊕D_3⊕D_4=0⊕1⊕0⊕1=0 S3=P3D2D3D4=0101=0
    • 全体偶校验结果为 1
    • 因此 S 3 S 2 S 1 S_3S_2S_1 S3S2S1 为 010,说明只有 1 处错误,第 2 位出错,纠正即可。

四、流量控制、可靠传输

1. 相关机制

Ⅰ. 滑动窗口机制
  • 发送窗口( W T W_T WT,Window Transmit):发送方当前允许发送的帧。
    • 发送窗口之外的帧,暂不允许发送
  • 接收窗口( W R W_R WR,Window Receive):接收方当前允许接收的帧。
    • 若收到接收窗口之外的帧,直接丢弃
  • 由接收方通过 “确认机制” 控制发送方的窗口向前滑动,从而实现 “流量控制
  • 以下三种协议,本质上都是滑动窗口机制:
    1. 停止-等待协议(S-W):发送窗口 W T = 1 W_T=1 WT=1,接收窗口 W R = 1 W_R=1 WR=1
    2. 后退 N 帧协议(GBN):发送窗口 W T > 1 W_T>1 WT>1,接收窗口 W R = 1 W_R=1 WR=1
    3. 选择重传协议(SR):发送窗口 W T > 1 W_T>1 WT>1,接收窗口 W R > 1 W_R>1 WR>1
Ⅱ. 确认机制
  • 确认帧( A C K i ACK_i ACKi,Acknowledge):若接收方收到 i i i 号帧,且没有检测出 “差错”,需要给发送方返回确认帧 A C K i ACK_i ACKi
  • 否认帧( N A K i NAK_i NAKi,Negative-Acknowledge):若接收方收到 i i i 号帧,但检测出 i i i 号帧有 “差错”,需要丢弃该帧,并给发送方返回否认帧 N A K i NAK_i NAKi
Ⅲ. 重传机制
  • 超时重传:若发送方超时未收到 A C K i ACK_i ACKi,则重传 i i i 号帧
  • 请求重传:若发送方收到 N A K i NAK_i NAKi,则重传 i i i 号帧
Ⅳ. 帧编号
  • 为了支持以上机制正确运行,至少需要用 n n n bit 给帧编号
  • 要求: W T + W R ≤ 2 n W_T+W_R≤2^n WT+WR2n
  • 如果没有帧编号,接收方无法判别重复帧。

2. 停止-等待协议

  • 停止-等待协议(S-W,Stop-Wait)
    • 滑动窗口机制:发送窗口 W T = 1 W_T=1 WT=1,接收窗口 W R = 1 W_R=1 WR=1
    • 确认机制:确认帧 A C K i ACK_i ACKi
    • 重传机制:超时重传
    • 帧编号:已知 W T + W R ≤ 2 n W_T+W_R≤2^n WT+WR2n,因此 仅需 1 bit (0、1)给帧编号。
  • 实现流量控制:
    • 发送窗口向接收窗口发送帧,同时开启定时器用于超时重传
    • 接收窗口收到帧向后滑动,同时给发送窗口返回确认帧
    • 发送窗口收到确认帧后,发送窗口向后滑动
    • 接收窗口控制了发送窗口滑动速度,从而实现流量控制
  • 实现可靠传输
    • 帧丢失:
      • 发送一个帧的同时,启动定时器,若定时器超时,则自动重传,并重置定时器
    • 帧重复:
      • 发送窗口发送一个帧的同时,启动定时器
      • 接收窗口收到数据帧,并返回确认帧(返回途中丢失了),同时向后滑动
      • 发送窗口定时器超时,重传数据帧
      • 接收窗口对比帧编号,发现收到重复帧,此时丢弃重复帧,并返回重复帧的 ACK(此时没有丢失)
      • 发送窗口收到确认帧,向后滑动
    • 帧出错:
      • 发送窗口发送一个帧的同时,启动定时器
      • 接收窗口收到数据帧,但检测出差错,将此帧丢弃,且不返回 ACK
      • 发送窗口定时器超时,自动重传
    • 帧失序:由于接收窗口 W R = 1 W_R=1 WR=1,因此接收窗口只会按顺序接收数据帧,不存在数据帧失序问题

3. 后退 N 帧协议

  • 后退 N 帧协议(GBN,Go-Back-N)
    • 滑动窗口机制:发送窗口 W T > 1 W_T>1 WT>1,接收窗口 W R = 1 W_R=1 WR=1
    • 确认机制:
      • 接收方可以 “累积确认”。即连续收到多个数据帧时,可以仅返回最后一个帧的 ACK
      • 此时确认帧 A C K i ACK_i ACKi 表示接收方已收到 i i i 号帧及其之前的所有帧。
    • 重传机制:若发送方超时未收到 A C K i ACK_i ACKi,则重传 i i i 号帧,及其之后的所有帧
    • 帧编号:已知 W T + W R ≤ 2 n W_T+W_R≤2^n WT+WR2n,为了支持以上机制,因此 至少需要 n bit 给帧编号。
    • 缺点:如果接收方接收帧的速度很慢,或在信道误码率很高的情况下,可能会导致发送方的发送进度经常需要后退,传输效率低下。
  • 发送数据帧丢失(帧丢失、帧出错):
    • 若发送窗口中的某一帧丢失或被丢弃
    • 当接收方收到下一个帧时,帧编号对比失败,就会像发送窗口返回目前已正确接收的最后一个帧的 ACK
    • 发送方接收到 A C K i ACK_i ACKi,后退回 i + 1 i+1 i+1 号帧重新发送
  • 确认帧丢失(帧重复):
    • 发送方在发送帧的同时给每个帧都开启定时器
    • 若确认帧丢失,则第一个帧的定时器会超时,会重传本次发送窗口中的所有数据帧
    • 第二次发送数据帧,接收方检测到重复的帧(非法帧),返回目前已正确接收的最后一个帧的 ACK
  • 总结:
    • 收到一个 “非法帧” 时,接收方会将此帧丢弃,并返回目前已接收的最后一个正确帧的 A C K i ACK_i ACKi,以提醒发送方 “后退” 回 i + 1 i+1 i+1 号帧重新发送
    • “非法帧” 包括落在接收窗口之外的帧、检测出差错的帧

4. 选择重传协议

  • 选择重传协议(SR,Selective Repeat):
    • 滑动窗口机制:发送窗口 W T > 1 W_T>1 WT>1,接收窗口 W R > 1 W_R>1 WR>1
    • 确认机制:
      • 确认帧、否认帧
      • 接收方可以连续接收多个帧,但每个帧都需要返回 ACK
    • 重传机制:超时重传、请求重传
    • 帧编号:
      • 已知 W T + W R ≤ 2 n W_T+W_R≤2^n WT+WR2n,为了支持以上机制,因此 至少需要 n bit 给帧编号。
      • 接收窗口不能大于发送窗口,即 W R ≤ W T W_R≤W_T WRWT,通常取 W R = W T W_R=W_T WR=WT
      • 发送窗口大小 W T = 4 W_T=4 WT=4
      • 接收窗口大小 W R ≤ 4 W_R≤4 WR4,取 W R = 4 W_R=4 WR=4
      • n ≥ l o g 2 ( W T + W R ) n≥log_2(W_T+W_R) nlog2(WT+WR) n ≥ l o g 2 8 n≥log_28 nlog28,取 n = 3 n=3 n=3


      综上:用 3 bit 给帧编号,分别为 0~7

  • 帧丢失:采用超时重传机制,每个帧被发出时设置计时器,如果超时未收到对应的 ACK,就重传这个帧
  • 帧出错:采用请求重传机制,如果接收方收到一个有差错的帧,就将此帧丢弃,并返回对应的否认帧 N A K i NAK_i NAKi,主动请求发送方重传 i i i 号帧。
  • 帧重复(确认帧丢失):采用超时重传机制,若接收到重复帧,则再次返回 ACK

5. 信道利用率分析

  • 数据帧传输时延记为 T D T_D TD,2倍单向传播时延(发送数据帧和接收确认帧)记为 R T T RTT RTT,确认帧传输时延记为 T A T_A TA,发送窗口大小记为 N N N
  • 注意:信道利用率 ≤ 1
  • S-W 协议( N = 1 N=1 N=1)的信道利用率,在理想情况下, 信道利用率 = U = T D T D + R T T + T A 信道利用率=U=\frac{T_D}{T_D+RTT+T_A} 信道利用率=U=TD+RTT+TATD

    假设:信道的数据传输速率 1 kbps,数据帧长度 4 kb,信道单向传播时延 7s。

    • 若确认帧长度 1 kb,则 U = 4 4 + 2 × 7 + 1 ≈ 21 % U=\frac{4}{4+2×7+1}≈21\% U=4+2×7+1421%
      在这里插入图片描述
    • 若确认帧长度非常短,可忽略不计,则 U = 4 4 + 2 × 7 + 0 ≈ 22.2 % U=\frac{4}{4+2×7+0}≈22.2\% U=4+2×7+0422.2%
  • GBN、SR 协议的信道利用率,在理想情况下, 信道利用率 = U = N × T D T D + R T T + T A 信道利用率=U=\frac{N×T_D}{T_D+RTT+T_A} 信道利用率=U=TD+RTT+TAN×TD

    假设:发送窗口大小为 4,信道的数据传输速率 1 kbps,数据帧长度 4 kb,信道单向传播时延 7s。

    • 若确认帧长度 1 kb,则 U = 4 × 4 4 + 2 × 7 + 1 ≈ 84 % U=\frac{4×4}{4+2×7+1}≈84\% U=4+2×7+14×484%
      在这里插入图片描述
  • GBN 协议 W R = 1 W_R=1 WR=1,SR 协议 W R > 1 W_R>1 WR>1,因此同样用 n n n bit 给帧编号,GBN 的发送窗口 W T W_T WT更大,因此 GBN 的信道利用率也会更高。

6. 其他术语

  1. 滑动窗口协议:
    • S-W 协议虽然采用 “滑动窗口机制”,但不属于滑动窗口协议
    • GBN、SR 协议属于滑动窗口协议
  2. ARQ 协议
    • 即 “自动重传请求” (ARQ,Automatic repeat request)协议
    • 包含 S-W、GBN、SR 协议
  3. 连续 ARQ 协议
    • 发送窗口均大于 1,可连续发送和重传数据帧
    • 包含 GBN、SR 协议,不包含 S-W 协议

五、介质访问控制

1. 介质访问控制

  • 介质访问控制(Medium Access Control,MAC):多个结点共享同一个 “总线型” 广播信道时,可能发送 “信号冲突”。控制各节点对传输介质的访问,实现减少冲突,甚至避免冲突。
    • 早期的网络中,常用一条同轴电缆连接多个节点
    • 用集线器连接多个节点
    • WiFi、5G 等无线通信
  • 实现介质访问控制的方法:
    1. 信道划分:频分多路复用、时分多路复用、波分多路复用、码分多路复用
    2. 随机访问:ALOHA 协议;CSMA 协议、CSMA/CD 协议、CSMA/CA 协议
    3. 轮询访问:令牌传递协议

2. 信道划分

Ⅰ. 时分复用(TDM)
  • 时分复用(Time Division Multiplexing,TDM):将时间分为等长的 “TDM 帧”,每个 “TDM” 帧又分为等长的 m 个 “时隙”,将 m 个时隙分配给 m 个用户(节点)使用。
    在这里插入图片描述
  • 缺点:
    1. 每个节点最多只能分配到信道总带宽的 1 m \frac{1}{m} m1
    2. 如果某节点暂不发送数据,会导致被分配的时隙闲置,信道利用率低
Ⅱ. 统计时分复用(STDM)
  • 统计时分复用(Statistic Time Division Multiplexing,STDM):又称异步时分复用,在 TDM 的基础上,动态按需分配时隙
  • 优点:
    • 如果需要时,一个节点可以在一段时间内获得所有的信道带宽资源
    • 如果某节点暂不发送数据,可以不分配 “时隙”,信道利用率高
Ⅲ. 频分复用(FDM)
  • 如果一个信道中存在两个信号的频率区别很大,就很容易在叠加信号中分辨出来。
  • 频分复用(Frequency Division Multiplexing,DFM):将信道的总频带划分为多个子频带,每个子频带作为一个子信道,每对用户使用一个子信道进行通信。
    在这里插入图片描述
  • 优点:各节点可同时发送信号;充分利用了信道带宽(Hz)
  • 缺点:只能用于模拟信号的传输
Ⅳ. 波分复用(WDM)
  • 波分复用(Wavelength Division Multiplexing,WDM):即光的频分复用
  • 光信号的频带范围(带宽)非常大,因此很适合采用波分复用技术,将一根光纤在逻辑上拆分为多个子信道。
    在这里插入图片描述
Ⅴ. 码分复用(CDM)
  • 2G、3G 移动网络时代,节点和节点之间的通信常使用 CDMA(Code Division Multiplexing Access)技术,底层原理就是码分复用(Code Division Multiplexing,CDM)。
  1. 给各节点分配专属 “码片序列”:
    • “码片序列” 包含 m m m 个码片(信号值),可看作 m m m 维向量”(分量通常取 1 或 -1)
    • 各节点的 “ m m m 维相邻” 必须相互正交
    • 相互通信的各节点知道彼此的 “码片序列”

    例如:A 的 4 维码片序列 a ⃗ = ( 1 , 1 , 1 , 1 ) \vec{a}=(1,1,1,1) a =(1,1,1,1),B 的 4 维码片序列 b ⃗ = ( 1 , − 1 , 1 , − 1 ) \vec{b}=(1,-1,1,-1) b =(1,1,1,1),C 的 4 维码片序列 c ⃗ = ( 1 , 1 , − 1 , − 1 ) \vec{c}=(1,1,-1,-1) c =(1,1,1,1)

    • 各节点码片序列相互正交: a ⃗ ⋅ b ⃗ = 0 , b ⃗ ⋅ c ⃗ = 0 , a ⃗ ⋅ c ⃗ = 0 , \vec{a} \cdot \vec{b}=0,\vec{b} \cdot \vec{c}=0,\vec{a} \cdot \vec{c}=0, a b =0b c =0a c =0,
  2. 发送方如何发送数据:
    • 节点发送 m m m 个信号值与 “码片序列” 相同,表示比特 1
    • 节点发送 m m m 个信号值与 “码片序列” 相反,表示比特 0

    例如:A 的 4 维码片序列 a ⃗ = ( 1 , 1 , 1 , 1 ) \vec{a}=(1,1,1,1) a =(1,1,1,1)

    • 比特1: a ⃗ = ( 1 , 1 , 1 , 1 ) \vec{a}=(1,1,1,1) a =(1,1,1,1)
    • 比特0: − a ⃗ = ( − 1 , − 1 , − 1 , − 1 ) -\vec{a}=(-1,-1,-1,-1) a =(1,1,1,1)
  3. 信号在传输过程中“叠加”
    • 当多个发送方同时发送数据时,信号值会叠加(本质是多个 m m m 维向量的加法)

    例如:A 发送 (比特1) 4 维码片序列 (1,1,1,1),B 发送 (比特0) 4 维码片序列 (-1,1,-1,1)

    • 接收到的叠加信号值为 a ⃗ + ( − b ⃗ ) = ( 0 , 2 , 0 , 2 ) \vec{a}+(-\vec{b})=(0,2,0,2) a +(b )=(0,2,0,2)
  4. 接收方如何接收数据:
    • 接收方收到的是 “叠加” 信号,需要从中 “分离” 出各发送方的数据
    • 叠加信号与发送方的码片序列做 “规格化内积”,1 表示比特 1,-1 表示比特 0

    例如:叠加信号值为 (0,2,0,2)

    • 与 A 的码片序列作规格化内积: 1 m a ⃗ ⋅ ( a ⃗ + ( − b ⃗ ) ) = 1 m a ⃗ ⋅ a ⃗ = 1 \frac{1}{m}\vec{a} \cdot (\vec{a} +(-\vec{b}))=\frac{1}{m}\vec{a} \cdot \vec{a}=1 m1a (a +(b ))=m1a a =1,因此 A 发送的是比特1
    • 与 B 的码片序列作规格化内积: 1 m b ⃗ ⋅ ( a ⃗ + ( − b ⃗ ) ) = 1 m b ⃗ ⋅ b ⃗ = − 1 \frac{1}{m}\vec{b} \cdot (\vec{a} +(-\vec{b}))=\frac{1}{m}\vec{b} \cdot \vec{b}=-1 m1b (a +(b ))=m1b b =1,因此 B 发送的是比特0

3. 随机访问

Ⅰ. ALOHA 协议
  • ALOHA 协议(Additive Links On-Line Hawaii Area):是世界上最早的无线电计算机通信网,1968年美国夏威夷大学的一项研究计划的名字。
  • 纯 ALOHA:如果准备好数据帧,就立刻发送
    在这里插入图片描述
  • 时隙 ALOHA:
    • 时隙大小固定等于传输一个最长帧所需时间
    • 只有在每个时隙开始时才能发送帧
    • 时隙 ALOHA 避免了用户发送数据的随意性,降低了冲突概率,提高了信道的利用率

在这里插入图片描述

Ⅱ. CSMA 协议
  • CSMA(Carrier Sense Multiple Access)协议:载波监听多路访问协议
  • 在 ALOHA 协议的基础上提出改进:在发送数据之前,先监听信道是否空闲,只有信道空闲时,才会尝试发送
  • 节点的网络适配器需安装 “载波监听装置”

  • 1-坚持CSMA协议
    • 1 表示发送概率为 1。
    • 优点:信道利用率高,信道一旦空闲,就可以被下一个节点使用。
    • 缺点:当多个节点都已准备好数据时,信道一旦空闲,会有多个节点同时发送数据,冲突概率大。
      在这里插入图片描述
  • 非坚持CSMA协议
    • 也可记为:1-非坚持CSMA协议。
    • 优点:当多个节点都已准备好数据时,如果信道不空闲,则各节点会随机推迟一段时间再尝试监听,从而使各节点 “错开” 发送数据,降低冲突概率。
    • 缺点:信道刚恢复空闲时,可能不会被立即使用,导致信道利用率降低。
      在这里插入图片描述
  • p-坚持CSMA协议
    • p 表示发送概率为 p。
    • 优点:属于 1-坚持CSMA、非坚持CSMA的折中方案,降低冲突概率的同时,提升信道利用率。
      在这里插入图片描述
Ⅲ. CSMA/CD 协议 ⚠️‼️
  • CSMA/CD(Collision Detection):带有冲突检测的载波监听多路访问,基于 1-坚持CSMA协议进行优化。
  • CSMA/CD 协议用于早期的有线以太网(总线型);现在的有线局域网也使用以太网技术,但不一定都是总线型,也可能是星型。
    在这里插入图片描述
    在这里插入图片描述
  • 协议总结:先听后发,边听边发,冲突停发,随机重发
    • 第 10 次冲突,是随机重发的分水岭。
    • 截断二进制指数退避算法:随机等待时间 = r r r × 争用期,其中 r r r 是随机数。
      1. 如果 k ≤ 10 k≤10 k10 r r r 的取值范围是 [ 0 , 2 k − 1 ] [0, 2^k-1] [0,2k1]
      2. 如果 k > 10 k>10 k>10 r r r 的取值范围是 [ 0 , 2 10 − 1 ] [0, 2^{10}-1] [0,2101]
    • 第 16 次冲突,说明网络拥堵,立即停发,传输失败。放弃传输此帧,并报告网络层。
  • 争用期
    • 争用期 = 2 × 最远单向传播距离(考虑距离最远的两个节点)
    • 如果争用期内没检测到冲突,本次帧发送就不再可能发送冲突。
    • CSMA/CD 没有 ACK 机制,若发送过程中未检测到冲突,就认为帧发送成功

    假设:
    A、C、D、B 依次相距 2000m,即 A、B 两个节点相距最远为 6000m。
    信号传播速度为 2×108 m/s,信道带宽为 10Mbps。

    • 信号传播速度 = 2 × 1 0 8 2×10^8 2×108 m/s = 200 200 200 m/μs
    • 最大单向传播时延为 6000   m ÷ 200   m / μ s = 30   μ s 6000\,m÷200\,m/μs=30\,μs 6000m÷200m/μs=30μs
    • 信道带宽 = 10 10 10 Mbps = 10 b/μs
    • 若 A 节点往信道上发送数据,最多需要 30 μs 可以被其他所有节点监听到信号
    • 显然,A 节点往信道上发送的数据可能与其他节点发生 “冲突”。那么在最极限的情况下,从 A 节点发出数据开始,最多需要 2 × 30 μs = 60 μs,A 节点一定可以检测到冲突。
  • 最短帧长
    • 最短帧长 = 2 × 最大单向传播时延 × 信道带宽
    • 以太网规定最短帧长为 64 B
    • 若收到的帧小于最短帧长,视为无效帧
      • 小于最短帧长时,会导致节点误认为发送过程中没有发送冲突,但实际上已经发生了冲突。
      • 如果实际要发送的数据很少,可填充至合法长度后再发送。

    假设:
    A、C、D、B 依次相距 2000m,即 A、B 两个节点相距最远为 6000m。
    信号传播速度为 2×108 m/s,信道带宽为 10Mbps。

    • 最短帧长 = 2 × 30   μ s × 10 = 600   b i t 2×30\,μs×10=600\,bit 2×30μs×10=600bit
  • 最长帧长
    • 规定最长帧长可防止某些节点一直占用信道。
    • 以太网规定最长帧长为 1518 B
Ⅳ. CSMA/CA 协议
  • CSMA/CA(Collision Avoidance):带有冲突避免的载波监听多路访问。发送过程中不用检测冲突,发送前尽量避免冲突(但无法完全避免)
  • 用于 IEEE 802.11 无线局域网(WiFi),无线局域网不采用 CSMA/CD 原因:
    1. 硬件上很难实现 “边听边发,冲突检测”,因为接收信号的强度往往远小于发送信号的强度,且在无线介质上信号强度的动态变化范围很大。
    2. 存在 “隐蔽站” 问题,在无线通信中,并非所有站点都能够听见对方,发送节点处没有冲突并不意味着接收节点处就没有冲突。
  • 接入点(Access Point,AP):也就是无线 WiFi 热点
    • 家用路由器 = 路由器 + 交换机 + AP
    • 校园网 = 路由器 + n n n 个交换机 + n × m n × m n×m 个 AP
    • 所有移动站点都需要和固定站点 AP 进行通信
  • 帧间间隔(Inter Frame Space,IFS)
    • DIFS:分布式协调 IFS,最长的帧间间隔。为每次 “帧事务” 开始之前需要等待的时间
    • SIFS:短 IFS,最短的帧间间隔。为收到一个帧后需要预留的一段处理时间(如完成差错控制等)
    • PIFS:中等长度的帧间间隔,暂不关注。
  • 协议要点:
    在这里插入图片描述
    • 发送方:先听后发,忙则退避
      • 若信道空闲,间隔 DIFS 后,再发送帧(一口气发完,发送过程中不用检测冲突)
      • 若信道不空闲,则进行 “随机退避”。随机退避原理:
        1. 用二进制指数退避算法确定一段随机退避时间(倒计时)
        2. 发送方会保持监听信道,只有信道空闲时才 “扣除倒计时”,倒计时结束后立即发送帧(此时信道一定空闲)
    • 接收方:停止等待协议
      • 每收到一个正确数据都返回 ACK;
      • 若发送方超时未收到 ACK,则进行 “随机退避”
  • 解决 “隐蔽站” 问题,需要在 CSMA/CA 协议的基础引入 信道预约机制先预约,再发送
    1. 发送方广播 RTS 控制帧(先听后发,忙则退避)
      • RTS 控制帧(Request To Send,请求发送),它包括源地址、目的地址和这次通信所需的持续时间。
      • 需在 RTS 中指明预约时长。
    2. AP 广播 CTS 控制帧
      • CTS 控制帧(Clear To Send,允许发送),它包括源地址、目的地址和这次通信所需的持续时间。
      • 需在 CTS 中指明预约时长。
    3. 其他无关节点收到 CTS 后自觉 ”禁言“ 一段时间(即:虚拟载波监听机制);发送方收到 CTS 后,就可以发送数据帧
      • 如果超时未收到 CTS,说明预约失败,则 ”随机退避“ 后再次 RTS 预约。
    4. AP 收到数据帧后,进行 CRC 校验,若无差错就返回 ACK 帧
      在这里插入图片描述

4. 轮询访问

  • 主要采用令牌环网技术(Token Ring):
    • 是 IBM 公司在 1984 年开发的一种局域网技术。
    • 核心特点:环形拓扑结构,各节点 “轮询访问” 信道,不会发生信道冲突,效率高,因此适用于负载高的网络。
    • 通过令牌传递协议实现介质访问控制。
    • 无论是令牌帧还是数据帧,都只能沿单向传递。
  • 令牌帧:
    在这里插入图片描述
    • 需指明当前获得令牌的节点编号。
    • 只有获得令牌(Token)的节点才能往信道上发送数据帧
    • 如果获得令牌的节点没有数据发送,就将令牌传递下一个节点
    • 获得令牌的节点,每次只能发一帧,发完就释放令牌
  • 数据帧:
    在这里插入图片描述
    • 需指明数据帧的源地址 / 目的地址、是否已被接收、获得令牌的节点编号
    • 数据帧从源节点发出,“传递一圈” 后回到源节点
    • 数据帧 “传递一圈” 的过程中,会被目的节点复制一份数据,并将数据帧标记为 “已接收”
    • 数据帧回到源节点后,如果发现异常状况,就尝试重发;若无异常,就将令牌传递下一个节点
  • 多站接入单元(Multistation Access Units,MAU):是令牌环网的集中控制站,用于集中控制 “令牌环网”

六、局域网

1. IEEE 802

  • IEEE:Institute of Electrical and Electronics Engineers,I-Triple-E,电气电子工程师学会。
  • IEEE 802 委员会:致力于研究局域网和城域网的物理层和MAC层中定义的服务和协议,对应 OSI 网络参考模型的最低两层(即物理层和数据链路层)。层次划分为:
    • 物理层:某个具体局域网技术的研究范畴
    • 介质访问控制子层(Medium Access Control,MAC 子层):属于数据链路层,研究与访问传输介质有关的部分功能(如:组帧、差错控制、透明传输、介质访问控制等)
    • 逻辑链路控制子层(Logical Link Control,LLC 子层):属于数据链路层,研究与传输介质无关的部分功能,由 IEEE 802.2 负责,目前已解散
  • 常见的工作组:
    1. 802.2:兼容各种局域网技术(工作组已解散)
    2. 802.3:以太网技术(DEC、Intel、Xerox)
    3. 802.5:令牌环网技术(已被淘汰,工作组已解散)
    4. 802.8:FDDI 光纤分布数字接口(工作组已解散)
    5. 802.11:Wi-Fi 技术(AT&T、Nokia 等)
    6. 802.1Q:VLAN 技术
  • Wi-Fi 技术标准化成果:
    标准迭代年份
    802.11 bWi-Fi 11999 年
    802.11 aWi-Fi 21999 年
    802.11 gWi-Fi 32003 年
    802.11 nWi-Fi 42009 年
    802.11 acWi-Fi 52013 年
    802.11 axWi-Fi 62021 年
    802.11 beWi-Fi 72024 年

2. 局域网基本概念和体系结构

Ⅰ. 局域网特点
  1. 覆盖较小的地理范围
  2. 较低的时延和误码率
  3. 局域网内的各节点之间以 “帧” 为单位进行传输
  4. 支持单播、广播、多播
    • 单播:一对一发送帧,如 A → B
    • 广播:一对全部发送帧,如 A → B+C+D+E+F+G
    • 多播:一对部分发送帧,如 A → B+C+E
Ⅱ. 局域网分类
  • 按拓扑结构、传输介质、介质访问控制方法区分:
    网络类型拓扑结构传输介质介质访问控制方法
    令牌环网环形同轴电缆或双绞线令牌传递协议
    同轴电缆以太网总线型同轴电缆CSMA/CD 协议
    双绞线以太网 (集线器)物理上星型,逻辑上总线型双绞线 (集线器连接)CSMA/CD 协议
    双绞线以太网 (交换机)物理和逻辑上都是星型双绞线 (交换机连接)CSMA/CD 协议或无
    光纤以太网点对点光纤
    Wi-Fi / 802.11星型无线CSMA/CA 协议
    1. 有线局域网(LAN)
      • 令牌环网使用年份:1984-2000
      • 同轴电缆以太网:
        • 物理层采用曼彻斯特编码
        • 1980年开始商用
        • 1982年发布的第一个同轴电缆以太网标准:10Base5(10Mbps、基带信号、500m)
        • 可用中继器连接多个同轴电缆网段
      • 双绞线以太网:
        • 20世纪80年代后期出现的技术
        • 1990 年 IEEE 802.3 发布第一个双绞线以太网标准:10BaseT
        • 集线器连接的双绞线以太网只支持半双工通信
        • 1994 年后逐步由交换器取代集线器
        • 交换机连接的双绞线以太网,半双工模式下需采用 CSMA/CD 争抢信道,全双工模式下不用争抢信道。
      • 光纤以太网:
        • 20世纪90年代初出现的技术,用于扩大以太网覆盖范围
        • 1993年 IEEE 802.3 发布第一个光纤以太网标准:10BaseF
        • 光纤用于中继器 / 集线器 / 交换机之间的传输,不会直接连接终端节点
        • 使用两条光纤实现全双工通信,因此不需要考虑介质访问控制方法
    2. 无线局域网(WLAN)
      • 无线(Wireless):1 个 AP + N 台移动设备
Ⅲ. 局域网硬件架构
  • 有线局域网使用曼彻斯特编码实现串行通信,无线局域网使用电磁波模拟信号。
  • 网络适配器结构:
    • ROM:存放全球唯一的 MAC 地址(物理地址)
      • 每个 MAC 地址有 48 bit,用十六进制表示,8位一组,共 6 组。如:B0:46:92:1D:99:CD。
      • 高 24 bit 为厂商号,低 24 bit 由厂商分配
    • RAM:帧缓冲
      • 通过 I/O 总线实现与主存的并行通信
  • 网络适配器(又名:网络接口卡、网卡)负责:
    1. 负责把帧发送到局域网。关于 “将 IP 数据报(IP 分组)封装成帧”,有些系统由主机实现,有些系统由网络适配器负责。
    2. 负责从局域网接收帧。如果收到正确帧,就用 “中断” 通知 CPU;如果收到异常帧,就直接丢弃。
    3. 需要根据接入的局域网类型,按照标准实现数据链路层 + 物理层功能
    4. 需要完成数据的串 / 并行转换
    5. 需要支持帧缓冲

3. 以太网与 IEEE 802.3

Ⅰ. 以太网标准
  • 同轴电缆只支持半双工
  • 双绞线:
    1. 速率 < 2.5 Gbps 可支持半双工和全双工(节点连接时协商)
    2. 速率 ≥ 2.5 Gbps 仅支持全双工
    3. 交换机连接的终端节点都支持全双工,集线器连接的节点仅支持半双工
  • 光纤只支持全双工
  • 各种传输介质的适用情况
    标准名称传输媒体编码拓扑结构最大段长最多节点数目
    10Base5同轴电缆(粗缆)曼彻斯特编码总线型500m100
    10Base2同轴电缆(细缆)曼彻斯特编码总线型185m30
    10Base-T非屏蔽双绞线曼彻斯特编码星型100m2
    10Base-F光线对(850nm)曼彻斯特编码点对点2000m2
  • 几种高速以太网技术(速率 > 100 Mbps)
    标准名称传输速率传输介质通信方式介质访问控制协议
    100Base-T 以太网100 Mb/s双绞线半双工、全双工CSMA/CD 或 无
    吉比特以太网1 Gb/s双绞线或光纤半双工、全双工CSMA/CD 或 无
    10 吉比特以太网10 Gb/s双绞线或光纤全双工
Ⅱ. 以太网 MAC 帧
  • 有两种常见的以太网 MAC 层标准:
    1. 常用:DEC、Intel、Xerox 推出的 DIX Ethernet V2 标准
    2. IEEE 802.3 推出的 IEEE 802.3 标准
    • 两种标准在 “帧” 格式是有细微差别。

  • V2 标准的以太网 MAC 帧:
    • 记忆口诀:6 6 2 N 4,收发协数验
    • 每个帧的长度范围是:64 ~ 1518 字节
      在这里插入图片描述
    • 前导码:
      • 把帧交给物理层后,会在帧首插入一个 8 字节的前导码(7 同步,1 定界)
      • 其中前 7 字节为 1、0 交替的前同步码
      • 最后 1 字节为帧开始定界符
    • 目的地址:6 字节(48 bit),用于指明接收方 MAC 地址
    • 源地址:6 字节(48 bit),用于指明发送方 MAC 地址
    • 类型:2 字节,指明网络层协议
    • 数据
      • 限制了最短、最长帧长:46 ~ 1500 字节
      • IP 数据报太长,就 ”分片“;太短,就 ”填充“
    • FCS:4 字节,记录 CRC 校验码,用于差错控制
    • 帧结尾定界(物理层)采用 ”违规编码法”,且一个帧传完会留一段间隙

  • IEEE 802.3 标准的以太网 MAC 帧:
    • 记忆口诀:6 6 2 N 4,收发数验
    • 与 V2 标准的帧类似,只是把协议变为了长度,用于记录数据部分的长度。
Ⅲ. 帧传播
  • MAC 地址是数据链路层的概念。路由器、交换机有 MAC 地址,集线器没有 MAC 地址
  • 冲突域
    • 如果两个结点同时发送数据,会导致冲突,则二者处于同一个 “冲突域”
    • 交换机隔离冲突域,但不隔离广播域
  • 广播域
    • 目的地址全 1 表示 “广播帧”,会被局域网内的所有结点接收。
    • 如果一个结点发送广播帧,可以被另一个结点接收,则二者处于同一个 “广播域”
    • 路由器隔离冲突域,也隔离广播域,路由器收到广播帧后,不会再转发至其它网络,只有同一个局域网内的各节点才属于同一个 “广播域”。
  • 集线器不隔离冲突域,也不隔离广播域

如图:在这里插入图片描述

  • 单播帧:

    • A → C:仅 C 能收到并接收帧
    • A → F:E、F、G 能收到,仅 F 接收帧
    • E → A:F、G、A 能收到,仅 A 接收帧
    • E → F:F、G 能收到,仅 F 接收帧
  • 广播帧:

    • A 发出广播帧,B、C、D、E、F、G、R 都能收到并接收帧
    • E 发出广播帧,A、B、C、D、F、G、R 都能收到并接收帧

4. VLAN 与 IEEE 802.1Q

Ⅰ. 基本概念
  • 虚拟局域网(Virtual Local Area Network,VLAN)
  • VLAN 出现原因:
    • 大型局域网是一个很大的广播域,容易出现 “广播风暴”
    • 局域网内可能有一些敏感节点,不利于信息安全
  • VLAN 特点:
    • 可将一个大型局域网分割成若干个较小的 VLAN,每个 VLAN 是一个广播域,每个 VLAN 对应一个 VID
    • 划分 VLAN 需要使用支持 VLAN 功能的以太网交换机来实现。
  • VLAN 的划分方式:
    1. 基于接口:在交换机内配置 VID 与 接口号的映射关系。
    2. 基于 MAC 地址:在交换机内配置 VID 与 MAC 地址的映射关系。
    3. 基于 IP 地址
      • 在交换机内配置 VID 与 IP 地址的映射关系;
      • 这种方式可以让 VLAN 范围跨越路由器,让多个局域网的主机组成一个 VLAN
      • 需要网络层功能支持,且交换机会更复杂
Ⅱ. 802.1Q 帧
  • 主机与交换机之间传输标准以太网帧(V2标准),交换机与交换机之间(干线链路)传输 802.1Q 帧
  • 相较于标准以太网帧,在中间插入了 4 字节的 VLAN 标签

在这里插入图片描述

  • 记忆口诀:6 6 4 2 N 4,收发V协数验
  • 4 字节 VLAN 标签 = 16+4+12 bit = 固定 + 随便 + VID
    • 固定:802.1Q 标签类型,固定为 0x8100,表示这是 802.1Q 帧;
    • 随便:无意义的 4 bit,凑满 2 字节
    • VID:12 bit 指明发送方所属的 VLAN 的 VID

5. 无线局域网与 IEEE 802.11

Ⅰ. 基本概念
  • 无线局域网的分类
    1. 有固定基础设施的无线局域网,如 802.11 无线局域网(Wi-Fi)
    2. 无固定基础设施移动自组织网络,如苹果隔空投送(AirDrop)、华为分享(Huawei Share)
  • 一些名词:
    • 基本服务集(Basic Service Set,BSS)
      • 一个基本服务集包含 1 个基站(AP)和多个移动站
      • 包含两个属性:
        • 服务集标识符(SSID):无线局域网名字,不超过 32 字节。
        • 基本服务区(BSA):基本服务集能覆盖的地理范围。
    • 扩展服务集(ESS):将多个 AP(基本服务集)连接到同一个分配系统(DS),组成一个更大的服务集,如校园网。
    • 门户(Portal):可将 802.11 无线局域网接入 802.3 有线局域网
      • AP 与移动站之间通过无线链路(802.11 帧)传输
      • AP 与 AP之间、AP 与路由器之间、AP与以太网交换机之间通常用有线链路(以太网帧)传输
      • AP 通常具备 “帧格式转换” 功能,可以将无线链路上传输的 802.11 帧格式,与有线链路上传输的以太网帧格式相互转换
    • 漫游:一个移动站从一个基本服务集切换到另一个基本服务集,仍然可以保持通信。
  • 802.11 无线局域网
    • 星型拓扑,中心称为接入点(AP),也可称为无线接入点(WAP)
    • 使用 CSMA/CA 协议实现介质访问控制
    • 两个移动站之间不能直接通信,必须通过基站(AP)转发帧
Ⅱ. 802.11 帧
  • 帧分类:
    1. 数据帧
    2. 控制帧:如 ACK、RTS、CTS
    3. 管理帧:如探测请求 / 探测响应帧,用于发现 Wi-Fi
  • 数据帧格式:
    • 记忆口诀:
      • 30 N 4 首数验,首部 3+1 地址
      • 九十比特表去来,帧的中转靠 AP
      • 去往 AP 中起止,来自 AP 止中起
        在这里插入图片描述
    • 数据帧 MAC 首部,占 30 字节,主要关注:
      1. 控制帧占 2 字节:
        • 类型:管理帧 00、控制帧 01、数据帧 10
        • 子类型:数据帧 0000、RTS 1011、CTS 1100、ACK 1101
        • 去往 AP:位于控制帧的第 9 bit,0 可记为 false1 可记为 true 即当前帧是移动站发往 AP 的
        • 来自 AP:位于控制帧的第 10 bit,1 表示当前帧是 AP 发往移动站的
      2. 持续期占 2 字节:用于表示在本帧结束后还需占用信道多少实践(单位微秒 μs)
      3. 地址 1:表示发往结点的 MAC 地址,可为 AP 和目的地址
      4. 地址 2:表示发送结点的 MAC 地址,可为源地址和 AP
      5. 地址 3:如果地址 1(发往地址)是 AP 则该地址为目的地址,如果地址 1 是目的地址则该地址为源地址
    • 数据帧帧主体:占 0 ~ 2312 字节
    • 数据帧 MAC 尾部:占 4 字节,为 CRC 校验码,用于差错控制
  • 控制帧:
    1. RTS(Request To Send,请求发送)帧格式
      在这里插入图片描述
      • 帧控制字段中,类型为 01,子类型为 1011
    2. CTS(Clear To Send,允许发送)帧格式
      在这里插入图片描述
      • 帧控制字段中,类型为 01,子类型为 1100
    3. ACK(Acknowledge,确认)帧格式同 CTS 帧
      • 帧控制字段中,类型为 01,子类型为 1101

七、广域网

1. 基本概念

2. PPP 协议

八、以太网交换机

1. 概述

  • 交换机 = 多端口网桥
  • 交换机工作在数据链路层,可以根据目的 MAC 地址转发帧
  • 交换机每个端口通常支持全双工通信,如果该端口与集线器连接则使用半双工通信

2. 自学习功能

  • 交换表
    • 初始为空,记录【MAC 地址,端口号】的对应关系
    • 每收到一个帧,就将 “发送方” 的【MAC 地址,端口号】更新到交换表(即只记录发送方
    • 为动态新增和删除结点,交换表中每个表项都有 “有效时间”,过期表项自动作废
  • 转发帧:
    • 如果 不知道 “接收方” 在哪里,就把帧 广播 到除入口外的其他端口(即当作广播帧处理)
    • 如果 知道 “接收到” 在哪里,就把帧 精准转发 至某个端口

3. 交换方式

  • 直通交换方式
    • 类似于电路交换
    • 只需要知道帧的目的地址(6字节,48 bit),就能决定应该从哪个端口转发
    • 优点:转发时延低
    • 缺点:不适用于需要速率匹配、协议转换或差错检测的线路
  • 存储转发交换方式
    • 先把帧完整地接收到交换机内部的高速缓存中,进行差错检测等必要处理,再根据交换表决定从哪个端口转发出去
    • 优点:适用于需要速率匹配、协议转换或差错检测的线路
    • 缺点:转发时延高

第四章:网络层

一、网络层的功能

1. 基本概要

  • 网络层为传输层提供服务,将传输层的数据帧封装成 “IP 数据报”。网络中的路由器根据 IP 数据报首部中的源 IP 地址、目的 IP 地址进行 “分组转发”。因此,网络层实现了 “主机到主机” 的传输
  • 数据链路层为网络层提供服务,将网络层的 IP 数据报(分组)封装成帧,传输给下一个相邻结点(实现相邻节点的传输)

2. 功能总览

  1. 异构网络互联
    • 异构:每个网络的拓扑结构不同、物理层与数据链路层的实现不同、主机类型也各不相同
      • 接入网络的每台主机至少拥有一个 IP 地址
      • 通常,路由器的每个接口都需要分配一个 IP 地址(最新技术标准已经取消了这个强制要求)
    • 实现互联的设备:路由器(Router),在 TCP/IP 文献中,路由器也称为网关(Gateway)
  2. 路由与转发
    • 路由:
      • 各个路由器之间相互配合,规划 IP 数据报(分组)的最佳转发路径
      • 各个路由器需要运行 “路由协议”,最终生成各自的 “路由表
    • 转发:
      • 一台路由器,根据自己的 “转发表”,将收到的 IP 数据报从合适的接口转发出去
      • 转发表是精简版的路由表,更精简的数据结构有助于快速检索
  3. 拥塞控制
    • 拥塞
      • 原因:网络上出现过量分组,超负荷,引起网络性能下降
      • 现象:网络上的分组数增加,但吞吐量反而降低

      比如路上车多了,就会堵车

    • 拥塞控制方法:
      1. 开环控制(静态的方法):部署网络时,就提前设计好预防拥塞的方法,一旦网络系统开始运行,就不再修改
      2. 闭环控制(动态的方法):动态监视网络状态,及时发现哪里发生拥塞,并将拥塞信息传递给相关路由器(如:通过 ICMP),相关路由器及时调整 “路由表”

二、IPv4

  • IP 协议(Internet Protocol,网际协议)是互联网的核心。
  • ARP 协议用于查询同一个网络中的【主机 IP 地址,MAC 地址】之间的映射关系
  • ICMP 协议用于网络层实体之间相互通知 “异常事件”
  • IGMP 协议用于实现 IP 组播
    在这里插入图片描述

1. IPv4 数据报

  • IP 数据报也称为 IP 分组,格式如下:
    在这里插入图片描述
  • 首部包括:固定部分(20 B),可变部分(0 ~ 40 B)
  • 版本:占 4 bit,用于区分网络层使用的 IP 协议版本(v4、v6)
  • 首部长度:占 4 bit,表示 IP 数据报首部占多少字节,以 ×4B 为单位
  • 区分服务:占 8 bit,不用管一般用不到
  • 总长度:占 16 bit,表示 IP 数据报总共占多少字节(涵盖首部、数据部分),以 ×1B 为单位
  • 标识:占 16 bit,由 IP 数据报的 “源主机” 生成,通常是自增序列
  • 标志:占 3 bit
    • 最低位 MF(More Fragment):MF=1 表示后面还有分片,MF=0 表示这是最后一个分片
    • 次低位 DF(Don‘t Fragment):DF=1 表示不允许被分片,DF=0 表示允许被分片
    • 最高位不管
  • 片偏移:占 13 bit,表示数据部分在 “被分片前” 的位置,以 ×8B 为单位
  • 生存时间:占 8 bit,常记为 TTL
    • 是数据报在网络中可通过的路由器数的最大值
    • TTL 的初始值通常由源主机设置;
    • 每经过一个路由器,路由器就将 TTL 减 1,如果 TTL 减到 0,就直接丢弃分组,并向源主机发送 ICMP 报文
  • 协议:占 8 bit,用于说明当前数据报为哪个协议服务(TCP 是 6,UDP 是 17)
  • 首部校验和:占 16 bit
    • 每个路由器仅校验首部,而不校验数据部分
    • 如果该字段设为全 0,表示不用校验
    • 校验和的计算方法与 UDP 相同
  • 源地址、目的地址:各占 32 bit,IPv4 地址,字面意思。
  • 最大传送单元(MTU):一个数据链路层数据帧能承载的最大数据量。以太网的 MTU = 1500 B
  • 分片问题
    • 实际传输过程中,“数据部分” 的长度受下一段链路的最短 / 最长帧长限制,如果一个 IP 数据报的总长度超出了下一段链路的 MTU,就需要将 “数据部分” 分片
      在这里插入图片描述
    • 每个分片都是一个可以被单独转发的 IP 数据报,都包含首部
    • IP 数据报的 “分片” 可能在源主机、或任何一个路由器中发生
    • 只有目的主机才会对分片进行 “重组”
    • 各分片有可能乱序到达目的主机
    • 由于首部的 “片偏移” 字段是以 ×8B 为单位,因此,除了最后一个分片外,其他每个分片的数据部分必须是 8B 的整数倍

2. IPv4 地址

  • IPv4 协议发明于 1981 年。地址位数为 32 位(232 ≈ 42亿),IP 地址资源由 ICANN(互联网名字和数字分配机构)进行分配。
    在这里插入图片描述
  • IP 地址的两级结构:<网络号, 主机号>
    • IP 地址有 32 bit,8 bit 一组,分为 4 组,每组用十进制表示
    • 最初的 IP 地址分配要求每台主机、每个路由器接口被分配的 IP 地址都是全球唯一的
    • 从属于同一个网络的所有主机、路由器接口的 IP 地址 “网络号” 都相同
    • 网络号不定长,可根据前几个比特判断类别(A、B、C、D、E),从而推测出网络号占几位
  • 路由器和路由器连接的接口可以不分配 IP 地址,但路由器和其他节点连接的接口必须分配 IP 地址
  • 当一台新主机接入网络时,需要给它分配一个 IP 地址,并配置 “默认网关”(网关就是路由器)
  • 特殊的 IP 地址
    • 这些特殊地址 不能 指派给网络中的任何一台主机或路由器 “私用”
    • 如下表中,当网络号确定,主机号全 0、全 1 不可被私用。说明,如果一个网络中,主机号占 N N N bit,那么这个网络中,最多支持 2 N − 2 2^N-2 2N2主机和路由器
    • 下表中已被确定的网络号或主机号记为 Y Y Y
      网络号主机号作为分组 源地址作为分组 目的地址代表的含义
      Y Y Y全 0表示整个网络本身(只能用于路由表、转发表)
      Y Y Y全 1向网络号为 Y Y Y 的网络广播 IP 分组
      0 Y Y Y表示本网络中主机号为 Y Y Y 的主机
      全 0全 0本网络上的主机(会在 DHCP 协议中使用)
      全 1全 1向本网络广播 IP 分组
      127非全 0 或非全 1 的任何数环回自检地址。表示一台主机本身,用于本地软件环回测试

3. 子网划分与子网掩码

Ⅰ. 基本概念
  • 子网划分
    • 是初代 IP 地址的升级版,子网划分前是两级结构,子网划分后是三级结构:<网络号,子网号,主机号>
    • 原理:假设有一个 IP 地址段,原网络号不变(不能动),原主机号占 n n n bit,那么可以将前 k k k bit 划出来作为子网号,用剩余的 n − k n-k nk bit 作为主机号,这样就能划分出 2 k 2^k 2k 个子网(每个子网包含的 IP 地址块大小相等)
    • 每个子网中,主机号不能分配为全 0 / 全 1(子网本身和子网广播地址)
  • 子网掩码
    • 子网掩码为 32 bit,子网地址(网络号 + 子网号)有 n n n 位,子网掩码的高 n n n 位就为 1,低 32 − n 32-n 32n 位为 0
    • 用子网掩码、IP 地址 逐位与,算出 <网络号,子网号>(可合称为 “网络前缀”)。只有网络前缀相同的 IP 地址,才归属于同一个网络(或子网)
    • 如果一个网络内部进行了子网划分,那么这个网络中的每台主机、每个路由器接口都需要配置 IP 地址、默认网关、子网掩码
    • 如果一台路由器支持子网划分技术,那么在它的转发表中,需要包含 <目的网络号,子网掩码,转发接口>
    • 子网掩码的 CIDR 记法:比如 255.255.255.0 有 24 个 1,就记为 IP/24
Ⅱ. 默认设置
  • 默认子网掩码
    • 如果一个传统网络(A、B、C 类)内部没有进行子网划分,那么可以将对应此网络的转发表项设置为 “默认子网掩码”
    • A 类默认 255.0.0.0、B 类默认 255.255.0.0、C 类默认 255.255.255.0
  • 默认路由
    • 默认路由(默认转发表项)设置全 0 0.0.0.0:<目的网络号全 0,子网掩码全 0>
    • 在路由转发表中,如果所有表项都不匹配,那么将从 “默认路由” 转发出去
Ⅲ. 主机发送 IP 数据报的过程
  1. 判断目的主机和本机是否属于同一网络
    1. 检查本机 IP 地址和目的 IP 地址的网络前缀是否相同(需要用本机配置的子网掩码 “逐位与”)
    2. 若网络前缀相同,说明目的主机和本机属于同一个网络
    3. 若网络前缀不同,说明不属于同一个网络
  2. 将 IP 数据报封装成 MAC 帧并发送到链路上
    • 如果目的主机与本机属于同一个网络,就通过 ARP 协议找到目的主机的 MAC 地址,再将 IP 数据报封装成帧,并将帧发送给目的主机
    • 如果目的主机与本机不属于同一个网络,就通过 ARP 协议找到默认网关的 MAC 地址,再将 IP 数据报封装成帧,并将帧发送给默认网关
Ⅳ. 路由器转发 IP 数据报的过程
  1. 路由器的某个接口收到一个 IP 数据报
  2. 对 IP 数据报首部进行校验,并从中找到目的 IP 地址
  3. 查 “转发表”
    • 转发表的表项包含 <目的网络号,子网掩码,转发接口>
    • 检查目的 IP 地址与每个表项能否匹配(将目的 IP 地址、子网掩码 “逐位与”,匹配表项中的目的网络号)
    • 至少 “默认路由” 表项一定是可以匹配成功的(兜底)
  4. 转发
    • 根据查转发表的结构,将 IP 数据报从匹配的接口转发出去
    • 如果匹配的 “转发接口” 和该 IP 数据报的入口相同,就不用再把 IP 数据报转发回去

4. 无分类编址 CIDR

  • 无分类编址(Classless Inter-Domain Routing,CIDR),即无类别域间路由选择。
    • 传统 IP 地址分配方案分配不灵活,利用率低,为缓解 IP 地址耗尽,于 1993 年推出 CIDR
    • CIDR 取消了 IP 地址传统的 A/B/C/D/E 分类,IP 地址块分配更灵活,利用率更高,一定程度上缓解了 IP 地址耗尽
    • CIDR 的 IP 地址 = <网络前缀,主机号>,其中网络前缀不定长
    • CIDR 记法:192.168.1.1/24,表示在这个 IP 地址中,网络前缀占 24 位,主机号占 8 位
  • 定长子网划分:与传统的子网划分技术同理
    • 在一个 CIDR 地址块中,把主机号前 k k k bit 抠出来作为定长子网号,这样就能划分出 2 k 2^k 2k 个子网(每个子网包含的 IP 地址快大小相等)
    • 缺点:每个子网都一样大,不够灵活,IP 地址利用率低,浪费有限的 IP 地址资源
  • 变长子网划分
    • 在一个 CIDR 地址块中,划分子网时,子网号长度不固定(每个子网包含的 IP 地址块大小不同)
    • Tips:点对点链路是一个最小的子网,至少需要保留 2 bit 作为主机号(2 个接口 + 全 1 + 全 0 = 4 个 IP)
    • 优点:子网划分更灵活,且方便地址资源的分层级管理

不管是定长还是变长,在每个子网中,主机号全 0、全 1 的 IP 地址不能分配给特定节点私用。

  • 变长子网划分技巧:利用类似于 从根到叶构造二叉哈夫曼树
    • 原始 CIDR 地址块作为根节点(假设可以自由分配的主机号占 h h h bit
    • 每个分支节点必须同时拥有左右结点,左 0、右 1(反过来也行)
    • 每个叶子节点对应一个子网,根据根节点到达叶子节点的路径来分析子网对应的 IP 地址块范围
    • 整棵树的高度不能超过 h − 1 h-1 h1(因为即便最小的子网叶至少要保留 2 2 2 bit 主机号)

5. 路由聚合

  • 路由聚合:对于一个路由转发表,如果几条路由表项的转发接口相同部分网络前缀相同,那么可以将这几条路由表项聚合为一条。这种地址的聚合称为路由聚合,也称构成超网
  • 路由聚合与 CIDR 搭配使用:
    • 采用 CIDR 技术后,路由器转发一个 IP 数据报在查转发表时,由于 “路由聚合”,一个 IP 地址在转发表中可能会匹配多个表项,此时应使用最长前缀匹配原则
  • 优点:可以减少路由表的大小,表更小,查询更快
  • 缺点:可能会引入额外的无效地址

6. 网络地址转换 NAT

  • 网络地址转换(Network Address Translation,NAT)

在这里插入图片描述

  • 传输层的端口号
    • IP 地址 + 端口号确定一个特定的进程
    • 网络层实现了 “主机到主机” 的通信。网络层在 IP 数据报的首部,指明源 IP 地址、目的 IP 地址
    • 传输层实现了 “端到端”(进程到进程)的通信,传输层在 TCP(或 UDP)报文段的首部,指明源端口、目的端口
  • 私有 IP 地址(内网 IP)
    • 只允许分配给局域网内部的节点,不允许分配给互联网上的节点
    • 每个局域网内部都可以自行分配这些私有 IP 地址
    • 私有 IP 地址是可复用的,只要求局域网内唯一,不要求全球唯一

    常用私有 IP:

    • 10.0.0.0 ~ 10.255.255.255
    • 172.16.0.0 ~ 172.31.255.255
    • 192.168.0.0 ~ 192.168.255.255
  • 公网 IP 地址(外网 IP / 全球 IP 地址)
    • 通常由 ISP 提供,全球唯一
    • 公网 IP 是一个局域网与外界通信时所需使用的 IP 地址
  • NAT 路由器
    • 作用:转发 IP 数据报时,进行内网 IP、外网 IP 的相互转换
    • NAT 表:记录地址转换关系 <内网 IP:端口号><外网 IP:端口号>
    • 一个 IP 数据报
      • 从内网转发到外网,会更改源 IP 地址、源端口号
      • 从外网转发到内网,会更改目的 IP 地址、目的端口号
    • NAT 路由器包含传输层的功能(因为端口号是传输层的概念),普通路由器仅包含网络层及以下的功能

7. 地址解析协议 ARP

  • MAC 地址:
    • 总共 48 bit,是网络适配器出厂时分配好的,全球唯一
    • 一台主机至少有一个网络适配器(网线插口背后的芯片),因此主机至少有一个 MAC 地址
    • 一台路由器有多个转发接口,每个接口背后都是一个网络适配器,因此路由器有多个 MAC 地址
  • 以太网 MAC 帧:
    • 在类型的位置,0x0800 表示是 IPv4 的 PDU,0x0806 表示是 ARP 的 PDU
  • ARP 协议的作用:在一个局域网内部,可以通过 ARP 协议查询到一个 IP 地址对应的 MAC 地址
  • ARP 表(ARP 缓存):
    • 每台主机、每台路由器都有自己的 ARP 表
    • ARP 表是一个数据结构,用于记录 <主机 IP 地址,MAC 地址> 之间的映射关系
    • 需要定期更新 ARP 表项
  • ARP 请求分组
    • ARP 请求分组封装进 MAC 帧(广播帧),帧目的地址全 1,源地址为请求发送方 MAC 地址
    • ARP 请求分组内容:
      1. 我是谁?——请求方的 IP 地址、MAC 地址
      2. 我想找谁?—— 响应方的 IP 地址
  • ARP 响应分组
    • ARP 响应分组封装进 MAC 帧(单播帧),目的地址是请求方 MAC 地址,源地址是响应方 MAC 地址
    • ARP 响应分组内容:响应方的 IP 地址、MAC 地址
  • ARP 分组格式,共 28 B
    在这里插入图片描述

8. 动态主机配置协议 DHCP

  • 动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)是应用层协议,使用 UDP 提供的服务,给网络层所需要的参数进行初始化
  • DHCP 的作用:给刚接入网络的主机动态分配 IP 地址、配置默认网关、子网掩码等网络相关的参数
  • DHCP 使用客户 / 服务器模型(C/S)
    • 客户 UDP 端口号为 68,服务器 UDP 端口为 67
    • DHCP 客户:新接入网络的主机(希望获得 IP 地址等配置)
    • DHCP 服务器:负责分配 IP 地址的主机,管理一系列 IP 地址池。在家庭网络中,通常由家庭路由器兼职 “DHCP 服务器”
    • 在一个大型网络中可以有多台 DHCP 服务器

在这里插入图片描述

  • DHCP 协议步骤:
    在这里插入图片描述
    1. 客户 → 服务器:DHCP 发现报文
      • 携带信息:客户主机的 MAC 地址(还可以提出对 IP 地址租用期的要求)
      • 网络层:源 IP 地址为 0.0.0.0,目的 IP 地址为 255.255.255.255(广播 IP 数据报)
      • 链路层:源 MAC为客户的 MAC 地址,目的 MAC 为全 1(广播帧)
        在这里插入图片描述
    2. 服务器 → 客户:DHCP 提供报文
      • 携带信息:给客户分配的 IP 地址、租用期、子网掩码、默认网关
      • 网络层:源 IP 地址为 DHCP 服务器的 IP 地址,目的 IP 为 255.255.255.255(广播 IP 数据报)
      • 链路层:源 MAC 为服务器的 MAC 地址,目的 MAC 为客户的 MAC 地址(单播帧)
        在这里插入图片描述
    3. 客户 → 服务器:DHCP 请求报文
      • 携带信息:客户机确认要使用的 IP 地址
      • 网络层:源 IP 地址为 0.0.0.0,目的 IP 地址为 255.255.255.255(广播 IP 数据报)
      • 链路层:源 MAC为客户的 MAC 地址,目的 MAC 为全 1(广播帧)
        在这里插入图片描述
    4. 服务器 → 客户:DHCP 确认报文
      • 携带信息:与报文 2 类似(图片参考报文 2)
      • 网络层:源 IP 地址为 DHCP 服务器的 IP 地址,目的 IP 为 255.255.255.255(广播 IP 数据报)
      • 链路层:源 MAC 为服务器的 MAC 地址,目的 MAC 为客户的 MAC 地址(单播帧)

9. 网际控制报文协议 ICMP

  • 网际控制报文协议(Internet Control Message Protocol,ICMP)属于网络层,ICMP 报文封装在 IP 数据报中,IP 协议为 ICMP 协议提供服务。
  • ICMP 可以让主机或路由器互相报告网络中发生的差错和异常情况
  • ICMP 报文的常见类型:
    1. 差错报告报文
      • 终点不可达
        • 路由器告诉发送方:“目的 IP 地址不可到达”(道路不通)
        • 目的主机告诉发送方:“目的端口号不存在,我这边没有对应进程”
      • 时间超过
        • 路由器告诉发送方:“你的 IP 数据报到我这里 TTL = 0,被我丢了”(路程太远)
        • 目的主机告诉发送方:“你的 IP 数据报被分片了,规定时间内没到齐,我已全部丢弃”
      • 参数问题
        • 告诉发送方:“你的 IP 数据报首部参数不合法,或首部校验出错”
      • 改变路由(重定向)
        • 路由器告诉发送方:“对于这个目的网络,下次你让另一台路由器帮你转发,路径会更短”
      • 源点抑制(2012年后已废弃):告诉发送方:“网络发送拥塞,丢包了,求求你发慢点”
    2. 询问报文
      • 回送请求(Echo Request)和回送回答(Echo Replay):比如 ping 命令,用于询问目的主机是否在线
      • 时间戳请求(Timestamp Request)和时间戳回答(Timestamp Reply):比如 traceroute/tracert、自动设置时间,请求和回答都是时间戳。
  • 不必反馈 ICMP 差错报文的情况
    • 若携带 ICMP 差错报告报文的 IP 数据报出错,不再反馈 ICMP 差错
    • 若 IP 数据报被分片,则无论几个分片出错,都只反馈一次 ICMP 差错
    • 若 IP 数据报的目的地址为多播地址,不反馈 ICMP 差错
    • 若 IP 数据报的源地址为特殊地址(如 127.x.x.x0.0.0.0),则即便发生 IP 数据报异常也不反馈 ICMP 差错

三、IPv6 地址

  • IPv6 于 1998 年诞生,地址有 128 位,能彻底解决 IP 地址不够用的问题。
  • IPv6 格式:
    • 一般的未压缩格式:相较于 IPv4 的点分十进制记法,IPv6 采用冒号十六进制记法:16 位一段,记录为十六进制,段间以冒号分隔

    2001:0db8:85a3:0000:0000:8a2e:0370:7334

    • 第一种压缩记法:去除每个分段的前导零

    2001:db8:85a3:0:0:8a2e:370:7334

    • 第二种压缩记法:用双冒号 :: 替代连续出现的多个 0,一个地址只能出现一次双冒号,否则会产生歧义

    2001:db8:85a3::8a2e:370:7334

  • IPv6 地址资源分配:
    • n n n 位前缀, 128 − n 128-n 128n 位接口标识符
    • 支持无分类编址 CIDR,因此各层级可以灵活划分子网
    • IPv6 因为地址空间很大,所以可以划分为更多的层次
    • IPv6 支持即插即用(IP 地址自动配置),通常以主机自身的 MAC 地址作为接口标识符
    • 可以不使用 DHCP,如果 IP 地址安全性要求较高也支持使用 DHCP 统一管理 IPv6 地址
  • IPv6 地址的分类:
    地址类型二进制前缀说明
    未指明地址00...0(128 位),可记为 ::/128表示 “无地址”,类似 IPv4 的 0.0.0.0
    环回地址00...01(128 位),可记为 ::1/128类似 IPv4 的 127.0.0.1
    多播地址11111111(8 位),可记为 FF00::/8发送到一组主机
    本地链路单播地址1111111010(10 位),可记为 FE80::/10局域网内通信,不会被路由器转发
    全球单播地址除上诉四种外的其他所有 IPv6 地址
  • 三类 IPv6 目的地址:
    1. 单播(unicast):传统的点对点通信
    2. 多播(multicast):一点对多点的通信,数据报发送到一组计算机中的每一台(比如:网络会议)
    3. 任播(anycast):
      • IPv6 新增的一种类型
      • 任播的终点是一组计算机,但数据报只交付其中的一台计算机,通常是距离最近的一台计算机(比如:多个 DNS 服务器共享一个任播地址)
      • 任播地址没有固定的前缀,通常由地址管理机构预先统一分配

第五章:传输层

一、传输层提供的服务

1. 传输层的功能

  • 传输层实现了 “端到端”(进程到进程)的通信。传输层在 TCP / UDP 报文段的首部,指明源端口、目的端口
  • 复用和分用:
    • 复用(从上到下):在发送数据的时候,同一台主机上的多个进程可以使用同一个传输层协议
    • 分用(从下到上):在接收数据的时候,传输层可以把数据正确交付到目的进程
  • 差错检测
    • TCP 检测出差错后丢弃数据,并通知发送方重传
    • UDP 检测出差错后直接丢弃数据,且不通知发送方
  • 向应用层提供服务
    • TCP 提供面向连接的、可靠的、面向字节流的端到端传输服务
      • 确保数据正确 / 完善,但开销大,实时性较差
      • 面向连接:也可以叫有连接,传输前先打招呼,先确认对方已经准备好接收数据,传输结束时也要告诉对方已结束
      • 可靠:接收方使用 “确认机制” 让发送方知道哪些数据已被正确接收
      • 面向字节流:无论传输多少个报文,在 TCP 协议看来都是一连串字节流
    • UDP 提供无连接的、不可靠的、面向报文的端到端传输服务
      • 数据可能出错 / 丢失,但速度快,开销小
      • 无连接:不打招呼,直接把数据传给对方
      • 不可靠:接收方无论收没收到数据、数据是否正确,都不给发送方反馈
      • 面向报文:UDP 不能拆分数据报,只能传输整个数据报

2. 传输层寻址与端口

  • 通过端口号标识本主机的一个特定进程
    • 每台主机的端口号是相互独立的
    • TCP、UDP 两种协议的端口号是相互独立的
  • TCP 或 UDP 协议,通过 Socket 套接字,唯一地标识网络中的一台主机上的一个应用进程
    • 套接字(Socket)= {IP 地址:端口号}
    • 本质上是一种数据结构,类似于网络指针,指向网络中将要和本进程通信的进程
  • 当两个进程之间想要通信时,需要指明:
    1. 使用哪种传输层协议
    2. 本进程绑定的端口号
    3. 对方的 IP 地址和端口号
  • 端口号的分类
    1. 服务器使用的端口号:被动通信
      • 熟知端口号: 0~1023,通常只能用于被熟知的重要应用程序
        应用程序熟知端口号功能
        FTP21用于文件的上传、下载等文件传输控制。
        TELNET23提供远程登录服务,可远程操控服务器。
        SMTP25负责电子邮件的发送与传输。
        DNS53将域名解析为对应的IP地址。
        TFTP69进行简单的文件传输,协议简单开销小。
        HTTP80用于万维网中网页数据的传输。
        SNMP161监控网络设备状态,收集和管理设备信息。
      • 登记端口号(不强制):1024 ~ 49151
    2. 客户端使用的端口号:主动通信
      • 短暂端口号:49152 ~ 65535

二、UDP

1. UDP 协议

  • UDP(User Datagram Protocol,用户数据报协议):
    • 是无连接的、不可靠的(可靠性可以交给应用层处理),也不支持拥塞控制
    • 每次传输一个完整的报文,不支持报文自动拆分、重装,因此应用层的报文长度不能超过 UDP 协议上限
    • 支持一对一(封装成单播 IP 数据报)、一对多(封装成广播 / 多播 IP 数据报)传输
  • UDP 首部:首部很小,只占 8 B

2. UDP 数据报

  • UDP 数据报包含首部和数据部分
    在这里插入图片描述
  • UDP首部占 8 B,包括:
    1. 16 位源端口号:发送进程的端口号,如果不需要对方回复置为全 0
    2. 16 位目的端口号:接收进程的端口号
    3. 16 位 UDP 长度:首部 + 数据的总长度,以 “字节” 为单位
    4. 16 位 UDP 校验和:由发送方的传输层计算并填入校验和,接收方的传输层检测是否有差错,如果无需校验置为全 0
  • 数据部分:
    • 传输层理论最大长度为 2 16 − 8 = 65535 − 8 = 65527 2^{16}-8=65535-8=65527 2168=655358=65527 B
    • 网络层理论最大长度为 2 16 − 8 − 20 = 65507 2^{16}-8-20=65507 216820=65507 B
    • 以太网最大长度为 1500 − 8 − 20 = 1472 1500-8-20=1472 1500820=1472 B

3. UDP 检验

  • 差错检验算法
    • 计算校验和:将原始数据以 16 bit 为一组,进行二进制加法(最高位产生的进位需要 “回卷”),加法运算的最终结果逐位取反,得到 16 bit 校验和
    • 差错校验:接收方将收到的内容以 16 bit 为一组,进行二进制加法(最高位产生的进位需要 “回卷”),全 1 说明没有差错,非全 1 说明有差错
  • 发送方
    在这里插入图片描述
    • 计算校验和之前,需要添加 12 B 的伪首部,计算完校验和之后,拆除伪首部
    • 计算校验和时把首部的校验和临时填充为全 0,计算出来后再填入真正的校验和
    • 把伪首部、首部、数据部分以 16 bit 为一组,计算计算校验和
    • 长度和 UDP 长度相等,为整个 UDP 数据报的长度
  • 接收方
    • 差错校验之前,需要添加 12 B 的伪首部,检验完之后,拆除伪首部
    • 全 1 说明无差错,接收该 UDP 数据;非全 1 说明有差错,丢弃该 UDP 数据

三、TCP

1. TCP 协议

  • TCP(Transmission Control Protocol,传输控制协议)
  • TCP 协议支持报文拆分、重装,因此应用层的报文较长也是可以的
  • TCP 协议的三大阶段
    1. 建立连接(三次握手)
    2. 数据传输
    3. 释放连接(四次挥手)
      在这里插入图片描述
  • 每次建立 TCP 连接,可以传输多个报文(双向),每个 TCP 段不会强制要求满载数据,只要别超过 MSS(Maximum Segment Size,最大段长)就行
  • TCP 是面向字节流的,UDP 是面向报文的

2. TCP 段

  • TCP 段(TCP Segment),也称为 TCP 报文段
    在这里插入图片描述
  • 源端口、目的端口:顾名思义,字面意思
  • 序号(seq,sequence):
    • 占 32 bit,用于标记数据部分第一个字节在原始字节流中的位置,可理解为偏移量
    • 起始 “序号” 由发送方自己设置,不一定从 0 开始
  • 确认号(ack、ack_seq)
    • 占 32 bit,用于反馈,表示序号在该确认号之前的所有字节都已正确收到
    • 具有 “累计确认” 的特性
  • 标志位 ACK(大写)确认位
    • ACK = 0 时,确认号(ack_seq)无效
    • ACK = 1 时,确认号(ack_seq)有效
    • 只有 握手 ① 的 ACK = 0,其他所有 TCP 报文段 ACK = 1
  • 数据偏移(Data Offset)
    • 占 4 bit,表示 TCP 首部长度,以 × 4 ×4 ×4 B 为单位
    • 因此 TCP 首部最长 = ( 2 4 − 1 ) × 4 = 60 =(2^4-1)×4=60 =(241)×4=60 B
  • 填充:因为数据偏移以 × 4 ×4 ×4 B 为单位,因此该部分用于凑足 4 B 的整数倍
  • 保留:占 6 bit,暂时没用,通常全部置为 0
  • 标志位 URG(Urgent):紧急位
    • URG = 1 时,紧急指针有效。表示这是紧急数据,应尽快插队发送
  • 紧急指针:
    • 占 16 bit,紧急数据专用序号,原理上与 “序号”(seq)字段相同
    • 紧急数据有一套独立的序号,普通数据是另外一种序号
  • 标志位 PSH(Push):推送位
    • PSH = 1 时,表示希望接收方尽快回复(用于交互式通信)
  • 标志位 RST(Reset)复位位:
    • RST = 1 时,表示出现严重差错(如主机崩溃),必须释放连接
    • 也可用于拒绝一个非法报文段(如恶意的黑客攻击)
  • 标志位 SYN(Synchronize)同步位
    • SYN = 1 时,表示这是一个连接请求或连接接受报文。
    • 只有 握手 ①、握手 ② 的 SYN = 1,其他所有 TCP 报文段都是 SYN = 0
  • 标志位 FIN(Finish)终止位
    • FIN = 1 时,表示此报文段的发送方的数据已发送完毕,要求释放传输连接
    • 只有 挥手 ①、挥手 ③ 的 FIN = 1,其他所有的 TCP 报文段都是 FIN = 0
  • 窗口(rwnd、rcvwnd,Receive Window):
    • 占 16 bit,表示接收窗口的大小。即从本报文段首部中的 ack_seq 算起,接收方还能接收多少数据(以字节位单位)
    • 窗口字段是实现流量控制的关键
  • 检验和
    • 占 16 bit,原理与 UDP 雷同,计算校验和之前也需要添加 12 B 的伪首部
    • TCP 的协议号是 6,UDP 的协议号是 17。(看 UDP 的数据报图)
    • 伪首部的长度为整个 TCP 段(首部 + 数据)的长度
  • 选项
    • 长度可变,可以为空,也可以非空
    • 建立 TCP 连接时,在握手 ①、握手 ② 选项中协商 MSS(Maximum Segment Size,最大段长)
    • MSS 的值表示在接下来的数据传输中,一个 TCP 报文段最多携带多少数据(首部不算在内)
    • 通常 MSS 不会设置太大,以免在 IP 层被分片

2. TCP 连接管理

Ⅰ. 建立连接(三次握手)
  • 起始序号由客户进程或服务器进程自己决定
  • 标志位:
    • 在 TCP 全过程中,只有握手 ①、握手 ② 的 SYN = 1,其他所有 TCP 报文段都是 SYN = 0
    • 在 TCP 全过程中,只有握手 ① 的 ACK = 0,其他所有 TCP 报文段都是 ACK = 1
      在这里插入图片描述
  • 携带数据:
    • 握手 ①、握手 ② 不能携带数据(只有 TCP 首部),但是仍要消耗一个序号
    • 握手 ③ 不携带数据就不消耗序号,如果携带 100 B 数据就消耗 100 个序号
      在这里插入图片描述在这里插入图片描述
  • TCP 状态转换
    • 客户进程:连接关闭(CLOSE)、同步已发送(SYN-SENT)、已建立连接(ESTABLISHED)
    • 服务器进程:连接关闭、监听 / 等待连接(LISTEN)、同步已收到(SYN-RCVD)、已建立连接
    • 客户收到握手 ② 就可以开始传送数据,服务器收到握手 ③ 才能传送数据
      在这里插入图片描述
  • 建立连接耗时分析:
    • 客户端发出握手 ① 后,客户端至少需要 1 × R T T 1 ×RTT 1×RTT 可以发送数据,服务器至少需要 1.5 × R T T 1.5× RTT 1.5×RTT 可以发送数据
Ⅱ. 释放连接(四次挥手)
  • 标志位:
    • 所有挥手的 SYN = 0、ACK = 1
    • 在 TCP 全过程中,只有挥手 ①、挥手 ③ 的 FIN = 1,其他所有 TCP 报文段都是 FIN = 0
  • 携带数据
    • 挥手 ①、挥手 ③ 即使不携带数据,也要消耗一个序号
    • 挥手 ② 可以携带数据
    • 挥手 ④ 不可以携带数据

在这里插入图片描述

  • TCP 状态转换
    • 客户进程:已建立连接(ESTABLISHED)、终止等待 1(FIN-WAIT 1)、终止等待 2(FIN-WAIT 2)、时间等待(TIME-WAIT)、关闭(CLOSE)
    • 服务器进程:已建立连接、关闭等待(CLOSE-WAIT)、最后确认(LAST-ACK)、关闭
    • 任一进程在接收到挥手 ③ 后立即进入 “时间等待” 状突,并启动 “时间等待计时器”,倒计时 2 MSL 才能进入关闭状态
      • MSL:最长报文段寿命,Maximum Segment Lifetime,是由 TCP 协议规定的一个固定时间长度
      • 如果等待期间重复收到挥手 ③,就重置计时器

在这里插入图片描述

  • 释放连接耗时分析
    • 如果服务器进程收到挥手 ① 时,已经没有待传送数据,那么可以连续发出挥手 ②、挥手 ③
    • 客户端发出挥手 ① 后,客户进程至少需要 1 × R T T + 2 × M S L 1×RTT+2×MSL 1×RTT+2×MSL 进入关闭状态;服务器进程至少需要 1.5 × R T T 1.5×RTT 1.5×RTT 进入关闭状态

在这里插入图片描述

3. TCP 传输的底层原理

Ⅰ. 传输过程
  • 重点关注:ACK、seq、ack(ack_seq)、rwnd(rcvwnd)
  • 应用层运行在用户区,传输层运行在内核区,因此需要使用系统调用将进程绑定到端口,让操作系统的 TCP 协议根据 Socket(套接字)对象向接收方发出 TCP 报文段
  • 应用层中的待发送数据和待接收数据本支持是一个 char 型数组,数组若与预留长度不够可以再扩容

在这里插入图片描述

  • 一个端口可以支持多个 TCP 连接,但每个 TCP 连接仅支持一对一通信(全双工)
  • 全部传输过程如下图:
    在这里插入图片描述
Ⅱ. 发送缓冲区和接收缓冲区
  • 缓冲区是操作系统给此次 TCP 连接分配的 char 型数组
  • TCP 协议支持双向传输,因此无论是客户进程还是服务器进程都拥有各自的发送缓冲区和接收缓冲区,缓冲区分配多少取决于操作系统内核
  • TCP 协议的发送缓冲区、接收缓冲区是在建立连接时由操作系统内核分配的,大小不固定
  • 接收缓冲区若只要保证数据有序,就可以按序交付应用层(给应用层复制一份),并清空缓冲区
Ⅲ. 发送窗口和接收窗口
  • 发送窗口的大小不能超过发送缓冲区的大小 S i z e 发送窗口 ≤ S i z e 发送缓冲区 Size_{发送窗口}≤Size_{发送缓冲区} Size发送窗口Size发送缓冲区
  • 发送窗口的大小不能超过对方的接收窗口大小 S i z e 发送窗口 ≤ S i z e 接收方接收窗口大小 Size_{发送窗口}≤Size_{接收方接收窗口大小} Size发送窗口Size接收方接收窗口大小
  • 接收窗口根据 rwnd 的值动态调整窗口大小

4. TCP 可靠传输

  • TCP 依靠 序号、确认机制、重传机制 实现可靠传输
    • 序号:进程在建立连接时确定起始序号,数据传输过程中,每个字节对应一个序号
    • 确认机制和重传机制在数据链路层也有,数据链路层是以帧为单位,TCP 是以报文段为单位
  • 确认机制
    • 累积确认规则:如果收到 a c k _ s e q = n ack\_seq = n ack_seq=n,说明序号在 n n n 之前的所有字节都已正确接收
    • 两种 ACK 段:
      1. 专门确认:一个 ACK 段只有 TCP 首部,而没有携带数据
        在这里插入图片描述
      2. 捎带确认:一个 ACK 段顺道携带了数据
        在这里插入图片描述
    • 返回 ACK 的时机 —— 推迟确认
      • 推迟时间最多不能超过 0.5 秒(TCP 标准规定)
      • 如果自己也有数据要传送给对方,就不推迟了,立即返回 ACK 段,并 “捎带” 自己的数据
      • 若连续收到两个长度为 MSS 的报文段,就立即返回 ACK 段,因为重传代价高
      • 推迟确认能发挥累计确认的特性,但当某个报文段传输出现问题都可能导致几个报文段陆续超时,导致重传重复报文段
        在这里插入图片描述
  • 重传机制
    • 超时重传:每发出一个报文段,就设置一个计时器,若计时器到期还没收到确认,就重传这一报文段,并重置计时器;收到 ACK 段后终止计时器
      在这里插入图片描述在这里插入图片描述
    • 快重传(冗余 ACK) —— 立即确认
      • 作用:让可能出错的报文段尽早重传,而不是非要等到超时再重传
      • 每收到一个 TCP 报文段,就立即返回一个 ACK 段
      • 即使收到一个失序报文段,也要立即返回 ACK 段(失序报文段会导致冗余 ACK)
      • 当发送方连续收到 1 + 3 个确认号相同的 ACK(后三个属于冗余 ACK)时,就立即重传该确认号对应的报文段

5. TCP 流量控制

  • TCP 依靠 滑动窗口机制 实现流量控制:通过接收方的接收窗口大小限制发送方的发送窗口大小,这样就实现了由接收方控制发送方发送数据的速度
  • 接收方维持一个接收窗口(记为 rwnd 或 rcvwnd):
    • 接收窗口不能大于接收缓冲区大小
    • 接收窗口 “框住” 的是接收方还允许接收的序号范围
  • 发送方为一个发送窗口
    • 发送窗口不能大于发送缓冲区大小
    • 发送窗口不能大于接收方的接收窗口大小
    • 发送窗口 “框住” 的是发送缓冲区中,已发送但尚未收到确认的数据,以及可以发送但尚未发送的数据

6. TCP 拥塞控制

1. 概念
  • 拥塞(congestion)、拥塞窗口(cwnd)、拥塞控制阈值(ssthresh)
  • 拥塞控制和流量控制的区别:
    • 流量控制:控制 端到端 的数据发送量,是 “局部的
    • 拥塞控制:控制 整个网络 中每台主机的数据发送量,降低路由器负载,是 “全局的
  • 如何判断网络拥塞
    • 不拥塞 —— 发出的每个报文段,都能顺利地收到 ACK 确认
    • 严重拥塞 —— 发出的报文段未能按时收到 ACK,引发超时重传。此时应迅速缩小拥塞窗口
    • 有点拥塞 —— 收到冗余 ACK,引发快重传。此时应适当缩小拥塞窗口
  • 检测到网络拥塞怎么办
    • 迅速减少发送的数据量,发送窗口的上限值 = min[rwnd,cwnd]
    • 拥塞窗口 cwnd 的大小常以 “MSS 的倍数” 作为单位
      在这里插入图片描述
2. 慢开始算法
  • 用于严重拥塞时,迅速缩小 cwnd
  • 慢开始算法:cwnd 值从 1 开始,每收到一个 ACK,就让 cwnd + 1(当 cwnd < ssthresh 时适用)
    在这里插入图片描述
  • 如果发生超时重传(说明严重拥塞),使用慢开始算法迅速缩小 cwnd
    • 缩小规则:ssthresh 值置为当前拥塞窗口的一半,且不能小于 2。同时将 cwnd 缩小到 1
      在这里插入图片描述

    ssthresh = cwnd / 2 = 12 \text{ssthresh}= \text{cwnd} / 2 = 12 ssthresh=cwnd/2=12
    cwnd = 1 \text{cwnd}=1 cwnd=1

2. 拥塞避免算法
  • 用于不拥塞时,小心地调大 cwnd
  • 拥塞避免算法:在一个 RTT 内,即使收到多个 ACK,也只能让 cwnd + 1(当 cwnd ≥ ssthresh 时适用)
    在这里插入图片描述
3. 快恢复算法
  • 用于有点拥塞时,适当缩小 cwnd
  • 快恢复算法:一旦发生快重传,就将阈值 ssthresh、cwnd 都设为当前 cwnd 的一半(ssthresh 不能小于 2),然后切换到拥塞避免算法
    在这里插入图片描述

第六章:应用层

一、网络应用模型

1. 应用层概述

  • 应用层对应用程序的通信提供服务
    在这里插入图片描述
  • 应用层协议定义:
    • 应用进程交换的报文类型,请求还是响应
    • 各种报文类型的语法,如报文中的各个字段及其详细描述
    • 字段的语义,即包含在字段中的信息的含义
    • 时序(同步):进程何时、如何发送报文,以及对报文进行响应的规则
  • 应用层的常用功能:
    协议端口功能
    FTP21(控制)、20(数据)用于网络中文件的上传与下载。
    SMTP25负责电子邮件从发件服务器向收件服务器的发送。
    POP3110供用户从邮件服务器下载邮件到本地设备。
    HTTP80用于万维网中超文本数据(如网页)的传输。
    DNS53将域名解析为对应的IP地址,实现网络通信寻址。

2. 客户 / 服务器模型

在这里插入图片描述

  • 客户 / 服务器(Client / Server,C/S)模型特点:
    • 客户、服务器地位不平等
    • 客户之间不直接通信
    • 如果服务器损坏,影响全局
    • 服务器负载较大
  • 服务器:提供计算服务的设备,本质上也是一台主机。特点有:
    1. 永久提供服务
    2. 永久性访问地址 / 域名
  • 客户机:请求计算服务的设备。提点有:
    1. 与服务器通信,使用服务器提供的服务
    2. 间歇性接入网络
    3. 可能使用动态 IP 地址
    4. 不与其他客户机直接通信
  • C/S 模型的应用:Web、FTP、远程登陆、电子邮件

3. P2P 模型

在这里插入图片描述

  • P2P(Peer-To-Peer)模型,也叫对等模型,特点:
    • 每个主机既可以提供服务,也可以请求服务,主机之间地位平等
    • 任意端系统 / 节点之间可以直接通讯
    • 不存在永远在线的节点,节点间歇性接入网络,也可能改变 IP 地址,因此单个节点损坏不影响全局
    • 各节点可以分摊负载,可扩展性好,网络健壮性强

二、域名系统 DNS

  • 域名系统(Domain Name System,DNS)基于 UDP,端口号 53,主要用于将人类易于记忆的域名解析为计算机能够识别的 IP 地址,从而实现网络设备之间的通信寻址。

1. 域名

  • 顶级域名:
    • 国家顶级域名:以国家或地区代码为后缀,如 .cn(中国)、.us(美国)、.jp(日本),用于标识域名所属的国家或地区。
    • 通用顶级域名:不局限于特定国家/地区,面向全球通用,如 .com(商业机构)、.org(非营利组织)、.net(网络服务机构)、.edu(教育机构)等。
    • 基础结构域名 / 反向域名:arpa,主要用于互联网的反向域名解析(将IP地址转换为域名),是特殊的顶级域名。
  • 二级域名:
    • 类别域名:我国在国家顶级域名.cn下划分的分类,如.com.cn(商业)、.gov.cn(政府机构)、.edu.cn(教育机构),用于标识机构类型。
    • 行政区域名,用于我国各省、自治区、直辖市:bj(北京)、js(江苏)、gd(广东)等,标识地域所属。
    • 自定义域名:由机构或个人自行注册的二级域名,如在.com下的baidu.com,在.cn下的qq.cn,用于区分具体实体。

2. 域名服务器

  • 根域名服务器:使用固定 IP 地址,共有 13 台根域名服务器,存储所有顶级域名服务器的 IP 地址
  • 顶级域名服务器:管理该顶级域名服务器注册的所有二级域名,存储所管理的权限域名服务器的 IP 地址
  • 权限域名服务器:负责一个区的域名服务器,存储与自己域名对应网址的 IP 地址
  • 本地域名服务器:也可称为默认域名服务器,缓存近期被查询过的域名和 IP的映射关系,当一个主机发出 DNS 查询请求时,这个查询请求报文首先发给本地域名服务器

在这里插入图片描述

3. 域名解析过程

  • 递归查询:
    • 请求顺序:本地域名服务器 → 根域名服务器 → 顶级域名服务器 → 权限域名服务器
    • 本地域名服务器只需要发送一次 DNS 请求报文
      在这里插入图片描述
  • 迭代查询
    • 本地域名服务器依次请求根域名服务器、顶级域名服务器、权限域名服务器
    • 本地域名服务器需要发送多次 DNS 请求报文
      在这里插入图片描述

三、文件传输协议 FTP

1. 协议概述

  • 文件传输协议(File Transfer Protocol,FTP):是基于 C/S 模型和 TCP 的协议,提供不同种类主机系统(硬、软件体系等都可以不同)之间的文件传输能力(上传、下载)。
  • 简单文件传输协议(Trivial File Transfer Protocol,TFTP):基于 UDP 协议,在网络中传输小型文件,协议设计简洁,无需复杂的身份验证。

2. FTP 工作原理

  • FTP 客户端:连接 FTP 服务器,遵循 FTP 协议与服务器传送文件的计算机
    • 用户通过一个客户机程序,使用 FTP 服务器地址、用户名、密码连接至远程计算机上运行的服务器程序
    • 匿名登录:不需要用户事先在服务器中进行登记注册,也不用取得 FTP 服务器的授权,就可以访问主机上公开的文件
  • FTP 服务器:依照 FTP 协议提供服务,进行文件传送的计算机
    • 一个 FTP 服务器的进程可以同时为多个客户进程提供服务
    • 一个 FTP 服务器进程包含 1 个主进程、多个从属进程
    • 控制进程和数据传送进程都属于从属进程
  • FTP 传输模式:
    • 文本模式:ASCII 模式,以文本序列传输数据
    • 二进制模式:Binary 模式,以二进制序列传输数据

在这里插入图片描述

3. 控制连接与数据连接

  • 控制连接:
    • 端口号:21
    • 传请求:在整个会话始终保持连接,FTP 客户端发送的传送请求都要通过控制连接发送给服务器端的控制进程。
  • 数据连接
    • 主动方式下,端口号为 20;被动方式由服务器和客户端自行协商决定(端口>1024)
    • 传文件:用于传送文件的连接,服务器端在收到 FTP 客户端发来的文件传输请求后创建数据连接和数据传送进程,文件传输完毕就终止连接和进程。

四、电子邮件

1. 电子邮件系统概述

  • 电子邮件信息格式
    • 信封:收件人邮箱
    • 内容:
      • 首部:发件人邮箱、收件人邮箱、主题、日期等
      • 主体
  • 组成结构:
    在这里插入图片描述
    • 用户代理:
      • 用户和电子邮件系统的接口,通常是运行在客户机上的程序,因此被称为电子邮件客户端软件
      • 功能:撰写、显示、处理(收发)、通信(传输)
    • 邮件服务器
      • 不间断工作,大容量的邮件信箱来容纳大量的邮件,可以自由切换客户 / 服务器角色
      • 功能:发送和接收邮件、向发件人报告邮件传送结构
    • 协议:
      • SMTP:发送邮件
      • POP3、IMAP:接收邮件

2. 简单邮件传送协议 SMTP

  • 简单邮件传送协议(Simple Mail Transfer Protocol,SMTP)
    • 基于 C/S 模型和 TCP 的协议,端口号为 25,规定了在两个相互通信的 SMTP 进程之间应如何交换信息
    • 负责发送邮件的 SMTP 进程称为SMTP 客户,负责接收邮件的 SMTP 进程称为 SMTP 服务器
  • SMTP 三个阶段:连接建立 → 邮件传送 → 连接释放
    状态码短语含义性质处理方式
    220“Service ready”服务器已就绪,可以开始SMTP会话成功客户端可继续发送命令
    250“Requested mail action okay, completed”请求的操作成功完成成功客户端可继续下一步操作
    421“Service not available, closing transmission channel”服务不可用,关闭传输通道临时错误稍后重试
    452“Requested action not taken: insufficient system storage”系统存储空间不足,无法完成请求临时错误等待服务器释放资源后重试
    500“Syntax error, command unrecognized”命令语法错误,服务器无法识别永久错误检查命令格式并重试
    550“Requested action not taken: mailbox unavailable”邮箱不可用(如不存在或被禁用)永久错误检查收件人地址是否正确
    354“Start mail input; end with .”开始输入邮件内容,以.结束中间状态客户端应继续发送邮件内容
    221“Service closing transmission channel”服务关闭传输通道,会话结束成功客户端应关闭连接
  • SMTP 的缺点
    1. SMTP 不能传送可执行文件或其他二进制对象
    2. SMTP 仅限于传送 7 位 ASCII 码,不能传送其他非英语国家的文字
    3. SMTP 服务器会拒绝超过一定长度的邮件
  • 因为 SMTP 的缺点,诞生了 多用途互联网邮件扩展(Multipurpose Internet Mail Extensions,MIME)
    • 将非 ASCII 码转为 7 位 ASCII 码
    • 使电子邮件系统可以支持声音、图像、视频、多种国家语言等等,传输内容丰富多彩

3. 邮局协议 POP3

  • 邮局协议(Post Office Protocol 3,POP3):基于 C/S 模型和 TCP 的协议,端口号 110
    在这里插入图片描述
  • POP3 的工作方式
    • 下载并保留(在服务器)
    • 下载并删除

4. 网际报文存取协议 IMAP

  • 网际报文存取协议(Internet Message Access Protocol,IMAP)
  • IMAP 协议比 POP 协议复杂,当用户 PC 上的 IMAP 客户程序打开 IMAP 服务器的邮箱时,用户可以看到邮箱的首部,若用户需要打开某个邮件,该邮件才上传到用户的计算机上
  • IMAP 可以让用户在不同的地方使用不同的计算机随时上网阅读处理邮件,还允许只读取邮件中的某一个部分

五、万维网 WWW

1. 万维网的概念

  • 万维网(World Wide Web,WWW):是一个全球范围的、分布式、联机式的信息存储空间,各种 “资源” 通过 HTTP 协议传送给用户。
  • 一个网页 = 1 1 1 个 HTML 文件 + n n n 个网页元素(本质上是文件)
  • 浏览器访问一个网页的过程:
    1. 用户输入网址(域名)
    2. 浏览器通过 DNS 服务器查询域名对应的 IP 地址,查到后,浏览器会将查询结果(域名和 IP 的映射)缓存在本地
    3. 浏览器与 <Web 服务器 IP 地址:80 端口> 建立 TCP 连接
    4. 浏览器在 握手 ③ 中携带 HTTP 请求报文(指明要访问那个 HTML 网页)
    5. 服务器返回 HTTP 响应报文(携带 HTML 文件)
    6. 如果 HTML 引用了其他 n n n 个元素,还需要 n n n 组 HTTP 请求&响应(持续、非持续工作方式有所区别)

2. 万维网的组成

  • 统一资源定位符 URL
    • URL = <协议>://<主机>:<端口>/<路径>,指向万维网上的某个特定资源
    • 端口、路径可以省去,因为有默认值(Web 服务器 HTTP 默认 80 端口,默认首页资源 index.html
  • 超文本传输协议 HTTP
  • 超文本标记语言 HTML:一种文档结构的标记语言,使用一些约定的标记对页面上的各种信息(包括文字、图像、视频等)、格式进行描述

3. 超文本传输协议 HTTP

  • 超文本传输协议(Hypertext Transfer Protocol,HTTP):应用层协议,基于 TCP,默认端口 80
Ⅰ. HTTP 报文结构
  • 请求报文:
    在这里插入图片描述
    • HTTP 请求报文通常很小,因此通常不考虑 TCP 报文段传输时延
    • HTTP 常用方法:
      方法意义
      GET 请求读取由 URL 标识的信息
      HEAD与GET类似,但仅返回响应头,不返回响应体,常用于获取资源元信息
      POST给服务器发送待处理数据(如账号、密码)
      PUT向服务器发送数据,用于更新指定资源(完整替换),若资源不存在则可能创建
      DELETE请求服务器删除指定资源
      OPTIONS用于请求服务器支持的HTTP方法,常用于跨域资源共享(CORS)预检请求
      PATCH用于部分更新指定资源,仅发送需要修改的部分数据,区别于PUT的完整替换
      CONNECT建立与目标资源的隧道连接,主要用于HTTPS协议中的代理服务器
      TRACE回显服务器收到的请求,用于诊断或测试,生产环境中通常禁用
    • 常见请求字段
      请求字段作用示例值
      Accept告知服务器客户端能够处理的内容类型(MIME类型),用于内容协商。text/html,application/json
      Connection控制当前连接的管理方式,如是否持久化。keep-alive(持续连接)或close(非持续连接)
      Cookie携带客户端存储的Cookie信息,用于会话跟踪或身份验证。session_id=12345; user=john
      Host指定请求资源的服务器域名和端口(HTTP/1.1强制要求),用于虚拟主机识别。www.example.com:8080
  • 响应报文:
    在这里插入图片描述
    • HTTP 响应报文通常较大(如图片、视频),因此通常要考虑 TCP 报文段传输时延
    • 状态码:
      状态码意义
      1xx信息
      2xx成功
      3xx重定向
      4xx客户端错误
      5xx服务器错误
Ⅱ. HTTP 工作过程与工作方式
  • HTTP 工作过程:
    • 先从服务器获得 HTML 文件,才能知道其他 n n n 个被引用的网页元素的 URL
    • 每个文件的获取都需要经过一组 HTTP 请求&响应
  • HTTP 工作方式
    • 非持续连接
      • 特点:每建立一次 TCP 连接,仅完成一组 HTTP 请求&响应。因此每请求一个文件至少需要 2 × R T T 2 × RTT 2×RTT
      • 可以通过 “并行 TCP 连接” 加快获取 n n n 个网页元素的速度
      • HTTP/1.0 默认采用非持续连接
        在这里插入图片描述
    • 持续连接
      • 特点:每建立一次 TCP 连接,可以完成多组 HTTP 请求&响应。TCP 连接再传输结束后不会立即断开,可以多保持一段时间(由 Web 服务器设置持续时间参数)
      • HTTP/1.1 默认次啊用持续连接(除非在 HTTP 请求报文中设置参数 Connection: Close
      • 又可分为非流水线与非流水线
        • 非流水线:只有上一次 HTTP 请求收到响应后,才能发出下一次 HTTP 请求
          在这里插入图片描述
        • 流水线:可以连续发出多个 HTTP 请求
          在这里插入图片描述
Ⅲ. Cookie 的作用
  • Cookie:Cookie 识别码需要分别缓存在 Web 服务器、客户端,相当于给网站的访客制作一张 “临时身份证”(一段时间后会过期)。
  • Cookie 的工作流程:
    1. 浏览器发起 HTTP 请求(POST):例如登录个人账号
    2. Web 服务器生成 Cookie 识别码,并存储在服务器。相当于一个临时身份证(有效期内可用)
    3. 通过 HTTP 响应报文(携带 Cookie 字段)返回给客户端
    4. 浏览器获取 Cookie 并缓存在本地,每次发出 HTTP 请求时携带 Cookie,亮明身份
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐