Network


计算机网络

全局通信链路

浏览器访问一个网站时,实际发生的是一条连续的协议链:

  1. 应用程序先根据 URL 确定资源与访问协议;
  2. DNS 把域名转换为服务器 IP 地址;
  3. 运输层通过端口号定位服务器进程,并选择 TCP 或 UDP;
  4. 网络层根据目的 IP 和路由表确定下一跳;
  5. 数据链路层根据当前链路的 MAC 地址形成帧;
  6. 物理层把帧中的比特转换为电、光或无线信号;
  7. 路由器逐跳拆除旧链路层首部,再为下一条链路重新封装;
  8. 服务器按相反方向逐层解封装,并把请求交给应用进程。

[!note] 三类地址与一个名称

  • 域名服务于人类识别,必须经 DNS 转换;
  • IP 地址描述网络位置,供主机和路由器进行端到端寻址;
  • MAC 地址描述当前链路上的接口,只负责一跳交付;
  • 端口号描述主机内的进程,决定数据最终交给哪个应用。
层次 本层直接处理的对象 本层解决的核心问题 典型协议或技术
应用层 应用报文 字节代表什么业务含义 DNS、HTTP、SMTP、FTP、DHCP
运输层 TCP 段、UDP 用户数据报 数据交给哪个进程,是否可靠 TCP、UDP
网络层 IP 数据报 分组如何跨越多个网络 IP、ICMP、RIP、OSPF、BGP
数据链路层 当前一跳怎样成帧、检错和转发 Ethernet、PPP、VLAN、STP
物理层 比特与信号 比特怎样在介质中传播 编码、调制、复用、传输介质

章节索引

  • [[#第一章 计算机网络概述与分层体系]]
  • [[#第二章 物理层:数据、信号与传输能力]]
  • [[#第三章 数据链路层:成帧、检错与局域网转发]]
  • [[#第四章 网络层:IP 寻址、路由与跨网络交付]]
  • [[#第五章 运输层:进程通信、可靠传输与拥塞控制]]
  • [[#第六章 应用层:DNS、Web、邮件与网络配置]]
  • [[#第七章 Wireshark 抓包分析:从帧到应用报文]]
  • [[#第八章 网络安全:保密、鉴别与访问控制]]
  • [[#第九章 综合通信场景]]
  • [[#第十章 固定事实、公式与概念对照]]

第一章 计算机网络概述与分层体系

第一次接触计算机网络时,很容易把它看成一串协议名称。其实,这门课始终在回答几个连续的问题:数据由谁产生,线路怎样共享,分组怎样经过中间设备,通信对象怎样定位,以及传输效果怎样衡量。后面的交换方式、分层体系和性能指标,都会围绕这些问题逐步展开。

[!note] 概念关系 网络边缘产生数据网络核心转发数据交换技术决定链路如何共享分层体系决定各类问题由谁处理性能指标描述通信代价

1. 计算机网络的基本构成

先不要急着记协议。要理解网络怎样工作,第一步是看清网络里有哪些角色:主机负责运行应用、产生和接收数据,中间设备负责转发,链路负责承载信号。弄清网络边缘和网络核心的分工后,后面的协议才有明确的位置。

计算机网络是由相互连接、可以独立运行的计算机系统组成的集合。这里包含两个关键条件:

  • 互连:系统之间存在通信路径,可以交换数据;
  • 自治:每台主机能够独立运行,并不是同一台大型计算机内部的若干部件。

网络建立之后,最直接的价值是连通性资源共享。连通性使不同主机上的进程可以通信。资源共享则使文件、软件、存储、打印机和计算能力可以被远程使用。

从功能上看,互联网可分为边缘部分与核心部分。传统教材也常把边缘部分称为资源子网,因为主机和应用在这里提供、使用计算与信息资源。把核心部分称为通信子网,因为路由器和链路主要负责数据转发。

1.1 网络边缘

先看通信发生的两端。网络边缘主要由主机组成,应用程序在这里运行,数据也在这里产生或被接收。浏览器、邮件客户端、Web 服务器和即时通信程序都属于网络边缘。

边缘系统常见两种组织方式:

  • 客户/服务器模式(C/S):服务器长期运行并等待请求,客户端主动发起通信。网页访问、邮件服务和数据库服务通常属于这种模式。
  • 对等模式(P2P):结点既可以请求资源,也可以提供资源,系统不完全依赖固定的中心服务器。

1.2 网络核心

数据离开边缘主机后,就进入网络核心。核心部分主要由路由器和通信链路组成。路由器通常不理解网页、邮件或文件的具体内容,它只读取分组首部中的网络层信息,并据此选择下一跳。

网络边缘负责“产生和使用数据”,网络核心负责“把数据送向目标”。这种分工使核心网络不必为每一种应用单独设计转发机制。

2. 信息交换方式:电路、报文与分组

知道网络由哪些部分组成后,下一个问题是:多台主机怎样共享有限的链路?电路交换、报文交换和分组交换给出了三种不同做法。比较它们时,抓住三个点即可:是否提前预留资源、以多大的数据单位转发,以及中间结点收到多少数据后才继续发送。

通信网络必须决定:多个用户怎样共享链路,以及一份较长的数据怎样经过中间结点到达目标。

2.1 电路交换

第一种做法是先把资源固定下来。电路交换会在通信开始前建立端到端的专用通路,并在整个通信期间独占相关资源,传统电话网络就是典型例子。

它的优点是资源稳定、时延较可预测。缺点是即使通信双方暂时没有数据,预留的链路资源仍然不能被其他用户使用。计算机通信具有明显的突发性,往往是一段时间大量发送,随后又长时间空闲。所以固定独占资源容易造成浪费。

2.2 报文交换

第二种做法是不预留专用线路,但把整份报文作为一个单位存储转发。中间结点必须等完整报文全部到达后才能继续发送。如果报文很大,中间设备需要更多存储空间,其他报文也可能等待很久。

2.3 分组交换

第三种做法是在报文交换的基础上继续把数据切小。分组交换把较长报文拆成多个较小分组,每个分组携带必要的控制信息,并在路由器中采用存储转发

  1. 路由器接收完整分组;
  2. 检查首部与差错情况;
  3. 查询转发表;
  4. 将分组送入对应输出队列;
  5. 链路空闲时继续发送。

多个用户的分组可以交错使用同一条链路,这称为统计复用。它非常适合突发式数据通信,但也带来三个结果:

  • 每个分组都要附加首部,会产生额外开销;
  • 多个分组竞争同一输出链路时会排队;
  • 缓冲区不足时可能丢包,且不同分组可能经过不同路径而乱序到达。

互联网选择分组交换,并不是因为它在所有方面都优于电路交换,而是因为它更适合大量用户、突发流量和动态拓扑。

3. 分组交换中的数据报与虚电路

分组交换只说明数据会被拆成较小的分组,还没有回答另一个问题:这些分组是否必须沿同一条路径前进?数据报和虚电路就是两种不同安排。它们会影响路由器需要保存多少状态、分组首部要携带什么信息,以及链路故障后能否灵活改道。

分组交换内部仍可采用不同组织方式。

3.1 数据报服务

先看不预先固定路径的做法。数据报网络在发送前不建立逻辑连接,每个分组都携带完整目的地址,路由器独立转发。于是不同分组可能走不同路径,也可能乱序、丢失或重复。

IP 网络采用这种思想。网络层尽力转发,但不承诺可靠交付;可靠性由需要它的上层协议完成。

这种设计的好处是核心网络状态较少,某条链路或路由器发生故障时,后续分组可以改走其他路径。

3.2 虚电路服务

另一种做法是先建立逻辑路径。虚电路网络在传输数据前建立逻辑连接,后续分组只需携带较短的虚电路标识,中间结点根据已经保存的状态转发。传输结束后,再释放这条逻辑连接。

虚电路包含建立、数据传输和释放三个阶段,但它建立的是逻辑连接,并不等于为每次通信重新铺设一条物理线路。因此,题目问“虚电路可以省去什么阶段”时,通常是“建立物理连接”。

4. 网络分层、协议、服务与接口

交换技术解决了链路怎样共享的问题。不过一次完整通信还同时涉及信号、成帧、寻址、可靠性和应用语义。如果把所有规则都塞进一个协议,任何局部变化都可能影响整个系统。分层就是为了解决这种复杂性:每一层只处理一类问题,并向上一层提供稳定的能力。

一次通信同时涉及应用语义、可靠传输、寻址、逐跳交付和信号传输。如果所有功能都写进一个巨大协议,任何链路技术或应用变化都可能影响整个系统。

分层结构把问题拆开:每一层只处理一类职责,并通过接口使用下层提供的服务。这样,以太网可以替换为无线链路而不要求 HTTP 改变。应用也可以从网页变为邮件而不要求路由器理解新的业务内容。

4.1 实体、协议、服务与接口

分层以后,会同时出现实体、协议、服务和接口几个词。它们容易混淆,是因为都在描述“层与层怎样协作”,但实际指向的关系不同。

  • 实体:某一层中执行协议功能的软件或硬件模块。
  • 对等实体:位于不同主机、处在同一层的实体。
  • 协议:对等实体之间通信时共同遵守的规则。
  • 服务:下层向上层提供的能力。
  • 接口:相邻两层之间调用服务的位置和方式。

协议约束的是“不同主机的同层实体怎样交流”;服务描述的是“同一主机中下层能为上层完成什么”。

协议通常包含三个要素:

要素 含义 示例
语法 报文格式、字段长度、排列顺序 TCP 首部中端口号和序号的位置
语义 每个字段表示什么,应执行什么动作 SYN 表示请求建立连接
同步 报文何时发送、先后关系如何 三次握手中 SYN、SYN+ACK、ACK 的顺序

4.2 服务访问点、SDU、PCI 与 PDU

相邻层之间通过明确的服务访问位置交换数据。**服务访问点(SAP)**表示上层实体使用下层服务的逻辑入口。它不是物理插口,而是分层体系中“服务从哪里被调用”的抽象位置。

上层交给本层处理的数据称为服务数据单元(SDU)。本层为了完成自己的职责,会加入协议控制信息(PCI)。二者共同形成当前层的协议数据单元(PDU)

$$PDU=PCI+SDU$$

例如,应用层数据交给 TCP 后成为 TCP 的 SDU。TCP 加入源端口、目的端口、序号、确认号和窗口等控制字段,形成 TCP 报文段。这个报文段再整体成为 IP 层的 SDU,由 IP 加入网络层首部。

同一份数据在上一层是完整 PDU,交给下一层后便成为下一层要承载的 SDU。可以看出,封装不是若干首部的机械堆叠,而是相邻层之间不断改变数据身份的过程。

分层协议中还会反复出现几类通用功能:

  • 复用与分用:多个上层对象共享一个下层服务,接收时再依据标识交还给正确对象;
  • 分段与重装:把大数据划分为适合传输的单位,并在接收端重新组合;
  • 差错控制:发现或恢复传输错误;
  • 流量控制:避免发送速度长期超过接收能力;
  • 连接建立与释放:在传输前后维护双方状态。

这些功能可能在不同层重复出现,但作用范围不同。例如数据链路层对一跳链路检错,TCP 对端到端字节流进行确认和重传。

4.3 封装与解封装

分层解决了职责划分,接下来要看数据怎样在层与层之间移动。发送端的数据向下经过各层时,每一层都会加入本层控制信息:

  • 运输层加入端口、序号和确认信息;
  • 网络层加入源 IP、目的 IP、TTL 等信息;
  • 数据链路层加入源 MAC、目的 MAC 和 FCS;
  • 物理层把整个帧的比特编码成信号。

接收端按相反顺序处理。数据链路层只解释帧首部和尾部,网络层只解释 IP 首部,运输层再把数据交给对应端口。

这种逐层包装称为封装。各层的协议数据单元(PDU)常用名称如下:

层次 常用 PDU 名称
应用层 报文、消息
运输层 TCP 段、UDP 用户数据报
网络层 IP 数据报、分组
数据链路层
物理层 比特流

5. OSI、TCP/IP 与教学五层模型

分层的思路确定以后,还可以按照不同粒度来划分层次。OSI 七层、TCP/IP 四层和教学五层描述的是同一个通信过程,只是拆分得粗细不同。判断它们怎样对应时,要看每层负责什么,而不是只看名称。

OSI 七层模型 TCP/IP 四层模型 教学五层模型
应用层、表示层、会话层 应用层 应用层
运输层 运输层 运输层
网络层 网际层 网络层
数据链路层、物理层 网络接口层 数据链路层、物理层

OSI 模型把应用相关功能进一步拆成应用、表示和会话三层。实际互联网协议体系通常采用 TCP/IP 模型。教学五层模型把 TCP/IP 的网络接口层拆开,是因为“帧怎样在一跳中传输”和“比特怎样变成信号”是两类不同问题。

5.1 五层模型中各层的职责

把三个模型对应起来以后,再回到本课程使用的教学五层模型。它把一次通信中的五类问题分别交给不同层处理。

层次 核心职责 典型对象与协议
应用层 规定应用进程交换什么报文以及报文含义 HTTP、DNS、SMTP、FTP、DHCP
运输层 在两台主机的应用进程之间提供端到端通信 TCP、UDP、端口号
网络层 在多个网络之间寻址、选路和转发分组 IP、ICMP、路由协议、路由器
数据链路层 在一段具体链路上成帧、检错并完成一跳交付 Ethernet、PPP、MAC 地址、交换机
物理层 把比特转换成介质能够承载的电、光或无线信号 编码、调制、传输介质

路由器转发 IP 分组时通常只处理到网络层,不需要理解其中的 TCP 端口和 HTTP 内容。终端主机则需要逐层解封装,直到把数据交给应用进程。设备处理到哪一层,取决于它要完成的功能。

6. 速率、时延与网络利用率

知道网络怎样工作之后,还要判断它工作得怎么样。日常说的“网速”其实混在了一起:链路上限、实际吞吐量、发送所需时间和信号传播时间,受影响的因素都不同。把这些指标分开,后面的计算才不会混淆。

网络快慢不能只用一个“网速”概括。不同指标描述的是不同限制。

6.1 速率、带宽与吞吐量

  • 速率通常指单位时间传输的比特数,单位为 bit/s。
  • 带宽在数字通信中常表示链路能够提供的最高数据率。
  • 吞吐量是实际测得的有效传输速率。

一条标称 1 Gbit/s 的链路并不意味着应用总能以 1 Gbit/s 下载。协议首部、链路竞争、服务器能力、路径中较慢的链路和拥塞都会降低实际吞吐量。端到端吞吐量常受瓶颈链路限制。

6.2 四种时延

知道速率以后,还要看一个分组为什么会花时间。它从产生到到达,通常会经历四类时延:

  1. 发送时延:发送端把分组全部推入链路所需的时间;
  2. 传播时延:信号从链路一端传播到另一端所需的时间;
  3. 处理时延:设备检查首部、校验并查表所需的时间;
  4. 排队时延:分组在输出队列中等待链路空闲的时间。

发送时延为:

$$ d_{trans}=\frac{L}{R} $$

其中,$L$ 是分组长度(bit),$R$ 是链路速率(bit/s)。分组越长或链路越慢,发送时延越大。

传播时延为:

$$ d_{prop}=\frac{D}{v} $$

其中,$D$ 是距离,$v$ 是信号在介质中的传播速度。传播时延与分组长度无关。

[!example] 发送时延与传播时延不是同一概念 一条 10 Mbit/s 链路发送 1500 B 分组:

$$d_{trans}=\frac{1500\times 8}{10\times10^6}=1.2\text{ ms}$$

若链路长 2000 km,传播速度为 $2\times10^8$ m/s:

$$d_{prop}=\frac{2\times10^6}{2\times10^8}=10\text{ ms}$$

提高链路速率会缩短发送时延,但不会改变由距离决定的传播时延。

6.3 RTT 与时延带宽积

单向时延说明数据到达要多久,但很多协议还关心一次往返。**RTT(往返时间)**表示数据从一端到另一端再返回所需的时间,TCP 会根据它估计重传超时时间。

时延带宽积表示链路上可以同时“在途”的比特数量:

$$ \text{时延带宽积}=\text{传播时延}\times\text{链路带宽} $$

高带宽、长距离链路可能容纳大量尚未到达的比特。如果发送窗口过小,即使链路带宽很高,也无法把链路充分利用起来。

6.4 利用率与排队增长

利用率越高,链路看起来越“忙”,但并不一定越好。当输入流量接近输出能力时,队列会迅速增长,分组等待更久,缓冲区满后还会丢包。所以较高利用率和较低时延之间存在明显取舍。

7. 网络范围、拓扑与 ISP 结构

前面是从功能和性能看网络,现在换一个角度:网络覆盖多大范围,设备又是怎样连接的。LAN、WAN 等名称描述覆盖范围,星型、总线型等名称描述连接关系,多层 ISP 结构则说明许多独立网络怎样继续组成互联网。

按覆盖范围可分为:

  • WAN:广域网;
  • MAN:城域网;
  • LAN:局域网;
  • PAN:个人区域网;
  • BAN/BSN:人体区域网或体域传感网。

常见拓扑包括星型、总线型、环型、树型和网状。拓扑描述连接关系,不直接等同于协议。例如现代交换式以太网在物理连接上通常呈星型,而早期共享式以太网在逻辑上具有总线特征。

互联网并不是由一台中心设备统一控制的网络,而是大量自治网络通过 ISP 和互联网交换点互联形成的“网络的网络”。数据可能从本地 ISP 进入地区网络、骨干网络,再到达另一地区的 ISP。

8. 网络拓扑及其取舍

知道拓扑名称还不够,更重要的是理解它为什么会影响网络。结点和链路怎样连接,会直接改变故障影响范围、布线成本、扩展方式和可用路径。

  • 总线型:所有结点共享一条主干介质,布线简单,但主干故障会影响整体,共享介质还需要解决冲突;
  • 星型:各结点连接到中心设备,单条接入链路故障通常只影响一个结点,便于管理;中心设备故障则可能影响整个星型网络;
  • 环型:结点依次连接成环,数据沿环传递;链路或结点故障可能破坏环,双环等设计可提高可靠性;
  • 树型:由多个星型结构分层扩展,适合组织较大网络,但上层设备和链路更关键;
  • 网状:结点之间存在多条冗余路径,可靠性高,代价是链路和路由控制更复杂。

现代交换式以太网在物理连接上通常呈星型。早期共享以太网在逻辑行为上更接近总线型。物理拓扑说明线缆怎样连接,逻辑拓扑说明数据怎样传播,两者不一定完全相同。

9. 网络发展、三网融合与多层 ISP

网络并不是一开始就形成今天的样子。早期的电话、电视和计算机通信各自建设网络。当语音、视频和数据都能数字化并封装成分组后,它们才逐渐可以共用 IP 基础设施。这就是三网融合,重点是业务和承载方式逐步统一,而不是简单把三张物理网络接在一起。

计算机网络的发展可概括为三个阶段:

  1. ARPANET 阶段:验证分组交换和分布式网络结构;
  2. 三级网络阶段:形成主干网、地区网和局域网分层互联的结构;
  3. 多层 ISP 阶段:本地 ISP、地区 ISP、骨干 ISP 和自治系统通过互联链路与互联网交换点连接。

互联网交换点(IXP)允许不同网络在本地直接交换流量,减少不必要的远距离绕行。互联网由大量自治网络共同组成,没有单一中心设备,也没有要求所有分组经过的唯一固定路径。

章节练习与解析

材料原题

原题 1|样卷·单项选择题

网络协议是_________之间进行通信规程或约定。

  • A. 同一结点上下层
  • B. 不同结点
  • C. 相邻实体
  • D. 不同结点对等实体

[!example]- 解析 **答案:D。**协议约束的是不同结点中处于同一层的对等实体。相邻层之间讨论的是服务与接口,而不是协议。

原题 2|样卷·单项选择题

采用虚电路分组交换方式时,可以省去的阶段是________。

  • A. 建立逻辑连接
  • B. 结束本次连接
  • C. 传输数据
  • D. 建立物理连接

[!example]- 解析 **答案:D。**虚电路需要先建立逻辑连接,传输结束后还要释放逻辑连接,但不需要像电路交换那样建立一条端到端的物理专用电路。

补充题

题 3|计算机网络的组成

一次网页访问中,关于网络边缘与网络核心的说法,正确的是________。

  • A. 浏览器和 Web 服务器属于网络核心,路由器属于网络边缘
  • B. 网络边缘主要产生和接收数据,网络核心主要逐跳转发分组
  • C. 网络核心负责解释 HTTP 页面内容,网络边缘只负责物理信号传输
  • D. 网络边缘只包含通信链路,不包含主机和应用进程

[!example]- 解析 **答案:B。**网络边缘主要由主机及其中运行的应用进程组成,负责产生和接收数据。网络核心主要由路由器和通信链路组成,负责把分组逐跳转发到目标网络。浏览器和服务器属于边缘,沿途路由器属于核心。

题 4|C/S 与 P2P

关于客户/服务器结构和 P2P 结构,下列说法正确的是________。

  • A. P2P 系统中绝对不能出现任何服务器
  • B. C/S 中客户端和服务器通常都长期提供同等资源
  • C. 区分二者的关键之一是数据服务是否主要由固定服务器承担
  • D. 只要系统中出现登录服务器,就一定不是 P2P

[!example]- 解析 **答案:C。**C/S 中服务器通常长期运行并向多个客户端提供稳定服务。P2P 中结点通常既可请求资源,也可向其他结点提供资源。P2P 系统仍可能使用服务器完成登录、索引或协调。所以关键区别不是系统中是否绝对没有服务器。

题 5|三种交换方式

关于电路交换、报文交换和分组交换,下列说法正确的是________。

  • A. 电路交换在通信前预留端到端资源,空闲时也会占用线路
  • B. 报文交换把报文拆成固定小分组,每个分组独立转发
  • C. 分组交换一定不会产生排队、丢包或乱序
  • D. 三种交换方式都必须先建立物理专用电路

[!example]- 解析 **答案:A。**电路交换在通信前预留端到端资源,时延稳定但空闲时仍占用线路。报文交换以完整报文为单位存储转发。分组交换把报文拆成较小分组,多个用户可以统计复用链路。不过可能出现排队、丢失和乱序。

题 6|分组交换与突发流量

计算机通信通常更适合采用分组交换,主要原因是________。

  • A. 计算机流量常有突发性,分组交换能让多路通信统计复用链路
  • B. 分组交换会为每次通信长期预留固定带宽
  • C. 分组交换不需要任何首部开销
  • D. 分组交换能保证所有分组永远按序到达

[!example]- 解析 **答案:A。**计算机流量往往具有明显的突发性:短时间集中发送,随后长时间空闲。若长期预留电路,空闲期间的带宽无法被其他用户使用。分组交换允许不同通信的分组交错共享链路,提高资源利用率。

题 7|数据报与虚电路

关于数据报服务和虚电路服务,下列说法正确的是________。

  • A. 数据报服务发送前必须建立逻辑连接,且每个分组只携带虚电路号
  • B. 虚电路服务中后续分组通常沿已建立的逻辑路径转发
  • C. 数据报服务要求同一报文的所有分组必须经过完全相同路径
  • D. 虚电路服务不需要中间结点保存任何连接状态

[!example]- 解析 **答案:B。**数据报服务不预先建立逻辑连接,每个分组可独立选择路径,因此可能乱序,但路径发生故障时更容易改道。虚电路服务先建立逻辑路径,后续分组通常沿同一路径传输。

题 8|实体、协议、服务与接口

某主机中的 TCP 向应用程序提供可靠字节流;两个主机中的 TCP 按序号和确认号交换报文;应用程序通过 Socket 调用 TCP。上述三种关系依次对应________。

  • A. 协议、服务、实体
  • B. 服务、协议、接口
  • C. 接口、协议、服务
  • D. 实体、接口、协议

[!example]- 解析 答案:B。TCP 向应用程序提供可靠字节流属于服务。两个主机中的 TCP 按规则交换报文属于协议。应用程序通过 Socket 使用 TCP 能力属于相邻层之间的接口

题 9|协议三要素

TCP 首部中序号字段占 32 位;SYN=1 表示请求建立连接;服务器收到 SYN 后发送 SYN+ACK。三者依次属于协议的________。

  • A. 语法、语义、同步
  • B. 语义、语法、同步
  • C. 同步、语义、语法
  • D. 语法、同步、语义

[!example]- 解析 **答案:A。**序号字段占 32 位属于语法,规定字段格式和长度。SYN=1 表示建立连接属于语义。收到 SYN 后发送 SYN+ACK 属于同步,规定通信动作的时序和先后关系。

题 10|封装与解封装

浏览器产生一段 HTTP 请求后,按照教学五层模型,发送端的封装顺序正确的是________。

  • A. 应用数据 → TCP 段/UDP 用户数据报 → IP 数据报 → 帧 → 物理信号
  • B. 应用数据 → IP 数据报 → TCP 段/UDP 用户数据报 → 物理信号 → 帧
  • C. 帧 → IP 数据报 → TCP 段/UDP 用户数据报 → 应用数据 → 物理信号
  • D. 物理信号 → 帧 → IP 数据报 → TCP 段/UDP 用户数据报 → 应用数据

[!example]- 解析 **答案:A。**发送端:应用数据 → TCP 段或 UDP 用户数据报 → IP 数据报 → 数据链路层帧 → 物理信号。接收端按相反顺序处理:信号 → 帧 → IP 数据报 → TCP 段或 UDP 用户数据报 → 应用数据。

题 11|三类地址

一次跨网段通信通常同时需要 IP 地址、MAC 地址和端口号。下列对应关系正确的是________。

  • A. IP 地址定位进程,MAC 地址定位应用协议,端口号定位网络位置
  • B. IP 地址负责端到端主机寻址,MAC 地址负责当前一跳交付,端口号定位主机中的进程
  • C. IP 地址只在物理层使用,MAC 地址只在应用层使用
  • D. 端口号用于路由器选择下一跳,MAC 地址用于 DNS 解析

[!example]- 解析 **答案:B。**IP 地址用于标识端到端目标主机及其所在网络;MAC 地址用于当前一跳的链路交付;端口号用于把到达主机的数据交给具体应用进程。

题 12|模型对应关系

关于 OSI、TCP/IP 和教学五层模型的对应关系,下列说法正确的是________。

  • A. OSI 的应用层、表示层、会话层通常对应 TCP/IP 的应用层
  • B. OSI 的运输层对应 TCP/IP 的网络接口层
  • C. OSI 的网络层对应教学五层模型的数据链路层
  • D. OSI 的物理层在教学五层模型中被合并进应用层

[!example]- 解析 **答案:A。**OSI 的应用层、表示层、会话层合并为 TCP/IP 与教学模型的应用层。OSI 运输层对应运输层。OSI 网络层对应 TCP/IP 网际层和教学模型网络层。

题 13|时延计算

一条 10 Mbit/s 链路发送一个 1500 B 的分组,链路长度为 2000 km,信号传播速度为 $2\times10^8$ m/s。忽略处理和排队时延,发送时延、传播时延和单向总时延分别约为________。

  • A. 1.2 ms、10 ms、11.2 ms
  • B. 10 ms、1.2 ms、11.2 ms
  • C. 12 ms、1 ms、13 ms
  • D. 0.12 ms、100 ms、100.12 ms

[!example]- 解析 **答案:A。**分组长度为 $1500\times8=12000$ bit。发送时延为 $12000/(10\times10^6)=1.2$ ms。传播时延为 $2\times10^6/(2\times10^8)=10$ ms。单向总时延约为 $11.2$ ms。

题 14|RTT 与时延带宽积

一条链路带宽为 100 Mbit/s,往返时间 RTT 为 40 ms。若忽略其他限制,为了使链路持续保持满负荷,发送端最多需要允许约多少数据处于“尚未确认”的状态?

  • A. $4\times10^6$ bit,约 500 KB
  • B. $4\times10^5$ bit,约 50 KB
  • C. $4\times10^7$ bit,约 5 MB
  • D. $2.5\times10^6$ bit,约 312.5 KB

[!example]- 解析 **答案:A。**近似需要一个带宽时延积:$100\times10^6\times0.04=4\times10^6$ bit,即约 500 KB。该数值表示一个 RTT 内可以注入链路而尚未收到确认的数据量。

题 15|排队时延与利用率

链路利用率从 50% 提高到 90% 时,排队时延可能急剧上升,主要原因是________。

  • A. 分组到达完全均匀,因此队列长度固定
  • B. 平均到达速率接近服务速率时,突发到达更容易形成并积累队列
  • C. 利用率越高,传播速度会自动降低
  • D. 链路利用率只影响发送时延,不影响排队时延

[!example]- 解析 **答案:B。**分组到达具有波动性。当平均到达速率接近链路服务速率时,短时间的集中到达会迅速形成队列,而链路几乎没有空闲能力消化积压。因此利用率接近 100% 时,排队时延呈非线性增长。

题 16|网络范围、拓扑与 ISP

关于 LAN、MAN、WAN、PAN 和互联网的说法,正确的是________。

  • A. PAN 通常覆盖国家范围,WAN 通常只覆盖个人周边设备
  • B. LAN 通常覆盖建筑或校园,WAN 可跨越地区或国家
  • C. 互联网是由单一中心路由器直接控制的局域网
  • D. MAN、LAN、PAN 都表示同一种网络范围

[!example]- 解析 **答案:B。**LAN 通常覆盖建筑或校园,MAN 覆盖城市范围,WAN 跨越地区或国家,PAN 覆盖个人周边设备。互联网由大量自治网络、ISP、主干网和交换点互联形成。所以称为网络的网络。

题 17|SAP、SDU、PCI 与 PDU

某层收到上层交下来的数据后加入本层首部。关于 SDU、PCI、PDU 和 SAP,下列说法正确的是________。

  • A. PDU = PCI + SDU,SAP 是上层使用下层服务的逻辑入口
  • B. SDU 是本层加入的控制信息,PCI 是上层原始数据
  • C. SAP 是物理插头,PDU 只存在于物理层
  • D. PDU = SAP + PCI,与 SDU 无关

[!example]- 解析 **答案:A。**SDU 是上层交给本层的数据。PCI 是本层为了执行协议而加入的控制信息。PDU 是本层实际与对等实体交换的协议数据单元,满足 PDU = PCI + SDU。SAP 是上层使用下层服务的逻辑入口。

题 18|拓扑结构

关于星型、总线型和网状拓扑,下列说法正确的是________。

  • A. 星型拓扑完全不依赖中心设备
  • B. 总线型拓扑主干故障可能影响大量结点
  • C. 网状拓扑链路最少、成本最低
  • D. 三种拓扑在故障范围和扩展性上没有差别

[!example]- 解析 **答案:B。**星型便于扩展和定位接入链路故障,但依赖中心设备。总线型布线简单,却共享介质且主干故障影响大。网状提供冗余路径、可靠性高,但链路数量和路由控制成本较高。

题 19|三网融合与 ISP

关于三网融合和 IXP,下列说法正确的是________。

  • A. 三网融合要求电话网、电视网和计算机网络必须使用完全相同的物理线路
  • B. IXP 使不同网络可以本地直接交换流量,减少不必要绕行
  • C. IXP 只负责给用户分配私有 IP 地址
  • D. 三网融合表示所有网络都取消 IP 技术

[!example]- 解析 **答案:B。**三网融合主要指语音、视频和数据业务逐渐在统一数字与 IP 技术上承载,并不要求所有接入介质完全相同。IXP 允许不同网络直接交换流量,减少经远端上级 ISP 绕行。


第二章 物理层:数据、信号与传输能力

上一章说到数据会在网络中传输。不过“传输数据”还只是一个抽象说法。真正进入网线、光纤或无线空间的,并不是数字 01 本身,而是电压、光强或电磁波的变化。物理层要解决的,就是如何用这些信号表示比特,以及一条信道最多能传多快。

[!note] 概念关系 数据需要借助信号传输 → 信号按时间划分为码元 → 编码解决比特表示与同步 → 调制适配带通信道 → 奈奎斯特与香农描述速率上限 → 复用让多路通信共享介质

1. 数据、信号、比特与码元

进入物理层后,最容易混淆的是数据、信号、比特和码元。数据是要表达的内容,信号是它在介质中的物理表现。比特描述二进制信息,码元描述一个信号时间单位中的状态。先把这四个概念分开,才能理解为什么一个码元有时可以承载多个比特。

数据是希望表达的内容,信号是数据在传输介质中的物理表现。文本、图像和语音都属于数据;电压高低、光强变化和无线载波变化属于信号。

数据与信号还可以分别分为模拟和数字:

  • 模拟数据在取值上连续,例如自然语音的声压变化;
  • 数字数据取离散值,例如二进制文件;
  • 模拟信号在时间和幅度上连续变化;
  • 数字信号通常由若干离散电平或状态组成。

码元是信号在一个基本时间间隔内呈现的状态。码元并不必然等于 1 bit。如果一个码元有 $V$ 种可区分状态,一个码元最多携带:

$$ \log_2V\text{ bit} $$

因此,比特率与波特率的关系为:

$$ \text{比特率}=\text{波特率}\times\log_2V $$
  • 比特率:每秒传输多少二进制位;
  • 波特率:每秒传输多少个码元。

当码元只有两种状态时,一个码元恰好表示 1 bit,两者数值相同;使用四种状态时,一个码元可表示 2 bit,此时比特率可以是波特率的两倍。

1.1 模拟数据、数字数据、模拟信号与数字信号

这里还要避免一个常见混淆:数据是模拟还是数字,与信号是模拟还是数字,并不是同一件事。数据描述信息本身的形式,信号描述它在介质中的物理表现。

  • 模拟数据可以通过模拟信号直接传输,例如传统话音;
  • 模拟数据也可以经过采样、量化和编码变成数字信号,例如 PCM;
  • 数字数据可以编码为数字信号,直接进行基带传输;
  • 数字数据也可以调制到模拟载波上,以适应带通信道。

把模拟数据转换为数字表示的设备或功能常称为编解码器(Codec)。把数字数据调制成模拟载波并在接收端解调的设备称为调制解调器(Modem)。编码与调制针对的是不同信道条件下的信号转换。

2. 物理接口的四类特性

知道怎样用信号表示比特,还不代表两台设备就能直接连接。插头尺寸、电压范围、引脚用途或信号时序,只要有一项不一致,通信就无法开始。所以物理层还必须统一接口的机械、电气、功能和过程特性。

物理层不仅讨论编码,还要规定设备接口本身。其典型特性包括:

  • 机械特性:插头形状、尺寸、引脚数量;
  • 电气特性:允许的电压、电流与信号电平;
  • 功能特性:每个引脚或信号线承担什么功能;
  • 过程特性:建立、维持和释放物理连接时,各信号出现的顺序。

这些规则的意义在于:即使两台设备都“能发电信号”,若接口尺寸、电压范围或时序不一致,仍然无法通信。

3. 传输组织与通信方向

接口确定以后,还要决定比特怎样排着发送,以及双方能否同时发送。并行或串行、单工或双工这些选择,会影响布线、同步难度和介质竞争。理解它们后,才能看懂为什么全双工以太网不再需要 CSMA/CD。

3.1 串行与并行

并行传输在同一时刻通过多条线路传输多个比特,短距离内部总线中较常见。串行传输通过一条或一对线路依次发送比特,布线较少,也更容易避免多条线路之间的到达时间差。所以现代远距离通信大多采用串行方式。

3.2 单工、半双工与全双工

  • 单工:只能沿一个方向传输,例如传统广播;
  • 半双工:双方都能发送,但同一时刻只能一方发送,例如对讲机;
  • 全双工:双方可以同时发送,例如现代交换式以太网。

全双工链路不存在双方争抢同一发送介质的问题,因此不需要在该链路上使用 CSMA/CD 进行碰撞检测。

4. 数字编码与载波调制

接下来要解决的是:怎样把数据真正变成适合信道传输的信号。基带编码直接构造数字信号,载波调制则把信息搬到信道允许通过的频率范围。两者都在表示数据,但适用的信道条件不同。

编码通常指把数据直接映射为数字信号,例如 NRZ、曼彻斯特编码和差分曼彻斯特编码。

调制是让载波的某个属性随数据变化,以便数字数据通过带通信道传输。常见方式包括:

  • ASK:改变载波振幅;
  • FSK:改变载波频率;
  • PSK:改变载波相位。

基带传输直接传输数字基带信号;频带传输则先把数据调制到适合信道的载波频率上。二者区别的核心不是“是否传输数字数据”,而是是否使用载波调制。

5. NRZ 编码与时钟同步

最直观的做法,是用两个电平分别表示 0 和 1,这就是理解 NRZ 的起点。问题在于,如果连续出现很多相同比特,信号会长时间不变,接收端就难以判断每一位的边界。为了解决同步问题,后面才会引出带有固定跳变的曼彻斯特编码。

NRZ(不归零编码)可以用一个电平表示 1、另一个电平表示 0。它结构简单。不过如果数据中连续出现大量相同位,信号可能长时间保持不变。接收端看不到跳变,就难以确认每一位的边界,发送端与接收端的时钟偏差会逐渐积累。

因此,某些编码方案会主动引入跳变,使接收端可以从信号变化中恢复时钟。曼彻斯特编码正是这种设计。

5.1 归零编码与不归零编码

不归零编码在一个比特周期内保持相应电平,不要求在位结束前回到基准电平,因此变化次数少、带宽利用率较高,但长串相同位会使时钟同步困难。

归零编码会在每个比特周期内回到零电平。回零动作提供更多定时信息,却增加信号跳变次数,需要更宽的频带。曼彻斯特编码进一步规定每一位中间必然跳变,使接收端可以稳定恢复时钟。

NRZ 追求简单和较少跳变;RZ 通过回零增加同步信息;曼彻斯特则以固定中间跳变换取最明确的同步。

6. 曼彻斯特编码

NRZ 的问题是长时间不跳变,接收端可能失去位边界。曼彻斯特编码的解决办法很直接:把每个比特周期分成两半,并规定中点一定跳变。这个跳变既表示数据,也帮助接收端恢复时钟,代价是占用更宽的频带。

曼彻斯特编码把每个比特周期分成前后两半,并规定每一位的中间必然发生一次电平跳变。这个跳变既携带数据,也提供时钟同步。

本课程采用的约定为:

  • 位中间从低电平跳到高电平,表示 0;
  • 位中间从高电平跳到低电平,表示 1。

不同教材可能采用相反约定,因此具体题目必须遵循课程给定规则。无论 0 和 1 怎样定义,曼彻斯特编码始终满足“每位中间必跳变”。

曼彻斯特编码的代价也很明显:即使数据位连续相同,每个比特周期仍需要一次中间跳变,因此信号变化频率较高,占用的频带也更宽。

7. 差分曼彻斯特编码

曼彻斯特编码依赖跳变方向。如果线路极性整体反接,高低电平会交换,判断就可能受到影响。差分曼彻斯特进一步改用“位开始处是否跳变”表示数据,让接收端关注相对变化,而不是绝对电平。

差分曼彻斯特编码同样规定每位中间必然跳变,但数据不由绝对跳变方向表示,而由比特开始处是否发生跳变表示。

本课程常用约定为:

  • 比特开始处发生跳变,表示 0;
  • 比特开始处不发生跳变,表示 1;
  • 每一位中间仍然必须跳变。

这种编码依赖“是否变化”,而不是依赖某一根线究竟被视为高电平还是低电平。若传输线极性被整体反接,所有高低电平都会交换,但“某处是否发生跳变”不会改变,因此差分编码对极性反转更不敏感。

[!example] 波形反推比特的依据 曼彻斯特编码观察每一位中间的跳变方向。差分曼彻斯特编码观察每一位开始处是否跳变。位边界上的额外跳变不必然表示新的数据,它可能只是相邻两位波形自然衔接的结果。

8. PCM:采样、量化与编码

前面的编码主要处理数字数据。不过语音这类信息原本是连续变化的。计算机只能保存有限位数。所以需要先在时间上取样,再把幅度归入有限等级,最后写成二进制,这就是 PCM。它的数据率也很直观:每秒取多少个样本,乘以每个样本需要多少位。

语音原本是连续变化的模拟信号,而计算机网络更适合处理离散的二进制数据。PCM(脉码调制)通过三步完成转换:

  1. 采样:按固定时间间隔测量模拟信号幅度;
  2. 量化:把连续幅度归入有限个等级;
  3. 编码:用二进制表示量化等级。

若每秒采样 $f_s$ 次,量化等级为 $Q$,每个样本需要的位数为:

$$ \log_2Q $$

数据率为:

$$ R=f_s\log_2Q $$

[!example] 样卷中的 PCM 计算 采样速率为 4000 样本/秒,分辨率为 256 级。因为 $256=2^8$,每个样本需要 8 bit:

$$R=4000\times8=32000\text{ bit/s}$$

量化等级越多,幅度表示越细,量化误差通常越小,但每个样本需要的比特数也越多。采样率越高,时间变化被记录得越细,但数据率也相应升高。

[!warning] PCM 的三个步骤 PCM 的标准过程是采样、量化、编码。“调制”不是这三步中的一项。

9. 信道容量:奈奎斯特准则与香农公式

学完编码以后,很自然会问:只要让信号变化得更快,数据率是不是就能一直提高?答案是否定的。信道带宽限制信号变化速度,噪声又限制接收端区分相邻状态的能力。奈奎斯特准则和香农公式分别从这两个角度给出理论上限。

提高发送速率不能无限持续。即使设备切换电平的速度很快,信道带宽和噪声仍会限制接收端能否区分信号状态。

9.1 奈奎斯特准则

先只考虑带宽限制,不考虑噪声。对于理想无噪声低通信道,奈奎斯特准则给出的最高数据率为:

$$ R_{max}=2B\log_2V $$

其中:

  • $B$ 为信道带宽,单位 Hz;
  • $V$ 为码元可取的离散状态数。

这个公式说明两种提高数据率的途径:增加带宽,或让一个码元表示更多比特。但状态数增加后,不同状态之间更接近,真实有噪声信道中会更难区分。

[!example] 奈奎斯特计算 带宽为 4 kHz,使用 8 种码元状态:

$$R_{max}=2\times4000\times\log_2 8=24000\text{ bit/s}$$

9.2 香农公式

真实信道不可能完全没有噪声,因此仅看奈奎斯特准则还不够。香农公式把信噪比也考虑进来,给出有噪声信道的理论极限容量:

$$ C=B\log_2(1+S/N) $$

其中 $S/N$ 是信号功率与噪声功率之比。若题目给出分贝值,就有:

$$ \mathrm{SNR}_{dB}=10\log_{10}(S/N) $$

因此:

$$ S/N=10^{\mathrm{SNR}_{dB}/10} $$

[!example] 香农计算 带宽为 3000 Hz,信噪比为 30 dB:

$$S/N=10^{30/10}=1000$$

$$C=3000\log_2(1001)\approx29.9\text{ kbit/s}$$

奈奎斯特准则关注无噪声条件下的带宽与码元状态数;香农公式关注有噪声条件下的带宽与信噪比。二者从不同角度描述极限,实际系统不能突破其中更严格的限制。

10. 有线与无线传输介质

编码和容量公式最后都要落到具体介质上。双绞线、同轴电缆、光纤和无线空间的成本、带宽、衰减、抗干扰能力和部署难度不同,所以适合的使用场景也不同。

10.1 双绞线

双绞线把两根绝缘导线绞合,以减小电磁干扰。成本低、安装方便,是局域网中最常见的有线介质。

10.2 同轴电缆

同轴电缆具有中心导体和屏蔽层,抗干扰能力较好,早期以太网和有线电视系统中较常见。

10.3 光纤

光纤用光脉冲传输数据,带宽大、衰减小、抗电磁干扰,适合骨干网和长距离高速链路。其部署和连接工艺通常比普通双绞线复杂。

10.4 无线与卫星

无线通信部署灵活,支持移动设备,但更容易受到遮挡、衰落和其他无线信号干扰。卫星覆盖范围大,但传播距离很长,时延通常较高。

11. 多路复用:频率、时间、波长与码序列

一条高速链路如果只给一个用户使用,往往会浪费大量容量。复用技术要解决的,就是让多路通信共享同一介质,同时还能在接收端被区分开。不同方案分别利用频率、时间、波长或码序列来区分用户。

一条高容量链路通常需要同时承载多个用户的数据。复用技术通过不同维度区分用户:

  • FDM(频分复用):不同用户占用不同频段;
  • TDM(时分复用):不同用户占用不同时间片;
  • WDM(波分复用):在光纤中使用不同波长,本质上类似光学频分复用;
  • CDMA(码分多址):不同用户使用不同码序列,在相同时间和频率范围内区分信号。

复用解决的是“如何共享一条介质”,并不等于差错控制或路由选择。

11.1 同步时分复用与统计时分复用

同步 TDM 为每一路输入固定分配周期性时隙。即使某一路暂时没有数据,它的时隙仍然保留,接收端可以只根据时隙位置判断数据属于哪一路。这种方式结构简单,但面对突发流量时会浪费空闲时隙。

统计时分复用只给当前有数据的输入分配传输位置。由于位置不再固定,帧中需要附加地址或通道标识。它提高了突发业务下的利用率,但需要缓存、调度和额外标识。

12. 数字传输体系 SONET 与 SDH

复用技术要在真实骨干网上使用,还需要统一的速率等级、帧结构和同步规则。SONET 与 SDH 就是为长距离光纤传输建立的同步数字体系,使不同厂商的设备可以按照同一套层级复用和传输信号。

这类标准关注传输网怎样组织连续高速比特流,不负责 IP 寻址、TCP 可靠传输或应用报文解释。

13. 宽带接入技术

前面讨论的是信号怎样在链路和骨干网中传输,最后还要解决用户怎样接入运营商网络。完成这段连接的部分叫接入网,常见方案包括:

  • xDSL:利用电话双绞线传输数字数据,通过频率划分让话音与数据共存;
  • HFC:结合光纤干线和同轴电缆入户,末端带宽由一组用户共享;
  • FTTx:将光纤铺设到楼宇、路边或家庭,光纤越接近用户,通常带宽越高;
  • 无线接入:通过 Wi-Fi、蜂窝网络或固定无线链路接入,部署灵活,但质量受无线环境影响。

接入技术决定用户怎样进入运营商网络;进入互联网后,IP 分组仍按照网络层规则转发。

章节练习与解析

材料原题

原题 1|样卷·填空题

将 PCM 用于数字化语音系统时,如果系统的采样速率为 4000 样本/秒,每个采样点值的分辨率为 256 级,则要求数据传输速率至少为______________bps。

[!example]- 解析 **答案:32000 bps。**每个样本需要 $\log_2 256=8$ bit,因此数据率为 $4000\times8=32000$ bit/s。

原题 2|样卷·单项选择题

PCM 编码过程不包括________。

  • A. 采样
  • B. 量化
  • C. 调制
  • D. 编码

[!example]- 解析 **答案:C。**PCM 的三个基本步骤是采样、量化和编码。调制是把信号加载到载波上的过程,不属于 PCM 数字化的三个标准步骤。

原题 3|样卷·问答与计算题

访问某网络服务的 TCP 头部用十六进制数表示为:

E0 B6 00 6E 14 8D 52 2A 8E AD DA 14 80 10 01 01 01 02 AC FB

请完成:

  1. 访问的是哪种服务器,用十进制表示目的端口号;
  2. 画出目的端口号数值的曼彻斯特编码与差分曼彻斯特编码的波形。

[!example]- 解析 目的端口字段为 00 6E,即十进制 110,对应 POP3 服务器。110 的低 8 位为 01101110

按本课程约定,曼彻斯特编码中 0 为“低→高”,1 为“高→低”;差分曼彻斯特编码中每位中间必跳变,位首跳变表示 0、位首不跳变表示 1。作图时应将 0 1 1 0 1 1 1 0 分成 8 个等宽比特区间逐位绘制。

原题 4|作业 5·第 1 题第(3)问

网络层的协议类型和长度字段值为 45H,请画出该数值对应的曼彻斯特编码波形图。

[!example]- 解析 45H=0100 0101B。按本课程约定,其各位半比特电平可写为:

LH | HL | LH | LH | LH | HL | LH | HL

其中 LH 表示位中间由低到高,对应 0;HL 表示位中间由高到低,对应 1。

补充题

题 5|数据、信号与码元

关于数据、信号、比特和码元,下列说法正确的是________。

  • A. 信号是信息内容本身,数据只是物理电压
  • B. 码元一定只能携带 1 bit
  • C. 若一个码元有 $V$ 种可区分状态,最多可携带 $\log_2V$ bit
  • D. 比特只用于模拟信号,不用于数字数据

[!example]- 解析 **答案:C。**数据是要表达的信息。信号是数据在介质中的物理表现。比特是二进制信息单位。码元是一个符号时间内的基本信号状态。如果一个码元有 $V$ 种可区分状态,就可编码 $\log_2V$ bit。

题 6|波特率与比特率

某系统的码元速率为 2400 Baud,每个码元有 16 种状态,则比特率为________。

  • A. 2400 bit/s
  • B. 4800 bit/s
  • C. 9600 bit/s
  • D. 38400 bit/s

[!example]- 解析 **答案:C。**每个码元携带 $\log_2 16=4$ bit,比特率为 $2400\times4=9600$ bit/s。

题 7|物理接口四类特性

关于物理层接口特性,下列对应关系正确的是________。

  • A. 机械特性规定电压范围,电气特性规定插头形状
  • B. 功能特性规定某根引脚代表发送、接收或控制信号
  • C. 过程特性规定连接器尺寸和引脚排列
  • D. 电气特性规定通信双方报文语义

[!example]- 解析 **答案:B。**机械特性规定插头形状、尺寸和引脚排列。电气特性规定电压范围和电平。功能特性规定某根引脚代表发送、接收或控制。过程特性规定各信号出现的时序和操作步骤。

题 8|串行、并行与通信方向

关于串行传输和通信方向,下列说法正确的是________。

  • A. 远距离通信常用并行传输,因为多条线路一定更容易同步
  • B. 单工表示双方可同时双向通信
  • C. 半双工表示双方可双向通信,但同一时刻通常只能一个方向发送
  • D. 全双工只适合广播电视,不能用于以太网

[!example]- 解析 **答案:C。**并行传输需要多条线路同时保持严格同步,距离增大后容易产生时延偏差,布线成本也高。串行传输线路少、同步更容易。广播是单工,对讲机是半双工,交换式以太网链路通常是全双工。

题 9|NRZ 与同步问题

NRZ 编码在连续出现大量相同比特时不利于接收端恢复时钟,主要因为________。

  • A. NRZ 每一位中间必定跳变
  • B. 长串相同比特可能长时间没有电平变化
  • C. NRZ 使用载波相位表示数据
  • D. NRZ 会自动插入时钟字段

[!example]- 解析 **答案:B。**NRZ 在连续相同比特期间可能长时间没有电平变化,接收端难以判断比特边界。曼彻斯特编码规定每一位中间都发生跳变,使接收端可以利用跳变恢复时钟。

题 10|差分曼彻斯特

差分曼彻斯特编码比依赖绝对高低电平的编码更不怕线路极性反接,原因是它主要依据________表示数据。

  • A. 电平绝对高低
  • B. 位开始处是否发生跳变
  • C. 每秒采样次数
  • D. 载波振幅大小

[!example]- 解析 **答案:B。**它用“位开始处是否发生跳变”表示数据,而不是用绝对高电平或低电平表示数据。线路整体极性反转后,电平高低互换,但跳变是否发生并未改变,因此仍可正确解码。

题 11|PCM 数据率

某 PCM 系统每秒采样 8000 次,每个样本量化为 1024 级,最低数据率是________。

  • A. 8000 bit/s
  • B. 32000 bit/s
  • C. 64000 bit/s
  • D. 80000 bit/s

[!example]- 解析 **答案:D。**每个样本需要 $\log_2 1024=10$ bit,因此最低数据率为 $8000\times10=80000$ bit/s。

题 12|量化误差

量化级数从 256 级提高到 65536 级,在采样率不变时,下列说法正确的是________。

  • A. 每个样本从 8 bit 增加到 16 bit,数据率增大,量化误差通常降低
  • B. 每个样本从 16 bit 降低到 8 bit,数据率减半
  • C. 量化级数增大只影响采样率,不影响每个样本位数
  • D. 量化级数越多,量化误差必然越大

[!example]- 解析 **答案:A。**每个样本由 8 bit 增加到 16 bit,在采样率不变时数据率加倍;量化级间距减小,量化误差通常降低,但存储和传输开销增大。

题 13|奈奎斯特准则

一个理想无噪声低通信道带宽为 4 kHz,采用 8 种码元状态,按奈奎斯特准则最高数据率为________。

  • A. 12 kbit/s
  • B. 16 kbit/s
  • C. 24 kbit/s
  • D. 32 kbit/s

[!example]- 解析 答案:C。$R_{max}=2B\log_2V=2\times4000\times3=24000$ bit/s。

题 14|香农公式

信道带宽为 3000 Hz,信噪比为 30 dB,按香农公式估算最大信道容量约为________。

  • A. 3 kbit/s
  • B. 9.9 kbit/s
  • C. 29.9 kbit/s
  • D. 300 kbit/s

[!example]- 解析 答案:C。$S/N=10^{30/10}=1000$。$C=3000\log_2(1+1000)\approx3000\times9.97\approx29.9$ kbit/s。

题 15|奈奎斯特与香农的边界

把码元状态数无限增加,不能在真实信道中得到无限高的数据率,主要因为________。

  • A. 真实信道没有噪声,状态数越多越容易区分
  • B. 状态数越多,相邻状态越难区分,并受香农容量和设备精度限制
  • C. 奈奎斯特准则禁止使用多进制码元
  • D. 香农公式只适用于完全无噪声信道

[!example]- 解析 **答案:B。**状态数越多,相邻状态之间的差异越小,噪声会使接收端难以区分。奈奎斯特准则描述理想无噪声条件,真实信道还受到香农容量限制和设备实现精度限制。

题 16|调制方法

ASK、FSK 和 PSK 分别改变载波的________。

  • A. 振幅、频率、相位
  • B. 频率、相位、振幅
  • C. 相位、振幅、频率
  • D. 采样率、量化级数、编码位数

[!example]- 解析 **答案:A。**ASK 改变振幅,FSK 改变频率,PSK 改变相位。调制把数据加载到载波上,适用于带通信道。基带编码直接把数字数据映射成数字信号,不依赖载波。

题 17|传输介质

关于传输介质,下列说法正确的是________。

  • A. 光纤带宽大、衰减小、抗电磁干扰能力强
  • B. 无线介质不受传播环境和共享频谱影响
  • C. 双绞线成本最高且完全不受距离限制
  • D. 同轴电缆无法进行任何屏蔽

[!example]- 解析 **答案:A。**双绞线成本低、部署普遍但距离和抗干扰能力有限。同轴电缆屏蔽较好。光纤带宽大、衰减小、抗电磁干扰,但施工和器件成本较高。无线部署灵活、支持移动,但更容易受干扰和传播环境影响。

题 18|多路复用

FDM、TDM、WDM 和 CDMA 区分多个用户的主要依据依次是________。

  • A. 频段、时间片、光波长、码序列
  • B. 时间片、频段、码序列、光波长
  • C. 码序列、光波长、频段、时间片
  • D. 端口号、IP 地址、MAC 地址、域名

[!example]- 解析 **答案:A。**FDM 让用户占用不同频段。TDM 让用户占用不同时间片。WDM 在光纤中使用不同波长。CDMA 让用户使用不同码序列,在同一时间和频段上区分信号。

题 19|NRZ、RZ 与曼彻斯特

关于 NRZ、RZ 与曼彻斯特编码,下列说法正确的是________。

  • A. NRZ 每位中间必跳变,同步能力最强
  • B. 曼彻斯特每位中间必跳变,同步能力强,但频带需求较高
  • C. RZ 从不发生电平变化,因此最利于同步
  • D. 三者的跳变频率和同步能力完全相同

[!example]- 解析 **答案:B。**NRZ 跳变少、带宽利用率较高,但长串同位难以同步。RZ 每位回到零电平,增加定时信息和跳变。曼彻斯特每位中间必跳变,同步最明确,但频带需求更高。

题 20|同步 TDM 与统计 TDM

统计时分复用通常需要通道标识,而同步时分复用通常不需要,原因是________。

  • A. 同步 TDM 的时隙位置固定,统计 TDM 的数据来源位置会变化
  • B. 统计 TDM 每个用户都有固定时隙,不可能混淆
  • C. 同步 TDM 使用不同频段区分用户
  • D. 二者都只能靠 MAC 地址区分用户

[!example]- 解析 **答案:A。**同步 TDM 的时隙位置固定,接收端可由位置判断数据来源。统计 TDM 只给有数据的输入分配位置,位置会变化,因此必须附加地址或通道标识。

题 21|SONET/SDH

关于 SONET/SDH,下列说法正确的是________。

  • A. 它们主要规定同步光传输网的速率等级、帧结构和复用规则
  • B. 它们负责根据 IP 地址选择下一跳路由
  • C. 它们属于应用层 Web 协议
  • D. 它们用于把域名解析为 IP 地址

[!example]- 解析 **答案:A。**它们规定同步光传输网的速率等级、帧结构和复用规则,使高速骨干传输标准化;它们提供比特传输通道,不负责 IP 寻址和路由。

题 22|宽带接入

关于宽带接入技术,下列说法正确的是________。

  • A. xDSL 利用电话双绞线,HFC 结合光纤干线和同轴电缆末端
  • B. FTTx 不使用光纤,完全依赖无线频谱
  • C. 无线接入必须铺设入户同轴电缆
  • D. HFC 的末端带宽永远只由单个用户独占

[!example]- 解析 **答案:A。**xDSL 利用电话双绞线。HFC 使用光纤干线和共享同轴末端。FTTx 让光纤靠近或到达用户,带宽通常更高。无线接入无需入户线缆,但质量受无线环境和共享频谱影响。


第三章 数据链路层:成帧、检错与局域网转发

物理层只能把比特一个接一个地送出去,却不会告诉接收端哪些比特属于同一份数据,也不会判断它们是否在途中出错。数据链路层就在这个基础上继续处理:它把比特组织成帧,标出帧的边界,并负责透明传输、差错检测以及局域网中的一跳转发。

[!note] 概念关系 比特流 → 帧定界 → 透明传输 → CRC 检错 → Ethernet 帧 → MAC 地址 → 交换机转发 → CSMA/CD、VLAN 与 STP

1. 链路、数据链路与帧

先把三个容易混淆的概念分开:链路只是物理通路,数据链路是在这条通路上加入协议规则后的逻辑通信能力,帧则是数据链路层实际处理的数据单位。只有加入成帧、检错和访问控制等规则,物理线路才真正能为网络层提供稳定服务。

链路是一段物理传输通路,例如主机到交换机之间的一根网线。数据链路是在物理链路基础上加入协议控制后形成的逻辑通路。数据链路层传输的协议数据单元称为

一条端到端路径通常包含多条链路。IP 数据报可能从主机到交换机、再到路由器,随后经过若干广域链路。每经过一条链路,原来的链路层帧会被移除,并根据下一条链路重新封装。IP 数据报则继续向目标转发。

链路还可按共享方式分为两类:点对点信道只连接两个结点,不需要多站竞争介质。广播信道由多个结点共享,除了成帧和检错,还必须解决谁可以在什么时刻发送。

数据链路层主要处理三个基础问题:

  1. 怎样确定帧的边界;
  2. 数据内容与定界符冲突时怎样保持透明;
  3. 传输中发生比特错误时怎样检测。

2. 封装成帧与帧定界

物理层送来的是连续比特流,其中没有天然的“分段符号”。接收端只有先知道一帧从哪里开始、在哪里结束,才能继续解释地址、类型和校验字段。封装成帧与帧定界就是为了解决这个边界问题。

物理层提供的是连续比特流。如果没有边界标记,接收端无法判断哪一段属于一帧,也无法确定首部、数据和校验字段的位置。

封装成帧就是在网络层数据前后加入首部和尾部,或者利用长度字段、特殊字符或特殊比特模式标记边界。常见方式包括:

  • 字符计数法:首部给出帧长度;
  • 首尾字符定界法:用特定字符表示帧开始和结束;
  • 首尾标志位法:用特定比特串作为边界。

长度字段若自身发生错误,可能导致后续边界连续误判;特殊定界符又可能恰好出现在普通数据中。因此还需要透明传输机制。

3. 透明传输与填充机制

有了定界符以后,还会遇到一个新问题:普通数据中也可能刚好出现同样的字符或比特模式。如果不处理,接收端会把数据误认为帧边界。字节填充和 0 比特插入就是为了解决这个冲突,让上层可以传输任意内容。

所谓“透明”,是指上层可以传输任意内容,而不必避开链路层使用的特殊字符或比特模式。

3.1 字节填充

先看以字符为单位的做法。如果协议用特殊字符标记帧边界,数据中出现同样字符时,发送端就在前面加入转义字符。接收端看到转义字符后,就把后面的特殊字符当成普通数据,并删除额外的转义字符。

3.2 0 比特插入

面向比特的协议不依赖字符,而是直接使用特定比特模式定界。HDLC 常用 01111110 作为标志字段。为了避免数据中出现同样模式,发送端每遇到连续 5 个 1 就插入一个 0,接收端再把这个 0 删除。

这种方法保证数据中不会自然形成帧标志,同时不限制上层数据内容。

4. 链路差错与检错机制

分清帧的边界后,还不能保证帧里的比特没有出错。噪声和干扰可能让 0 变成 1、1 变成 0,所以接收端需要额外的校验信息判断帧是否损坏。CRC 就是最常见的一种检错方法。

信号在传输中可能受到噪声、衰减和干扰,某些 0 会变成 1,某些 1 会变成 0。数据链路层通常在帧尾加入检错信息,使接收端可以判断帧是否可能损坏。

奇偶校验结构简单,但检错能力有限。以太网和许多链路协议使用 CRC,因为它对常见突发错误具有较强检测能力。

5. CRC 多项式检错

CRC 的核心思路是:发送端根据数据计算一个余数,把它附在数据后。接收端再用同一规则检查余数是否为 0。计算时会把比特串看成二进制多项式,并使用模 2 除法。它的目标是发现错误,而不是直接指出哪一位错了。

CRC 把一串比特视为二进制多项式。通信双方事先约定一个生成多项式 $G(x)$。发送端不是简单地把某个固定校验值附在数据后,而是计算一个余数,使“原始数据 + 余数”可以被生成多项式整除。

传输后,接收端用同一个生成多项式再次做模 2 除法:

  • 余数不为 0:能够确定帧发生了错误;
  • 余数为 0:没有检测到错误,但不能证明绝对无错。

CRC 是检错码,并不直接指出哪一位错误,因此通常不能自行纠错。

5.1 生成多项式与二进制序列

例如:

$$ G(x)=x^4+x+1 $$

从 $x^4$ 到 $x^0$ 依次写出各项系数:

次数 4 3 2 1 0
系数 1 0 0 1 1

生成比特串为 10011。没有出现的幂次必须写 0,常数项对应最低位。

5.2 模 2 除法与异或运算

CRC 中的加减法都使用异或:

运算 结果
0 ⊕ 0 0
0 ⊕ 1 1
1 ⊕ 0 1
1 ⊕ 1 0

异或不产生进位和借位,因此计算形式像长除法,但每一步“相减”都只是按位异或。

5.3 完整计算过程

设原始数据为 1110101,生成多项式为 $x^4+x+1$,生成串为 10011

生成多项式最高次数为 4,因此校验码长度为 4 bit。发送端在数据后补 4 个 0:

11101010000

对其使用 10011 做模 2 除法,所得余数为 0111,因此实际发送:

11101010111

接收端再用 10011 去除完整发送序列,余数应为 0。

[!warning] 校验码长度 若生成串长度为 $n$,其最高次数为 $n-1$,CRC 余数长度也是 $n-1$。补零数量按最高次数计算,而不是按生成串总长度计算。

6. Ethernet V2 帧结构

知道怎样检错以后,还要看一帧怎样携带转发所需的信息。局域网设备不仅要判断帧是否损坏,还要知道它来自哪里、要送到哪里,以及里面装的是哪种上层协议。Ethernet V2 的地址、类型、数据和 FCS 字段分别完成这些任务。

以太网是局域网中最常见的数据链路层技术。Ethernet V2 帧的核心结构如下。

字段 长度 作用
目的 MAC 6 B 指明当前链路上的接收接口
源 MAC 6 B 指明当前链路上的发送接口
类型 2 B 指明数据部分承载的上层协议
数据 46~1500 B 通常承载 IP 数据报
FCS 4 B 使用 CRC-32 检测帧错误

常见类型值:

  • 0x0800:IPv4;
  • 0x0806:ARP;
  • 0x86DD:IPv6。

以太网帧最小长度为 64 B,最大长度为 1518 B。这里通常从目的 MAC 字段开始计算,到 FCS 结束,不包括前导码和帧开始定界符。

前导码用于使接收端建立位同步,帧开始定界符标记有效帧即将开始。CRC 校验范围不包括前导码。

6.1 Ethernet V2 与 IEEE 802.3

两种帧在目的地址和源地址之后都保留 2 B 字段,但字段含义不同:

  • Ethernet V2 将其解释为类型(EtherType),直接指明 IPv4、ARP、IPv6 等上层协议;
  • IEEE 802.3 将其解释为数据长度,随后由 LLC/SNAP 信息进一步说明上层协议。

当该数值大于等于 0x0600 时通常按 EtherType 解释,较小数值通常按 802.3 数据长度解释。前导码共 7 B,随后 1 B 帧开始定界符。它们用于同步和指出 MAC 帧开始,通常不计入 64~1518 B 的 MAC 帧长度,也不在 FCS 校验范围内。

6.2 最小数据字段与填充

帧中目的 MAC、源 MAC、类型和 FCS 共占:

$$6+6+2+4=18\text{ B}$$

为了满足 64 B 的最小帧长,数据字段至少为:

$$64-18=46\text{ B}$$

若上层数据不足 46 B,以太网会加入填充字节。

6.3 MAC 地址

帧要在局域网中找到接口,就需要 MAC 地址。以太网 MAC 地址通常为 48 bit,也就是 6 B。广播 MAC 地址为:

FF-FF-FF-FF-FF-FF

目的 MAC 的最低有效位可用于区分单播和组播。考试中最常见的判断是:交换机转发帧时查看目的 MAC 地址,学习转发表时查看源 MAC 地址

6.4 MAC 地址中的 I/G 位与 U/L 位

MAC 地址第一个字节的最低两位具有特殊含义:

  • 低位 I/G 位(Individual / Group 位) 区分单个接口与一组接口。值为 0 表示单播地址,值为 1 表示组播地址;全 1 地址是广播地址;
  • 高位 U/L 位(Universal / Local 位) 区分全球统一管理地址与本地管理地址。值为 0 通常表示由标准组织分配,值为 1 表示本地管理。
00000010
      ↑↑
     U/L I/G

这两位不能用于推断 IP 地址或设备类型。MAC 地址服务于当前二层链路,IP 地址用于跨网络逻辑寻址。

7. 交换机的自学习与转发

交换机刚启动时,并不知道每台主机接在哪个端口。它只能一边接收帧,一边学习。由于帧从哪个端口进入、源 MAC 是什么都可以直接看到,交换机便用源地址建立表项,再根据目的地址决定怎样转发。

交换机刚启动时并不知道每个 MAC 地址位于哪个端口。它收到一个帧后,可以确定两件事:

  • 帧从哪个端口进入;
  • 帧首部中的源 MAC 是谁。

因此交换机记录“源 MAC → 入端口”的对应关系。这就是自学习。随后,它根据目的 MAC 查表:

  • 已知单播:只向对应端口转发;
  • 未知单播:除入端口外向其他端口泛洪;
  • 广播帧:除入端口外向所有端口转发;
  • 目的地址就在入端口一侧:过滤,不再转发。

交换机不能通过源 MAC 判断“帧应该去哪里”,但能通过源 MAC 判断“发送者从哪里来”。这正是学习使用源地址、转发使用目的地址的原因。

8. 局域网设备与冲突域、广播域

集线器、交换机和路由器看起来都能连接多台设备,但它们处理的对象并不一样:集线器复制信号,交换机转发帧,路由器转发 IP 数据报。正因为工作层次不同,它们对冲突域和广播域的影响也不同。

冲突域是指多台设备共享同一传输介质时,如果同时发送数据,可能发生信号碰撞的范围。

广播域是指一个设备发送二层广播帧之后,能够收到这个广播帧的所有设备范围。

8.1 集线器

集线器工作在物理层。一个端口收到的信号会被复制到其他端口,本质上仍是一条共享总线。所有设备共享带宽,也处在同一个冲突域和广播域中。

8.2 网桥与交换机

网桥和交换机工作在数据链路层,根据 MAC 地址转发帧。交换机的每个端口通常构成独立冲突域,因此可以隔离碰撞并让不同端口并行通信。

交换机不会默认隔离广播。如果没有 VLAN 或路由器,广播帧仍会在整个交换网络中传播。所以交换机扩大网络规模时,可能使同一广播域覆盖更多设备。

8.3 路由器

路由器工作在网络层,根据目的 IP 转发分组。路由器不会把普通二层广播直接转发到其他接口,因此可以隔离广播域。

设备 主要层次 转发依据 冲突域 广播域
集线器 物理层 不识别地址 所有端口共享 所有端口共享
交换机 数据链路层 目的 MAC 每端口独立 默认不隔离
路由器 网络层 目的 IP 每接口独立 每接口独立

[!warning] 广播风暴 中继器、集线器和普通二层交换网络都不能从根本上隔离广播。路由器可以阻止二层广播跨接口传播,因此样卷中“可以抑制广播风暴”的设备通常选路由器。

9. CSMA/CD 介质访问控制

在共享式以太网中,多台主机共用同一介质,可能会同时发送并发生碰撞。CSMA/CD 就是为了解决这种介质争用:发送前先监听,发送时继续检测,发生冲突后停止并随机等待,再重新尝试。

早期以太网使用共享总线,多台主机在同一介质上发送信号。若两台主机同时发送,信号会相互叠加,造成碰撞。CSMA/CD 用于协调这种共享介质。

名称含义:

  • CS:载波监听,发送前先听信道;
  • MA:多点接入,多台设备共享介质;
  • CD:碰撞检测,发送时继续监听。

工作过程通常概括为:

先听后发,边听边发,冲突停止,延迟重发。

9.1 传播时延与碰撞

假设 A 和 B 位于总线两端。A 刚开始发送时,信号还没有传播到 B;此时 B 监听到的信道仍然空闲,于是也开始发送。两端信号在中间相遇并碰撞。

因此,载波监听只能降低碰撞概率,不能完全消除碰撞。

9.2 争用期

最不利情况下,A 的信号几乎到达最远端 B 时,B 才开始发送。碰撞信息再从 B 附近传播回 A。A 最迟需要经过一个往返传播时间才能确认未发生碰撞。

若端到端单程传播时延为 $\tau$,争用期为:

$$2\tau$$

9.3 最小帧长

发送端必须在仍然发送时检测到碰撞。如果帧太短,发送端可能已经发完并停止监听,远端碰撞才返回,导致发送端误以为帧发送成功。

因此最小帧长至少应满足:

$$ L_{min}=2\tau R $$

其中 $R$ 是链路数据率。传统以太网规定最小帧长为 64 B,也就是 512 bit。

9.4 二进制指数退避

碰撞后若所有主机都等待相同时间再重发,它们会再次同时发送并继续碰撞。因此每个主机从一个逐渐扩大的范围中随机选择等待时隙。

第 $k$ 次重传时,随机数范围通常为:

$$ 0\le r\le 2^{\min(k,10)}-1 $$

实际等待时间为 $r$ 个争用期。连续碰撞越多,随机范围越大,使发送时刻更分散。超过规定重传次数后放弃发送并报告失败。

现代交换式全双工以太网中,每条链路只有两个端点且双方使用独立发送通道,通常不会发生碰撞,因此 CSMA/CD 不再实际运行。但其原理和计算仍是课程重点。

9.5 冲突强化与帧间间隔

发送站检测到碰撞后不能立刻安静下来,否则远端站点可能没有察觉冲突。传统以太网会继续发送一小段干扰信号(jam signal),强化碰撞,使共享介质上的站都确认本次发送失败,然后停止并执行退避。

一帧发送完成后还要保留规定的帧间间隔。经典以太网使用 96 bit time 的间隔,使网卡和介质有时间恢复。冲突强化解决“所有站是否知道发生碰撞”,帧间间隔解决“连续帧之间是否留出恢复时间”。

10. IEEE 802 的 LLC 与 MAC 子层

局域网技术很多,介质访问方式也不完全相同。不过网络层希望看到统一的服务接口。IEEE 802 因此把数据链路层分成 LLC 和 MAC 两个子层:LLC 负责向上提供统一接口,MAC 负责直接处理帧和介质访问。

IEEE 802 将数据链路层划分为两个子层:

  • LLC(逻辑链路控制)子层:向网络层提供相对统一的接口;
  • MAC(介质访问控制)子层:处理 MAC 地址、帧格式和介质访问。

IEEE 802.2 描述 LLC 功能,IEEE 802.3 描述以太网及 CSMA/CD。

11. PPP 点到点链路协议

以太网要处理多台设备共享局域网的问题,点到点链路却只有两个端点,不存在多人争抢介质。PPP 因此把重点放在成帧、链路建立、身份鉴别和网络层参数协商上。

PPP 主要用于点到点信道。点到点链路只有两个端点,不需要像共享以太网那样解决多台主机争用介质的问题。

PPP 帧通常包含:标志、地址、控制、协议、信息和 FCS 字段。课程题目中 PPP 的 FCS 常按 2 B 计算。

各字段的典型值和作用如下:

字段 常见长度 作用
Flag 1 B 固定为 0x7E,标记帧边界
Address 1 B 通常为 0xFF
Control 1 B 通常为 0x03
Protocol 2 B 指明 IP、LCP、NCP 或鉴别报文
Information 可变 承载网络层分组或控制数据
FCS 常见 2 B 差错检测

协议字段的典型取值包括:0x0021 表示 IPv4 数据报,0x8021 表示 IPCP,0xC021 表示 LCP,0xC023 表示 PAP 鉴别报文。协议字段使接收端可以把信息字段交给正确的网络层或控制协议。

PPP 在异步字节链路上使用字节填充,在同步比特链路上可以采用类似 HDLC 的 0 比特插入。两种方法都用于防止普通数据被误认为帧边界。

PPP 不仅规定帧格式,还包含:

  • LCP:建立、配置、测试和释放数据链路;
  • NCP:为不同网络层协议配置参数,例如为 IP 配置网络层选项。

典型工作过程为:物理链路建立 → LCP 协商 → 必要的身份鉴别 → NCP 配置网络层 → 数据传输 → 释放链路。

11.1 PPP 的链路状态过程

PPP 链路通常依次经历:

  1. 物理链路建立;
  2. LCP 协商最大接收单元、鉴别方式等链路参数;
  3. 在需要时进行 PAP、CHAP 等身份鉴别;
  4. NCP 为 IPv4、IPv6 等网络层协议配置参数;
  5. 链路打开并传输网络层数据;
  6. NCP、LCP 依次释放,最后关闭物理链路。

LCP 管理点到点数据链路本身,NCP 管理某一种网络层协议怎样使用这条链路。

12. HDLC 面向比特的链路控制

PPP 主要面向简单点到点传输,HDLC 则进一步展示了链路层怎样同时处理数据和控制。它使用统一标志位和 0 比特插入组织帧,并通过控制字段完成编号、确认和链路管理。

HDLC 是面向比特的数据链路控制协议,常用标志字段 01111110 定界,并通过 0 比特插入实现透明传输。

典型字段包括:

  • F:标志字段;
  • A:地址字段;
  • C:控制字段;
  • I:信息字段;
  • FCS:帧校验序列。

HDLC 的控制字段可以区分信息帧、监督帧和无编号帧,用于数据传输、确认和链路管理。

12.1 HDLC 帧类型与正常响应模式

HDLC 控制字段使链路既能传输数据,也能传输确认和管理命令。

  • I 帧:承载上层数据,包含发送序号 $N(S)$ 和接收确认序号 $N(R)$;
  • S 帧:用于确认、请求重传或通告暂时不能接收;
  • U 帧:用于链路建立、方式设置和释放。

$N(S)$ 表示本帧发送序号,$N(R)$ 表示下一帧期望收到的序号。P/F 位在命令中可表示轮询,在响应中可表示最终响应。

正常响应模式(NRM) 中,,主站控制链路,从站通常只有在主站轮询后才能发送。主站可用 SNRM 建立方式,从站用 UA 确认。释放时可使用 DISC 和 UA。这里的主从关系属于链路控制,不等于应用层的客户端与服务器。

13. VLAN 逻辑局域网与 802.1Q

交换机可以隔离碰撞,但默认仍会转发广播。设备增多以后,过大的广播域会带来无关流量,也不利于安全和管理。VLAN 的作用,就是在同一套物理交换网络上划分多个逻辑广播域。

交换机虽然隔离冲突域,却默认不隔离广播域。随着设备增多,广播范围扩大,安全管理和故障隔离也会变得困难。

VLAN 把一台或多台交换机上的端口划入若干逻辑广播域。即使设备连接在同一台物理交换机上,只要属于不同 VLAN,二层广播也不会直接互通。跨 VLAN 通信需要三层设备转发。

VLAN 的划分可基于:

  • 交换机端口;
  • MAC 地址;
  • 网络层协议;
  • IP 地址;
  • 应用或服务。

实际网络最常见的是基于端口划分。

13.1 802.1Q

VLAN 划分完成后,交换机之间的同一条链路可能同时承载多个 VLAN 的帧。为了让接收交换机知道每个帧属于哪个 VLAN,IEEE 802.1Q 会在以太网帧中插入 4 B 标签,其中包含 VLAN ID 等信息。

接入口通常连接终端,只属于一个 VLAN;干道链路可同时承载多个 VLAN,并保留 802.1Q 标签。

14. STP 与交换机环路

为了避免单条链路故障,交换机之间常会增加冗余连接。但二层帧没有 TTL,一旦形成环路,广播帧和未知单播帧就可能不断复制。STP 会暂时阻塞部分冗余链路,把拓扑变成无环结构,并在链路故障后重新计算。

交换网络为了冗余可能连接多条链路。不过二层帧没有像 IP 那样的 TTL。若拓扑中存在环路,广播帧和未知单播帧可能在环中无限复制,造成广播风暴。交换机也会从不同端口反复学习同一源 MAC,导致转发表震荡。

生成树协议 STP 通过逻辑阻塞部分冗余链路,把存在环路的物理拓扑转换成无环的逻辑树。当活动链路故障时,原来被阻塞的链路可以重新启用。

15. 高速以太网的兼容性

提高以太网速率时,最理想的情况不是推翻整套协议,而是在加快物理传输的同时保留原有帧格式和上层接口。这样旧的软件和网络设计仍能继续使用,高速以太网也更容易部署。

快速以太网、千兆以太网、10G 以太网以及更高速率版本不断提高链路速率,但仍尽量保持相同的以太网帧格式和地址机制,这样就兼容既有网络软件与设备体系。

高速化不仅意味着提高发送频率,还涉及传输介质、编码方式、全双工交换和设备处理能力等方面。

15.1 高速局域网技术的主要研究方向

以太网提高速率时,不能只提高时钟频率。高速局域网技术还要研究:

  • 更高带宽、更低衰减的传输介质;
  • 更高效的线路编码和收发电路;
  • 交换式、全双工通信,避免共享介质碰撞;
  • 交换机背板、缓存和转发能力;
  • 在提高速率的同时保持 MAC 地址、帧格式和上层接口兼容。

快速以太网、千兆以太网、10G 及更高速以太网继续使用基本相同的 MAC 帧格式和常规帧长。全双工点到点链路不再运行 CSMA/CD,但仍属于以太网体系。

章节练习与解析

材料原题

原题 1|样卷·填空题

以太网数据帧的最大长度为__________字节。

[!example]- 解析 **答案:1518 B。**Ethernet V2 帧从目的 MAC 到 FCS 的最大长度为 $6+6+2+1500+4=1518$ B,不计前导码和帧开始定界符。

原题 2|样卷·单项选择题

以太网交换机进行转发决策时的 PDU 地址是___________。

  • A. 目的物理地址
  • B. 目的 IP 地址
  • C. 源物理地址
  • D. 源 IP 地址

[!example]- 解析 **答案:A。**交换机工作在数据链路层,根据目的 MAC 地址查询转发表并决定输出端口。

原题 3|样卷·单项选择题

PPP 帧校验码长度为________字节。

  • A. 2
  • B. 4
  • C. 16
  • D. 32

[!example]- 解析 **答案:A。**本课程采用的 PPP 帧格式中 FCS 长度为 2 B。

原题 4|样卷·单项选择题

局域网体系结构中,IEEE 802.2 描述了______________的功能。

  • A. MAC
  • B. LLC
  • C. CSMA/CD
  • D. Token Bus

[!example]- 解析 **答案:B。**IEEE 802.2 定义逻辑链路控制 LLC 子层;IEEE 802.3 与以太网 MAC 和 CSMA/CD 相关。

原题 5|样卷·单项选择题

以太网帧校验码 CRC 的校验范围不包括:_________

  • A. 长度
  • B. 目的地址和源地址
  • C. 信息字段
  • D. 引导码

[!example]- 解析 **答案:D。**前导码用于物理层同步,不属于 FCS 的校验范围。

原题 6|样卷·单项选择题

CSMA/CD 是 IEEE 802.3 所定义的协议标准,它适用于_________。

  • A. 令牌环网
  • B. 令牌总线网
  • C. 网络互连
  • D. 以太网

[!example]- 解析 **答案:D。**CSMA/CD 用于传统共享介质、半双工以太网。

原题 7|样卷·单项选择题

在共享介质以太网中,采用二进制后退延迟算法,当发送的数据包发生第 6 次冲突时,其最大可能延迟的时间片为_______。

  • A. 6
  • B. 10
  • C. 63
  • D. 1023

[!example]- 解析 **答案:C。**第 6 次冲突时 $k=6$,随机数 $r\in[0,2^6-1]$,最大为 63 个争用期。

原题 8|作业 1·第 2 题

某通信信道采用 CRC 标准进行差错控制,发送端需要发送的数据是 1110101,事先约定的生成多项式为 $X^4+X+1$,请写出(要求有校验码计算的详细过程):

  1. 该生成多项式对应的二进制比特序列;
  2. 信道上实际被传输的二进制位串;
  3. CRC 是检错码还是纠错码?CRC 校验用于哪一层的差错控制?

[!example]- 解析 生成多项式从 $x^4$ 到 $x^0$ 的系数为 10011。在数据后补 4 个 0 得 11101010000,模 2 除以 10011 的余数为 0111,实际发送序列为 11101010111。CRC 是检错码,主要用于数据链路层差错检测。

原题 9|样卷·问答与计算题

某数据通信系统采用 CRC 校验方式,生成多项式 $G(x)$ 为 $X^4+X^2+1$,如果要发送的数据字段为 1011011,请回答:

  1. 写出生成多项式的二进制表示、CRC 检验码以及发送端发送的完整比特序列;
  2. 如果传输过程中,原始数据字段 1011011 传输出错变成 1101011,请写出校验过程。

[!example]- 解析 $G(x)$ 对应 101011011011 后补 4 个 0,模 2 除法余数为 1100,发送序列为 10110111100

若数据部分变为 1101011 而原校验码仍为 1100,接收序列为 11010111100。用 10101 相除所得余数不为 0,因此检测到传输错误。

原题 10|作业 4·第 2 题

对局域网技术的理解:

  1. 高速局域网技术研究主要有哪些方面?
  2. 虚拟局域网主要有哪些实现方法?

[!example]- 解析 高速局域网不仅提高物理速率,还涉及更高性能的传输介质、编码方式、全双工交换和交换设备处理能力,同时尽量保持原有以太网帧格式与上层接口兼容。

VLAN 可基于交换机端口、MAC 地址、协议类型、IP 地址以及高层应用或服务划分。

原题 11|作业 3·第 3 题

请分别截图以太网协议帧格式、IP 分组协议格式、UDP 协议格式和 TCP 协议格式。请重点关注“source ”和“destination ”的位置。

[!example]- 解析 以太网帧最前部依次为目的 MAC、源 MAC;IPv4 首部中源 IP 位于目的 IP 之前;UDP 与 TCP 首部开头均为源端口、目的端口。不同层的源/目的字段承担不同范围的寻址职责。

补充题

题 12|链路、数据链路与帧

关于链路、数据链路与帧,下列说法正确的是________。

  • A. 链路是物理传输通道,数据链路是在链路上加入控制规则形成的逻辑通路
  • B. 帧只属于网络层,与数据链路层无关
  • C. 物理层能够自动判断每一帧的开始和结束
  • D. 数据链路层不需要地址和差错检测

[!example]- 解析 **答案:A。**链路是一段物理传输通道。数据链路是物理链路加上控制规则。帧是数据链路层传输单位。物理层只传比特流,无法表达一帧从哪里开始、在哪里结束,也无法提供地址和差错检测。

题 13|透明传输

若帧定界符为 01111110,为避免数据中误出现定界符,发送端和接收端应采用________。

  • A. 发送端在连续 5 个 1 后插入 0,接收端删除该 0
  • B. 发送端删除所有 0,接收端补回所有 0
  • C. 发送端把每个 1 都改为 0
  • D. 接收端只要看到 6 个 1 就丢弃整帧

[!example]- 解析 **答案:A。**发送端在连续 5 个 1 后插入一个 0,使数据内部不会出现完整定界符。接收端发现连续 5 个 1 后跟 0 时删除该 0。这就是 0 比特插入与删除。

题 14|字节填充

某字符型协议以 FLAG 表示边界,以 ESC 表示转义。数据中本身出现 FLAGESC 时,发送端应________。

  • A. 只删除数据中的 FLAG
  • B. 在数据中的 FLAGESC 前都插入 ESC
  • C. 把所有数据都改成 FLAG
  • D. 不做处理,交给网络层识别

[!example]- 解析 **答案:B。**在数据中的 FLAG 前插入 ESC,在数据中的 ESC 前也插入 ESC。接收端遇到 ESC 时把后一个字符作为普通数据,并删除转义字符。

题 15|CRC 的能力边界

接收端用生成多项式除收到的完整序列,余数为 0。下列说法正确的是________。

  • A. 可以断言数据绝对没有错误
  • B. 只能说明未检测出错误,不能证明绝对无错
  • C. 可以直接定位并纠正所有错误位
  • D. CRC 因此属于完整纠错码

[!example]- 解析 **答案:B。**余数为 0 只表示该错误模式没有被当前 CRC 检测出来。合理选择的生成多项式能检测大量常见错误,但 CRC 不是绝对无漏检的证明,也通常不能定位并纠正错误位。

题 16|Ethernet V2 帧字段

Ethernet V2 帧从前到后的核心字段及长度,正确的是________。

  • A. 目的 MAC 6 B、源 MAC 6 B、类型 2 B、数据 46~1500 B、FCS 4 B
  • B. 源 IP 4 B、目的 IP 4 B、端口 2 B、数据 1500 B
  • C. 前导码 8 B、TTL 1 B、协议 1 B、FCS 2 B
  • D. 目的端口 2 B、源端口 2 B、长度 2 B、校验和 2 B

[!example]- 解析 **答案:A。**目的 MAC 6 B、源 MAC 6 B、类型 2 B、数据 46~1500 B、FCS 4 B。类型字段指出数据部分承载的上层协议,例如 0x0800 表示 IPv4。

题 17|最小帧长与填充

某上层分组只有 30 B,封装为 Ethernet V2 帧时,数据字段至少应填充到多少字节?最终 MAC 帧长度是多少?

  • A. 30 B,48 B
  • B. 46 B,64 B
  • C. 64 B,82 B
  • D. 1500 B,1518 B

[!example]- 解析 **答案:B。**以太网数据字段最少 46 B,因此还需填充 16 B。MAC 帧长度为 $6+6+2+46+4=64$ B。

题 18|交换机自学习

交换机从端口 3 收到源 MAC 为 A、目的 MAC 为 B 的帧。转发表中没有 A 和 B。交换机将执行________。

  • A. 学习 A 在端口 3,并从除端口 3 外的其他端口泛洪
  • B. 学习 B 在端口 3,并直接丢弃该帧
  • C. 不学习任何地址,只发送给端口 3
  • D. 根据目的 IP 地址查询转发表

[!example]- 解析 **答案:A。**交换机先学习“A 位于端口 3”。由于目的 B 未知,把这个帧从除端口 3 外的其他端口泛洪。以后若收到来自 B 的帧,交换机便可学习 B 所在端口。

题 19|冲突域与广播域

关于冲突域与广播域,下列说法正确的是________。

  • A. 集线器每个端口形成独立广播域
  • B. 二层交换机每个端口通常形成独立冲突域,但同一 VLAN 仍属于一个广播域
  • C. VLAN 只能划分冲突域,不能划分广播域
  • D. 路由器会把二层广播无条件转发到所有接口

[!example]- 解析 **答案:B。**集线器把所有端口放在同一冲突域和广播域。交换机每个端口形成独立冲突域,但同一 VLAN 仍属于一个广播域。VLAN 可划分多个广播域。路由器接口天然隔离广播域。

题 20|CSMA/CD 工作过程

CSMA/CD 的基本工作流程,正确的是________。

  • A. 先听后发、边发边听、冲突停止、发送干扰信号、随机退避后重发
  • B. 先发后听、永不停止、固定时间重发
  • C. 直接建立虚电路、传输、释放连接
  • D. 查询 DNS、获取 IP、发送 HTTP

[!example]- 解析 **答案:A。**由于信号传播需要时间,发送端开始发送时可能尚未听到远端刚发出的信号,因此必须在发送过程中继续检测碰撞。

题 21|最小帧长

某共享总线网络的端到端单程传播时延为 $25\ \mu s$,速率为 10 Mbit/s。为了确保发送端在发送结束前能够检测最远端产生的冲突,最小帧长至少是________。

  • A. 250 bit
  • B. 500 bit
  • C. 5120 bit
  • D. 10000 bit

[!example]- 解析 **答案:B。**争用期为 $2\tau=50\ \mu s$。最小帧长为 $10\times10^6\times50\times10^{-6}=500$ bit。实际协议通常还会选择便于实现的标准值。

题 22|全双工以太网

现代全双工交换式以太网不再使用 CSMA/CD,主要原因是________。

  • A. 每条链路只有两个端点,发送和接收方向分离,不存在共享介质碰撞
  • B. 以太网帧已经取消 MAC 地址
  • C. 全双工链路只能传输广播帧
  • D. CSMA/CD 被 DNS 替代

[!example]- 解析 **答案:A。**每条链路只有两个端点,发送和接收使用独立方向,不存在多个站点争用同一共享介质的碰撞,因此无需载波监听和碰撞检测。

题 23|PPP 的组成

PPP 中 LCP 和 NCP 的分工,正确的是________。

  • A. LCP 负责链路建立、配置、检测和释放,NCP 为不同网络层协议协商参数
  • B. LCP 负责 DNS 查询,NCP 负责 HTTP 请求
  • C. LCP 只承载用户数据,NCP 只负责物理电压
  • D. LCP 和 NCP 都只用于 Ethernet 交换机学习 MAC 地址

[!example]- 解析 **答案:A。**LCP 建立、配置、检测和释放数据链路。NCP 为不同网络层协议协商参数。把链路控制与具体网络层协议配置分开,使 PPP 能在同一链路机制上承载多种网络层协议。

题 24|HDLC 与透明传输

HDLC 使用 01111110 作为标志字段。采用 0 比特插入的主要原因是________。

  • A. 数据链路层应允许任意比特组合透明通过,不能要求上层避开标志序列
  • B. 0 比特插入会删除所有用户数据
  • C. HDLC 不需要帧边界
  • D. 上层协议一定能保证数据中不出现 01111110

[!example]- 解析 **答案:A。**数据链路层必须允许任意比特组合透明通过,不能限制上层数据内容。0 比特插入使任何数据都不会被误识别为边界,同时接收端可以无损恢复原数据。

题 25|802.1Q 标签

802.1Q 标签插入以太网帧的位置和作用,正确的是________。

  • A. 插入源 MAC 与原类型/长度字段之间,用于标识 VLAN
  • B. 插入 FCS 之后,用于标识 TCP 端口
  • C. 插入目的 IP 之后,用于标识 DNS 服务器
  • D. 插入前导码之前,用于替代 MAC 地址

[!example]- 解析 **答案:A。**802.1Q 在源 MAC 与原类型/长度字段之间插入 4 B 标签。交换机间的干道链路同时承载多个 VLAN 时,需要用该标签指出帧所属 VLAN。

题 26|STP

交换机网络中存在物理冗余环路时,STP 的作用是________。

  • A. 逻辑阻塞部分冗余链路,形成无环树,并在故障时重新启用备份路径
  • B. 增加广播帧数量,使所有链路永久转发
  • C. 修改 IP 地址,代替路由协议
  • D. 删除所有 MAC 地址字段

[!example]- 解析 **答案:A。**二层帧没有 TTL,广播和未知单播可能在环路中无限复制。同一源 MAC 还会从不同端口反复出现,使转发表来回变化。STP 逻辑阻塞部分冗余链路,形成无环树。

题 27|高速以太网兼容性

高速以太网尽量保持传统以太网帧格式不变,主要是为了________。

  • A. 兼容既有协议栈、应用和设备,降低演进成本
  • B. 取消 MAC 地址和 FCS
  • C. 强制所有链路回到半双工共享介质
  • D. 让 IP 分组不再需要路由

[!example]- 解析 **答案:A。**保持地址格式、帧格式和上层接口稳定,可以让既有协议栈、应用和大量设备继续工作,只需升级物理层和交换处理能力,降低网络演进成本。

题 28|Ethernet V2 与 IEEE 802.3

目的 MAC 和源 MAC 后的 2 B 字段,在 Ethernet V2 与 IEEE 802.3 中分别表示________。

  • A. 上层协议类型、数据长度
  • B. 数据长度、上层协议类型
  • C. 源端口、目的端口
  • D. TTL、首部校验和

[!example]- 解析 **答案:A。**Ethernet V2 中表示上层协议类型;IEEE 802.3 中表示数据长度,随后由 LLC/SNAP 进一步标识上层协议。

题 29|MAC 地址标志位

MAC 地址的 I/G 位和 U/L 位分别表示________。

  • A. 单播/组播,本地/全球管理
  • B. IP/UDP,TCP/HTTP
  • C. 源端口/目的端口,长度/校验和
  • D. 是否分片,是否更多分片

[!example]- 解析 **答案:A。**I/G 位区分单播与组播;U/L 位区分全球统一管理地址与本地管理地址。广播地址是所有位全 1 的特殊组地址。

题 30|冲突强化与帧间间隔

关于冲突强化和帧间间隔,下列说法正确的是________。

  • A. 干扰信号用于让远端站点也能确认碰撞,帧间间隔为网卡和介质留出恢复时间
  • B. 干扰信号用于加密数据,帧间间隔用于 DNS 查询
  • C. 检测到碰撞后应立即继续发送原帧
  • D. 帧间间隔会删除以太网帧中的 FCS

[!example]- 解析 **答案:A。**干扰信号使共享介质上的远端站点也能确认发生碰撞;帧间间隔为网卡和介质留出恢复时间,避免连续帧紧密相接。

题 31|PPP 协议字段

PPP 协议字段 0x00210x80210xC021 分别常表示________。

  • A. IPv4、IPCP、LCP
  • B. LCP、IPv4、IPCP
  • C. TCP、UDP、ICMP
  • D. ARP、DNS、HTTP

[!example]- 解析 答案:A。0x0021 表示 IPv4 数据报,0x8021 表示 IPCP,0xC021 表示 LCP。

题 32|PPP 状态过程

PPP 在物理链路建立后还要进行 LCP 和 NCP 协商,原因是________。

  • A. 物理连通不等于链路控制和网络层参数已经一致
  • B. LCP 和 NCP 用于替代所有 IP 路由器
  • C. PPP 不需要物理链路
  • D. NCP 负责检测以太网广播风暴

[!example]- 解析 **答案:A。**LCP 配置和测试链路本身,并可协商鉴别方式;NCP 为具体网络层协议配置参数。物理连通并不等于链路与网络层参数已经一致。

题 33|HDLC 帧类型

HDLC 中 I 帧、S 帧、U 帧以及 $N(S)$、$N(R)$ 的说法,正确的是________。

  • A. I 帧承载数据,S 帧用于确认和监督控制,U 帧用于链路管理
  • B. I 帧只用于物理电压,S 帧只用于域名解析
  • C. $N(S)$ 表示下一期望接收序号,$N(R)$ 表示发送序号
  • D. 三种帧都不能包含控制信息

[!example]- 解析 **答案:A。**I 帧承载数据,S 帧用于确认和监督控制,U 帧用于链路管理;$N(S)$ 是发送序号,$N(R)$ 是下一期望接收序号。

题 34|高速以太网

全双工千兆以太网不再运行 CSMA/CD,却仍然保持以太网帧格式,原因是________。

  • A. 点到点全双工链路没有共享介质碰撞,保留帧格式可兼容现有体系
  • B. 千兆以太网必须使用总线共享介质
  • C. CSMA/CD 只能用于应用层
  • D. 保留帧格式会导致 MAC 地址无法使用

[!example]- 解析 **答案:A。**点到点全双工链路没有共享介质碰撞,因此不需 CSMA/CD;保留帧格式、MAC 地址和上层接口可以兼容现有协议与设备体系。


第四章 网络层:IP 寻址、路由与跨网络交付

数据链路层只能完成当前这一跳的交付。如果目标主机在另一个网络中,数据还要经过多个路由器继续前进。网络层要解决的,就是怎样用 IP 地址表示网络位置、怎样选择下一跳,以及怎样让同一个 IP 数据报跨越不同类型的链路。

[!note] 概念关系 IP 地址划分网络位置 → 子网掩码确定同网段关系 → ARP 完成当前一跳交付 → 路由表决定下一跳 → 路由协议形成路由表 → IP 首部携带转发信息 → 分片处理 MTU 差异

1. 网络层职责与 IP 地址

MAC 地址只能帮助完成当前一跳的交付,无法直接支撑全球范围的路由。如果路由器要为每一块网卡单独保存路径,互联网规模会让路由表无法承受。IP 地址通过层次化前缀把主机按网络组织起来,网络层再据此完成路由选择和逐包转发。

MAC 地址适合当前链路交付,但它不带有便于分层路由的网络位置信息。互联网规模巨大,路由器不可能为每一块网卡保存一条全球转发表项。

IP 地址被划分为网络前缀和主机部分。路由器可以针对一个网络前缀保存一条路由,而不必分别记录其中每台主机。层次化地址由此降低了路由表规模。

网络层承担两项相关但不同的功能:

  • 路由选择:通过路由协议计算到各目的网络的路径;
  • 分组转发:收到一个具体分组后,根据转发表决定输出接口或下一跳。

路由选择形成表,分组转发使用表。

2. IPv4 地址、网络前缀与主机部分

知道 IP 地址用来表示网络位置后,还要确定地址中哪一部分是网络、哪一部分是主机。这个边界由前缀长度或子网掩码决定。同一个 32 位地址配上不同掩码,可能会落在不同规模的网络中。

IPv4 地址长 32 bit,通常写成四个十进制字节,例如 192.168.1.10。地址不只是一个主机编号,而是由网络前缀和主机部分组成。

子网掩码中连续的 1 表示网络前缀,连续的 0 表示主机部分。例如:

255.255.255.224 = /27

因为前三个字节有 24 个 1,最后一个字节 224 的二进制为 11100000,再增加 3 个 1,总前缀长度为 27。

3. 分类地址、私有地址与特殊地址

早期互联网为了简化地址分配,把网络边界固定成 A、B、C 三类。这样容易实现,却很难贴合真实规模,所以浪费了大量地址。除此之外,IPv4 还保留了私有地址、回环地址和广播地址等特殊范围,用来完成内部通信、测试或特定交付。

早期 IPv4 使用 A、B、C 类地址:

类别 首位特征 默认前缀 大致首字节范围 用途
A 0 /8 1~126 大型网络
B 10 /16 128~191 中型网络
C 110 /24 192~223 小型网络
D 1110 224~239 组播
E 1111 240~255 保留/实验

分类地址按固定边界分配,容易造成浪费,后来被 CIDR 取代。但 A/B/C 类范围和默认掩码仍可能作为概念题出现。

3.1 私有地址

并不是所有 IPv4 地址都能直接在公网中使用。私有地址只在内部网络中有效,公网路由器不会直接转发这些地址:

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16

若按传统 C 类 /24 网络划分,192.168.0.0/16 中包含 $2^8=256$ 个 C 类私有网络。

3.2 常见特殊地址

  • 127.0.0.0/8:环回地址,常用 127.0.0.1 测试本机协议栈;
  • 主机位全 0:该子网的网络地址;
  • 主机位全 1:该子网的定向广播地址;
  • 255.255.255.255:受限广播地址;
  • 0.0.0.0:可表示未指定地址;路由表中的 0.0.0.0/0 表示默认路由。

4. 子网掩码、网络地址与广播地址

前缀长度落到实际计算中,就是子网掩码。它不是另一种地址,而是在说明网络位到哪里结束。IP 地址与掩码按位与可以得到网络地址,把主机位全部置 1 可以得到广播地址。同网段判断、可用范围和主机数量也都从这里推出来。

子网掩码把 32 bit 地址分成前缀与主机位。网络地址是“保留网络位,主机位全部置 0”;广播地址是“保留网络位,主机位全部置 1”。

网络地址也可通过 IP 地址与子网掩码按位与得到:

$$ \text{Network}=\text{IP}\land\text{Mask} $$

可用主机范围通常为网络地址加 1到广播地址减 1。

4.1 块大小法

当掩码不是整字节边界时,可在发生变化的字节中计算块大小:

$$ \text{块大小}=256-\text{掩码该字节的十进制值} $$

例如 /27 的最后一个掩码字节是 224:

$$256-224=32$$

子网边界依次为:0、32、64、96、128、160、192、224。

4.2 例:211.15.105.164/27

164 落在 160~191 这一块:

  • 网络地址:211.15.105.160
  • 广播地址:211.15.105.191
  • 可用地址:211.15.105.161211.15.105.190

另一台主机 211.15.105.228/27 落在 224~255 这一块,因此不在同一子网。

4.3 主机数量与前缀长度

如果主机位有 $h$ 位,传统子网中可用主机数为:

$$2^h-2$$

减去的两个地址分别是网络地址和广播地址。

例如至少需要容纳 50 台主机:

  • $2^5-2=30$,不足;
  • $2^6-2=62$,足够。

因此需要 6 位主机位,前缀长度为:

$$32-6=26$$

即使用 /26

5. VLSM 可变长子网划分

普通子网划分常把所有子网切成相同大小,但不同部门需要的主机数可能差很多。统一按最大需求分配会浪费地址。VLSM 允许为不同子网选择不同前缀长度,再从大地址块中按需求逐段分配。

固定长度子网划分会让每个子网大小相同。如果一个部门需要 100 个地址,另一个部门只需要 10 个地址,统一使用大子网会浪费大量空间。

VLSM 允许在同一地址块中使用不同前缀长度。分配时通常按需求从大到小安排,因为大地址块对边界要求更严格,小块更容易填入剩余空间。

例如一个 /24 地址块需要分给 100、50、20 台主机:

  • 100 台需要 /25,可用 126;
  • 50 台需要 /26,可用 62;
  • 20 台需要 /27,可用 30。

地址块必须从相应块大小的边界开始。/25 块大小为 128,/26 为 64,/27 为 32。

6. CIDR 无类别编址

VLSM 说明前缀长度可以灵活变化,CIDR 则把这种无类别思想推广到整个地址分配和路由体系。网络前缀不再局限于 8、16、24 位边界,地址块可以更贴合实际规模,也为路由聚合和最长前缀匹配打下基础。

分类地址只能按 /8/16/24 等固定规模分配,粒度过粗。CIDR 使用“地址/前缀长度”表示任意连续前缀,例如 156.26.63.240/30

/30 表示 30 位网络前缀,2 位主机位:

  • 掩码:255.255.255.252
  • 块大小:4;
  • 地址范围:240~243;
  • 网络地址:156.26.63.240
  • 广播地址:156.26.63.243
  • 可用主机:241、242。

CIDR 同时支持更灵活的地址分配与路由聚合。

7. 直接交付、间接交付与默认网关

地址划分清楚后,主机就可以判断数据该直接发给目标,还是先交给路由器。目标在同一子网时可以直接交付。不在同一子网时,当前这一跳只需要送到默认网关。整个过程中最终目的 IP 通常不变。不过帧的目的 MAC 会随着每一跳重新设置。

主机发送 IP 数据报时,首先依据目的 IP 和本机子网掩码判断目标是否与自己处于同一子网。

  • 若在同一子网,数据报直接交给目标主机,链路层目的 MAC 是目标主机 MAC;
  • 若不在同一子网,数据报交给默认网关,链路层目的 MAC 是默认网关 MAC。

无论哪种情况,IP 首部中的最终目的 IP 都是远端目标主机。路由器转发时通常只更换链路层首部,不会把目的 IP 改成下一跳路由器的地址。

[!warning] 下一跳地址与最终目的地址 当前帧的目的 MAC 通常属于下一跳。IP 数据报的目的 IP 始终指向最终目标。经过每台路由器时,MAC 地址会随链路改变,端到端 IP 地址通常保持不变,NAT 场景除外。

8. ARP 地址解析与当前一跳交付

网络层确定下一跳 IP 后,网卡还不能立刻发送,因为以太网帧需要目的 MAC 地址。ARP 要解决的,就是把本地广播域中的某个 IPv4 地址解析成 MAC 地址,让网络层的下一跳决定真正变成一次链路层交付。

主机已经知道下一跳 IP 后,以太网帧仍然需要目的 MAC。ARP 用于在局域网内根据 IPv4 地址查询 MAC 地址。

典型过程:

  1. 主机检查 ARP 缓存;
  2. 若没有记录,广播 ARP 请求:“谁拥有这个 IP”;
  3. 目标接口单播返回 ARP 应答,给出自己的 MAC;
  4. 主机缓存对应关系,并构造以太网帧。

ARP 请求使用广播,是因为发送方尚不知道目标 MAC;ARP 应答通常单播返回,因为应答方已经从请求帧中知道发送者 MAC。

8.1 同网段与跨网段中的 ARP 目标

  • 目标与本机同网段:ARP 查询目标主机 MAC;
  • 目标在其他网段:ARP 查询默认网关 MAC。

理解 ARP 时最关键的是先确定它解析谁的 MAC。ARP 只在本地广播域中工作,路由器不会把 ARP 广播转发到远端网络。

Windows 查看 ARP 缓存常用:

arp -a

9. 路由表与转发表字段

数据交给路由器后,路由器不需要一次算出完整路径。它只根据路由表决定当前这一跳该从哪个接口发出、交给哪个下一跳。后面的路由器会继续作出同样的局部判断。

典型路由条目包括:

  • 目的网络前缀;
  • 子网掩码或前缀长度;
  • 下一跳地址;
  • 输出接口;
  • 路由度量值。

直连网络不需要再经过下一台路由器,下一跳可表示为“直连”或为空。非直连网络通常需要指出下一跳。

路由表不是完整路径清单。路由器通常只需要知道“下一步交给谁”,下一台路由器再做自己的决策。

9.1 三层交换

三层交换机把二层交换和部分网络层路由能力结合在一台设备中,常用于局域网内部的 VLAN 间转发。它仍然依据目的 IP 和路由表决定三层路径,只是使用专用硬件加速转发。

三层交换不会使 MAC 地址失去作用。进入具体输出链路前,设备仍需构造新的以太网帧,并使用下一跳接口的 MAC 地址。三层交换机与传统路由器在功能上有重叠,区别更多体现在应用场景、接口类型和硬件实现。

10. 最长前缀匹配、默认路由与主机路由

路由表中常会有多条表项同时匹配同一个目的地址,这时必须规定优先级。前缀越长,覆盖范围越小,描述也越具体,所以应优先选择最长前缀。默认路由 /0 最宽泛,主机路由 /32 最具体。

路由表中可能有多条路由同时匹配同一目的地址。例如:

  • 0.0.0.0/0
  • 10.0.0.0/8
  • 10.1.0.0/16
  • 10.1.2.0/24

目的地址 10.1.2.8 与四条都匹配,但 /24 描述得最具体,应优先选择。这个规则称为最长前缀匹配。

最长前缀匹配使路由表既能保留大范围的汇总路由,又能为某些更具体网络设置例外路径。

10.1 默认路由与主机路由

  • 默认路由:0.0.0.0/0,在没有更具体匹配时使用;
  • 主机路由:某地址/32,只匹配一台主机,是最具体的 IPv4 路由。

11. CIDR 路由聚合

路由表过大时,可以把方向相同、地址连续的多个网络合并成一条聚合路由。它们必须共享相同的高位前缀和下一跳。聚合虽然能减少表项,但不能把不该走这个出口的地址也一起覆盖,否则转发结果就会改变。

若多个连续网络从同一方向到达,路由器可以用更短的共同前缀表示它们,减少路由条目数量。

例如:

  • 156.26.56.0/24
  • 156.26.57.0/24
  • 156.26.58.0/24
  • 156.26.59.0/24

第三个字节二进制为:

  • 56:00111000
  • 57:00111001
  • 58:00111010
  • 59:00111011

它们前 6 位 001110 相同,加上前两个完整字节的 16 位,共有 22 位共同前缀,因此可聚合为:

156.26.56.0/22

这个 /22 恰好覆盖 56~59,不会额外包含其他第三字节范围。

11.1 合法路由聚合的边界

可聚合地址块必须满足:

  1. 数量是 2 的幂;
  2. 地址连续;
  3. 起始地址对齐到聚合块边界;
  4. 聚合后不能错误覆盖不应从该接口转发的网络。

例如 156.26.1.0/24156.26.4.0/24 虽然连续四个网络。不过起点 1 不是 4 个 /24 组成的 /22 边界。若强行写成 /22,要么覆盖 0~3,要么覆盖 4~7,都无法精确只表示 1~4。需要拆成若干条更小聚合路由。

12. 静态路由与动态路由协议

小型且稳定的网络可以手工配置路由。不过大型网络的链路和故障会不断变化,人工维护很难及时跟上。动态路由协议让路由器自动交换可达性信息。不同协议的主要区别,是交换什么信息、在哪个范围内运行,以及怎样计算路径。

静态路由由管理员手工配置,行为可预测、开销小,但拓扑变化后不会自动调整。动态路由协议使路由器交换网络可达信息,自动计算和更新路径。

互联网采用分级路由。一个自治系统 AS 内部使用内部网关协议 IGP,例如 RIP 或 OSPF;不同自治系统之间使用外部网关协议 BGP。

12.1 路由算法的分类与自治系统

讨论路由协议之前,需要先划清运行范围。一组由同一管理机构控制、采用统一内部路由策略的网络称为自治系统(AS)。AS 内部使用内部网关协议,AS 之间使用外部网关协议。

从是否随网络状态变化看,路由算法分为:

  • 非自适应路由:由人工静态配置或固定规则决定,开销小,但不能自动适应故障;
  • 自适应路由:路由器交换状态并重新计算路径,可适应拓扑变化,但需要控制报文和计算资源。

常见思想包括:

  • 泛洪:从多条链路复制转发,可靠但副本很多;
  • 随机转发:随机选择下一跳,简单但路径不可控;
  • 最短路径:根据链路代价计算路径,Dijkstra 是典型算法;
  • 距离向量:向邻居通告到目的网络的距离,RIP 属于此类;
  • 链路状态:传播本地链路状态并建立拓扑,OSPF 属于此类;
  • 路径向量:通告可达前缀及经过的 AS 路径,BGP 属于此类。

分层路由降低了路由表和控制信息规模,但路径还会受到管理策略约束,不一定只是纯粹的物理最短路径。

13. RIP 距离向量路由

RIP 采用一种很直接的思路:每台路由器只告诉邻居自己到各网络还有多少跳,并不发送完整拓扑。收到邻居通告后,路由器先把距离加 1,再和现有表项比较。这个过程本质上是在比较不同下一跳提供的候选路径。

RIP 是距离向量路由协议。每台路由器向邻居通告自己到各目的网络的距离,距离通常按跳数计算。

收到邻居 R2 的距离向量后,R1 必须先把每个距离加 1,因为从 R1 到这些网络还要先经过 R2。然后再与原路由表比较。

更新逻辑可概括为:

  1. 新目的网络:加入;
  2. 同一目的网络,新路径更短:替换;
  3. 原路由本来就经过该邻居:使用邻居最新值更新,即使距离变大;
  4. 其他情况下保留原路由。

“同一下一跳也要更新”的原因是:原路由的信息来源就是该邻居。如果邻居报告距离变化,继续保留旧距离会使路由表失真。

RIP 中 16 表示不可达,因此可用最大跳数只有 15。它适合规模较小的网络,也容易出现收敛慢和计数到无穷等问题。

13.1 RIP 更新示例

R1 原表:

目的网络 距离 下一跳
Net1 3 R3
Net2 4 R2
Net4 6 R4
Net6 8 R5

R2 通告:Net1=4、Net2=2、Net3=3、Net4=4、Net5=6。

R1 经 R2 的候选距离加 1 后为:5、3、4、5、7。

  • Net1:原来 3,经 R2 为 5,保留原路由;
  • Net2:原下一跳就是 R2,因此更新为 3;
  • Net3:新网络,加入距离 4、下一跳 R2;
  • Net4:原来 6,经 R2 为 5,更短,改为 R2;
  • Net5:新网络,加入距离 7、下一跳 R2;
  • Net6:R2 未通告,保留原路由。

14. OSPF 链路状态路由与 BGP 域间路由

RIP 的信息简单。不过不适合很大的网络。OSPF 在自治系统内部传播链路状态,让每台路由器根据拓扑计算最短路径。BGP 则运行在自治系统之间,交换前缀和路径属性,更重视策略与可扩展性,而不只是距离最短。

14.1 OSPF

RIP 只从邻居获得距离,OSPF 则让路由器了解更完整的拓扑。它属于链路状态协议:路由器通告邻接关系和链路代价,各路由器据此建立拓扑图,再运行最短路径算法。

与 RIP 只知道“邻居说距离多少”不同,OSPF 对自治系统内部拓扑具有更完整认识,收敛通常更快,也更适合较大网络。

14.2 BGP

自治系统之间不能只按跳数决定路径,因为还要考虑运营策略、商业关系和可达前缀。BGP 因此使用路径向量,并携带 AS 路径等属性来支持跨域路由决策。

样卷中“外部网关协议”通常选 BGP;RIP 和 OSPF 属于内部网关协议。

15. IPv4 数据报首部

路由器要转发一个 IP 数据报,至少需要知道首部有多长、整个数据报有多长、还能经过多少跳、上层使用什么协议,以及源和目的地址。IPv4 首部把这些控制信息统一放在数据前面,使不同链路上的路由器都能按同一种格式处理。

IPv4 基本首部通常为 20 B。各字段分别解决版本兼容、长度识别、分片、寿命限制、上层分用和差错检测等问题。

字段 作用
版本 指明 IPv4 或其他版本
首部长度 IHL 指明首部占多少个 32 bit 字
区分服务 为不同服务质量需求提供标记
总长度 整个 IP 数据报长度,包括首部和数据
标识 属于同一原始数据报的分片使用相同标识
标志 DF 控制是否允许分片,MF 指明后面是否还有分片
片偏移 当前分片数据在原始数据中的位置,单位为 8 B
TTL 限制分组可经过的路由器数量
协议 指明数据交给 TCP、UDP、ICMP 等哪个上层协议
首部校验和 只校验 IPv4 首部
源 IP、目的 IP 指明发送方与最终接收方
选项与填充 提供可选功能,并使首部按 32 bit 对齐

15.1 IPv4 首部字段的完整关系

IPv4 基本首部最短为 20 B。主要字段共同完成版本识别、长度说明、分片、生命周期控制、上层协议分用和地址标识。

字段 作用
版本 IPv4 中值为 4
首部长度 IHL 以 4 B 为单位,最小值 5
区分服务/服务类型 表示转发服务需求、优先级或拥塞通知
总长度 IP 首部与数据部分的总字节数
标识 同一原始数据报的所有分片使用相同标识
标志 DF 控制是否允许分片,MF 表示后面是否还有分片
片偏移 本片数据在原数据中的位置,单位 8 B
TTL 每经过路由器减 1,防止永久循环
协议 指明 ICMP、TCP、UDP 等上层协议
首部校验和 只校验 IPv4 首部,TTL 改变后需重新计算
源地址、目的地址 原始发送主机与最终目标主机
选项与填充 可选控制信息,并补齐到 4 B 边界

IPv4 首部校验和不覆盖运输层数据,因此不能替代 TCP 或 UDP 校验和。

15.2 首部长度字段

IHL 的单位是 4 B。若 IHL 为 5,就首部长度为:

$$5\times4=20\text{ B}$$

抓包中常见首字节 0x45:高 4 bit 的 4 表示 IPv4,低 4 bit 的 5 表示 20 B 首部。

15.3 总长度字段

总长度包括 IP 首部和 IP 数据。若总长度为 60 B、首部长度为 20 B,就 IP 数据部分为 40 B。

15.4 TTL 与环路抑制

路由配置错误可能形成环路。如果分组没有寿命限制,它会在环中长期转发并消耗带宽。每经过一台路由器,TTL 至少减 1。减到 0 时路由器丢弃分组,并通常返回 ICMP 超时报文。

15.5 协议字段

常见值包括:

  • 1:ICMP;
  • 6:TCP;
  • 17:UDP。

这个字段使网络层可以把数据交给正确的运输层或控制协议。

16. IPv4 分片与 MTU

同一个 IP 数据报沿途可能经过多种链路,而这些链路允许承载的最大数据量并不相同。如果数据报大于下一条链路的 MTU,IPv4 可以把它拆成多个分片。标识、片偏移和 MF 标志用来说明这些分片属于谁、位于哪里,以及后面是否还有分片。

每种数据链路技术允许的最大帧载荷不同。一个较大的 IP 数据报经过 MTU 较小的链路时,如果允许分片,路由器需要把它拆成若干更小的数据报。

每个分片都有独立 IP 首部,因此“分片大小不超过 MTU”是指首部与数据之和不超过 MTU。

16.1 片偏移单位

片偏移字段只有 13 bit。如果直接以字节为单位,可表示范围有限。使用 8 B 为单位,可以在不增加首部长度的情况下表示更大数据报的位置。

因此,除最后一片外,各分片数据长度通常必须是 8 B 的整数倍,保证下一片偏移可以整数表示。

16.2 分片计算的一般关系

设:

  • 原始总长度为 $L$;
  • IP 首部长度为 $H$;
  • 链路 MTU 为 $M$。

原始数据长度:

$$D=L-H$$

非最后分片可携带的最大数据长度:

$$ D_{max}=\left\lfloor\frac{M-H}{8}\right\rfloor\times8 $$

第 $i$ 个分片的片偏移:

$$ \text{offset}_i=\frac{\text{该片之前已经承载的原始数据字节数}}{8} $$

除最后一片外 MF=1,最后一片 MF=0。

16.3 样卷中的分片例题

原始数据报总长度 2200 B,MTU 为 820 B,首部按 20 B:

原始数据长度:

$$2200-20=2180\text{ B}$$

每个非最后分片最多承载:

$$\left\lfloor\frac{820-20}{8}\right\rfloor\times8=800\text{ B}$$

因此数据部分分为:

  • 第 1 片:800 B;
  • 第 2 片:800 B;
  • 第 3 片:580 B。

三个分片总长度分别为 820 B、820 B、600 B。偏移为:

  • 第 1 片:0;
  • 第 2 片:$800/8=100$;
  • 第 3 片:$(800+800)/8=200$。

最后一片偏移值为 200,MF=0。

[!warning] 常见错误

  • 直接用原始总长度除以 MTU,忽略每片都要重新带 IP 首部;
  • 把片偏移写成字节数,忘记除以 8;
  • 让非最后分片的数据长度不是 8 的整数倍。

17. RARP、ICMP、ping、tracert 与 IGMP

IP 负责尽力转发。不过它本身不会完成所有辅助工作。网络还需要协议来报告差错、进行诊断、管理组播成员,早期还需要反向获取地址。ICMP 支撑差错报告、ping 和 tracert,IGMP 管理 IPv4 组播成员,RARP 则是较早的反向地址解析机制。

17.1 RARP

RARP 用于根据 MAC 地址获得 IP 地址,历史上用于无盘工作站。现代网络通常使用功能更完整的 DHCP,因此 RARP 已较少使用。

17.2 ICMP

IP 只承诺尽力转发,所以可能出现目标不可达、TTL 耗尽或参数错误。ICMP 用来把这些异常报告给相关主机,并提供网络诊断信息。

常见 ICMP 报文包括:

  • 目的不可达;
  • 时间超过;
  • 参数问题;
  • 回显请求与回显应答。

ICMP 并不负责修复错误,也不保证原始数据重传;它把网络状态反馈给主机或路由器。

17.3 ICMP 差错报告与询问报文

常见 ICMP 差错报告包括:

报文 出现场景
目的不可达 没有路由、端口不可达、需要分片但 DF 被置位等
时间超过 TTL 减到 0,或分片重组等待超时
参数问题 IP 首部字段无法处理
重定向 路由器告知主机存在更合适的下一跳

早期资料还会出现源点抑制,其思想是让发送端降低速率,但后来不再作为互联网拥塞控制的主要方法。现代拥塞控制主要由 TCP 和路由器队列管理完成。

询问类报文包括回显请求和回显应答,ping 正是利用这对报文。ICMP 只报告问题,不会替原始协议自动修复错误。

17.4 ping

ping 通常发送 ICMP 回显请求,目标返回回显应答。它可以验证基本 IP 连通性并测量往返时间,但不能证明某个具体应用端口一定可用。

17.5 tracert

tracerttraceroute 通过发送 TTL 逐渐增大的探测分组,利用路由器返回的 ICMP 时间超过报文推测路径。

TTL=1 时,第一台路由器将其减为 0并返回 ICMP;TTL=2 时第二台路由器返回,以此类推。

17.6 IGMP 与 IP 组播

IGMP 用于主机与本地组播路由器之间管理组成员关系。它不负责计算全球组播路由,而是让路由器知道某个局域网中是否有主机希望接收某组播组的数据。

17.7 IP 组播的地址、局域网交付与路由

单播把分组交给一个接口,广播把分组交给广播域内所有接口,组播只面向加入某个组的接收者。IPv4 组播地址位于 224.0.0.0/4,传统分类中属于 D 类地址。

组播跨越以太网时,需要把 IP 组播地址映射为组播 MAC 地址。主机通过 IGMP 向本地组播路由器报告加入或离开组。IGMP 只解决“这个局域网是否存在组成员”,跨路由器建立分发树还需要组播路由协议。

因此组播包含两个层次:局域网内利用硬件组播完成一跳交付,互联网范围内由组播路由机制决定在哪些链路复制分组。

18. NAT 与 NAPT 地址转换

私有地址可以在不同内部网络中重复使用,但不能直接在公网中路由。为了让内部主机访问互联网,边界设备可以使用 NAT 修改地址。NAPT 还会结合端口号区分连接,让许多主机共享少量公网地址。

私有地址不能直接在公网路由。NAT 在边界设备上修改 IP 地址,使内部主机共享公网地址访问互联网。

若只转换地址,不足以区分多台内部主机同时访问同一外部服务。NAPT 进一步转换端口号,建立类似下表的映射:

内部地址与端口 公网地址与端口
192.168.1.10:50000 203.0.113.5:30001
192.168.1.20:50000 203.0.113.5:30002

返回报文到达公网地址后,NAT 设备根据端口映射还原内部目标。

NAT 缓解了 IPv4 地址不足,也隐藏了内部地址结构,但它修改了端到端报文信息,使某些需要主动入站或在应用数据中携带地址的协议更复杂。

19. VPN 隧道与逻辑专网

公共互联网可以把分组送到远端,却不会自动提供专网边界和安全保护。VPN 会把私网分组封装在公网分组中,并常结合加密和身份鉴别,让分散地点在逻辑上像处在同一张受保护的专用网络中。

VPN 利用公共网络建立逻辑上的私有通信通道。它通常通过隧道封装,把原始分组作为新分组的数据,并结合加密与身份鉴别保护传输。

VPN 并不创造一条独占物理线路,而是在共享互联网之上建立受控制的逻辑连接。

按连接对象可分为:

  • 远程接入 VPN:单个移动用户或家庭用户安全接入单位内部网络;
  • 站点到站点 VPN:连接两个或多个固定局域网;
  • 内联网 VPN:连接同一组织的不同分支;
  • 外联网 VPN:向合作伙伴开放受限制的内部资源。

隧道解决私网分组怎样穿过公网,身份鉴别确认接入者,机密性和完整性保护则防止公网中的窃听与篡改。

20. MPLS 多协议标签交换

普通 IP 转发需要对目的地址做最长前缀匹配。MPLS 在网络入口给分组加入一个短标签,核心设备主要根据标签转发,到出口再移除标签并恢复普通 IP 处理。它要解决的是核心转发和流量工程的效率问题,而不是取代 IP。

  • Push:入口设备加入标签;
  • Swap:中间设备把入标签替换为出标签;
  • Pop:出口或倒数第二跳移除标签。

标签只在相应 MPLS 域中具有局部意义。MPLS 可以承载 IPv4、IPv6 等多种协议,也便于构造流量工程路径和运营商 VPN。它并没有取消 IP 地址和路由协议,标签转发表通常仍依据路由或控制协议建立。

21. IPv6 地址与数据报

IPv4 面临地址不足,基本首部中也包含一些不利于高速处理的设计。IPv6 因此把地址扩展到 128 位,简化基本首部,并把可选功能放进扩展首部。它还重新组织了单播、多播和任播的使用方式。

IPv4 地址只有 32 bit,全球可分配地址有限。IPv6 使用 128 bit 地址,极大扩展地址空间,并重新设计首部以简化路由器常用处理。

21.1 IPv6 地址写法

IPv6 通常写成 8 组十六进制数,每组 16 bit:

2001:0db8:0000:0000:0000:ff00:0042:8329

压缩规则:

  • 每组前导 0 可以省略;
  • 一段连续全 0 组可用 :: 代替,但一个地址中只能使用一次。

上例可写为:

2001:db8::ff00:42:8329

21.2 IPv6 地址类型

  • 单播:发送给一个接口;
  • 组播:发送给一组接口;
  • 任播:发送给一组接口中路由意义上最近的一个。

IPv6 不使用 IPv4 式广播,许多原广播功能由组播完成。

21.3 IPv6 基本首部与 ICMPv6

IPv6 基本首部固定为 40 B,删除 IPv4 的首部校验和,并把分片、路由等可选功能放入扩展首部。

  • 地址扩展为 128 bit;
  • 负载长度描述基本首部之后的数据;
  • 下一首部可指向 TCP、UDP、ICMPv6 或扩展首部;
  • 跳数限制承担与 IPv4 TTL 类似的作用;
  • 路由器不再进行中途分片,需要分片时由源主机使用分片扩展首部;
  • IPv6 不使用广播,邻居发现等功能主要由 ICMPv6 与组播完成。

ICMPv6 除差错报告外,还承担邻居发现、路由器发现和地址自动配置等功能。

21.4 IPv4 向 IPv6 过渡

互联网无法一次性整体替换,常见过渡方式包括:

  • 双协议栈:设备同时运行 IPv4 和 IPv6;
  • 隧道:在 IPv4 网络中封装 IPv6 分组;
  • 协议转换:在两种协议之间转换。

章节练习与解析

材料原题

原题 1|作业 3·第 1 题

假设某主机的 IP 地址为 211.15.105.164,子网掩码为 255.255.255.224,请回答:

  1. 该主机所在网络的广播地址是什么?该网络中可用的 IP 地址范围是多少?
  2. 若另一台机器的 IP 地址为 211.15.105.228,判断它们是否属于同一个子网。

[!example]- 解析 掩码 255.255.255.224/27,块大小为 32。164 落在 160~191,因此网络地址为 211.15.105.160,广播地址为 211.15.105.191,可用范围为 211.15.105.161211.15.105.190

228 落在 224~255 的地址块中,网络地址为 211.15.105.224,与前一主机不在同一子网。

原题 2|作业 2·第 2 题

下图给出了一个 CIDR 的路由汇聚过程,其中,路由器 $R_G$ 通过两条串行接口 S0、S1 与两台汇聚路由器 $R_E$、$R_F$ 连接,$R_A$、$R_B$、$R_C$、$R_D$ 分别连接网络地址为 156.26.1.0/24156.26.4.0/24156.26.56.0/24156.26.59.0/24 的 8 个子网。

请回答:

  1. CIDR 地址块 156.26.63.240/30 对应的掩码是多少?并给出其广播地址。
  2. 为什么要进行 IP 路由汇聚?IP 路由汇聚采用的原则是什么?
  3. 156.26.1.0/24156.26.4.0/24 的输出接口均为 S0,156.26.56.0/24156.26.59.0/24 的输出接口均为 S1,请给出这 8 个子网进行路由汇聚后的路由条目。
  4. Windows 系统中可以使用 route 命令添加路由,如果要设置到目标网络 156.0.0.0 的路由为 156.26.1.1,请给出具体命令。

[!example]- 解析

  1. /30 掩码为 255.255.255.252,块大小为 4,地址范围为 240~243,广播地址为 156.26.63.243
  2. 路由汇聚用于减少路由表项、降低路由通告规模。原则是寻找连续地址块的最长共同前缀,并确保汇聚块边界合法、所有被汇聚网络具有相同下一跳或输出接口。
  3. 156.26.1.0/24156.26.4.0/24 不能精确汇聚为一条不包含额外网络的路由;可按实际连续边界写为 156.26.1.0/24156.26.2.0/23156.26.4.0/24,均指向 S0。156.26.56.0/24156.26.59.0/24 可汇聚为 156.26.56.0/22,指向 S1。
  4. route add 156.0.0.0 mask 255.0.0.0 156.26.1.1

原题 3|作业 3·第 2 题

路由器 R1、R2 采用 RIP 协议。R1 原有路由信息如下:

目的网络 距离 下一跳
Net1 3 R3
Net2 4 R2
Net4 6 R4
Net6 8 R5

R2 发来的距离向量如下:

目的网络 R2 通告的距离
Net1 4
Net2 2
Net3 3
Net4 4
Net5 6

请给出 R1 更新后的路由表。

[!example]- 解析 R1 先把 R2 通告的每个距离加 1,得到 5、3、4、5、7。更新后:

目的网络 距离 下一跳
Net1 3 R3
Net2 3 R2
Net3 4 R2
Net4 5 R2
Net5 7 R2
Net6 8 R5

Net2 原下一跳就是 R2,因此应采用 R2 的新通告;Net4 经 R2 的距离 5 小于原来的 6,因此改走 R2。

原题 4|样卷·填空题

一个较大数据报通过另一个只能通过较小数据报的网络时,须对 IP 数据报进行分片。某数据报原始长度为 2200 B,当前网络分片最大长度 MTU 为 820 B,则可分为 ___ 个分片;最后一个分片的偏移值为 ___

[!example]- 解析 **答案:3 个分片,最后一片偏移为 200。**假设 IPv4 首部为 20 B,原始数据为 2180 B。每个非最后分片最多携带 800 B 数据,分为 800、800、580 B。最后一片前已有 1600 B 数据,片偏移为 $1600/8=200$。

原题 5|样卷·填空题

IPv6 的 IP 地址长度为___ 位。

[!example]- 解析 答案:128 位。

原题 6|样卷·单项选择题

以下属于外部网关协议的是__________

  • A. IGP
  • B. RIP
  • C. BGP
  • D. OSPF

[!example]- 解析 **答案:C。**BGP 用于自治系统之间的域间路由;RIP 和 OSPF 属于自治系统内部使用的内部网关协议。

原题 7|样卷·单项选择题

能够使主机或路由器报告差错情况和提供有关异常情况报告的协议是_____

  • A. IP
  • B. HTTP
  • C. ICMP
  • D. TCP

[!example]- 解析 **答案:C。**ICMP 与 IP 配套,用于差错报告和诊断信息传递。

原题 8|样卷·单项选择题

C 类地址中,一共有___ 专用 IP 地址网络。

  • A. 1
  • B. 16
  • C. 32
  • D. 256

[!example]- 解析 **答案:D。**私有地址块 192.168.0.0/16 按传统 C 类 /24 网络计算,共包含 256 个 C 类网络。

原题 9|样卷·单项选择题

如果要划分出每个子网大小为 14 台主机,则子网掩码为____________

  • A. 255.255.255.255
  • B. 255.255.255.248
  • C. 255.255.255.240
  • D. 255.255.255.224

[!example]- 解析 **答案:C。**需要至少 14 个可用地址,4 位主机位可提供 $2^4-2=14$ 个可用地址,因此前缀为 /28,掩码为 255.255.255.240

原题 10|样卷·单项选择题

ARP 协议的功能是__________。

  • A. 根据 IP 地址查询 MAC 地址
  • B. 根据 MAC 地址查询 IP 地址
  • C. 根据域名查询 IP 地址
  • D. 根据 IP 地址查询域名

[!example]- 解析 **答案:A。**ARP 在本地链路中把下一跳 IPv4 地址解析为 MAC 地址。

原题 11|样卷·单项选择题

某主机的 IP 地址为 180.80.77.55,子网掩码为 255.255.252.0。若该主机向其所在子网发送广播分组,则目的地址可以是_________。

  • A. 180.80.76.0
  • B. 180.80.76.255
  • C. 180.80.77.255
  • D. 180.80.79.255

[!example]- 解析 答案:D。255.255.252.0/22,第三个字节块大小为 4。77 落在 76~79,广播地址为 180.80.79.255

原题 12|样卷·单项选择题

以下可以实现内部专用 IP 地址与全局 IP 地址对应变换功能的是________。

  • A. ARP
  • B. DNS
  • C. ARQ
  • D. NAT

[!example]- 解析 **答案:D。**NAT 在专用地址与公网地址之间进行转换;NAPT 还可同时转换端口号。

原题 13|样卷·单项选择题

下列不属于路由选择协议的是________。

  • A. RIP
  • B. ICMP
  • C. BGP
  • D. OSPF

[!example]- 解析 **答案:B。**ICMP 是 IP 的配套控制协议,不负责构造路由表。

原题 14|样卷·问答与计算题

某公司获得地址块 101.101.100.0/23,要分配给四个部门使用。A 部门需要 115 个 IP 地址,B 部门需要 238 个地址,C 部门需要 50 个 IP 地址,D 部门需要 29 个 IP 地址。请完成:

  1. 地址块 101.101.100.0/23 包括的 IP 地址数,以及对应的广播地址;
  2. 写出满足四个部门需要的地址块划分方案,形式为 a.b.c.d/x

[!example]- 解析 /23 共含 $2^9=512$ 个地址,范围为 101.101.100.0101.101.101.255,广播地址为 101.101.101.255

可按需求从大到小分配:

  • B:101.101.100.0/24,256 个地址;
  • A:101.101.101.0/25,128 个地址;
  • C:101.101.101.128/26,64 个地址;
  • D:101.101.101.192/27,32 个地址。

剩余 101.101.101.224/27 未分配。

原题 15|样卷·综合题

将 IP 地址空间 202.118.1.0/24 划分为 2 个子网,分别分配给局域网 1、局域网 2,每个局域网需分配的 IP 地址数不少于 120 个。R1 通过 S0 接口 202.118.2.1 与 R2 的 S0 接口 202.118.2.2 相连;R2 的 E0 接口为 202.118.3.1,域名服务器为 202.118.3.2

  1. 给出两个局域网的子网划分结果;
  2. 给出 R1 的路由表,使其包括到两个局域网的路由、域名服务器的主机路由和互联网的路由;
  3. 采用路由聚合技术,给出 R2 到两个局域网的路由。

[!example]- 解析 两个子网均需至少 120 个可用地址,应各分配 /25

  • LAN1:202.118.1.0/25,可用 202.118.1.1202.118.1.126
  • LAN2:202.118.1.128/25,可用 202.118.1.129202.118.1.254

R1 可设置两条直连路由;到 DNS 的主机路由为 202.118.3.2/32,下一跳 202.118.2.2,接口 S0;到互联网使用默认路由 0.0.0.0/0,下一跳 202.118.2.2,接口 S0。

R2 可把两个 /25 汇聚为 202.118.1.0/24,下一跳 202.118.2.1,接口 S0。

原题 16|作业 2·第 1 题

主机 A 位于 128.1.0.0/16,IP 为 128.1.0.2,MAC 为 06-56-00-34-12-80;主机 B 位于 128.4.0.0/16,IP 为 128.4.0.2,MAC 为 08-00-00-55-00-20。路径为主机 A → 路由器 A → 路由器 B → 路由器 C → 主机 B。

路由器 A 连接 LAN A 的接口为 128.1.0.1,MAC 为 05-2A-00-12-88-11;路由器 C 连接 LAN B 的接口为 128.4.0.1,MAC 为 02-2B-01-50-26-66

写出主机 A 发出的第一跳帧以及主机 B 收到的最后一跳帧中的源/目的 IP 地址和源/目的 MAC 地址。

[!example]- 解析 第一跳:源 IP 128.1.0.2,目的 IP 128.4.0.2;源 MAC 06-56-00-34-12-80,目的 MAC 05-2A-00-12-88-11

最后一跳:源 IP 仍为 128.1.0.2,目的 IP 仍为 128.4.0.2;源 MAC 改为路由器 C 的 02-2B-01-50-26-66,目的 MAC 为主机 B 的 08-00-00-55-00-20

IP 地址通常端到端保持不变,MAC 地址在每一跳重新封装。

补充题

题 17|分类地址、私有地址与特殊地址

关于 IPv4 私有地址与特殊地址,下列说法正确的是________。

  • A. 10.0.0.0/8172.16.0.0/12192.168.0.0/16 是私有地址块
  • B. 127.0.0.1 是公网广播地址
  • C. 255.255.255.255 表示默认路由前缀
  • D. 0.0.0.0 只能表示某一台固定公网主机

[!example]- 解析 **答案:A。**私有地址为 10.0.0.0/8172.16.0.0/12192.168.0.0/16127.0.0.1 是本机回环地址。0.0.0.0 常表示未指定地址或默认路由前缀。255.255.255.255 是受限广播地址。

题 18|直接交付与间接交付

主机 192.168.1.10/24 访问 192.168.1.808.8.8.8 时,下列说法正确的是________。

  • A. 二者都属于直接交付,ARP 都查询目标主机
  • B. 前者直接交付,ARP 查询目标主机;后者间接交付,ARP 查询默认网关
  • C. 前者间接交付,后者直接交付
  • D. 访问 8.8.8.8 时 ARP 查询 DNS 服务器

[!example]- 解析 答案:B。192.168.1.80 与本机同网段,属于直接交付,ARP 查询目标主机 MAC。8.8.8.8 不同网段,属于间接交付,ARP 查询默认网关 MAC。

题 19|最长前缀匹配

路由表同时有 10.0.0.0/810.1.0.0/1610.1.2.0/24 和默认路由,目的地址为 10.1.2.30。应选择________。

  • A. 10.0.0.0/8
  • B. 10.1.0.0/16
  • C. 10.1.2.0/24
  • D. 默认路由

[!example]- 解析 **答案:C。**三条具体前缀都匹配,但 /24 最长、范围最具体,因此选择 10.1.2.0/24

题 20|RIP、OSPF 与 BGP

关于 RIP、OSPF 与 BGP,下列说法正确的是________。

  • A. RIP 是自治系统内部的距离向量协议,BGP 用于自治系统之间
  • B. OSPF 是外部网关协议,专门用于自治系统之间
  • C. BGP 以跳数为唯一度量,适合小型局域网内部
  • D. RIP、OSPF、BGP 都是应用层邮件协议

[!example]- 解析 **答案:A。**RIP 是自治系统内部的距离向量协议,以跳数为度量,适合小型网络。OSPF 是自治系统内部的链路状态协议。BGP 用于自治系统之间,采用路径向量并结合策略选择路由。

题 21|IPv4 首部字段

关于 IPv4 首部字段,下列说法正确的是________。

  • A. TTL 限制分组可经过的路由器数量,协议字段指出上层协议
  • B. 首部校验和负责校验整个 TCP 数据
  • C. 标识、标志和片偏移只用于域名解析
  • D. 协议字段表示数据链路层目的 MAC 地址

[!example]- 解析 **答案:A。**TTL 限制分组可经过的路由器数量,防止永久循环。协议字段指出上层是 TCP、UDP、ICMP 等。首部校验和检测 IPv4 首部错误。标识、标志和片偏移用于分片和重组。

题 22|完整分片表

原始 IPv4 数据报总长度 4000 B,首部 20 B,链路 MTU 为 1500 B。分片结果正确的是________。

  • A. 数据长度 1480、1480、1020 B;片偏移 0、185、370;MF 为 1、1、0
  • B. 数据长度 1500、1500、1000 B;片偏移 0、1500、3000;MF 全为 0
  • C. 数据长度 4000 B;片偏移 0;MF 为 0
  • D. 数据长度 1480、1480、1040 B;片偏移 0、1480、2960;MF 为 1、1、1

[!example]- 解析 **答案:A。**每个非最后分片最大数据长度为 $\lfloor(1500-20)/8\rfloor\times8=1480$ B。原始数据 3980 B,分成 1480、1480、1020 B。

分片 总长度 数据长度 片偏移 MF
1 1500 1480 0 1
2 1500 1480 185 1
3 1040 1020 370 0

题 23|ping 与 tracert

ping 和 tracert 都可能使用 ICMP。下列说法正确的是________。

  • A. ping 使用 ICMP 回显请求/应答,tracert 利用逐步增加 TTL 触发沿途超时报文
  • B. ping 使用 ARP 广播,tracert 使用 SMTP
  • C. ping 只能测试 HTTP 状态码,tracert 只能解析域名
  • D. 二者都只在数据链路层工作

[!example]- 解析 **答案:A。**ping 发送 ICMP 回显请求并等待回显应答,用于测试可达性和往返时间。tracert 逐步增加 TTL,使沿途路由器依次返回 ICMP 超时报文,这样就显示路径。

题 24|IGMP 与组播

主机加入 IPv4 组播组时需要 IGMP,主要因为________。

  • A. 组播路由器需要知道本地网络上是否存在某个组的接收者
  • B. IGMP 用于把域名解析为 IP 地址
  • C. 普通单播也必须先加入组播组
  • D. IGMP 负责为 TCP 连接编号

[!example]- 解析 **答案:A。**组播路由器需要知道本地网络上是否存在某个组的接收者,才能决定是否向这个网络转发组播流量。IGMP 用于主机与本地组播路由器之间维护成员关系。

题 25|NAT 与 NAPT

多台内网主机使用一个公网 IPv4 地址同时访问互联网时,通常需要 NAPT。原因是________。

  • A. 同时转换源 IP 和源端口,才能区分多个内网连接
  • B. 只转换目的 MAC 地址即可区分所有连接
  • C. NAPT 会取消所有端口号
  • D. NAT 只能用于 IPv6,不适用于 IPv4

[!example]- 解析 **答案:A。**NAPT 同时转换源 IP 和源端口,并维护“内网 IP:端口 ↔ 公网 IP:端口”的映射。若只有一个公网地址而只转换 IP,不同主机的连接可能无法区分。

题 26|VPN 隧道

关于 VPN 中隧道和加密的作用,下列说法正确的是________。

  • A. 隧道负责封装穿越公网,加密和认证保护内容与身份
  • B. 隧道只用于增加网页字体大小
  • C. 加密负责选择 IP 路由,隧道负责解析域名
  • D. VPN 不需要任何封装

[!example]- 解析 **答案:A。**隧道把内部网络分组封装在可通过公网传输的外层分组中,形成逻辑上的点到点通道;加密和认证保护封装内容的保密性、完整性和端点身份。

题 27|IPv6 压缩与过渡

地址 2001:0db8:0000:0000:0000:ff00:0042:8329 的正确压缩形式,以及双协议栈和隧道技术的区别,正确的是________。

  • A. 2001:db8::ff00:42:8329;双协议栈同时运行 IPv4/IPv6,隧道把 IPv6 封装进 IPv4
  • B. 2001::db8::ff00:42:8329;双协议栈只能运行 IPv4
  • C. 2001:db8:0:0:0:ff00:0042:8329;隧道要求所有路由器都直接支持 IPv6
  • D. 2001:db8:ff00:42:8329;双协议栈用于 MAC 地址学习

[!example]- 解析 **答案:A。**可压缩为 2001:db8::ff00:42:8329。双协议栈让设备同时运行 IPv4 和 IPv6,根据目标选择协议。隧道技术把 IPv6 分组封装在 IPv4 中,通过尚未升级的 IPv4 网络。

题 28|RARP 的历史作用

关于 RARP 和 DHCP,下列说法正确的是________。

  • A. RARP 根据 MAC 地址查询 IP 地址,DHCP 可提供更完整的网络配置
  • B. RARP 根据域名查询 IP 地址,DHCP 只用于发送邮件
  • C. DHCP 只能分配 MAC 地址,不能分配 IP 地址
  • D. RARP 负责自治系统之间路径选择

[!example]- 解析 **答案:A。**RARP 根据 MAC 地址查询 IP 地址,早期用于无盘工作站启动。它功能单一且通常只能在本地链路工作。DHCP 不仅分配 IP,还能提供掩码、网关、DNS、租期等完整配置。

题 29|路由算法分类

RIP、OSPF 和 BGP 对应的路由思想与运行范围,正确的是________。

  • A. RIP 是距离向量 IGP,OSPF 是链路状态 IGP,BGP 是路径向量 EGP
  • B. RIP 是路径向量 EGP,OSPF 是距离向量 EGP,BGP 是链路状态 IGP
  • C. 三者都只在单条以太网链路内部运行
  • D. 三者都属于 DNS 查询协议

[!example]- 解析 **答案:A。**RIP 是距离向量内部网关协议;OSPF 是链路状态内部网关协议;BGP 是路径向量外部网关协议,用于自治系统之间。

题 30|IPv4 首部校验和

IPv4 首部校验和需要在每一跳重新计算,原因是________。

  • A. 路由器每跳都会修改 TTL,且校验和只覆盖 IPv4 首部
  • B. 它会校验完整 TCP 数据,因此与 TTL 无关
  • C. 它只在应用层计算一次
  • D. 它用于检查以太网 FCS 是否正确

[!example]- 解析 **答案:A。**路由器每跳都会修改 TTL,因此首部内容变化,需要重新计算;IPv4 首部校验和只覆盖 IP 首部,不覆盖 TCP 数据。

题 31|ICMP 报文

关于 ICMP 报文类型,下列说法正确的是________。

  • A. TTL 归零或重组超时可能产生时间超过报文
  • B. 目的不可达只表示 DNS 查询失败
  • C. 参数问题用于通知 TCP 端口开放
  • D. 重定向用于加密 IP 数据报

[!example]- 解析 **答案:A。**无法到达目标或端口时产生目的不可达。TTL 归零或重组超时产生时间超过。首部无法处理产生参数问题。发现主机应使用更合适下一跳时发送重定向。

题 32|IP 组播

IGMP 和组播路由协议的分工,正确的是________。

  • A. IGMP 管理主机与本地组播路由器的成员关系,组播路由协议建立跨路由器分发路径
  • B. IGMP 负责 TCP 拥塞控制,组播路由协议负责域名解析
  • C. IGMP 和组播路由协议都只用于单播
  • D. IGMP 用于替代所有二层交换机

[!example]- 解析 **答案:A。**IGMP 管理主机与本地组播路由器之间的成员关系;组播路由协议负责跨路由器建立组播分发路径。

题 33|MPLS

MPLS 的 Push、Swap 和 Pop 分别表示________。

  • A. 加标签、替换标签、移除标签
  • B. 移除标签、加标签、替换标签
  • C. 采样、量化、编码
  • D. 查询、响应、缓存

[!example]- 解析 **答案:A。**Push 加标签,Swap 替换标签,Pop 移除标签。MPLS 核心按标签转发,但标签路径和转发表通常仍依赖 IP 路由或控制协议建立。

题 34|IPv6 基本首部

关于 IPv6 基本首部与 IPv4 的差异,下列说法正确的是________。

  • A. IPv6 基本首部固定 40 B,没有首部校验和,路由器不进行中途分片
  • B. IPv6 基本首部长度可变,且必须包含 IPv4 首部校验和
  • C. IPv6 继续大量使用广播替代组播
  • D. IPv6 路由器必须像 IPv4 一样中途分片

[!example]- 解析 **答案:A。**IPv6 基本首部固定 40 B,没有首部校验和;路由器不进行中途分片;IPv6 不使用广播,许多功能由组播和 ICMPv6 完成。

题 35|三层交换与 VPN

关于三层交换与 VPN,下列说法正确的是________。

  • A. 三层交换机在 VLAN 间转发时依据目的 IP 和路由表;VPN 隧道负责封装,加密和鉴别负责保护与确认身份
  • B. 三层交换机只依据目的端口转发,VPN 只负责 DNS 查询
  • C. VLAN 间转发完全不需要网络层地址
  • D. VPN 中加密负责把 IP 地址转换成 MAC 地址

[!example]- 解析 **答案:A。**三层交换机依据目的 IP 和路由表选择三层路径,输出时仍使用新的二层帧。VPN 隧道负责封装穿越公网,鉴别确认通信对象,加密和完整性保护防止窃听与篡改。


第五章 运输层:进程通信、可靠传输与拥塞控制

网络层只能把分组送到目标主机,却不知道它应该交给浏览器、邮件程序还是其他进程。运输层先用端口号找到正确的进程,再根据应用需求选择 UDP 或 TCP。后面看到的连接、序号、确认、窗口和拥塞控制,也不是彼此独立的规则。它们都在解决同一个问题:怎样在不可靠的分组网络上提供可靠的端到端传输。

[!note] 概念关系 端口号定位进程 → UDP/TCP 提供不同交付模型 → 序号与确认处理丢失和乱序 → 滑动窗口提高效率并控制接收速度 → 拥塞窗口保护网络 → TCP 首部承载这些控制状态

1. 端口号与进程到进程通信

网络层已经把数据送到目标主机,但一台主机里可能同时运行很多应用。IP 地址无法说明数据应该交给哪一个进程,所以运输层在 IP 之上加入端口号,把主机到主机通信进一步细化为进程到进程通信。

一台服务器通常只有少量 IP 地址,却可以同时提供 Web、邮件、DNS 和远程登录服务。IP 地址定位主机,端口号定位主机中的应用进程。

端口号长 16 bit,范围为 0~65535。通常分为:

  • 熟知端口:0~1023,分配给常见服务;
  • 登记端口:1024~49151;
  • 临时或动态端口:49152~65535,客户端常自动选择。

常用端口:

协议 端口 运输层
FTP 数据 20 TCP
FTP 控制 21 TCP
SSH 22 TCP
Telnet 23 TCP
SMTP 25 TCP
DNS 53 通常 UDP,也可 TCP
DHCP 服务器 67 UDP
DHCP 客户端 68 UDP
HTTP 80 TCP
POP3 110 TCP
IMAP 143 TCP
HTTPS 443 TCP(HTTP/3 例外)
RIP 520 UDP

运输层在发送端把多个应用进程的数据复用到网络层;接收端根据目的端口把数据分用给相应进程。

2. Socket、端点与五元组

端口号可以找到进程,却不能单独唯一标识一条通信。要区分不同连接,还需要同时看源 IP、源端口、目的 IP、目的端口和运输层协议。Socket 则是应用程序使用这些网络端点的编程接口。

Socket 可以理解为应用进程使用网络通信能力的端点。一个本地运输端点可用三元组表示:

$$(\text{运输层协议},\text{本地IP},\text{本地端口})$$

当它与远端建立通信关系后,还需要加入远端 IP 和远端端口,一个 TCP 或 UDP 流通常由五元组唯一标识:

$$ (\text{源IP},\text{源端口},\text{目的IP},\text{目的端口},\text{运输层协议}) $$

同一台客户端可以同时打开多个网页连接,因为每条连接的源端口或目的地址不同。服务器即使都监听 80 端口,也能根据完整五元组区分不同客户端连接。

3. UDP 与 TCP 的服务模型

找到通信进程以后,还要选择怎样传。不同应用的要求并不一样:DNS 查询重视开销小和响应快,文件传输则重视完整、按序和可靠。UDP 尽量减少控制,TCP 增加连接、确认和状态,它们对应的是不同取舍。

网络应用不是都需要同样的服务。文件传输重视完整和顺序,实时语音更在意低时延,偶尔丢失一个数据包可能比等待重传更容易接受。

3.1 UDP

先看控制更少的 UDP。它提供无连接、尽最大努力的报文交付,发送前不建立连接,也不维护序号、确认和重传状态。

优点:

  • 首部小,仅 8 B;
  • 处理简单;
  • 没有连接建立时延;
  • 保留应用报文边界;
  • 应用可以自行设计可靠性或实时策略。

限制:

  • 不保证到达;
  • 不保证顺序;
  • 不自动重传;
  • 不提供 TCP 式流量控制与拥塞控制。

DNS 查询、DHCP、RIP 以及部分实时应用常使用 UDP。

3.2 TCP

如果应用不能轻易容忍数据缺失,就需要功能更完整的 TCP。它提供面向连接、可靠、全双工的字节流服务,常用于网页、文件和邮件传输。

TCP 的可靠性并不是底层链路天然无错,而是由序号、确认、重传、校验和、滑动窗口等机制共同实现。

4. UDP 用户数据报与首部

UDP 追求简单,因此首部只保留源端口、目的端口、总长度和校验和,共 8 B。它不维护连接状态,也不负责重传和排序。网络一旦丢包或乱序,这些结果通常需要由应用自己处理。

UDP 首部固定 8 B,包含四个 16 bit 字段:

字段 含义
源端口 发送进程端口,可在特定情况下为 0
目的端口 接收进程端口
长度 UDP 首部与数据的总长度
校验和 检测首部和数据错误

UDP 长度字段包含 8 B 首部,但不包含计算校验和时使用的伪首部。

4.1 UDP 伪首部

UDP 校验和计算时临时加入源 IP、目的 IP、协议号和 UDP 长度等网络层信息。伪首部并不会真正发送在 UDP 首部中,它的作用是让接收端也能检测“报文是否送错主机或协议”等问题。

5. 可靠传输:确认、重传与滑动窗口

要在不可靠网络上实现可靠传输,必须分别处理丢失、重复、损坏和乱序。校验和用来发现损坏,序号用来识别顺序和重复,确认号表示接收进度,计时器在丢失后触发重传,窗口则让多个报文可以同时在途中传输。

5.1 停止等待

最简单的可靠传输方法是停止等待:发送方每发一个分组就停下来等确认,超时还没收到确认就重传。它容易理解,但链路利用率可能很低。

这种机制简单,但在长距离高速链路上效率低。发送方等待确认时链路可能长期空闲。

5.2 连续 ARQ 与滑动窗口

停止等待的问题是大部分时间都在等确认。为了提高利用率,发送方可以在收到确认前连续发送多个段,并用滑动窗口限制允许在途的数据范围:

  • 已发送并确认;
  • 已发送未确认;
  • 允许发送但尚未发送;
  • 暂时不允许发送。

窗口随着确认到达向前移动,因此称为滑动窗口。

5.3 Go-Back-N 与选择重传

  • Go-Back-N:某段丢失后,发送方可能从缺失段开始重传后续多个段;
  • 选择重传:只重传真正缺失的段,需要接收端缓存乱序数据并提供更精确反馈。

TCP 基础确认是累积确认,配合 SACK 选项可以告知发送方哪些不连续区间已经收到,这样就减少不必要重传。

5.4 超时重传与重复 ACK

如果发送方在重传计时器到期前未收到确认,会重传相关数据。超时时间必须参考 RTT 动态估计:过短会造成不必要重传,过长又会使丢包恢复缓慢。

如果接收端连续收到后续乱序段,会反复确认同一个缺失位置。发送方收到多个重复 ACK 后,可以在超时前推断某段丢失并执行快重传。

6. TCP 字节序号与累计确认

TCP 不把应用数据看成一条条独立消息,而是看成连续字节流。每个报文段的序号指出其中第一个字节的位置,确认号则表示下一个期望收到的字节。这样既能描述连续接收进度,也能指出中间哪里出现了缺口。

TCP 把应用数据视为连续字节流,每个字节都具有序号。一个 TCP 段的序号表示该段第一个数据字节的编号。

确认号采用累积确认,表示“该序号之前的字节已经按序收到,下一步期望这个序号”。

例如某段序号为 500,携带 300 B 数据,就数据序号范围为 500~799。若全部按序收到,确认号为 800。

6.1 累计确认与序号缺口

假设连续三段分别包含 300 B、400 B、500 B,第三段序号为 900。由此可得:

  • 第二段序号为 $900-400=500$;
  • 第一段序号为 $500-300=200$。

如果接收端只收到第一段和第三段,第二段 500~899 缺失。即使第三段已经到达,按累积确认仍只能发送确认号 500,表示下一步仍等待序号 500。

接收端可以暂存乱序的第三段,但不能把连续确认推进到 1400。

7. TCP 连接状态

TCP 要正确解释序号、确认号和窗口,通信双方必须先对连接状态达成一致。因此 TCP 会先建立连接。这里的“连接”只是两端维护的一组协议状态,并不是网络中预留了一条固定物理线路。

TCP 连接并不是物理线路,而是通信双方维护的一组状态,包括初始序号、接收窗口和连接状态。只有双方都确认这些状态有效,后续字节流才能被正确解释。

7.1 TCP 状态转换

三次握手和四次挥手的每一步,都会改变通信端对连接进展的认识。TCP 状态描述的正是本端当前处于哪个阶段。

状态 含义
CLOSED 没有连接
LISTEN 服务器等待 SYN
SYN-SENT 主动打开方已发送 SYN
SYN-RECEIVED 已发送 SYN+ACK,等待最后 ACK
ESTABLISHED 可以双向传输数据
FIN-WAIT-1 / FIN-WAIT-2 主动关闭方等待确认或对方 FIN
CLOSE-WAIT 已收到对方 FIN,本地应用尚未关闭
LAST-ACK 已发送 FIN,等待最后 ACK
TIME-WAIT 最后 ACK 已发送,等待旧报文消失

CLOSE-WAIT 长时间存在通常表示本地应用没有及时关闭;TIME-WAIT 是协议主动保留的安全状态。

8. TCP 三次握手与数据传输

建立 TCP 连接时,双方不仅要交换初始序号,还要确认两个方向的发送和接收都正常。前两个报文还不足以让服务器知道自己的 SYN 已被客户端收到。所以需要第三个 ACK。这个过程也能降低旧连接请求被误当成新连接的风险。

典型三次握手:

  1. 客户端发送 SYN=1, seq=x
  2. 服务器发送 SYN=1, ACK=1, seq=y, ack=x+1
  3. 客户端发送 ACK=1, seq=x+1, ack=y+1

SYN 本身占用一个序号,因此确认号为初始序号加 1。

三次握手完成了两件事:

  • 双方交换并确认初始序号;
  • 双方都证明自己的发送能力和接收能力正常。

若只有两次,服务器收到旧的、延迟到达的 SYN 后可能误认为客户端要建立新连接,并分配资源。客户端却并未真正发起本次连接。第三次 ACK 使服务器确认客户端确实收到了本次握手响应。

[!example] 三次握手中每次报文的含义 第一次:“希望建立连接,我的初始序号是 x。”

第二次:“已收到 x,我也同意建立连接,我的初始序号是 y。”

第三次:“已收到 y,双方初始序号均已确认。”

8.1 TCP 数据传输阶段

三次握手完成后,连接进入 ESTABLISHED 状态,双方就可以传输应用数据。此时 TCP 不再按“第几次握手”来理解报文,而是围绕序号、确认号和窗口持续推进字节流。

一般数据传输可以这样理解:

  1. 发送方把应用数据切成 TCP 段,每段用 seq 标出第一个数据字节的序号;
  2. 接收方收到连续数据后,用 ack 告诉对方“下一个期望收到的字节序号”;
  3. 若一个方向正在发送数据,也可以顺便在同一个 TCP 段里携带对另一个方向数据的确认;
  4. 若中间有字节缺失,接收方的累计确认号不会越过缺口。

例如,A 发送 seq=p, len=500 的数据,表示这段数据覆盖序号 pp+499。B 连续收到后返回 ack=p+500,意思是“前 500 个字节都收到了,下一步期待 p+500”。

TCP 是全双工的。握手之后,A 可以给 B 发数据,B 也可以同时给 A 发数据;每个方向都有自己的序号空间和确认进度。数据传输结束后,某一方没有数据要发了,才会进入后面的四次挥手过程。

9. TCP 四次挥手与 TIME-WAIT

TCP 是全双工的,两个方向可以独立发送,也可以独立结束。收到对方的 FIN,只表示对方不再发送数据,并不说明本端也已经发送完,所以连接通常需要分两次关闭。TIME-WAIT 则为最后 ACK 的重传和旧报文消失留出时间。

下面以 A 主动关闭、B 被动关闭为例。TCP 是全双工通信,两个方向可以独立关闭。某一方发送 FIN 只表示“本方已经没有数据要发送”,并不表示另一方也立即完成发送。

典型四次挥手:

  1. A 发送 FIN=1, seq=u,请求关闭 A→B 方向;
  2. B 发送 ACK=1, ack=u+1,确认 A 的 FIN,此时 A→B 方向关闭;
  3. B 处理完剩余数据后发送 FIN=1, seq=v,请求关闭 B→A 方向;
  4. A 发送 ACK=1, ack=v+1,确认 B 的 FIN。

FIN 和 SYN 一样会占用一个序号,所以确认 FIN 时,确认号要加 1。

四次挥手完成了两件事:

  • 先关闭主动关闭方到被动关闭方的数据方向;
  • 再关闭被动关闭方到主动关闭方的数据方向。

第二步 ACK 与第三步 FIN 有时可以合并。但只要 B 收到 A 的 FIN 后仍有数据要发送,ACK 和 FIN 就会分开发出,因此最典型的连接释放过程称为四次挥手。

[!example] 四次挥手中每次报文的含义 第一次:“我的数据已经发完,我要关闭 A→B 方向。”

第二次:“已收到你的关闭请求,A→B 方向可以关闭。”

第三次:“我的数据也已经发完,我要关闭 B→A 方向。”

第四次:“已收到你的关闭请求,B→A 方向也可以关闭。”

9.1 TIME-WAIT 状态

主动关闭方发送最后 ACK 后进入 TIME-WAIT,并等待通常为 2MSL 的时间。

主要原因:

  • 若最后 ACK 丢失,被动关闭方会重发 FIN,主动关闭方仍能再次发送 ACK;
  • 让旧连接中的延迟报文在网络中消失,避免干扰随后使用相同四元组建立的新连接。

10. TCP 流量控制与接收窗口

数据可以可靠到达,并不代表接收应用来得及处理。如果发送方过快,接收缓冲区仍会被占满。接收方因此通过接收窗口通告剩余空间,发送方再据此限制未确认数据量。

即使网络没有拥塞,接收方应用也可能读取缓慢,接收缓冲区逐渐占满。TCP 接收端通过首部中的窗口字段通告剩余缓冲能力,即接收窗口 rwnd

发送方未确认的数据量不能超过接收方通告窗口。这样可以避免发送速度长期超过接收方处理能力。

如果接收窗口变为 0,发送方暂时停止正常数据发送,但会使用坚持计时器周期性探测,防止窗口更新报文丢失后双方永久等待。

[!warning] 流量控制的对象 流量控制保护的是接收端。它回答“接收方还能接收多少”,并不直接反映整个网络是否拥塞。

10.1 TCP 传输效率与糊涂窗口综合征

流量控制若处理不当,会出现大量只携带少量数据的小报文,首部和确认开销远大于有效数据,这称为糊涂窗口综合征

发送方一侧的原因是应用频繁写入少量数据,TCP 立即逐段发送。Nagle 算法在存在未确认小段时暂存后续小数据,等确认到达或积累到足够大再发送。

接收方一侧的原因是应用每次只释放少量缓冲空间,接收端随即通告一个很小的新窗口。Clark 方案要求接收端等待可用空间达到合理阈值后再更新窗口。

Nagle 约束发送方的小块发送,Clark 避免接收方通告小窗口。二者解决传输效率问题,不属于拥塞控制。

11. TCP 拥塞控制与拥塞窗口

流量控制解决的是接收方来不及处理,拥塞控制解决的是网络中间承受不住。发送方看不到沿途所有路由器的队列,只能根据丢包、重复 ACK 和 RTT 变化推测是否拥塞,再调整拥塞窗口。

网络中许多发送方可能同时提高速率,导致路由器队列增长、丢包增加。如果发送方把所有丢包都简单解释为“需要更快重传”,网络负载会进一步上升。

TCP 使用拥塞窗口 cwnd 限制在途数据量。实际发送窗口不能超过接收方能力,也不能超过网络承受能力:

$$ \text{发送窗口}=\min(rwnd,cwnd) $$

样卷中若 rwnd=3300cwnd=3500,发送窗口为 3300。

11.1 慢启动

发送方刚开始时并不知道网络能承受多大流量,所以不能直接使用很大的窗口。慢启动从较小的 cwnd 开始,并随着确认快速增长,通常表现为每个 RTT 近似翻倍。

名称中的“慢”是相对于一开始直接高速发送而言;其增长本身是指数式的。

11.2 拥塞避免

cwnd 增长到慢启动门限 ssthresh 后,再继续指数增长就过于激进。此时进入拥塞避免,改为较慢的线性增长,典型效果是每个 RTT 增加约一个 MSS。

11.3 超时后的处理

超时通常说明拥塞较严重。传统 TCP 会把 ssthresh 设置为拥塞前窗口的一部分,并把 cwnd 降到较小值,重新进入慢启动。

11.4 快重传与快恢复

多个重复 ACK 表明后续分组仍在到达,网络并未完全停止工作。因此发送方立即重传缺失段,但不必像超时那样把窗口降到最小。随后进入快恢复,以较保守方式继续发送。

[!warning] 流量控制与拥塞控制

  • rwnd 来自接收端,反映接收缓冲能力;
  • cwnd 由发送端根据网络反馈维护,反映网络承载能力;
  • 实际发送量受二者中较小值限制。

11.5 网络侧主动队列管理 AQM

仅在路由器缓存完全溢出后丢包,会让多个 TCP 连接同时超时并同步降低窗口,随后又同时增长。主动队列管理在队列尚未满时,根据队列长度或时延提前丢弃或标记部分分组,使发送端更早感知拥塞。

RED 是经典 AQM 思想:平均队列超过较低阈值后,以逐渐增大的概率随机丢包。超过较高阈值后更强烈地限制流量。若支持 ECN,路由器还可以标记拥塞而不直接丢弃。

AQM 工作在路由器队列侧,TCP 的 cwnd 调整工作在发送端。两者相互配合,但不是同一个机制。

12. TCP 计时器

TCP 中很多状态都不能无限等待,所以需要不同计时器处理不同问题。重传计时器应对报文丢失,持续计时器避免零窗口死锁,保活计时器检查长期失联,TIME-WAIT 计时器则保证连接释放过程足够安全。

  • 重传计时器:确认迟迟不到时触发重传;
  • 坚持计时器:接收窗口为 0 时周期性探测窗口是否恢复;
  • 保活计时器:检测长时间无数据连接的对端是否仍然存在;
  • 时间等待计时器:支持 TIME-WAIT 状态,处理最后 ACK 丢失和旧报文残留。

每个计时器针对不同问题,不能把所有计时器都理解成“丢包重传”。

13. TCP 报文段首部

前面讲到的端口、序号、确认、窗口和控制状态,最后都要写进 TCP 首部。这个首部把端点标识、可靠传输状态和连接控制集中在一起,并通过可变长度选项扩展能力。

TCP 基本首部最少 20 B。

字段 作用
源端口、目的端口 定位通信进程
序号 本段第一个数据字节的序号
确认号 期望收到的下一个字节序号
数据偏移 TCP 首部长度,单位为 4 B
标志位 表示连接和数据控制状态
窗口 接收方当前愿意接收的数据量
校验和 检测 TCP 首部与数据错误
紧急指针 配合 URG 指示紧急数据
选项 MSS、窗口扩大、时间戳、SACK 等

13.1 常见标志位

  • SYN:同步初始序号,用于建立连接;
  • ACK:确认号字段有效;
  • FIN:发送方不再发送数据,请求释放该方向连接;
  • RST:异常复位连接;
  • PSH:希望接收端尽快把数据交给应用;
  • URG:紧急指针有效。

13.2 TCP 数据偏移与选项长度

数据偏移字段的单位为 4 B。

  • 值为 5:首部长度 $5\times4=20$ B,没有选项;
  • 值为 8:首部长度 32 B,选项与填充共 12 B。

14. TCP 十六进制首部解析

抓包和考试题经常直接给出一串十六进制字节。不要把它当成一个大数一次转换,而要先按照 TCP 字段边界切开,再分别读取端口、序号、确认号、数据偏移和标志位。

TCP 首部前 4 B 依次是源端口和目的端口,每个端口占 2 B。再往后 4 B 是序号,接着 4 B 是确认号。

例如:

09740017 B701E3BB B265F81A 5018FFAF 2D6F0000

前 2 B 0974 是源端口:

$$0x0974=2420$$

后 2 B 0017 是目的端口:

$$0x0017=23$$

23 是 Telnet 服务器端口。源端口 2420 是临时端口,因此这个报文通常由客户端发往 Telnet 服务器。

5018 的最高十六进制位为 5,表示 TCP 首部长度为 20 B,因此没有选项字段。

[!warning] 十六进制首部中的字节顺序 报文通常按网络字节序显示,即高位字节在前。00 50 才是十进制 80,不能倒置成 50 00

15. 应用需求与运输协议选择

选择 TCP 还是 UDP,关键要看应用能否容忍丢失、延迟、乱序和连接开销。实时性强不一定就必须使用 UDP,要求可靠也不代表只靠 TCP 就足够。最终仍要结合具体业务判断。

需求 更常见选择 原因
文件完整、顺序正确 TCP 可靠字节流与重传
普通网页传输 TCP 需要完整请求和响应
简短 DNS 查询 UDP 开销低、请求响应简单
实时音视频 UDP 或基于 UDP 的协议 更重视时延,可容忍少量丢失
DHCP 地址配置 UDP 客户端初始时可能没有可用 IP
路由信息通告 RIP UDP 周期性短报文,协议自行处理更新

选择运输层协议取决于应用语义,不是 TCP 在所有场景中都更“高级”。

章节练习与解析

材料原题

原题 1|样卷·填空题

在 TCP 滑动窗口中,若 rwnd = 3300cwnd = 3500,则发送端主机的窗口值是________。

[!example]- 解析 **答案:3300 B。**TCP 实际可用发送窗口上限为 $\min(rwnd,cwnd)$。

原题 2|样卷·单项选择题

TCP 协议进行拥塞控制的方法是__________。

  • A. 滑动窗口
  • B. 基于拥塞窗口的慢启动算法
  • C. 三次握手
  • D. 确认号

[!example]- 解析 **答案:B。**慢启动通过拥塞窗口控制进入网络的数据量;滑动窗口本身还承担可靠传输和流量控制等作用。

原题 3|样卷·单项选择题

在二进制同步通信协议中,ACK 表示_________。

  • A. 拆除建立链路
  • B. 正确接收发送方报文的确认
  • C. 请求远程站的响应
  • D. 未正确接收发送方报文的响应

[!example]- 解析 **答案:B。**ACK 表示确认。在 TCP 中,ACK 标志置 1 表示确认号字段有效。

原题 4|样卷·单项选择题

主机甲与主机乙之间已建立一个 TCP 连接。主机甲向主机乙发送了 3 个连续的 TCP 段,分别包含 300 B、400 B 和 500 B 的有效载荷,第 3 个段的序号为 900。若主机乙仅正确接收到第 1 和第 3 个段,则主机乙发送给主机甲的确认序号是________。

  • A. 300
  • B. 500
  • C. 1200
  • D. 1400

[!example]- 解析 **答案:B。**第 3 段序号为 900,第二段长度 400 B,因此第二段序号为 500;第一段序号为 200。接收端收到第一段后仍缺少从 500 开始的第二段,即使第三段已经到达,累计确认号仍为 500。

原题 5|样卷·单项选择题

下列关于 UDP 的描述中,错误的是_______。

  • A. UDP 报头主要包括端口号、长度、检验和等字段
  • B. UDP 长度字段是 UDP 数据报的长度,包括伪首部的长度
  • C. UDP 检验和对伪首部、UDP 报文头及应用层数据进行检验
  • D. 伪首部包括 IP 分组报头的一部分

[!example]- 解析 **答案:B。**UDP 长度字段只计算 UDP 首部和 UDP 数据,不包括伪首部;伪首部只参与校验和计算。

原题 6|样卷·单项选择题

TCP 的拥塞控制算法中,当拥塞窗口 cwnd 达到______时,进入线性增长区域。

  • A. 接收窗口 rwnd
  • B. 拥塞阈值 ssthresh
  • C. 发送窗口 wnd
  • D. 拥塞阈值 ssthresh 的一半

[!example]- 解析 答案:B。cwnd < ssthresh 时采用慢启动;达到或超过阈值后进入拥塞避免,近似线性增长。

原题 7|样卷·单项选择题

负责提供可靠的端到端数据传输的层次是________。

  • A. 传输层
  • B. 网络层
  • C. 应用层
  • D. 数据链路层

[!example]- 解析 **答案:A。**数据链路层只负责相邻结点之间的帧传输;TCP 在运输层提供端到端可靠传输。

原题 8|作业 4·第 1 题

假设一个访问常用协议的 TCP 头部用十六进制数表示为:

09740017 B701E3BB B265F81A 5018FFAF 2D6F0000

请回答:

  1. 源端口号和目的端口号分别是多少(用十进制数字给出)?
  2. 该报文是客户端还是服务器端发出?访问哪种服务器?
  3. 该 TCP 报头有没有包含选项字段?为什么?

[!example]- 解析 源端口 0x0974=2420,目的端口 0x0017=23。目的端口 23 对应 Telnet,因此这是客户端发往 Telnet 服务器的报文。数据偏移字段为 5,首部长度为 $5\times4=20$ B,等于 TCP 基本首部长度,所以没有选项字段。

原题 9|作业 4·第 3 题

主机 A 主动打开,主机 B 被动打开,传输过程如下:

  1. A → B:SYN, SEQ=x
  2. B → A:SYN, ACK, SEQ=y, ACK=x+1
  3. A → B:ACK, SEQ=x+1, ACK=y+1

请回答:

  1. 该过程发生在五层参考模型的哪一层?使用什么协议?
  2. 主机 A 和主机 B 是建立连接还是释放连接?解释三次报文的含义。

[!example]- 解析 发生在运输层,使用 TCP。这是三次握手:第一报文由 A 请求建立连接并给出初始序号 $x$;第二报文由 B 确认 A 的 SYN,同时给出自己的初始序号 $y$;第三报文由 A 确认 B 的 SYN。完成后双方都确认对方的收发能力和初始序号。

原题 10|作业 5·第 1 题相关字段

编号 375 的 TCP 数据包中 win=64240 表示什么?在传输层流量控制中有何作用?源主机和 Web 站点间连接的源端口和目的端口分别是多少?

[!example]- 解析 win=64240 是该报文发送方通告的接收窗口,表示接收端当前还能接收的字节范围,用于限制对方发送速率,防止接收缓冲区溢出。抓包中源端口为 1984,目的端口为 80。

原题 11|样卷·问答与计算题

访问某网络服务的 TCP 头部为:

E0 B6 00 6E 14 8D 52 2A 8E AD DA 14 80 10 01 01 01 02 AC FB

访问的是哪种服务器?目的端口号是多少?该 TCP 首部长度是多少?

[!example]- 解析 目的端口 0x006E=110,对应 POP3。数据偏移字段是首部第 13 字节高 4 位,即 8,首部长度为 $8\times4=32$ B,说明含 12 B 选项与填充。

补充题

题 12|端口号与进程定位

关于端口号与进程定位,下列说法正确的是________。

  • A. IP 地址只能定位主机,端口号用于定位主机中的具体进程
  • B. 目标 IP 地址可以唯一确定主机中的所有应用程序
  • C. 熟知端口通常由客户端随机临时选择
  • D. 临时端口只分配给固定服务器协议

[!example]- 解析 **答案:A。**IP 只能定位主机,主机中可能同时运行多个网络应用,端口号用于定位具体进程。熟知端口通常分配给通用服务器协议,注册端口供特定应用登记使用,临时端口通常由客户端操作系统动态选择。

题 13|Socket 与五元组

一个 TCP 连接通常由哪五个元素唯一标识?

  • A. 源 IP、源端口、目的 IP、目的端口、运输层协议
  • B. 源 MAC、目的 MAC、TTL、FCS、前导码
  • C. 域名、URL、Cookie、状态码、网页标题
  • D. 源 IP、目的 IP、DNS 服务器、默认网关、子网掩码

[!example]- 解析 **答案:A。**五元组是源 IP、源端口、目的 IP、目的端口和运输层协议。同一服务器端口虽然相同,但不同客户端具有不同源 IP 或源端口,因此五元组不同,可以建立大量并发连接。

题 14|UDP 与 TCP 的选择

实时语音、文件下载、DNS 普通查询和远程终端分别更常适合________。

  • A. UDP、TCP、UDP、TCP
  • B. TCP、UDP、TCP、UDP
  • C. UDP、UDP、TCP、TCP
  • D. TCP、TCP、UDP、UDP

[!example]- 解析 **答案:A。**实时语音常偏向 UDP,以降低等待重传造成的时延。文件下载需要完整可靠,适合 TCP。普通 DNS 查询报文短,常用 UDP。远程终端要求按序可靠,通常使用 TCP。

题 15|UDP 首部

UDP 长度为 48 B 时,应用数据长度是多少?UDP 首部字段说法正确的是________。

  • A. 应用数据 40 B;UDP 首部包含源端口、目的端口、长度、校验和
  • B. 应用数据 48 B;UDP 首部没有任何字段
  • C. 应用数据 28 B;UDP 首部固定 20 B
  • D. 应用数据 0 B;UDP 长度只表示首部长度

[!example]- 解析 **答案:A。**字段为源端口、目的端口、长度、校验和,各 2 B,共 8 B。应用数据长度为 $48-8=40$ B。

题 16|UDP 伪首部

关于 UDP 伪首部,下列说法正确的是________。

  • A. 伪首部参与校验和计算,但不作为 UDP 报文的一部分发送
  • B. 伪首部会替代 IP 首部在网络中传输
  • C. 伪首部只包含 MAC 地址
  • D. UDP 校验和完全不涉及 IP 层信息

[!example]- 解析 **答案:A。**伪首部使校验和不仅检测 UDP 报文内容,还能发现报文被错误交付到错误 IP 或错误协议的情况。伪首部不作为 UDP 报文的一部分发送,只在发送端和接收端计算校验和时临时构造。

题 17|停止等待与连续 ARQ

停止等待协议的主要效率问题是________。

  • A. 每发送一个分组就等待确认,在 RTT 长或带宽大时链路可能大量空闲
  • B. 它允许无限多个分组同时在途,因此无法可靠传输
  • C. 它完全不需要确认
  • D. 它只适用于域名解析

[!example]- 解析 **答案:A。**停止等待每发送一个分组就等待确认,在带宽大或 RTT 长的链路上,大量时间处于空闲。连续 ARQ 允许发送方在未收到前一分组确认时继续发送多个分组,使多个分组同时在途。

题 18|Go-Back-N 与选择重传

发送窗口中第 4 个分组丢失,后续第 5、6、7 个分组到达。下列说法正确的是________。

  • A. Go-Back-N 可能从第 4 个开始重传 4、5、6、7;选择重传可只重传第 4 个
  • B. Go-Back-N 只重传第 7 个;选择重传必须全部重传
  • C. 两者都不需要接收端确认
  • D. 选择重传不能缓存后续正确分组

[!example]- 解析 **答案:A。**Go-Back-N 接收端通常只接受按序分组,发送端超时后从第 4 个开始重传 4、5、6、7。选择重传可缓存后续正确分组,只重传第 4 个。

题 19|TCP 字节序号

某 TCP 段序号为 5000,携带 1200 B 数据。接收端按序收到后应返回什么确认号?如果这个段丢失而后续序号 6200 的段先到,累计确认号通常是多少?

  • A. 6200;5000
  • B. 5000;6200
  • C. 1200;6200
  • D. 6200;7400

[!example]- 解析 **答案:A。**按序收到后确认号为 6200。若 5000~6199 的字节缺失,后续段即使先到,累计确认号仍为 5000,表示仍期望从 5000 开始的数据。

题 20|三次握手的必要性

TCP 建立连接通常不能只用两次报文,主要因为________。

  • A. 第三次 ACK 让双方确认双向收发能力,并减少旧 SYN 造成错误连接的风险
  • B. 两次报文无法携带任何端口号
  • C. TCP 建立连接必须至少传输应用层正文
  • D. 第三次报文用于 DNS 缓存

[!example]- 解析 **答案:A。**两次报文只能让客户端知道服务器收到了 SYN,服务器还无法确认客户端是否收到了自己的 SYN 和初始序号。第三次 ACK 使双方都确认本次连接的双向收发能力,并有助于避免延迟的旧 SYN 造成错误半开连接。

题 21|四次挥手与半关闭

TCP 释放连接通常需要四次报文,主要因为________。

  • A. TCP 是全双工的,两个方向需要分别关闭
  • B. TCP 释放连接必须先完成 DNS 查询
  • C. FIN 只能由服务器发送
  • D. ACK 与 FIN 永远不能出现在同一个报文中

[!example]- 解析 **答案:A。**TCP 是全双工的,两个方向需要分别关闭。收到对方 FIN 后,接收方可以先确认。不过自己的发送方向可能仍有数据未发完。所以 ACK 与本方 FIN 往往不能合并,形成 FIN、ACK、FIN、ACK 四步。

题 22|TIME-WAIT

主动关闭方在发送最后一个 ACK 后保持 TIME-WAIT,主要为了________。

  • A. 便于重发最后 ACK,并让旧连接中的延迟报文在网络中消失
  • B. 继续发送新的应用数据
  • C. 阻止对方发送 FIN
  • D. 代替拥塞控制算法

[!example]- 解析 **答案:A。**一是为了在最后 ACK 丢失时可以再次响应对方重传的 FIN。二是让旧连接中的延迟报文在网络中消失,避免与随后使用相同四元组的新连接混淆。

题 23|零窗口与坚持计时器

接收端通告零窗口后,若后续非零窗口通知丢失,TCP 主要依靠________避免双方永久等待。

  • A. 坚持计时器和窗口探测报文
  • B. TIME-WAIT 计时器
  • C. DNS 缓存刷新
  • D. 路由器重定向

[!example]- 解析 **答案:A。**双方可能永久等待:发送端等待窗口更新,接收端等待新数据。发送端使用坚持计时器,周期性发送窗口探测报文,迫使接收端重新通告当前窗口。

题 24|慢启动与拥塞避免

初始 cwnd=1 MSSssthresh=8 MSS,每个 RTT 中所有报文均被确认。若把初始值视为发送前,前 5 个 RTT 结束时 cwnd 的典型变化为________。

  • A. 2、4、8、9、10 MSS
  • B. 1、2、3、4、5 MSS
  • C. 8、4、2、1、1 MSS
  • D. 2、4、8、16、32 MSS

[!example]- 解析 **答案:A。**慢启动阶段近似每 RTT 翻倍:1 → 2 → 4 → 8。达到阈值后进入拥塞避免,近似每 RTT 增加 1 MSS,因此后续为 9、10。

题 25|超时与三个重复 ACK

TCP 通过超时检测到丢包和通过三个重复 ACK 检测到丢包时,下列说法正确的是________。

  • A. 超时通常被视为较严重拥塞;三个重复 ACK 表明网络仍有一定传输能力
  • B. 三个重复 ACK 一定比超时更严重
  • C. 二者都会让发送方完全停止工作
  • D. 二者只影响 UDP,不影响 TCP

[!example]- 解析 **答案:A。**超时通常被视为较严重拥塞,发送方大幅减小 cwnd 并重新慢启动。三个重复 ACK 表明后续分组仍能到达,网络仍有一定传输能力,因此触发快重传。

题 26|TCP 四类计时器

关于 TCP 计时器,下列说法正确的是________。

  • A. 重传计时器处理报文或确认丢失,坚持计时器避免零窗口死锁
  • B. 保活计时器用于计算 CRC,TIME-WAIT 计时器用于 DNS 查询
  • C. 重传计时器只用于 UDP
  • D. TIME-WAIT 计时器用于主动建立连接

[!example]- 解析 **答案:A。**重传计时器处理报文或确认丢失。坚持计时器避免零窗口死锁。保活计时器检测长期空闲连接的对端是否仍存活。TIME-WAIT 计时器保证最后确认可重传并让旧报文消失。

题 27|TCP 标志位

关于 TCP 标志位,下列说法正确的是________。

  • A. SYN 用于建立连接,FIN表示发送方不再发送数据,RST 用于异常复位
  • B. ACK 表示请求域名解析
  • C. PSH 表示路由器需要分片
  • D. URG 表示以太网广播地址

[!example]- 解析 **答案:A。**SYN 用于同步初始序号和建立连接。ACK 表示确认号有效。FIN 表示发送方不再发送数据。RST 用于异常复位连接。PSH 请求尽快把数据交给应用。URG 表示紧急指针有效。

题 28|数据偏移

TCP 数据偏移字段为 9,首部长度和选项加填充长度分别是________。

  • A. 36 B,16 B
  • B. 9 B,0 B
  • C. 20 B,9 B
  • D. 32 B,12 B

[!example]- 解析 **答案:A。**首部长度为 $9\times4=36$ B;基本首部为 20 B,因此选项与填充共 16 B。

题 29|TCP 状态

关于 TCP 状态,下列说法正确的是________。

  • A. SYN-SENT 表示主动方已发送 SYN,CLOSE-WAIT 表示收到对方 FIN 但本地应用尚未关闭
  • B. SYN-RECEIVED 表示连接已经完全释放
  • C. TIME-WAIT 表示被动关闭方正在等待第一次 SYN
  • D. CLOSE-WAIT 表示拥塞窗口达到阈值

[!example]- 解析 **答案:A。**SYN-SENT 表示主动方已发送 SYN。SYN-RECEIVED 表示已发 SYN+ACK 等待最后 ACK。CLOSE-WAIT 表示收到对方 FIN 但本地应用尚未关闭。TIME-WAIT 表示主动关闭方等待旧报文消失并准备重发最后 ACK。

题 30|糊涂窗口综合征

关于糊涂窗口综合征,下列说法正确的是________。

  • A. Nagle 主要解决发送方频繁发送小报文,Clark 方案主要避免接收方通告过小窗口
  • B. Nagle 主要用于 DNS 缓存,Clark 方案用于路由选择
  • C. 糊涂窗口综合征只发生在 IP 分片中
  • D. 接收方每释放 1 字节空间都应立即通告新窗口

[!example]- 解析 **答案:A。**发送应用频繁写少量数据会造成发送方小报文,Nagle 负责合并。接收应用每次只释放少量空间会导致小窗口更新,Clark 方案避免通告过小窗口。

题 31|AQM

主动队列管理 AQM 与 TCP 拥塞窗口控制的区别,正确的是________。

  • A. AQM 在路由器队列侧提前丢弃或标记分组,TCP 在发送端调整 cwnd
  • B. AQM 是应用层邮件协议
  • C. TCP 拥塞窗口由 DNS 服务器维护
  • D. AQM 只负责加密 HTTP 内容

[!example]- 解析 **答案:A。**AQM 在路由器队列侧提前丢弃或标记分组,使拥塞信号更早出现;TCP 在发送端根据这些反馈调整 cwnd


第六章 应用层:DNS、Web、邮件与网络配置

运输层把数据交给正确的进程后,仍然不知道这些字节代表域名查询、网页请求还是邮件。要让通信双方对同一串字节作出相同解释,还需要应用层协议规定报文格式、字段含义和交互顺序。

[!note] 概念关系 DNS 将名称转换为地址 → URL 指明资源与访问方式 → HTTP 请求和返回资源 → FTP、SMTP 等协议服务于不同应用 → DHCP 为主机提供基础网络配置

1. 应用进程与应用层协议

先区分应用程序和应用层协议。浏览器、邮件客户端和服务器程序负责完整业务逻辑。HTTP、SMTP 等协议只规定通信时怎样组织报文、各字段表示什么,以及双方按什么顺序交互。

应用层协议不是完整的应用程序。浏览器包含界面、缓存、脚本引擎和页面渲染等功能,而 HTTP 只规定浏览器与 Web 服务器怎样交换请求和响应。邮件客户端也不仅包含 SMTP、POP3 或 IMAP,还包括本地存储、联系人和界面功能。

应用层协议通常采用两类组织模式:

  • C/S:服务器在固定端口长期等待,客户端主动请求;
  • P2P:结点既作为客户又作为服务提供者。

2. DNS 域名系统

人更容易记住域名,网络设备却要根据 IP 地址转发。DNS 要解决的,就是把人使用的名称转换为网络可以使用的地址,并维护其他相关资源记录。它采用分布式结构。所以域名可以在主机地址变化后继续保持不变。

域名具有层次和语义,便于人类记忆,例如 www.example.com。路由器需要的是结构固定的 IP 地址。因此 DNS 负责建立域名与 IP 地址等资源记录之间的对应关系。

DNS 不是一台集中式服务器,而是分布式、层次化数据库。如果全球所有域名都由单台服务器管理,会出现容量、性能、可靠性和管理权限问题。

2.1 域名层次

DNS 采用层次化名称,目的是把全球域名管理拆开。一个域名从右向左逐级变得更具体:

  • 根:最顶层,书写时通常省略末尾点;
  • 顶级域:如 .com.cn
  • 二级域:如 example.com
  • 主机名或更低级子域:如 www.example.com

2.2 DNS 服务器层次

  • 根域名服务器:指出相应顶级域服务器;
  • 顶级域名服务器:指出相应权限域名服务器;
  • 权限域名服务器:保存某个域的权威记录;
  • 本地域名服务器:直接接受用户主机查询,并负责缓存和继续查询。

2.3 递归查询与迭代查询

DNS 查询有两种基本方式,区别在于“谁继续往下问”。递归查询要求被询问的服务器给出最终答案。如果它自己不知道,就代替查询者继续询问其他服务器。

迭代查询允许服务器返回“我不知道最终答案,但下一步可以询问谁”。查询者再向被推荐的服务器继续询问。

主机通常向本地 DNS 服务器发送递归查询;本地 DNS 服务器向根、顶级域和权限服务器查询时常使用迭代方式。

2.4 DNS 缓存与解析效率

域名解析若每次都从根服务器开始,会产生较大时延和查询负担。DNS 记录具有生存时间 TTL,本地服务器和主机可以在 TTL 内缓存结果。

缓存提高效率,但也意味着记录修改后不会立即在全球生效。旧记录会在各缓存过期后逐步消失。

2.5 DNS 复制与权威服务冗余

一个域通常可以部署多台权威服务器,它们保存同一域的区域数据副本。主服务器维护原始区域数据,从服务器通过区域传送获得副本。

复制解决服务器故障和访问负载问题,缓存解决重复查询的时延与上游负担问题。复制保存权威数据副本;缓存保存此前查询得到、带有效期的结果。

2.6 DNS 使用 UDP 还是 TCP

普通查询通常使用 UDP 53 端口,因为查询和应答较短,不需要建立连接。某些较大响应、区域传送或需要可靠传输的情况会使用 TCP 53。

2.7 DNS 劫持与错误解析

浏览器在建立 Web 连接前依赖 DNS 结果。如果攻击者篡改域名服务器记录、控制解析链路或伪造响应,用户可能获得错误 IP,并连接到攻击者服务器。

此时网络连接本身可能完全正常,问题发生在“域名指向谁”这一环节。能通过 IP 地址访问而不能通过域名访问,通常说明 DNS 配置或解析存在问题。

常用命令:

nslookup www.example.com

它可查看所使用的 DNS 服务器和解析结果。

3. URL、Web 资源与 HTTP

DNS 只能告诉浏览器服务器在哪里,还没有说明要访问服务器上的哪一项资源。URL 继续给出协议、主机、端口和资源路径。HTTP 则规定客户端怎样提出请求、服务器怎样返回结果。大量超文本资源通过链接组织起来,就形成了 WWW。

WWW 是由网页、链接、浏览器和 Web 服务器构成的信息系统。URL 用于唯一描述资源位置,常见结构为:

scheme://host:port/path?query

例如:

https://www.example.com:443/docs/index.html?id=3

其中:

  • https 是方案或协议;
  • www.example.com 是主机名;
  • 443 是端口,可省略默认值;
  • /docs/index.html 是资源路径;
  • id=3 是查询参数。

4. HTTP 请求与响应报文

浏览器知道资源位置后,需要用明确格式告诉服务器自己要什么。HTTP 采用请求—响应结构:客户端说明资源和操作,服务器返回状态、首部和内容。这样每次交互都有清楚边界,也方便代理、缓存和错误处理。

客户端先说明所需资源和操作,服务器再返回状态与内容。这种结构使一台服务器可以处理大量独立请求,也使请求和响应具有明确边界。

4.1 HTTP 请求报文

HTTP 请求要让服务器知道“做什么、访问哪个资源,以及还附带哪些条件”。一个请求通常包含:

  1. 请求行;
  2. 若干首部字段;
  3. 空行;
  4. 可选消息体。

示例:

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Browser
Connection: keep-alive

  • GET 表示获取资源;
  • 路径指出请求对象;
  • Host 区分同一 IP 上的不同网站;
  • 首部与消息体之间用空行分隔。

常见方法:

  • GET:获取资源;
  • POST:提交数据;
  • HEAD:只获取响应首部;
  • PUT:上传或替换资源;
  • DELETE:删除资源。

4.2 HTTP 响应报文

服务器处理请求后,需要告诉客户端结果是否成功、内容怎样解释。HTTP 响应包含状态行、首部、空行和可选消息体:

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1250

<html>...</html>

常见状态码类别:

  • 1xx:信息性;
  • 2xx:成功,如 200;
  • 3xx:重定向,如 301、302;
  • 4xx:客户端错误,如 404;
  • 5xx:服务器错误,如 500。

4.3 HTTP 无状态特性

每个请求原则上可以独立解释,服务器不必天然记住前一次请求属于谁。这简化了服务器设计,但登录、购物车等功能需要跨请求保存状态,因此出现 Cookie、Session 和令牌等机制。

4.4 HTTP 持久连接

若每获取一个图片或脚本都重新建立 TCP 连接,会产生大量握手开销。HTTP/1.1 默认支持持久连接,使多个请求可以复用同一 TCP 连接。

4.5 HTTP 版本与传输方式

  • HTTP/1.0 常为不同对象分别建立连接;
  • HTTP/1.1 默认支持持久连接;
  • HTTP/2 在一个 TCP 连接中把报文拆成帧并多路复用;
  • HTTP/3 运行在基于 UDP 的 QUIC 之上。

HTML 描述网页结构,HTTP 负责传输 HTML、图片和脚本等资源,URL 标识资源位置。浏览器开发者工具可以显示请求方法、状态码、首部、时序和传输大小。

5. 网页访问的完整协议链

看到一个网页,并不是只收到了一个 HTTP 报文。浏览器通常要依次完成 DNS 解析、ARP、TCP 握手、HTTP 请求、资源下载和页面渲染。HTML 中引用的图片、脚本和样式,还会继续触发更多请求。

一次典型访问可按因果关系理解:

  1. 浏览器解析 URL,确定协议、域名、端口和路径;
  2. 检查浏览器、操作系统或本地 DNS 缓存;
  3. 若无结果,向 DNS 服务器查询域名对应 IP;
  4. 操作系统根据目的 IP 判断同网段还是跨网段,并查询路由表;
  5. 通过 ARP 获得目标主机或默认网关 MAC;
  6. 若使用 TCP,客户端与服务器进行三次握手;
  7. 浏览器发送 HTTP 请求;
  8. 服务器处理请求并返回 HTTP 响应;
  9. 浏览器解析 HTML,并继续请求其中引用的 CSS、JavaScript、图片等资源;
  10. 页面经过布局、绘制和脚本执行后显示。

每次数据发送都经历封装:HTTP 报文 → TCP 段 → IP 数据报 → 以太网帧 → 物理信号。路由器在中途主要处理链路层和网络层,不需要理解 HTTP 页面内容。

[!warning] DNS、ARP 和路由的先后关系 DNS 解决“服务器 IP 是什么”。路由表解决“这个 IP 应从哪个接口或下一跳发送”。ARP 解决“当前下一跳的 MAC 是什么”。三者解决不同阶段的问题。

6. FTP 控制连接与数据连接

HTTP 通常在一条连接中传输请求和内容,FTP 则把控制命令与文件数据分开。控制连接负责登录和命令,数据连接负责目录或文件内容。这样两类信息不会混在同一条字节流中。

FTP 使用 TCP,并把控制命令与文件数据分开:

  • 控制连接通常使用服务器 21 端口,传输登录、目录和传输命令;
  • 数据连接用于传输文件或目录列表,传统主动模式常涉及服务器 20 端口。

控制连接可在整个会话中保持,而数据连接可以按一次传输建立和释放。这样命令不会与大块文件数据混在同一字节流中。

FTP 数据连接有两种常见建立方式:

  • 主动模式:客户端告诉服务器数据端口,服务器通常从 TCP 20 端口主动连接客户端;
  • 被动模式:服务器开放临时端口,由客户端主动建立数据连接。

主动模式可能受到客户端防火墙或 NAT 对入站连接的限制,因此现代网络中被动模式更常见。无论哪种方式,控制连接和数据连接仍是两条独立 TCP 连接。

7. SMTP、POP3 与 IMAP 邮件体系

电子邮件从写好到被对方读到,要经过发送、服务器间转发和用户读取几个阶段。SMTP 负责提交和转发邮件,POP3 与 IMAP 负责用户接收或管理邮箱。把这几个阶段分开,才能正确判断每种协议的作用。

电子邮件通常包含用户代理、邮件服务器和相关协议。

7.1 SMTP

SMTP 用于发送邮件,包括客户端向邮件服务器提交邮件,以及邮件服务器之间传递邮件。样卷中“电子邮件服务器之间相互传递邮件”应答 SMTP。

7.2 POP3 与 IMAP

邮件到达服务器后,用户还需要把它读出来或在服务器上管理。POP3 和 IMAP 都用于这个阶段,但工作方式不同:

  • POP3 更偏向把邮件下载到本地;
  • IMAP 让邮件主要保留在服务器,并支持文件夹和多设备同步。

Web 邮箱的浏览器前端使用 HTTP/HTTPS 与网站通信,网站后端仍可能使用邮件协议处理投递和存储。

浏览器与 Web 邮箱网站之间使用 HTTP/HTTPS。邮件服务器把邮件投递到另一邮件服务器时仍使用 SMTP。界面采用 Web 技术不会把服务器间邮件协议改成 HTTP。

8. DHCP 动态主机配置

一台新主机刚接入网络时,往往还没有可用 IP,也不知道子网掩码、默认网关和 DNS 服务器。DHCP 就是在这种“还没有网络配置”的情况下工作,通过发现、提供、请求和确认四个步骤自动分配参数。

一台新主机接入网络时,可能不知道自己的 IP、子网掩码、默认网关和 DNS 服务器。DHCP 自动分配这些参数。

经典过程可概括为 DORA:

  1. Discover:客户端广播寻找 DHCP 服务器;
  2. Offer:服务器提供可用地址和参数;
  3. Request:客户端请求使用某个方案;
  4. Acknowledge:服务器确认租约。

DHCP 使用 UDP:

  • 服务器端口 67;
  • 客户端端口 68。

客户端最初可能没有 IP,也不知道服务器地址,因此早期报文需要广播。

9. 远程登录与网络管理协议

远程使用设备也有不同需求。Telnet 和 SSH 都提供远程终端,但安全性不同。SNMP 主要用来读取状态、修改配置和接收告警。三者都与远程管理有关,却解决的是不同问题。

9.1 Telnet

Telnet 提供远程终端服务,默认 TCP 23 端口。其内容通常明文传输,不适合需要安全保护的现代远程管理。

Telnet 通过**网络虚拟终端(NVT)**定义统一字符和控制表示。客户端把本地终端格式转换为 NVT,服务器再转换为远端系统格式,这样就屏蔽终端差异。NVT 解决兼容性问题。不过不提供加密。

9.2 SSH

SSH 默认 TCP 22 端口,提供加密的远程登录、命令执行和文件传输能力。

9.3 SNMP

SNMP 用于网络设备监控与管理。管理站可以读取或修改设备中的管理信息,设备也可主动发送告警。它关注的是网络运行状态,而不是普通用户应用数据。

SNMP 体系包含:

  • 管理站(Manager):发起管理请求并汇总状态;
  • 代理(Agent):运行在被管理设备上,访问本地状态;
  • 管理信息库(MIB):用对象标识符组织管理变量。

管理站可使用 GET 读取对象、使用 SET 修改允许配置的对象。设备代理可用 Trap 或通知报文主动报告故障。SNMP 管理设备状态,不等于远程登录。

10. P2P 对等应用结构

客户/服务器模式把主要服务能力集中在长期在线的服务器上。P2P 则让结点既可以请求资源,也可以向别人提供资源。参与者增多时,系统容量可能一起增长,但查找、协调、安全和可用性也会更复杂。

P2P 系统中,结点既可以下载,也可以向其他结点上传。随着参与者增加,系统不仅增加需求,也可能增加服务能力。

P2P 并不意味着完全没有服务器。实际系统可能仍使用服务器进行用户发现、索引、认证或协调,只是主要数据交换可直接发生在对等结点之间。

BitTorrent 是典型 P2P 文件分发协议。文件被划分为许多数据块,结点一边下载缺少的数据块,一边上传已有数据块。参与同一文件交换的结点集合称为 swarm。

结点可通过 Tracker 或 DHT 发现其他参与者,数据块通常带哈希值以验证完整性。P2P 提高分发扩展性,也需要处理结点随时加入离开、恶意数据和上传激励等问题。

11. Socket 编程与协议交互

应用层协议最终还要落到程序调用上。应用把报文通过 Socket 交给 TCP 或 UDP。服务器的绑定、监听和接受连接,客户端的连接和发送调用,都与运输层端口和连接状态直接对应。

服务器通常执行:

  1. 创建 socket;
  2. 绑定本地 IP 与端口;
  3. 监听连接;
  4. 接受客户端连接;
  5. 收发数据;
  6. 关闭连接。

TCP 客户端通常创建 socket 并连接服务器地址;UDP 无需建立连接,可以直接向目标地址发送数据报。

Socket 是操作系统向应用暴露的通信接口,TCP/UDP 则是实际运输层协议。

12. 搜索引擎:抓取、索引与检索

搜索引擎不能在用户输入关键词后才临时遍历整个互联网,那样速度完全无法接受。它会提前抓取网页、分析内容并建立索引。用户查询时,只需要在索引中匹配和排序,再返回结果。

基于 WWW 的搜索引擎通常包含三个核心阶段:

  1. 抓取:爬虫从已知网页出发,沿超链接获取更多页面;
  2. 索引:分析网页内容,建立词语到文档的倒排索引;
  3. 检索与排序:用户提交关键词后,从索引中找到候选页面,并结合相关性、链接、时效和质量等因素排序。

搜索引擎并不是用户搜索时才临时遍历整个互联网,而是提前抓取和建立索引,查询时主要访问自己的索引数据库。

章节练习与解析

材料原题

原题 1|样卷·填空题

电子邮件服务器之间相互传递邮件通常采用的协议是________。

[!example]- 解析 **答案:SMTP。**SMTP 用于发送邮件以及邮件服务器之间的转发。

原题 2|样卷·单项选择题

浏览器与 Web 服务器之间的协议是________。

  • A. DNS
  • B. SNMP
  • C. HTTP
  • D. SMTP

[!example]- 解析 **答案:C。**浏览器通过 HTTP 或 HTTPS 与 Web 服务器交换请求和响应。

原题 3|样卷·单项选择题

如果以 IP 地址方式可以访问 Internet 而不能以域名方式访问网站,同时 QQ 等客户端能正常登录,该现象可能是因为没有正确配置 TCP/IP 属性中的________。

  • A. IP 地址
  • B. 子网掩码
  • C. 默认网关
  • D. DNS 服务器

[!example]- 解析 **答案:D。**IP 连通性正常,只有域名到 IP 的转换失败,最可能是 DNS 配置问题。

原题 4|样卷·单项选择题

每一个 Web 页面,包括主页都有一个唯一的地址,通常称该地址为________。

  • A. 传输地址
  • B. 主页地址
  • C. 网页搜索地址
  • D. 统一资源定位符 URL

[!example]- 解析 **答案:D。**URL 用于定位网络资源,并可包含协议、主机名、端口、路径和查询参数等部分。

原题 5|作业 5·第 2 题

请阅读以下材料并回答相关问题:某网站的域名 DNS 服务器和主域名被劫持,导致输入域名后首页无法正常访问,部分请求被自动跳转到攻击者页面。nslookup www.baidu.com 显示本机使用的 DNS 服务器为 218.108.248.228;Wireshark 抓包显示客户端 192.168.0.11 使用 UDP 源端口 2401 向目的端口 53 发起查询,IP 数据报总长度为 59 B,IPv4 首部长度为 20 B。

  1. 什么是 DNS?DNS 服务器的域名解析算法有哪两种?
  2. 主机访问的 DNS 服务器 IP 地址是多少?访问过程中依赖的传输层协议是什么?
  3. 源主机连接 DNS 服务器的源端口是多少?该 DNS 查询的 IP 数据包数据部分长度是多少字节?
  4. 结合 DNS 原理,说明域名被劫持后首页无法正常访问的原因。
  5. 解释基于 WWW 的搜索引擎基本工作原理。

[!example]- 解析

  1. DNS 是把域名与 IP 地址等资源记录对应起来的分布式、层次化命名系统。查询方式包括递归查询和迭代查询。
  2. DNS 服务器为 218.108.248.228,该查询使用 UDP。
  3. 源端口为 2401。IP 数据部分长度为 $59-20=39$ B,其中包含 UDP 首部和 DNS 报文。
  4. 攻击者篡改权威 DNS 数据、域名服务器配置或解析链路,使查询返回错误 IP,用户因此连接到错误服务器;缓存还会让错误结果在一段时间内继续传播。
  5. 搜索引擎通过爬虫抓取网页,解析内容与链接,建立倒排索引;用户查询时在索引中检索候选页面并按相关性、质量等信号排序返回结果。

原题 6|样卷·问答题

某同学在浏览器中输入 http://www.baidu.com 并按回车,直到首页显示。请问:

  1. 按照 TCP/IP 参考模型,从应用层到物理层有哪些协议在起作用,每个协议的作用是什么?
  2. 简要描述整个过程。

[!example]- 解析 应用层可能使用 DNS 解析域名、HTTP 请求网页;运输层使用 UDP 承载普通 DNS 查询、TCP 承载 HTTP;网络层使用 IP 进行跨网络寻址和路由,并可能使用 ICMP 报告异常;网络接口层使用 ARP 获取下一跳 MAC,以太网封装帧;物理层把比特编码成信号。

典型流程为:检查 DNS 缓存并解析域名 → 判断目标是否同网段 → ARP 获取目标或默认网关 MAC → 若使用 HTTP/TCP,进行三次握手 → 发送 HTTP 请求 → 服务器返回响应及页面资源 → 浏览器继续请求图片、脚本等资源并渲染页面。

原题 7|作业 5·第 1 题第(1)(2)问

主机 192.168.1.102 访问 www.sohu.com。抓包显示其 DNS 服务器为 202.101.172.35,DNS 响应把域名解析为 d7.a.sohu.com,其中一个地址为 114.80.130.92

  1. DNS 有哪两种解析方法?当前 DNS 服务器地址是什么?
  2. 192.168.1.102 是什么类型的 IP 地址?解析后,源主机从哪台主机获取 Web 页面数据?

[!example]- 解析 查询方式为递归查询和迭代查询;DNS 服务器为 202.101.172.35192.168.1.102 属于 192.168.0.0/16 私有地址。后续 TCP/HTTP 连接的服务器为 114.80.130.92

补充题

题 8|DNS 层次

关于 DNS 层次结构,下列说法正确的是________。

  • A. 本地域名服务器直接接收终端查询,权威服务器保存并回答该域的正式资源记录
  • B. 根服务器保存所有域名的最终 IP 地址
  • C. 顶级域名服务器只负责 HTTP 页面传输
  • D. 权威服务器只负责给客户端分配临时端口

[!example]- 解析 **答案:A。**本地域名服务器直接接收终端查询并使用缓存。根服务器指出相关顶级域服务器。顶级域服务器指出目标域的权威服务器。权威服务器保存并回答该域的正式资源记录。

题 9|递归与迭代

客户端把查询交给本地 DNS,并要求其返回最终结果;本地 DNS 依次向根、顶级域和权威服务器查询。下列说法正确的是________。

  • A. 客户端到本地 DNS 通常是递归,本地 DNS 向上级逐级查询通常是迭代
  • B. 客户端到本地 DNS 通常是迭代,本地 DNS 向上级查询一定是递归
  • C. DNS 查询没有递归和迭代之分
  • D. 递归查询只用于 TCP 三次握手

[!example]- 解析 **答案:A。**客户端到本地 DNS 通常是递归查询。本地 DNS 向根、顶级域、权威服务器逐级询问通常采用迭代查询,各服务器可返回下一步应查询的地址。

题 10|DNS 缓存

关于 DNS 缓存,下列说法正确的是________。

  • A. 缓存可减少重复查询时延,但 TTL 到期前错误记录也可能继续被使用
  • B. 缓存会让每次查询都必须访问根服务器
  • C. 缓存只保存网页正文,不保存解析结果
  • D. TTL 表示 TCP 首部长度

[!example]- 解析 **答案:A。**缓存可直接返回近期查询结果,减少跨层级查询和网络往返。记录在 TTL 到期前通常仍被视为有效,因此错误记录即使源站已修复,也可能继续存在于各级缓存中。

题 11|DNS 使用 UDP 与 TCP

DNS 普通查询多用 UDP,而区域传送或过大的响应常用 TCP,原因是________。

  • A. 普通查询通常一问一答、开销小;区域传送数据量大,需要可靠有序传输
  • B. UDP 能保证所有区域传送完整可靠
  • C. TCP 不能承载 DNS
  • D. DNS 只能使用 ICMP

[!example]- 解析 **答案:A。**普通查询通常只有一问一答,UDP 无需建立连接、开销小。区域传送数据量大,需要可靠有序传输,适合 TCP。响应超过 UDP 可承载范围或发生截断时,客户端也可改用 TCP。

题 12|URL 组成

URL https://example.com:8443/docs/index.html?q=network#part2 的组成,正确的是________。

  • A. 协议 https,主机 example.com,端口 8443,路径 /docs/index.html,查询参数 q=network,片段 part2
  • B. 协议 example.com,主机 https,端口 80
  • C. 路径是 q=network,片段会随 HTTP 请求发送给服务器
  • D. 端口是 part2,主机是 /docs/index.html

[!example]- 解析 **答案:A。**协议是 https,主机是 example.com,端口是 8443,路径是 /docs/index.html,查询参数是 q=network,片段是 part2。片段通常由浏览器本地定位,不随 HTTP 请求发送给服务器。

题 13|HTTP 请求与响应

关于 HTTP/1.1 GET 请求与常见状态码,下列说法正确的是________。

  • A. 请求行可写为 GET /index.html HTTP/1.1Host 字段指出目标主机;200 表示成功,404 表示资源未找到
  • B. Host 字段只出现在 IP 首部中
  • C. 301 表示服务器内部错误,500 表示永久重定向
  • D. HTTP/1.1 GET 请求必须不包含请求行

[!example]- 解析 **答案:A。**最基本的 HTTP/1.1 GET 请求包含请求行和 Host 字段。200 表示成功。301 表示永久重定向。404 表示资源未找到。500 表示服务器内部错误。

题 14|HTTP 无状态与 Cookie

HTTP 被称为无状态协议,含义是________。

  • A. HTTP 本身不自动记住前一次请求的用户身份和上下文
  • B. HTTP 无法传输任何状态码
  • C. HTTP 每次请求都会自动创建永久登录状态
  • D. Cookie 只能用于 IP 分片

[!example]- 解析 **答案:A。**HTTP 本身不自动记住前一次请求的用户身份和上下文。网站可在服务器端保存会话状态,并通过 Cookie 或令牌让后续请求携带会话标识。

题 15|持久连接

HTTP 持久连接相对于每个对象单独建立 TCP 连接的优势是________。

  • A. 可复用同一连接请求多个资源,减少握手和慢启动开销
  • B. 会强制每个资源都重新进行 TCP 三次握手
  • C. 会禁止浏览器请求多个对象
  • D. 只适用于 DNS 查询

[!example]- 解析 **答案:A。**持久连接可复用同一连接请求多个资源,减少三次握手和慢启动开销,降低延迟与服务器连接管理成本。HTTP/2、HTTP/3 还进一步支持并发流等机制。

题 16|FTP 双连接

关于 FTP 双连接,下列说法正确的是________。

  • A. 控制连接长期传输命令,数据连接承载文件或目录数据;默认控制端口为 21,主动模式服务器数据端口为 20
  • B. 控制端口为 80,数据端口为 443
  • C. FTP 只使用一个 UDP 连接
  • D. 数据连接只传输登录命令,不传输文件

[!example]- 解析 **答案:A。**控制连接长期传输登录、目录和传输命令,数据连接专门承载文件或目录数据,使控制与数据分离。控制端口为 21,传统主动模式服务器数据端口为 20。

题 17|SMTP、POP3 与 IMAP

SMTP、POP3 和 IMAP 在邮件系统中的分工,正确的是________。

  • A. SMTP 用于提交和转发邮件,POP3/IMAP 用于接收者读取或管理邮件
  • B. POP3 用于邮件服务器之间转发,SMTP 只用于下载邮件
  • C. IMAP 只能用于 IP 路由选择
  • D. Web 邮箱会让邮件服务器之间不再使用 SMTP

[!example]- 解析 **答案:A。**客户端或邮件服务器用 SMTP 提交和转发邮件。接收者使用 POP3 下载邮件,或使用 IMAP 在服务器上同步、管理邮件。即使用户通过浏览器使用 Web 邮箱,邮件服务器之间仍通常使用 SMTP。

题 18|DHCP 过程

DHCP 客户端获得地址时常见的四步交互是________。

  • A. Discover、Offer、Request、ACK
  • B. SYN、SYN+ACK、ACK、FIN
  • C. Query、Response、Redirect、Close
  • D. ARP、RARP、ICMP、BGP

[!example]- 解析 **答案:A。**客户端刚启动时没有可用 IP,也不知道服务器地址,因此用广播寻找服务器。服务器使用 UDP 67,客户端使用 UDP 68。

题 19|Telnet、SSH 与 SNMP

关于 Telnet、SSH 与 SNMP,下列说法正确的是________。

  • A. Telnet 传统实现明文远程终端,SSH 提供加密远程登录,SNMP 用于网络设备监控和管理
  • B. SNMP 是安全远程交互式终端协议
  • C. SSH 默认明文传输密码
  • D. Telnet 主要用于网页加密传输

[!example]- 解析 **答案:A。**Telnet 用于远程终端,默认端口 23,传统实现明文传输。SSH 提供安全远程登录和命令执行,使用加密与身份认证。SNMP 用于网络设备监控和管理。

题 20|P2P

P2P 系统具有较好扩展性的主要原因是________。

  • A. 新结点既消耗资源,也可能贡献上传带宽和存储
  • B. 所有数据都必须由单一中心服务器提供
  • C. P2P 结点永远不会下线
  • D. P2P 不需要任何内容发现或安全管理

[!example]- 解析 **答案:A。**新结点既消耗资源也可贡献上传带宽和存储,因此系统容量可随参与者增加。但结点上线时间、地址和性能不稳定,内容发现、激励、安全和版权管理更复杂。

题 21|Socket 编程

TCP 服务器与客户端建立通信时,典型 Socket 操作顺序正确的是________。

  • A. 服务器:socket → bind → listen → accept → send/recv → close;客户端:socket → connect → send/recv → close
  • B. 服务器:connect → listen → bind;客户端:accept → bind
  • C. 服务器和客户端都只能执行 close
  • D. Socket 操作只用于 DNS 根服务器

[!example]- 解析 答案:A。accept 返回一个用于具体连接的新 Socket,监听 Socket 继续接收其他连接。

题 22|搜索引擎边界

DNS、浏览器和搜索引擎都可能处理“网址”,下列职责区分正确的是________。

  • A. DNS 解析域名,浏览器发起请求并渲染页面,搜索引擎建立索引并返回候选页面
  • B. 搜索引擎负责把域名直接解析为 IP 并完成 TCP 传输
  • C. DNS 负责渲染网页
  • D. 浏览器只负责维护路由表

[!example]- 解析 **答案:A。**DNS 把域名解析为 IP;浏览器按 URL 发起网络请求并渲染页面;搜索引擎抓取网页、建立索引并根据关键词返回候选页面。

题 23|DNS 复制与缓存

关于 DNS 复制与缓存,下列说法正确的是________。

  • A. 权威服务器复制保存区域数据副本,缓存保存此前查询结果并受 TTL 限制
  • B. 复制只保存浏览器页面截图,缓存只保存 TCP 报文
  • C. 缓存中的记录永远不会过期
  • D. 权威服务器复制用于分配临时端口

[!example]- 解析 **答案:A。**复制保存某个域的权威区域数据副本,用于冗余和分担负载;缓存保存此前查询结果并受 TTL 限制,用于减少重复查询时延和上游压力。

题 24|HTTP 版本

HTTP/1.1、HTTP/2 和 HTTP/3 在连接复用或底层传输方面的主要差异,正确的是________。

  • A. HTTP/1.1 支持持久连接;HTTP/2 在一条 TCP 连接中多路复用;HTTP/3 使用基于 UDP 的 QUIC
  • B. HTTP/2 必须为每个对象建立一个新的 TCP 连接
  • C. HTTP/3 只能运行在纯 IP 层,不使用传输层
  • D. 三者完全没有连接管理差异

[!example]- 解析 **答案:A。**HTTP/1.1 支持持久连接。HTTP/2 在一条 TCP 连接中多路复用帧。HTTP/3 使用基于 UDP 的 QUIC 提供多路流和可靠传输。

题 25|FTP 主动与被动模式

关于 FTP 主动与被动模式,下列说法正确的是________。

  • A. 主动模式由服务器连接客户端数据端口;被动模式由客户端连接服务器临时端口
  • B. 主动模式和被动模式都必须由外部服务器主动连接客户端
  • C. 被动模式更难穿过客户端 NAT,因为要求公网主动连入客户端
  • D. FTP 不使用数据连接

[!example]- 解析 **答案:A。**主动模式由服务器连接客户端数据端口。被动模式由客户端连接服务器临时端口。后者不要求公网侧主动连接客户端,更容易通过 NAT 和入站防火墙。

题 26|Telnet NVT

Telnet 的 NVT 主要解决________。

  • A. 不同终端字符与控制表示的兼容问题,但不提供加密和身份保护
  • B. IP 分片和重组问题
  • C. DNS 缓存污染问题
  • D. TCP 拥塞窗口增长问题

[!example]- 解析 **答案:A。**NVT 统一不同终端的字符与控制表示,解决兼容性;它不提供加密和身份保护,因此不能防止明文窃听。

题 27|SNMP

关于 SNMP 中 Manager、Agent、MIB、GET、SET 和 Trap 的关系,下列说法正确的是________。

  • A. Manager 向 Agent 发出 GET/SET,Agent 读写 MIB;Trap 可由设备主动报告事件
  • B. Agent 是浏览器缓存,MIB 是网页正文
  • C. GET/SET 只用于 TCP 连接关闭
  • D. Trap 表示 IP 分片偏移

[!example]- 解析 **答案:A。**Manager 向设备 Agent 发出 GET/SET 请求,Agent 读写 MIB 中的管理对象。设备还可通过 Trap 主动报告事件。

题 28|BitTorrent

BitTorrent 参与结点越多时可能同时增加服务能力,主要因为________。

  • A. 结点下载后也能上传已有数据块,数据块哈希用于验证完整性和防篡改
  • B. 所有数据只能由一个中心服务器上传
  • C. 数据块哈希用于隐藏 IP 地址
  • D. 参与结点越多,所有结点都不再需要上传

[!example]- 解析 **答案:A。**结点下载后也能上传已有数据块,参与者同时贡献带宽;数据块哈希用于验证收到的数据是否完整、是否被篡改。


第七章 Wireshark 抓包分析:从帧到应用报文

前六章是在解释协议为什么这样设计,这一章则把这些规则放到真实数据包中观察。一个抓到的帧里会同时包含链路层、网络层、运输层和应用层信息。分析时先分清每一层的边界,再看地址、端口、标志位和长度字段,就能逐步还原通信方向和当前阶段。

[!note] 字段关系 Ethernet 的类型字段指出上层协议。IP 的协议字段指出 TCP 或 UDP。端口号定位应用。序号、确认号和标志位说明 TCP 状态。各层长度字段可以相互校验。

1. Wireshark 数据包列表、协议树与字节区

打开 Wireshark 后,先要知道三个窗格各自解决什么问题。数据包列表用来快速定位通信,协议树把字段按层次展开,字节区则显示真正捕获到的原始编码。三者看到的是同一个数据包,只是观察角度不同。

Wireshark 常见界面分为三部分:

  1. 分组列表:显示编号、时间、源地址、目的地址、协议和摘要;
  2. 协议树:按 Ethernet、IP、TCP/UDP、应用层逐层展开字段;
  3. 原始字节区:显示抓到的十六进制字节及字符解释。

分组列表用于把握整体顺序和通信方向;协议树用于寻找具体字段;原始字节区可以验证字段在报文中的真实位置。

2. 分层解析顺序:Ethernet、IP、TCP/UDP 与应用层

抓到的数据最外层通常是链路层帧,所以分析也要从外向内。先看 Ethernet 首部,确定里面承载的是 IPv4、ARP 还是 IPv6。再根据 IP 的协议字段进入 TCP 或 UDP,最后才到应用层。

抓到的一帧通常按照封装顺序解析:

2.1 Ethernet II

这一层先抓住最能帮助判断方向和长度的字段:

  • Destination:目的 MAC;
  • Source:源 MAC;
  • Type:上层协议,例如 IPv4 为 0x0800

MAC 地址反映的是抓包点所在链路上的发送者和下一跳,不一定是端到端通信双方的网卡地址。

2.2 IPv4

这一层先抓住最能帮助判断方向和长度的字段:

  • Version;
  • Header Length;
  • Total Length;
  • Identification、Flags、Fragment Offset;
  • TTL;
  • Protocol;
  • Source、Destination IP。

源 IP 和目的 IP 通常反映端到端主机,Protocol=6 表示 TCP,Protocol=17 表示 UDP。

2.3 UDP

这一层先抓住最能帮助判断方向和长度的字段:

  • Source Port;
  • Destination Port;
  • Length;
  • Checksum。

若目的端口为 53,且上层被解析为 DNS,通常是客户端发出的 DNS 查询;响应方向相反,源端口为 53。

2.4 TCP

这一层先抓住最能帮助判断方向和长度的字段:

  • Source Port、Destination Port;
  • Sequence Number、Acknowledgment Number;
  • Header Length;
  • Flags;
  • Window;
  • TCP Segment Len。

端口用来判断客户端和服务类型,标志位用来判断连接阶段,序号与确认号用来判断字节流进展。

2.5 应用层

DNS 中可查看查询名称、记录类型和 Answers。HTTP 中可查看请求方法、Host、状态码和内容类型。如果使用 HTTPS,HTTP 内容被 TLS 加密,抓包通常只能直接看到 TLS 握手和加密记录。

3. 源地址、目的地址与通信方向

判断一个包是请求还是响应,不能只看编号或颜色。源、目的 IP 先告诉我们主机方向,源、目的端口再说明进程方向,TCP 标志位和应用层字段则帮助判断当前处于哪个交互阶段。

假设分组列表显示:

192.168.1.102:1984 → 114.80.130.92:80 [SYN]

可以得到:

  • 192.168.1.102 是主动发起连接的一方,通常为客户端;
  • 1984 是客户端临时端口;
  • 114.80.130.92 是服务器地址;
  • 目的端口 80 表示 HTTP;
  • SYN 表示第一次握手。

随后通常出现:

114.80.130.92:80 → 192.168.1.102:1984 [SYN, ACK]
192.168.1.102:1984 → 114.80.130.92:80 [ACK]

第二个报文由服务器发出,第三个报文由客户端发出。通信方向可以同时由源/目的地址、端口和标志位相互验证。

4. DNS 查询与响应抓包

DNS 抓包通常至少包含一问一答。客户端从临时端口向服务器 53 端口发送查询,服务器再返回资源记录。只要看清服务器地址、查询名称和 Answers,就能还原这次名称解析。

一次域名查询通常至少包含查询与响应两个数据包。

查询包特征:

  • 源 IP:客户端;
  • 目的 IP:DNS 服务器;
  • 目的端口:53;
  • Info:Standard query;
  • Queries:被查询域名和记录类型。

响应包特征:

  • 源 IP:DNS 服务器;
  • 目的 IP:客户端;
  • 源端口:53;
  • Info:Standard query response;
  • Answers:A、AAAA、CNAME 等记录。

在作业抓包中,主机 192.168.1.102202.101.172.35 查询 www.sohu.com。所以当前 DNS 服务器地址为 202.101.172.35。响应中可出现 CNAME,说明原域名被映射到另一个规范域名,再由 A 记录得到最终 IPv4 地址。

若随后 TCP 连接的目的地址是 114.80.130.92,说明浏览器最终从这台主机获取 Web 数据,而不是从 DNS 服务器获取网页。

[!warning] DNS 服务器与 Web 服务器不是同一角色 DNS 服务器只回答域名解析问题;浏览器取得解析结果后,再向 Web 服务器建立 TCP 连接。抓包中两个服务器地址可能完全不同。

5. TCP 三次握手抓包识别

TCP 握手报文通常没有应用数据,但它们决定了连接能否建立。按时间顺序查看 SYN、ACK、序号和确认号,就可以区分第一次 SYN、第二次 SYN+ACK 和最后一次 ACK。

三次握手通常出现三个连续报文:

  1. 客户端 → 服务器:[SYN]
  2. 服务器 → 客户端:[SYN, ACK]
  3. 客户端 → 服务器:[ACK]

判断时还需注意:

  • 第一次 SYN 的目的端口通常是服务器熟知端口;
  • 第二次报文方向相反;
  • 第三次报文重新指向服务器;
  • 握手报文通常不携带应用数据,TCP Segment Len 常为 0。

HTTP 请求一般出现在握手完成之后。若抓包中第三次 ACK 与应用数据合并,也可能在同一报文中看到 ACK 和数据。

6. TCP Window 字段与流量控制

Wireshark 中的 Win 来自 TCP 首部的窗口字段。它表示发送这个报文的一方还愿意接收多少数据,反映的是接收缓冲能力。它既不是链路带宽,也不是发送方内部维护的拥塞窗口。

TCP 报文中的 Window 是发送这个报文的一方通告的接收窗口。Win=64240 表示这台主机当前接收缓冲区仍愿意接收约 64240 B 的未确认数据。

这个字段用于流量控制。对方根据窗口限制发送量,避免接收缓冲区溢出。

Wireshark 有时会显示经过窗口扩大因子换算后的“Calculated window size”。分析时需要区分首部原始字段值与实际生效窗口。

7. Ethernet、IP、TCP/UDP 与应用数据长度

由于各层是逐层封装的,外层长度应该等于内层内容再加上本层首部。利用帧长、IP 总长度、IP 首部长度和 TCP/UDP 首部长度,可以一步步反推出应用数据长度,也能检查解析结果是否一致。

以无 VLAN 标签的 Ethernet II、普通 IPv4 和 TCP 为例:

$$ \text{帧长}=14\text{ B 以太网首部}+\text{IP 总长度} $$ $$ \text{TCP 段长度}=\text{IP 总长度}-\text{IP 首部长度} $$ $$ \text{应用数据长度}=\text{TCP 段长度}-\text{TCP 首部长度} $$

如果使用 UDP:

$$ \text{应用数据长度}=\text{IP 总长度}-\text{IP 首部长度}-8 $$

7.1 长度关系示例

若:

  • IP Total Length = 1492 B;
  • IP Header Length = 20 B;
  • TCP Header Length = 20 B;

则:

  • TCP 段总长度:$1492-20=1472$ B;
  • 应用层数据:$1472-20=1452$ B;
  • 常见抓包帧长:$14+1492=1506$ B。

7.2 抓包帧长与 FCS

许多网卡在把帧交给操作系统之前已经验证并移除 FCS。所以 Wireshark 常看不到最后 4 B。若截图显示帧长 1506 B,通常按 14 B Ethernet 首部加 1492 B IP 数据报计算,而不再增加 FCS。

如果存在 802.1Q VLAN 标签,以太网首部还会多 4 B;若 IP 或 TCP 有选项,首部也会超过 20 B。最终应以抓包字段为准。

8. DNS 数据长度计算

DNS 通常封装在 UDP 中,UDP 又放在 IP 数据部分里。计算长度时要按层逐级减去首部,不能把 IP 数据部分、UDP 数据部分和 DNS 报文当成同一个长度。

若 IP 总长度为 59 B,IPv4 首部为 20 B:

$$ \text{IP 数据部分}=59-20=39\text{ B} $$

若上层是 UDP,UDP 首部固定 8 B:

$$ \text{DNS 报文长度}=39-8=31\text{ B} $$

IP 数据部分包括整个 UDP 数据报,而不是只包括 DNS 数据。

9. 客户端临时端口与服务器熟知端口

客户端通常临时选择一个源端口,服务器则长期监听熟知端口。请求发出时,服务器端口是目的端口。响应返回时,它又变成源端口。所以判断客户端和服务器时,必须结合通信方向。

客户端通常使用临时端口,服务器使用熟知端口。例如:

192.168.1.102:1984 → 114.80.130.92:80

源端口 1984 属于客户端临时端口,目的端口 80 属于 HTTP 服务器。

响应方向中端口交换:

114.80.130.92:80 → 192.168.1.102:1984

端口号不是固定属于“源”或“目的”。同一个服务器端口在请求中是目的端口,在响应中是源端口。

10. Wireshark 显示过滤器

显示过滤器只决定哪些已捕获数据暂时显示出来,不会修改原始抓包。可以把协议名、地址、端口和标志位组合起来,逐步把大量流量缩小到目标通信。

目标 过滤器
DNS dns
TCP tcp
UDP udp
HTTP http
某个 IP ip.addr == 192.168.1.102
某个 TCP 端口 tcp.port == 80
SYN 报文 tcp.flags.syn == 1
只看初始 SYN tcp.flags.syn == 1 && tcp.flags.ack == 0
某个通信流 tcp.stream eq 0

过滤器只改变显示内容,不会改变原始抓包文件。

11. HTTP 重定向与后续连接

服务器返回 HTTP 301 或 302 时,浏览器会按照新的 URL 继续访问。这个过程可能需要重新解析域名并建立新的 TCP 连接。所以最初查询到的地址不一定就是最终提供页面数据的服务器。

HTTP 服务器可能返回 301 或 302,并在 Location 首部中给出新 URL。浏览器随后对新域名执行必要的 DNS 解析,并向新地址建立连接。

因此,最初访问的域名、DNS 响应中的地址和真正返回页面数据的服务器可能不同。判断“从哪台主机获取页面”应观察后续 HTTP/TCP 数据流,而不能只看最初 DNS 查询。

章节练习与解析

材料原题

原题 1|作业 5·第 1 题

Wireshark 捕获主机 192.168.1.102 访问 www.sohu.com 的部分数据包:

编号 源地址 目的地址 协议 关键信息
373 192.168.1.102 202.101.172.35 DNS Standard query A www.sohu.com
374 202.101.172.35 192.168.1.102 DNS CNAME d7.a.sohu.com,A 114.80.130.92 等
375 192.168.1.102 114.80.130.92 TCP 1984 → 80 [SYN],Win=64240
376 114.80.130.92 192.168.1.102 TCP 80 → 1984 [SYN, ACK]
377 192.168.1.102 114.80.130.92 TCP 1984 → 80 [ACK]
378 192.168.1.102 114.80.130.92 HTTP GET / HTTP/1.1

请回答:

  1. DNS 有哪两种解析方法?当前 DNS 服务器地址是什么?
  2. 192.168.1.102 是什么类型的 IP 地址?解析后源主机从哪台主机获取 Web 页面数据?
  3. 字段值 45H 对应的二进制序列是什么?按本课程约定画曼彻斯特编码。
  4. win=64240 表示什么?
  5. 找出建立 HTTP 连接的握手数据包,并指出运输层协议。
  6. 源端口和目的端口分别是多少?

[!example]- 解析

  1. 递归查询与迭代查询;DNS 服务器为 202.101.172.35
  2. 192.168.1.102 是私有 IPv4 地址;后续 Web 服务器为 114.80.130.92
  3. 45H=01000101B;0 画低到高、1 画高到低。
  4. 它是 TCP 接收窗口通告,用于流量控制。
  5. 编号 375、376、377,分别是 SYN、SYN+ACK、ACK;协议为 TCP。
  6. 客户端源端口 1984,服务器目的端口 80。

原题 2|作业 5·第 2 题抓包部分

Wireshark 捕获到客户端 192.168.0.11 向 DNS 服务器 218.108.248.228 发起查询。IPv4 总长度为 59 B,首部长度为 20 B;UDP 源端口为 2401,目的端口为 53。

  1. 判断数据包方向和两端角色;
  2. 计算 IP 数据部分长度;
  3. 说明源端口 2401 与目的端口 53 的差异;
  4. 说明响应包中的源/目的 IP 和源/目的端口将怎样变化。

[!example]- 解析

  1. 这是客户端到 DNS 服务器的查询包。
  2. IP 数据部分为 $59-20=39$ B。
  3. 2401 是客户端临时端口,53 是 DNS 熟知服务端口。
  4. 响应包源 IP 为 218.108.248.228、目的 IP 为 192.168.0.11;源端口 53、目的端口 2401。

原题 3|样卷·综合题

局域网内客户端 192.168.1.220 与服务器 61.174.55.1 建立连接。抓包中:

  • 编号 1:192.168.1.220:56942 → 61.174.55.1:443 [SYN]
  • 编号 2:61.174.55.1:443 → 192.168.1.220:56942 [SYN, ACK]
  • 编号 3:192.168.1.220:56942 → 61.174.55.1:443 [ACK]
  • 编号 28:帧长 1506 B,IPv4 总长度 1492 B,IPv4 首部 20 B,TCP 首部 20 B,TCP 数据长度 1452 B。

请回答:

  1. 编号 2 的数据帧实现什么功能?SYN 和 ACK 分别表示什么?
  2. 分别计算编号 28 的应用层、运输层、网络层和数据链路层总长度;
  3. 写出服务器 IP、服务器端口及对应的应用层协议类型。

[!example]- 解析

  1. 编号 2 是三次握手的第二步。SYN 用于同步初始序号并请求/同意建立连接;ACK 表示确认号有效,用于确认客户端的 SYN。
  2. 应用层 1452 B;运输层 $1452+20=1472$ B;网络层 $1472+20=1492$ B;数据链路层 $1492+14=1506$ B。该抓包长度未计以太网 FCS。
  3. 服务器 IP 为 61.174.55.1,端口 443,对应 HTTPS/TLS 服务。

补充题

题 4|三个窗格

Wireshark 主界面的数据包列表、协议详细信息和十六进制字节区的用途,正确的是________。

  • A. 列表看通信序列和摘要,协议树按层展开字段,字节区核对原始十六进制值
  • B. 列表只显示网页正文,协议树只显示图片
  • C. 字节区用于自动修改报文内容
  • D. 协议树不能查看任何字段

[!example]- 解析 **答案:A。**数据包列表用于观察通信序列、方向、协议和摘要;协议详细信息按层展开字段;字节区用于核对字段在原始报文中的偏移和实际十六进制值。

题 5|逐层读包

给出一个 Ethernet II → IPv4 → TCP → HTTP 数据包,推荐的解析顺序是________。

  • A. 先看 Ethernet 源/目的 MAC 和类型,再看 IPv4 源/目的 IP、长度和协议,再看 TCP 端口、序号、标志位,最后看 HTTP
  • B. 先看 HTTP,再直接跳到物理层电压
  • C. 只看目的端口即可,不需要分层
  • D. 先看 DNS 缓存,再看路由器配置

[!example]- 解析 **答案:A。**先看 Ethernet II 的源/目的 MAC 和类型。再看 IPv4 的源/目的 IP、首部长度、总长度和协议字段。再看 TCP 的源/目的端口、序号、确认号、标志位、窗口和首部长度。最后看 HTTP。

题 6|地址方向

某包显示:

  • Ethernet 源 MAC:路由器 MAC
  • Ethernet 目的 MAC:本机 MAC
  • IPv4 源 IP:远端服务器
  • IPv4 目的 IP:本机 IP

该包方向和 MAC 源地址的解释,正确的是________。

  • A. 入站;跨网段传输时最后一跳由默认网关重新封装,所以源 MAC 是网关 MAC
  • B. 出站;源 MAC 必然等于远端服务器 MAC
  • C. 入站;IP 源地址也应改成路由器地址
  • D. 无法判断;MAC 地址不会逐跳变化

[!example]- 解析 **答案:A。**这是入站包。远端服务器跨越多个网络,链路层帧在每一跳都重新封装。到达本地局域网的最后一跳由默认网关发送,因此源 MAC 是网关 MAC,而源 IP 仍是远端服务器 IP。

题 7|各层长度关系

某 IPv4 包总长度为 600 B,IPv4 首部 20 B,UDP 首部 8 B。应用数据长度和无 VLAN 的 Ethernet II 抓包可见帧长通常为________。

  • A. 572 B,614 B
  • B. 580 B,600 B
  • C. 600 B,618 B
  • D. 572 B,618 B

[!example]- 解析 **答案:A。**UDP 总长度为 $600-20=580$ B,应用数据为 $580-8=572$ B。Ethernet II 可见帧长通常为 $14+600=614$ B。若网卡或抓包点不提供 FCS,就不再加 4 B。

题 8|TCP 首部选项

某帧长 66 B,IPv4 总长度 52 B,IPv4 首部 20 B,TCP 首部 32 B。应用数据长度和 TCP 选项加填充长度分别是________。

  • A. 0 B,12 B
  • B. 12 B,0 B
  • C. 32 B,20 B
  • D. 52 B,14 B

[!example]- 解析 **答案:A。**TCP 段总长度为 $52-20=32$ B,恰好等于 TCP 首部长度,因此应用数据为 0 B。TCP 基本首部为 20 B,所以选项与填充为 12 B。

题 9|DNS 查询与响应配对

Wireshark 中判断两个 DNS 数据包是一组查询和响应,主要可比较________。

  • A. DNS Transaction ID、查询名称和类型,并观察源/目的 IP 与端口是否反向
  • B. 以太网前导码长度
  • C. TCP 拥塞窗口值
  • D. IP 分片 MF 位是否全为 1

[!example]- 解析 **答案:A。**可比较 DNS Transaction ID、查询名称和类型,并观察源/目的 IP 与端口是否反向。响应包通常带有 response 标志,源端口为 53,目的端口为原客户端临时端口。

题 10|三次握手过滤

若只想在 Wireshark 中查找 TCP SYN 报文,可使用的显示过滤表达式是________。

  • A. tcp.flags.syn == 1
  • B. dns.flags.response == 1
  • C. icmp.type == 8
  • D. eth.type == 0x0806

[!example]- 解析 **答案:A。**可先限定端点或端口,例如 tcp.port == 80,再观察 SYN、SYN+ACK、ACK。查找所有含 SYN 的报文可用 tcp.flags.syn == 1。只找最初 SYN 可再限制 tcp.flags.ack == 0

题 11|HTTP 请求过滤

查找 HTTP 请求、DNS 报文、ARP 报文和 ICMP 报文的常见 Wireshark 显示过滤器依次是________。

  • A. http.requestdnsarpicmp
  • B. tcp.synudp.lenip.ttleth.fcs
  • C. smtppop3imapftp
  • D. cookieurlhostpath

[!example]- 解析 **答案:A。**可分别使用 http.requestdnsarpicmp。如果使用 HTTPS,应用内容被 TLS 加密,通常不能直接用 http.request 看到明文请求。

题 12|重定向

浏览器访问 http://a.example 后收到 301,Location 指向 https://b.example/path。抓包中后续可能新增的过程是________。

  • A. 解析新域名、建立到 443 端口的新连接、进行 TLS 握手并发送新的 HTTPS 请求
  • B. 只在原 TCP 连接中修改以太网 FCS
  • C. 直接由 DNS 返回网页正文
  • D. 不会发生任何新的网络过程

[!example]- 解析 **答案:A。**浏览器会解析新域名 b.example(若缓存中没有),可能进行新的 ARP/路由交付,向新服务器或新端口 443 建立 TCP 连接,并进行 TLS 握手,然后发送新的 HTTPS 请求。

题 13|窗口字段

抓包中一方通告 Window=0,随后对方停止发送普通数据。后续应重点观察________。

  • A. 窗口更新、ZeroWindowProbe、ZeroWindowProbeAck 或带非零窗口的 ACK
  • B. DNS 根服务器返回的 NS 记录
  • C. Ethernet 前导码
  • D. IPv6 地址压缩形式

[!example]- 解析 **答案:A。**这些报文反映发送方是否在探测窗口,以及接收方是否重新获得缓冲空间。

题 14|FCS 与抓包长度

Wireshark 显示的以太网帧长度常常不包含 4 B FCS,主要因为________。

  • A. 很多网卡在交给操作系统和抓包程序前已经校验并剥离 FCS
  • B. Ethernet 帧本来没有 FCS
  • C. FCS 属于 HTTP 正文
  • D. FCS 只在 IPv6 中存在

[!example]- 解析 **答案:A。**很多网卡在把帧交给操作系统和抓包程序之前已经校验并剥离 FCS,因此抓包软件看不到这 4 B。做长度题时必须根据截图或题目说明判断 FCS 是否被捕获。

题 15|临时端口

同一客户端同时访问同一服务器的 443 端口两次,服务器 IP 和端口都相同。Wireshark 区分两个连接的依据可以是________。

  • A. 不同客户端临时端口或不同 tcp.stream 编号
  • B. 相同的以太网前导码
  • C. 相同的目的端口 443 足以合并所有连接
  • D. DNS TTL

[!example]- 解析 **答案:A。**操作系统会为两个连接分配不同的客户端临时端口,所以五元组不同。Wireshark 还会给不同 TCP 会话分配不同的 tcp.stream 编号。


第八章 网络安全:保密、鉴别与访问控制

普通网络协议主要关心数据能不能到达,安全机制还要继续回答几个问题:谁可以读取数据,数据是谁发送的,内容有没有被修改,服务还能不能正常使用。不同问题需要不同手段,所以加密、哈希、MAC、数字签名、证书和防火墙不能简单互相替代。

[!note] 概念关系 加密保护保密性 → 哈希生成摘要 → MAC用共享密钥鉴别消息 → 数字签名用私钥提供身份与不可否认性 → 证书把身份与公钥绑定 → 防火墙/IDS/IPS控制和监测网络访问

1. 保密性、完整性、鉴别、不可否认性与可用性

学习网络安全时,先不要把所有机制都统称为“加密”。安全目标至少包括隐藏内容、发现篡改、确认身份、形成可验证证据和维持服务可用。每个目标解决的问题不同,一个机制通常只能覆盖其中一部分。

1.1 保密性

第一个目标是防止无关人员看懂内容,也就是保密性。加密是实现这一目标的主要手段。

1.2 完整性

第二个目标是发现数据有没有被修改,也就是完整性。哈希、报文鉴别码和数字签名都可以提供完整性保护,但它们能证明的范围不同。

1.3 身份鉴别

即使内容没有泄露,也必须确认对方是谁,这就是身份鉴别。口令、证书、挑战—响应和 Kerberos 票据都可以用来避免把数据交给冒充者。

1.4 不可否认性

有些场景还要求发送者事后不能否认自己发过消息,这就是不可否认性。数字签名可以提供这类证据,因为签名由私钥生成,其他人可以用公钥验证。

1.5 可用性

最后,安全系统还必须保证合法用户需要时能正常使用服务,这就是可用性。拒绝服务攻击主要针对这个目标。

2. 被动攻击与主动攻击

明确安全目标后,再看攻击者会做什么。被动攻击只观察通信,不直接改变系统。主动攻击会修改、伪造、重放数据,或者破坏服务。前者往往难以发现,重点是防止泄露。后者则要靠完整性、鉴别和访问控制来发现或阻断。

2.1 被动攻击

攻击者只监听通信或分析流量,不直接修改数据。典型形式包括:

  • 窃听报文内容;
  • 通过通信时间、长度和频率进行流量分析。

被动攻击往往难以发现,因此防护重点是加密,而不是事后检测报文是否被改动。

2.2 主动攻击

攻击者对通信或系统产生实际影响,例如:

  • 篡改:修改报文内容;
  • 伪造:冒充合法用户发送消息;
  • 重放:截获合法消息后再次发送;
  • 拒绝服务 DoS:消耗资源,使合法请求无法得到服务;
  • 恶意程序:病毒、蠕虫、木马等。

完整性校验、身份鉴别、时间戳、随机数和访问控制等机制主要用于应对主动攻击。

2.3 恶意程序

网络安全威胁还包括在主机中执行的恶意程序:

  • 病毒依附于其他程序或文件,在宿主执行时传播;
  • 蠕虫利用网络漏洞主动复制和扩散;
  • 木马伪装成正常程序并执行未授权操作;
  • 勒索软件加密文件或锁定系统。

恶意程序可能窃取信息、破坏完整性、占用资源或把主机纳入 DDoS 僵尸网络。防火墙不能替代主机补丁、权限控制和恶意代码检测。

3. 加密算法、密钥、明文与密文

加密并不是把算法本身藏起来。现代密码系统通常公开算法,让它接受充分分析和标准化,再把真正需要保密的部分集中在密钥上。不同用户只需要保护自己的密钥。

加密过程可写成:

$$ C=E_k(M) $$

其中:

  • $M$:明文;
  • $C$:密文;
  • $E$:加密算法;
  • $k$:密钥。

现代密码系统通常假设算法可以公开,安全性依赖密钥保密。样卷中“E 代表什么是公开的,而 k 需要保密”应答:E 代表加密算法,k 代表密钥。

公开算法便于分析和标准化。若系统只能依靠“别人不知道算法”维持安全,一旦算法泄露,整个系统就会失效。

4. 对称加密与会话密钥

对称加密使用同一个秘密完成加密和解密,速度快,适合处理大量数据。它真正麻烦的地方,是通信双方怎样在不安全网络上先安全地拿到同一把密钥。

对称加密使用相同密钥,或使用容易相互推导的密钥完成加密和解密。

特点:

  • 速度快,适合加密大量数据;
  • 双方通信前必须共享密钥;
  • 参与者增多时,密钥分配与管理变得困难。

常见算法包括 DES、3DES 和 AES。DES 密钥空间较小,现代系统更常使用 AES。

对称加密最适合作为“会话数据加密工具”。实际安全协议经常先通过公钥机制协商会话密钥,再使用对称算法传输大量数据。

5. 公钥加密与私钥签名

公钥密码用一对相互关联的密钥解决密钥分发问题:公钥可以公开,私钥必须保密。用接收者公钥加密,是为了让只有接收者能解密。用发送者私钥签名,是为了证明消息来源。两种用法的方向不要混淆。

公钥密码中,每个用户拥有一对相关密钥:

  • 公钥可以公开;
  • 私钥由本人秘密保存。

两类典型用途方向相反。

5.1 用于保密

发送者使用接收者 B 的公钥加密,只有 B 的私钥可以解密。核心关系是:

想让谁可以解密,就使用谁的公钥加密。

5.2 用于数字签名

发送者 A 使用自己的私钥签名,接收者使用 A 的公钥验证。核心关系是:

想证明是谁发送,就由发送者使用自己的私钥签名。

RSA 是典型公钥算法。公钥运算通常比对称加密慢,因此不常直接用于加密大规模业务数据。

6. 哈希摘要与单向性

哈希可以把任意长度消息压缩成固定长度摘要,便于快速判断内容是否变化。但普通哈希不使用秘密,攻击者也可以修改消息后重新计算摘要,所以单独使用哈希不能证明消息来自谁。

哈希函数把任意长度消息映射为固定长度摘要。理想哈希函数应具有:

  • 从消息计算摘要容易;
  • 从摘要反推出原消息困难;
  • 找到两个摘要相同的不同消息困难;
  • 消息稍有变化,摘要就发生显著变化。

MD5、SHA 属于哈希算法。哈希本身不使用密钥,因此任何人都能重新计算摘要。单独把“消息 + 哈希值”一起传输,攻击者可以修改消息后重新计算摘要,无法证明消息来自谁。

7. 报文鉴别码 MAC

普通哈希不能证明来源,于是可以在计算中加入双方共享的秘密密钥,形成报文鉴别码 MAC。只有知道密钥的一方才能生成有效 MAC。所以它能同时检查完整性并鉴别共享密钥一方的身份。不过双方都能生成,所以通常不能提供不可否认性。

这里的 MAC 指 Message Authentication Code,与网卡 MAC 地址无关。

通信双方共享一个秘密密钥,发送者根据消息和密钥计算 MAC,接收者用同一密钥验证。攻击者不知道密钥,即使修改消息,也难以生成正确 MAC。

MAC 可以提供:

  • 完整性;
  • 基于共享密钥的来源鉴别。

但它通常不能提供不可否认性,因为通信双方都知道同一个密钥。接收者也有能力生成相同形式的 MAC,无法向第三方证明一定是发送者制作。

8. 数字签名的生成与验证

如果还需要让第三方也能验证来源,就要使用数字签名。发送者先计算消息摘要,再用自己的私钥对摘要签名。接收者用发送者公钥验证。这样既能检查消息是否被改动,也能证明签名者持有对应私钥。

数字签名通常不直接对整份大消息做昂贵的公钥运算,而是先计算消息摘要,再对摘要签名:

  1. A 对消息计算哈希摘要;
  2. A 使用自己的私钥对摘要签名;
  3. A 发送消息与签名;
  4. B 对收到的消息重新计算摘要;
  5. B 使用 A 的公钥验证签名并得到签名中的摘要;
  6. 两份摘要一致,说明签名有效且消息未被修改。

数字签名主要提供:

  • 身份鉴别;
  • 完整性;
  • 不可否认性。

[!warning] 签名与加密不是同一件事 数字签名并不自动隐藏消息内容。只签名而不加密时,旁观者仍可能读到明文。若同时要求保密,需要另外加密消息或会话。

9. 数字证书与 PKI

能用某个公钥验证签名,还不代表这个公钥真的属于声称的那个人。攻击者如果替换公钥,仍可能冒充身份。数字证书由可信 CA 对“身份与公钥的绑定关系”签名,用来解决这个问题。

即使某个公钥可以验证签名,还必须确认这个公钥确实属于声称的用户。攻击者若能替换公钥,就可能实施中间人攻击。

数字证书把身份信息与公钥绑定,并由可信 CA 使用其私钥签名。客户端验证证书时,依次检查:

  • CA 签名是否有效;
  • 证书是否过期;
  • 访问的域名是否与证书匹配;
  • 证书是否被撤销;
  • 证书链最终是否到达受信任根 CA。

PKI 是围绕 CA、证书、密钥、撤销和信任链建立的公钥基础设施。

9.1 实体鉴别、不重数与重放防护

仅验证一段口令或签名,并不能自动证明报文是本次会话刚刚产生的。攻击者可能记录合法鉴别报文,之后原样重放。实体鉴别因此常加入不重数(nonce)、时间戳或序号。

不重数是一次性随机挑战。验证方发送本次会话的新随机数,对方必须把它纳入签名、MAC 或加密响应。旧响应对应旧随机数,无法通过本次验证。

Kerberos 依赖可信 KDC 发放带有效期的票据;证书体系通过 CA 证明公钥属于哪个实体。二者都解决身份与密钥的可信绑定,但信任模型不同。

10. 中间人攻击与端点认证

即使通信内容已经加密,如果没有确认对方身份,攻击者仍可以分别和双方建立两条加密连接,再在中间转发数据。这就是中间人攻击。真正的防护关键不是再加一层加密,而是可靠地验证通信对象。

在没有可靠身份鉴别时,攻击者 M 可以位于 A 与 B 之间:

  • A 以为自己在与 B 通信,实际连接到 M;
  • B 以为自己在与 A 通信,实际也连接到 M;
  • M 解密、查看、修改后再分别加密转发。

仅有加密算法并不能自动阻止中间人攻击。关键是公钥或通信端点的身份必须经过可信验证,证书体系正是为此存在。

11. KDC 与对称密钥分配

如果每两个用户都预先共享一把独立密钥,用户一多,密钥数量就会迅速增长。KDC 让每个用户只与可信中心共享长期密钥,再由中心为一次通信分发短期会话密钥。

若每两名用户都预先共享独立密钥,用户数量增加后密钥数量迅速增长。KDC(密钥分配中心)允许每个用户只与可信中心共享长期密钥,再由中心为一次通信生成会话密钥。

Kerberos 基于可信第三方、时间戳和票据进行身份鉴别。用户获得票据后,可在不反复发送口令的情况下访问多个服务。

KDC 主要解决对称会话密钥分配;CA 主要解决公钥与身份的可信绑定。

12. IPsec、TLS 与 PGP

安全保护可以放在协议栈的不同位置。IPsec 保护 IP 分组,TLS 为基于 TCP 的应用建立安全通道,PGP 则直接保护邮件内容。放置层次不同,保护范围和部署方式也会不同。

12.1 IPsec

IPsec 工作在网络层,可保护 IP 分组,常用于站点到站点 VPN 或主机安全通信。

12.2 SSL/TLS

TLS 位于应用协议与 TCP 之间,为应用提供加密、完整性保护和服务器身份鉴别。HTTPS 可以理解为 HTTP 运行在 TLS 之上。

12.3 PGP

PGP 常用于应用层的邮件加密和数字签名。它结合公钥算法、对称加密和哈希,实现高效且可验证的邮件保护。

13. 防火墙与访问控制

防火墙要解决的是哪些流量可以穿过网络边界。它可以根据地址、端口、连接状态或应用内容放行、拒绝或记录流量。但被允许通过的流量不一定都可信,防火墙也不能代替加密。

防火墙位于网络边界或主机内部,根据安全策略允许、拒绝或记录流量。

常见技术:

  • 分组过滤:根据源/目的 IP、端口和协议等字段判断;
  • 状态检测:维护连接状态,区分合法响应与异常入站流量;
  • 应用级网关:理解特定应用协议并代理通信。

防火墙主要作用是访问控制,不是对所有通过的数据包进行加密。样卷中“防火墙采用的主要技术”通常选数据包过滤。

14. 入侵检测 IDS 与入侵防御 IPS

防火墙主要按既定规则放行或拒绝流量,但有些攻击会混在合法连接中。IDS 和 IPS 会进一步分析行为是否异常。IDS 主要负责发现和告警,IPS 位于流量路径上,还可以直接阻断。

IDS(入侵检测系统)分析流量、日志或主机行为,识别已知攻击特征或异常活动,并产生告警。

IPS(入侵防御系统)通常部署在流量路径上,在检测后可主动阻断。

防火墙主要依据规则决定“是否允许通过”;IDS 更关注“已经通过或正在发生的行为是否可疑”。两者作用互补。

15. DoS、DDoS 与服务可用性

攻击者不一定要破解密码。只要耗尽带宽、连接表、CPU 或其他关键资源,也能让合法用户无法使用服务。DoS 和 DDoS 直接威胁可用性,因此通常要结合限速、流量清洗、冗余和容量保护来应对。

DoS 攻击通过消耗带宽、连接表、CPU 或应用资源,使合法用户无法使用服务。分布式拒绝服务 DDoS 从大量受控主机同时发起流量,单纯封禁一个源地址难以解决。

应对方式可能包括限速、流量清洗、负载均衡、连接保护和分布式部署。加密并不能直接解决资源耗尽问题,因此安全目标必须包括可用性。

章节练习与解析

材料原题

原题 1|样卷·填空题

在加密过程的数学表达式 $C=E_k(m)$ 中,$E$ 代表的_______是公开的,而 $k$ 代表的密钥需要保密。

[!example]- 解析 **答案:加密算法。**现代密码系统通常假设算法公开,安全性依赖密钥保密,而不是依赖攻击者不知道算法。

原题 2|样卷·单项选择题

防火墙系统采用的主要技术是_______。

  • A. 对通过的数据包进行加密
  • B. 对通过的数据包进行过滤
  • C. 对通过的数据包进行正确性检测
  • D. 对通过的数据包进行完整性检测

[!example]- 解析 **答案:B。**防火墙的核心职责是按照安全策略允许或阻止流量,包括分组过滤、状态检测和应用代理等方式。

原题 3|样卷·问答题

主机 A 给主机 B 发送数据,采用数字签名技术。请回答:

  1. A 签名时使用谁的什么密钥?
  2. B 验证签名时使用谁的什么密钥?
  3. 签名端和验证端分别进行什么运算?
  4. 数字签名主要防范主动攻击还是被动攻击?

[!example]- 解析 A 使用 A 的私钥对报文摘要进行签名;B 使用 A 的公钥验证。签名端先计算哈希,再执行私钥签名运算;验证端用公钥验证并比较摘要。数字签名主要防范篡改、伪造和抵赖等主动攻击,不能单独提供保密性。

补充题

题 4|安全目标

关于安全目标,下列说法正确的是________。

  • A. 保密性防止未授权读取,完整性防止未发现的篡改,身份鉴别确认通信实体
  • B. 可用性表示攻击者可以随时使用系统
  • C. 不可否认性只表示数据不能被压缩
  • D. 身份鉴别等同于对所有数据进行加密

[!example]- 解析 **答案:A。**保密性防止未授权读取。完整性防止数据被未发现地篡改。身份鉴别确认通信实体是谁。不可否认性防止参与者事后否认已执行的行为。可用性保证授权用户可以正常获得服务。

题 5|主动攻击与被动攻击

关于主动攻击与被动攻击,下列分类正确的是________。

  • A. 窃听和流量分析属于被动攻击;篡改、重放、伪造和 DDoS 属于主动攻击
  • B. 窃听属于主动攻击,DDoS 属于被动攻击
  • C. 流量分析一定会修改报文内容
  • D. 重放攻击只观察信息,不改变系统状态

[!example]- 解析 **答案:A。**窃听和流量分析属于被动攻击,攻击者只观察信息;篡改、重放、伪造和 DDoS 会改变数据或系统状态,属于主动攻击。

题 6|对称加密

关于对称加密,下列说法正确的是________。

  • A. 运算速度快、适合大量数据,但通信双方必须安全获得同一个秘密密钥
  • B. 对称加密不需要任何密钥
  • C. 对称加密只能用于数字签名,不能用于保密
  • D. 参与者越多,密钥管理一定越简单

[!example]- 解析 **答案:A。**对称算法运算速度快、开销低,适合加密大量数据。困难在于通信双方必须安全获得同一个秘密密钥。参与者数量增大时,密钥分发、更新和撤销会变得复杂。

题 7|公钥加密

A 希望只有 B 能读到消息,应使用________加密。

  • A. B 的公钥
  • B. A 的私钥
  • C. 任意人的公钥
  • D. B 的公开证书序列号

[!example]- 解析 **答案:A。**应使用 B 的公钥加密,只有 B 的私钥可以解密。A 的私钥对应的公钥通常公开,任何人都可用 A 的公钥恢复或验证相关结果,因此私钥操作主要用于签名。

题 8|混合加密

TLS 通常不使用公钥算法直接加密整个长连接中的所有应用数据,主要因为________。

  • A. 公钥算法开销大,通常用于认证和密钥协商,后续大量数据用对称算法加密
  • B. 对称算法完全不能用于大量数据
  • C. 公钥算法没有任何计算开销
  • D. TLS 只提供明文传输

[!example]- 解析 **答案:A。**公钥算法计算开销大、可处理的数据规模有限。TLS 用公钥机制完成身份认证和会话密钥协商,随后使用高效的对称算法加密大量应用数据,这称为混合加密。

题 9|哈希摘要

关于密码学哈希函数,下列说法正确的是________。

  • A. 应具有固定长度输出、单向性、抗第二原像和抗碰撞等性质
  • B. 哈希值相同可以从数学上绝对证明两个输入完全相同
  • C. 哈希函数必须使用双方共享密钥
  • D. 哈希输出长度必须等于输入长度

[!example]- 解析 **答案:A。**应具有固定长度输出、计算高效、单向性、抗第二原像和抗碰撞等性质。由于输入空间远大于输出空间,理论上一定存在碰撞,因此哈希值相同不能形成数学上的绝对证明。

题 10|MAC 与普通哈希

报文鉴别码 MAC 相比普通哈希多使用了________。

  • A. 通信双方共享的秘密密钥
  • B. 以太网前导码
  • C. DNS 查询编号
  • D. IP 分片偏移

[!example]- 解析 **答案:A。**MAC 使用通信双方共享的秘密密钥,可验证报文完整性并证明报文来自掌握该共享密钥的一方。由于双方都能生成合法 MAC,通常不具备不可否认性。

题 11|数字签名与保密

关于数字签名与保密,下列说法正确的是________。

  • A. 数字签名本身不防止第三方看到明文,可结合加密实现保密与身份证明
  • B. 数字签名等同于对明文加密
  • C. 数字签名只能用于压缩报文
  • D. 只要签名就不需要验证公钥归属

[!example]- 解析 **答案:A。**数字签名本身不加密明文,不能提供保密性。可先由发送者对摘要签名,再使用接收者公钥或协商出的会话密钥加密“报文+签名”。接收者解密后再验证签名。

题 12|证书与 PKI

公钥已经可以公开,仍需要数字证书和 CA,主要因为________。

  • A. 证书由可信 CA 对“身份—公钥”绑定关系签名,帮助验证公钥确实属于声明实体
  • B. 公开公钥天然等于可信,不需要任何绑定关系
  • C. CA 负责传输所有网页正文
  • D. 数字证书只用于增加 IP 地址长度

[!example]- 解析 **答案:A。**公开并不等于可信。攻击者可以替换公钥并冒充目标。证书由可信 CA 对“身份—公钥”绑定关系进行签名,接收方验证证书链后,才能相信该公钥确实属于声明的实体。

题 13|中间人攻击

在没有验证证书的密钥交换中,中间人攻击的典型方式是________。

  • A. 攻击者分别与通信双方建立独立密钥关系,对双方互相冒充
  • B. 攻击者只能被动观察,无法转发或修改
  • C. 攻击者必须知道双方私钥才能替换公钥
  • D. 验证证书与防中间人攻击无关

[!example]- 解析 **答案:A。**攻击者分别与通信双方建立独立密钥关系,对 A 冒充 B、对 B 冒充 A,接收、解密、可能修改后再重新加密转发。双方若只完成加密而不验证对端身份,仍可能被中间人控制。

题 14|KDC

KDC 在对称密钥体系中的作用,正确的是________。

  • A. 帮助通信双方获得会话密钥,减少每对用户预先共享独立密钥的需求
  • B. 负责把域名解析为 IP 地址
  • C. 只用于以太网交换机学习 MAC 地址
  • D. 完全消除任何中心信任风险

[!example]- 解析 **答案:A。**KDC 帮助通信双方获得会话密钥,减少每对用户预先共享独立密钥的需求。它集中简化密钥分配,但成为高价值、强信任中心。若 KDC 被攻破或不可用,许多通信都会受影响。

题 15|IPsec、TLS 与 PGP

IPsec、TLS 和 PGP 的典型保护范围,正确的是________。

  • A. IPsec 保护 IP 分组,TLS 保护应用连接,PGP 保护邮件或文件内容
  • B. IPsec 只保护电子邮件正文,TLS 只用于路由表计算
  • C. PGP 只用于以太网碰撞检测
  • D. 三者都只能工作在物理层

[!example]- 解析 **答案:A。**IPsec 在网络层保护 IP 分组,常用于 VPN。TLS 位于应用与运输层之间,为 Web 等应用连接提供加密和认证。PGP 主要保护电子邮件或文件内容。

题 16|防火墙规则

某服务器只允许互联网用户访问 TCP 443,禁止外部直接访问管理端口 22,但允许内网管理员访问 22。设计规则时至少要匹配________。

  • A. 源网络、目的服务器地址、运输层协议、目的端口和连接状态
  • B. 只匹配网页标题
  • C. 只匹配以太网前导码
  • D. 只匹配 DNS TTL

[!example]- 解析 **答案:A。**至少需要源网络、目的服务器地址、运输层协议、目的端口和连接状态。允许任意外部源到服务器 TCP 443。拒绝外部源到 TCP 22。允许指定内网管理网段到 TCP 22。

题 17|IDS 与 IPS

IDS 和 IPS 的区别,正确的是________。

  • A. IDS 主要检测并告警,IPS 位于流量路径上并可自动阻断
  • B. IDS 会自动阻断所有流量,IPS 只记录日志
  • C. IPS 误报只会增加分析工作量,不会影响业务
  • D. IDS 和 IPS 都只用于 DNS 缓存

[!example]- 解析 **答案:A。**IDS 主要检测并告警,IPS 位于流量路径上,可自动阻断。IDS 误报会增加分析工作量;IPS 误报可能直接阻断正常业务。

题 18|DoS 与 DDoS

关于 DoS 和 DDoS,下列说法正确的是________。

  • A. DDoS 由大量分布式主机协同发动,仅增加服务器计算能力不能彻底解决上游链路等资源耗尽问题
  • B. DoS 一定来自大量分布式主机,DDoS 一定来自单一主机
  • C. DDoS 只会占用浏览器缓存
  • D. 增加服务器 CPU 一定能彻底解决所有 DDoS

[!example]- 解析 **答案:A。**DoS 可由单一来源发动,DDoS 由大量分布式主机协同发动。攻击可能先耗尽上游链路带宽、连接状态表、DNS 或其他基础设施,因此仅扩充服务器 CPU 或内存并不足够。

题 19|重放攻击

加密报文本身不能自动防止重放攻击,原因是________。

  • A. 攻击者即使看不懂密文,也可能原样再次发送过去的合法密文
  • B. 加密会自动为每个报文加入全局唯一时间戳
  • C. 重放攻击只发生在明文中
  • D. 防重放只需要增加网页字体大小

[!example]- 解析 **答案:A。**协议通常使用序号、时间戳、随机数、一次性令牌或滑动接收窗口,识别已经处理过或过期的报文。

题 20|恶意程序

病毒、蠕虫和木马在传播方式上的区别,正确的是________。

  • A. 病毒依附宿主文件,蠕虫可利用网络漏洞自主复制,木马伪装成正常程序诱导运行
  • B. 蠕虫必须依附宿主文件才能传播
  • C. 木马的主要特征是自动修复系统漏洞
  • D. 病毒、蠕虫和木马传播方式完全相同

[!example]- 解析 **答案:A。**病毒依附宿主文件并在宿主运行时传播;蠕虫可利用网络漏洞自主复制;木马伪装成正常程序诱导运行,重点在隐藏未授权功能。

题 21|不重数与重放攻击

实体鉴别中加入 nonce 能够抵抗录制后重放,主要因为________。

  • A. 每次验证使用新的随机挑战,旧响应绑定旧 nonce,无法通过新挑战
  • B. nonce 会让所有报文变成明文
  • C. nonce 是固定不变的长期密码
  • D. nonce 只用于计算以太网帧长

[!example]- 解析 **答案:A。**每次验证使用新的随机挑战,响应必须绑定当前 nonce;旧会话录制的响应绑定旧随机数,无法通过新挑战验证。


第九章 综合通信场景

前面各章分别讲了不同层的机制,这一章把它们重新放回完整通信过程。每个场景都从数据产生开始,沿途追踪地址、首部、转发表和协议状态,看看同一份数据经过不同层时到底发生了什么变化。

1. 综合场景一:同网段主机发送数据

主机 A:

  • IP:192.168.1.10/24
  • MAC:AA-AA-AA-AA-AA-AA

主机 B:

  • IP:192.168.1.20/24
  • MAC:BB-BB-BB-BB-BB-BB

A 向 B 发送数据时,A 用 /24 掩码判断两者网络地址均为 192.168.1.0,因此属于同一子网,不需要经过默认网关。

若 ARP 缓存中没有 B 的记录,A 广播 ARP 请求。B 返回自己的 MAC 后,A 构造帧:

层次 目的
IP 192.168.1.10 192.168.1.20
Ethernet AA-AA-AA-AA-AA-AA BB-BB-BB-BB-BB-BB

交换机根据目的 MAC 把帧送往 B 所在端口。

[!example] 核心结论 同网段通信中,IP 目的地址和帧目的 MAC 都属于最终目标主机,但两种地址仍承担不同层次的功能。

2. 跨网段传输中的地址变化

主机 A 位于 128.1.0.0/16,目标主机 B 位于 128.4.0.0/16,中间经过多个路由器。

A 判断 B 不在本地子网,于是把帧交给默认网关 R1:

  • IP 源地址:A 的 IP;
  • IP 目的地址:B 的 IP;
  • 帧源 MAC:A 的 MAC;
  • 帧目的 MAC:R1 本地接口 MAC。

R1 收到后去掉原帧首尾,根据目的 IP 查路由表,再重新封装:

  • IP 源、目的通常仍是 A 和 B;
  • 新帧源 MAC 是 R1 输出接口 MAC;
  • 新帧目的 MAC 是下一跳路由器 MAC。

到达最后一台路由器后,帧目的 MAC 才是 B 的 MAC。

[!warning] 逐跳变化与端到端保持 MAC 地址逐跳变化;IP 地址通常端到端保持;端口号属于运输层连接,也通常端到端保持。NAT 会修改 IP 和端口,是这一规律的特殊情况。

3. 综合场景三:子网与广播地址

给定主机 211.15.105.164,掩码 255.255.255.224

掩码为 /27,块大小为 32。最后一字节子网边界:

0, 32, 64, 96, 128, 160, 192, 224

164 位于 160~191:

项目 结果
网络地址 211.15.105.160
广播地址 211.15.105.191
第一个可用地址 211.15.105.161
最后一个可用地址 211.15.105.190

地址 211.15.105.228/27 位于 224~255,网络地址为 211.15.105.224,因此与 164 不同网段。

4. 综合场景四:CIDR 汇聚

网络:

  • 156.26.56.0/24
  • 156.26.57.0/24
  • 156.26.58.0/24
  • 156.26.59.0/24

它们数量为 4,第三字节起点 56 能被 4 整除,满足 /22 边界,因此可汇聚为:

156.26.56.0/22

该条目覆盖第三字节 56~59。

156.26.1.0/24156.26.4.0/24 不能合并为单个精确 /22。一种精确拆分为:

  • 156.26.1.0/24
  • 156.26.2.0/23,覆盖 2~3;
  • 156.26.4.0/24

路由汇聚的目标不是机械减少条目,而是在不改变转发含义的前提下使用共同前缀。

5. 综合场景五:IP 分片表格

原始总长度 2200 B,首部 20 B,MTU 820 B。

分片 数据长度 总长度 片偏移 MF
1 800 820 0 1
2 800 820 100 1
3 580 600 200 0

三个分片具有相同标识字段。接收端根据标识、片偏移和 MF 重组原始数据报。

6. 综合场景六:RIP 路由表更新

收到邻居 R2 的向量后,所有距离先加 1,下一跳统一记为 R2。候选路由与原表逐项比较。

目的网络 原路由 经 R2 候选 更新结果
Net1 3,经 R3 5,经 R2 保留 3,经 R3
Net2 4,经 R2 3,经 R2 更新为 3,经 R2
Net3 4,经 R2 新增
Net4 6,经 R4 5,经 R2 改为 5,经 R2
Net5 7,经 R2 新增
Net6 8,经 R5 未通告 保留

这里同时体现了“更短路径替换”和“同一下一跳按新值更新”两条规则。

7. 综合场景七:TCP 十六进制首部

首部:

09740017 B701E3BB B265F81A 5018FFAF 2D6F0000

字段解析:

字段 十六进制 结果
源端口 0974 2420
目的端口 0017 23
首部长度 5 20 B
选项 基本首部恰好 20 B

目的端口 23 对应 Telnet。客户端临时端口 2420 向服务器 23 端口发送,因此报文由客户端发出。

5018 中还包含标志位。低位 0x18 表示 ACK 与 PSH 置 1,常见于已建立连接中的数据传输。

8. 综合场景八:TCP 序号与累计确认

三段数据长度依次为 300 B、400 B、500 B,第三段序号为 900。

由连续字节流可反推:

  • 第二段序号:$900-400=500$;
  • 第一段序号:$500-300=200$。

若只收到第一段和第三段,第二段缺失,因此确认号为 500。第三段虽然已经到达,但 500~899 之间存在缺口,累计确认不能越过缺失区间。

9. 综合场景九:DNS 与 HTTP 抓包

抓包出现:

192.168.1.102 → 202.101.172.35  DNS Standard query A www.sohu.com
202.101.172.35 → 192.168.1.102  DNS Standard query response
192.168.1.102:1984 → 114.80.130.92:80 TCP SYN

由此得到:

  • DNS 客户端:192.168.1.102
  • DNS 服务器:202.101.172.35
  • Web 服务器:114.80.130.92
  • HTTP 客户端端口:1984;
  • HTTP 服务器端口:80。

DNS 服务器返回地址信息,真正的网页数据由后续 TCP 连接的 Web 服务器返回。

10. 综合场景十:完整网页访问

某主机第一次访问 http://www.example.com/index.html,缓存中没有相关记录。完整过程如下:

  1. 浏览器读取 URL,确定使用 HTTP 和默认端口 80;
  2. 主机向 DNS 服务器发送查询,获得 Web 服务器 IP;
  3. 操作系统根据目的 IP 与路由表确定输出接口和下一跳;
  4. 若下一跳 MAC 未知,使用 ARP 查询;
  5. 客户端临时端口向服务器 80 端口发起 TCP 三次握手;
  6. 浏览器发送 HTTP GET 请求;
  7. 服务器返回状态行、首部和 HTML 内容;
  8. 浏览器解析 HTML,继续请求其他资源;
  9. 每个数据块向下封装为 TCP 段、IP 数据报和以太网帧;
  10. 路由器逐跳更换链路层帧并转发 IP 数据报;
  11. TCP 通过确认、重传、窗口和拥塞控制维持传输;
  12. 页面资源到齐后完成渲染。

这个场景把各层关系连在一起:DNS 解决名称,TCP 解决进程间可靠传输,IP 解决跨网络寻址与路由,以太网和 ARP 解决当前链路交付,物理层负责实际信号。

11. 综合场景十一:数字签名与保密同时存在

A 要向 B 发送文件,要求:

  • B 能确认文件由 A 发出;
  • 文件传输中未被修改;
  • 只有 B 能阅读内容。

一种基本组合:

  1. A 对文件计算哈希;
  2. A 使用 A 的私钥签名摘要;
  3. A 生成随机对称会话密钥;
  4. A 使用会话密钥加密文件与签名;
  5. A 使用 B 的公钥加密会话密钥;
  6. B 使用 B 的私钥解出会话密钥;
  7. B 解密文件与签名;
  8. B 使用 A 的公钥验证签名。

公钥机制解决密钥分配和身份验证,对称加密负责高效保护大量数据。


第十章 固定事实、公式与概念对照

前面已经解释了各个概念的来龙去脉,这一章只负责把固定值、公式和容易混淆的概念集中起来。它适合考前快速查阅,但不能代替前文对原理的理解。

1. 地址与长度

内容 固定值
IPv4 地址 32 bit
IPv6 地址 128 bit
以太网 MAC 地址 48 bit / 6 B
TCP/UDP 端口号 16 bit
IPv4 基本首部 20 B
TCP 基本首部 20 B
UDP 首部 8 B
Ethernet V2 最小帧 64 B
Ethernet V2 最大帧 1518 B
Ethernet 数据字段 46~1500 B
Ethernet FCS 4 B
PPP FCS(课程常见) 2 B

2. 常用协议与端口

协议 端口 主要作用
FTP 数据 TCP 20 传统主动模式数据连接
FTP 控制 TCP 21 文件传输命令与会话控制
SSH TCP 22 加密远程登录
Telnet TCP 23 明文远程终端
SMTP TCP 25 发送邮件、服务器间传递邮件
DNS UDP/TCP 53 域名解析
DHCP Server UDP 67 提供地址配置
DHCP Client UDP 68 接收地址配置
HTTP TCP 80 Web 请求与响应
POP3 TCP 110 接收邮件
IMAP TCP 143 服务器端邮件管理与同步
HTTPS TCP 443 HTTP over TLS
RIP UDP 520 距离向量路由信息交换

3. 协议所属层次

层次 协议或技术
应用层 HTTP、DNS、FTP、SMTP、POP3、IMAP、DHCP、SNMP、Telnet、SSH
运输层 TCP、UDP
网络层 IP、ICMP、IGMP、RIP、OSPF、BGP、IPsec
数据链路层 Ethernet、PPP、HDLC、VLAN、STP、ARP(常放在网络层配套协议中讲解)
物理层 信号编码、调制、传输介质、复用

ARP 的层次在不同教材中表述可能不同。本课程通常将其作为 IPv4 网络层配套协议,但它直接封装在以太网帧中,不经过 IP。

4. 地址的职责

地址 解决的问题 典型转发设备
域名 便于人类标识网络资源 DNS 解析,不直接供路由器转发
IP 地址 主机在哪个网络,跨网络送向哪里 路由器
MAC 地址 当前链路交给哪个接口 交换机
端口号 到达主机后交给哪个进程 主机运输层

5. 设备对照

设备 层次 地址依据 主要作用
中继器/集线器 物理层 放大、复制信号
网桥/交换机 数据链路层 MAC 局域网内转发帧、隔离冲突域
路由器 网络层 IP 连接不同网络、隔离广播域
防火墙 多层实现 地址、端口、状态、应用内容 访问控制

6. 常用 Windows 网络命令

命令 作用
ipconfig 查看基本 IP 配置
ipconfig /all 查看网卡、MAC、IP、掩码、网关、DNS 等详细配置
ipconfig /displaydns 查看本机 DNS 缓存
arp -a 查看 ARP 缓存
route print 查看路由表
route add 添加路由
ping 使用 ICMP 测试基本连通性和 RTT
tracert 利用 TTL 探测路径中的路由器
nslookup 查询 DNS 解析结果和 DNS 服务器
netstat -ano 查看连接、监听端口与进程标识

6.1 route add 的基本形式

Windows 添加静态路由的常见形式为:

route add <目标网络> mask <子网掩码> <下一跳地址>

例如:

route add 156.0.0.0 mask 255.0.0.0 156.26.1.1

目标网络与掩码决定匹配范围,下一跳必须能通过本机某个接口直接到达。

7. 核心公式

7.1 发送时延

$$ d_{trans}=\frac{L}{R} $$

7.2 传播时延

$$ d_{prop}=\frac{D}{v} $$

7.3 时延带宽积

$$ \text{BDP}=\text{传播时延}\times\text{带宽} $$

7.4 比特率与波特率

$$ R_b=R_B\log_2V $$

7.5 PCM

$$ R=f_s\log_2Q $$

7.6 奈奎斯特准则

$$ R_{max}=2B\log_2V $$

7.7 香农公式

$$ C=B\log_2(1+S/N) $$ $$ S/N=10^{\mathrm{SNR}_{dB}/10} $$

7.8 子网可用主机数

$$ N=2^h-2 $$

7.9 IP 分片最大数据长度

$$ D_{max}=\left\lfloor\frac{MTU-H}{8}\right\rfloor\times8 $$

7.10 TCP 实际发送窗口

$$ W=\min(rwnd,cwnd) $$

8. 高频概念对照

8.1 可靠传输、流量控制、拥塞控制

机制 面对的问题 典型变量或方法
可靠传输 丢失、出错、重复、乱序 序号、确认、超时、重传
流量控制 接收方来不及处理 rwnd、滑动窗口
拥塞控制 网络内部过载 cwnd、慢启动、拥塞避免

8.2 哈希、MAC、数字签名与加密

技术 密钥 主要目标 防抵赖
哈希 摘要、变化检测
报文鉴别码 共享密钥 完整性、来源鉴别 通常否
数字签名 私钥签名、公钥验证 完整性、鉴别、不可否认
加密 对称密钥或公钥 保密性 不必然

8.3 递归查询与迭代查询

查询方式 被询问服务器承担的责任
递归 返回最终答案或明确失败
迭代 可返回下一步应询问的服务器

8.4 数据报与虚电路

项目 数据报 虚电路
建立阶段 有逻辑连接建立
每个分组地址 携带完整目的地址 常携带虚电路标识
路径 可不同 通常沿已建立路径
中间结点状态 较少 保存连接状态

9. 常见判断题中的边界

  • 交换机根据目的 MAC 转发,根据源 MAC 学习。
  • 路由器根据目的 IP 转发。
  • ARP 根据 IP 查询 MAC,只在本地广播域内工作。
  • ICMP 用于差错报告和诊断,不直接保证可靠传输。
  • TCP 确认号表示期望收到的下一个字节序号。
  • SYN 和 FIN 通常各占用一个序号。
  • UDP 长度包括 UDP 首部和数据,不包括伪首部。
  • IPv4 总长度包括 IP 首部和数据。
  • 片偏移单位是 8 B。
  • 非最后分片数据长度通常是 8 B 的整数倍。
  • 以太网最大帧长 1518 B通常不包括前导码。
  • CRC 余数为 0只表示没有检测到错误,不代表绝对无错。
  • 普通交换机隔离冲突域,但默认不隔离广播域。
  • 路由器隔离广播域。
  • DNS 常用 UDP 53,但并非永远只用 UDP。
  • SMTP 用于发送邮件;POP3、IMAP 用于接收和管理邮件。
  • BGP 是外部网关协议;RIP、OSPF 是内部网关协议。
  • 防火墙主要用于访问控制和分组过滤,不等于加密设备。
  • 数字签名不自动提供保密性。

补充 网络发展、标准与较低频概念

下面这些内容考查频率相对较低,但可以补齐几个容易断开的知识点,包括互联网的发展过程、同步传输标准,以及一些机制的适用边界。

1. ARPANET 与互联网发展

ARPANET 是早期分组交换网络的重要代表。其设计面对两个基础问题:网络采用怎样的拓扑,以及数据采用怎样的交换方式。分组、路由选择和存储转发成为后来互联网的重要思想。

互联网发展可概括为:

  1. 早期实验性分组交换网络;
  2. 主干网、地区网和局域网互联;
  3. 形成多层 ISP 和自治系统互联结构。

历史内容的意义在于说明:互联网不是一开始就是统一、完整的全球网络,而是大量异构网络通过共同协议逐步互联形成。

2. SONET 与 SDH

SONET 和 SDH 是面向光纤同步传输的标准体系,用于规定高速数字信号的复用层次和帧结构。SONET 主要源于北美标准,SDH 是国际标准,两者具有对应关系。

它们属于物理传输与复用体系,和以太网 MAC 帧、IP 路由解决的问题不同。

3. 主动队列管理 AQM

当路由器缓冲区完全填满后才丢包,会导致多个 TCP 连接同时降低窗口,随后又同时增长,形成同步振荡。AQM 在队列完全溢出前,根据队列状态主动丢弃或标记部分分组,使发送方更早感知拥塞。

AQM 是网络设备协助拥塞控制的一类方法,TCP 的 cwnd 仍由发送端维护。

4. TCP 常见状态的含义

  • LISTEN:服务器等待连接;
  • SYN-SENT:客户端已发送 SYN;
  • SYN-RECEIVED:已收到 SYN 并发送 SYN+ACK;
  • ESTABLISHED:连接建立,可传输数据;
  • FIN-WAIT:主动关闭方等待对端确认或 FIN;
  • CLOSE-WAIT:被动关闭方已收到 FIN,等待本地应用关闭;
  • LAST-ACK:被动关闭方已发送 FIN,等待最后 ACK;
  • TIME-WAIT:主动关闭方等待旧报文消失并处理 FIN 重传。

状态名称描述的是本端所处阶段,同一时刻通信双方的状态可能不同。

5. 搜索引擎、DNS 与浏览器的职责边界

搜索引擎根据关键词返回可能相关的网页地址。DNS 把域名解析为 IP。浏览器使用 HTTP/HTTPS 获取和呈现网页。三者都与访问 Web 有关,但不是同一种服务。


期末样卷型自测

下面的题目按照样卷的常见形式组织。做题时先自己判断,再展开解析核对思路;解析不仅给出答案,也说明判断依据或计算过程。

一、填空与选择型

  1. 邮件服务器之间传递邮件通常使用 ________。
  2. Ethernet V2 帧的最大长度通常为 ________ B。
  3. Windows 查看 ARP 缓存使用 ________。
  4. IPv6 地址长度为 ________ bit。
  5. TCP 发送窗口取 rwndcwnd 的 ________ 值。
  6. 交换机转发时查看 ________ 地址。
  7. IEEE 802.2 描述 ________ 子层。
  8. 能够隔离二层广播域的典型设备是 ________。
  9. 外部网关协议是 ________。
  10. 浏览器与 Web 服务器之间常使用 ________。

[!example]- 答案

  1. SMTP;2. 1518;3. arp -a;4. 128;5. 较小;6. 目的 MAC;7. LLC;8. 路由器;9. BGP;10. HTTP/HTTPS。

二、概念辨析型

1. 为什么交换机不能代替路由器完成所有网络互联?

[!example]- 解析 交换机依据 MAC 在一个二层广播域内转发,缺少面向大规模互联网的分层 IP 路由能力,也默认不会隔离广播。路由器连接不同 IP 网络,并依据网络前缀选择下一跳。

2. 为什么 TCP 三次握手属于运输层,而 ARP 不属于运输层?

[!example]- 解析 三次握手建立的是进程到进程的 TCP 连接并同步序号;ARP 解决当前局域网中 IP 到 MAC 的映射,服务于一跳帧交付。

3. 为什么 CRC 能检错却通常不能纠错?

[!example]- 解析 非零余数说明收到的比特串不符合约定多项式关系,但余数通常不足以唯一确定错误位置和错误数量,因此不能直接恢复原数据。

三、计算型

1. PCM

采样率 4000 次/秒,量化 256 级,数据率是多少?

[!example]- 解析 每个样本 8 bit,数据率 $4000\times8=32000$ bit/s。

2. 子网

192.168.10.77/26 的网络地址、广播地址和可用范围是什么?

[!example]- 解析 /26 块大小 64,77 位于 64~127。网络地址 192.168.10.64,广播地址 192.168.10.127,可用范围 192.168.10.65192.168.10.126

3. 分片

IP 总长度 3000 B,首部 20 B,MTU 1000 B。求分片数据长度与偏移。

[!example]- 解析 原始数据 2980 B。非最后分片最大数据:$\lfloor(1000-20)/8\rfloor\times8=976$ B。

数据分为 976、976、976、52 B;偏移为 0、122、244、366;前三片 MF=1,最后一片 MF=0。

4. TCP 确认号

某段序号 1000,携带 600 B 数据,全部按序收到后确认号是多少?

[!example]- 解析 数据序号范围 1000~1599,下一期望字节为 1600,因此确认号 1600。

四、流程型

1. 三次握手

初始序号分别为 x 和 y,写出三个报文的 SYN、ACK、seq、ack。

[!example]- 解析

  1. A→B:SYN=1,seq=x;
  2. B→A:SYN=1,ACK=1,seq=y,ack=x+1;
  3. A→B:ACK=1,seq=x+1,ack=y+1。

2. DNS 解析

本地 DNS 无缓存时,简述获得 www.example.com 地址的层次过程。

[!example]- 解析 主机向本地 DNS 递归查询。本地 DNS 依次向根服务器、.com 顶级域服务器和 example.com 权限服务器查询,取得记录后返回主机并缓存。

3. 数字签名

A 对消息签名,B 验证时分别使用什么密钥?

[!example]- 解析 A 使用 A 的私钥签名,B 使用 A 的公钥验证。


全文知识主线

学完整份资料后,可以把所有章节重新连成一条通信链:应用产生有意义的报文,运输层把数据交给正确进程,网络层选择跨网络路径,数据链路层完成当前一跳的成帧与转发,物理层再把比特变成信号。接收端沿相反方向逐层解释这些控制信息。

计算机网络中的协议并不是彼此孤立的术语,而是对一系列连续问题的分工回答:

  • 物理层把比特表现为信号;
  • 数据链路层在一条链路上划分帧、检错并完成 MAC 交付;
  • 网络层使用 IP 和路由把分组送过多个网络;
  • 运输层用端口定位进程,并按应用需求提供可靠或轻量传输;
  • 应用层规定 DNS、HTTP、邮件等报文的具体含义;
  • 安全机制在这些通信能力之上补充保密性、完整性、鉴别和访问控制。

一次网页访问正是这些机制的组合:域名经 DNS 变为 IP,路由表确定方向,ARP 获得下一跳 MAC,TCP 建立连接并可靠传输,HTTP 表达请求与响应,帧最终被编码为物理信号。理解每个机制所面对的前置问题,才能解释它为什么采用当前设计,也才能在计算题、报文题和综合流程题中把分散字段还原为完整通信过程。

声明:CaoXin 的小站|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - Network