Computer Network 期末中文复习资料详细版

说明:本资料按你上传的期末复习提纲和照片中的参考题整理。正文用中文讲解,关键英文术语保留在括号中,方便你理解后再转成英文答题。照片中个别题目因拍摄角度不完整,原题按可识别内容整理,若不影响题意则做了少量顺句处理。


0. 考试范围与复习优先级

0.1 题型和分值

题型 数量 分值 复习策略
判断题 10 题 10 分 记概念、协议特点、设备层次
选择题 20 题 20 分 记关键定义、协议区别、字段含义
计算题 5 题 40 分 重点练时延、信道容量、CSMA/CD、CIDR、IP 分片、TCP 窗口
综合应用题 3 题 30 分 重点练子网划分、路由表、RIP 更新、TCP 序号确认号

0.2 最高优先级章节

  1. 第四章 网络层:CIDR、子网划分、路由表、最长前缀匹配、IP 分片、ARP、RIP、NAT。
  2. 第五章 运输层:UDP/TCP 区别、TCP 首部、序号和确认号、窗口、三次握手、四次挥手。
  3. 第三章 数据链路层:CSMA/CD、争用期、最小帧长、二进制指数退避、MAC 帧格式。
  4. 第一、二章计算基础:时延、传播时延、发送时延、奈奎斯特、码元速率、CDMA。

第一部分:详细知识点

第一章 概述

1.1 网络协议的概念

网络协议(network protocol) 是通信双方必须共同遵守的规则集合。协议通常包括三个要素:

要素 含义 举例
语法 syntax 数据和控制信息的格式 IP 首部中源地址和目的地址各占 32 bit
语义 semantics 每个字段或控制信息代表什么 TCP 中 SYN=1 表示请求建立连接
同步 timing 通信双方动作的先后顺序和速率匹配 TCP 三次握手先 SYN,再 SYN+ACK,再 ACK

理解例子:两个人打电话时,语言相当于语法,话的含义相当于语义,谁先说、什么时候回应相当于同步。网络通信也一样,只有格式、含义和时序都一致,双方才能正确通信。


1.2 计算机网络按作用范围分类

类型 英文 范围 例子
个人区域网 PAN 几米到十几米 蓝牙耳机连接手机
局域网 LAN 一个房间、楼层、校园局部 实验室以太网
城域网 MAN 一个城市 城市教育网
广域网 WAN 跨地区、跨国家 运营商骨干网
互联网 Internet 全球互连网络 公共互联网

易错点:互联网不是单个网络,而是许多异构网络通过路由器互连形成的网络集合。


1.3 互联网按工作方式划分

从功能角度看,互联网可以分为:

  1. 边缘部分(edge part):由主机、服务器、客户端组成,主要给用户提供服务。
  2. 核心部分(core part):由路由器和高速链路组成,主要负责分组交换和路由转发。

从通信模式看,常见有:

模式 特点 例子
客户服务器方式 C/S 客户端请求,服务器响应 浏览器访问网页
对等方式 P2P 主机之间地位相对平等 BT 下载、P2P 文件共享

1.4 报文交换和分组交换

项目 报文交换 message switching 分组交换 packet switching
传输单位 完整报文 把报文切成较小分组
存储转发 整个报文到达后再转发 每个分组到达后即可转发
时延 大报文时延大 更适合突发数据
缓存要求 较低
当前互联网 很少直接使用 主要采用分组交换

举例:发送一个 100 MB 文件,如果采用报文交换,中间节点必须先收到完整 100 MB 才能转发;如果采用分组交换,可以切成很多小分组,前面的分组先转发,后面的分组继续传输,整体效率更高。


1.5 计算机网络性能指标

1.5.1 速率、带宽、吞吐量

指标 含义 单位 注意点
速率 data rate 数据传输速率 bit/s 1 Mbit/s = 10^6 bit/s
带宽 bandwidth 网络理论最高传输能力 bit/s 不是日常说的“频带宽度”时,常指最高数据率
吞吐量 throughput 实际通过网络的数据量 bit/s 通常小于带宽

例子:你的宽带标称 100 Mbit/s,这是带宽;实际下载只有 70 Mbit/s,这是吞吐量。

1.5.2 时延 delay

总时延通常由四部分构成:

总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延
时延 公式 含义
发送时延 transmission delay 数据长度 / 发送速率 把所有 bit 推到链路上所需时间
传播时延 propagation delay 链路长度 / 信号传播速率 信号在介质中传播所需时间
处理时延 processing delay 无固定公式 路由器检查首部、查表等
排队时延 queuing delay 无固定公式 分组等待输出链路空闲的时间

关键区别:发送时延和数据长度有关,传播时延和距离有关。发送一个很大的文件时,发送时延可能占主导;发送一个很小的分组到很远的地方时,传播时延可能占主导。

1.5.3 往返时间 RTT

RTT(round-trip time)是从发送方发送一个短报文开始,到收到对方确认所经过的时间。TCP 计算超时重传时间时会用到 RTT。

1.5.4 利用率

利用率表示链路或网络资源被使用的比例。利用率过低说明资源浪费,利用率过高则可能导致排队时延快速增加。


1.6 计算机网络体系结构

网络体系结构采用分层思想。每一层只向上层提供服务,并使用下层提供的服务。

概念 含义 举例
实体 entity 某一层中实现协议的活动元素 TCP 实体、IP 实体
对等层 peer layer 不同主机中同一层 主机 A 的 TCP 与主机 B 的 TCP
协议 protocol 对等层之间通信的规则 TCP、IP、HTTP
服务 service 下层向上层提供的功能 IP 为 TCP 提供尽力而为交付
协议数据单元 PDU 每层传输的数据单位 帧、IP 数据报、TCP 报文段

第二章 物理层

2.1 信道极限容量

信道容量受到两个因素限制:

  1. 奈奎斯特准则(Nyquist):无噪声但带宽有限时,码元速率不能无限提高。
  2. 香农公式(Shannon):有噪声信道中,信道容量受带宽和信噪比限制。

奈奎斯特公式

最高数据率 = 2W log2(V)

其中:

  • W 是信道带宽,单位 Hz。
  • V 是每个码元可取的离散电平数。
  • log2(V) 表示每个码元携带多少 bit。

例子:若最高码元速率为 20000 baud,采用 16 个不同电平,则每个码元携带 log2(16)=4 bit,最高数据率为 20000×4=80000 bit/s。

香农公式

C = W log2(1 + S/N)

其中:

  • C 是信道容量。
  • W 是带宽。
  • S/N 是信噪比的普通数值形式,不是 dB 形式。

若题目给出信噪比 dB,需要先换算:

S/N(dB) = 10 log10(S/N)

2.2 比特率和波特率

概念 英文 含义 单位
比特率 bit rate 每秒传输多少 bit bit/s
波特率 baud rate 每秒传输多少个码元 baud

二者关系:

比特率 = 波特率 × 每个码元携带的 bit 数

若有 V 种离散状态,则:

每个码元携带 log2(V) bit

例子:若波特率为 1000 baud,每个码元有 8 种状态,则每个码元携带 log2(8)=3 bit,比特率为 3000 bit/s。


2.3 信道复用技术

复用方式 英文 思想 例子
频分复用 FDM 不同用户占用不同频带 广播电台不同频率
时分复用 TDM 不同用户轮流占用时间片 传统电话复用
统计时分复用 STDM 按实际需求动态分配时间片 分组交换中的动态共享
波分复用 WDM 光纤中不同波长传不同信号 光纤骨干网
码分复用 CDM/CDMA 不同用户使用不同码片序列 移动通信中的扩频技术

2.4 CDMA 的计算方法

CDMA 的核心是不同站点的码片序列互相正交。判断某个站是否发送数据时,用接收序列和该站码片序列做内积,再除以码片长度。

结果 = 接收序列 · 某站码片序列 / 码片长度

判断规则:

结果 含义
+1 该站发送 bit 1
-1 该站发送 bit 0
0 该站没有发送

第三章 数据链路层

3.1 静态和动态划分信道

方法 类型 特点
FDM、TDM、WDM、CDMA 静态划分 资源预先分配,冲突少,但空闲时可能浪费
ALOHA、CSMA、CSMA/CD 动态划分 按需竞争信道,适合突发数据

3.2 CSMA/CD 协议

CSMA/CD 是传统共享式以太网使用的介质访问控制协议。

全称:Carrier Sense Multiple Access with Collision Detection,载波监听多点接入/碰撞检测。

工作过程:

  1. 先听后发:发送前先监听信道。
  2. 边发边听:发送过程中继续检测是否发生碰撞。
  3. 碰撞停止:一旦检测到碰撞,立即停止发送。
  4. 发送干扰信号:让所有站都知道发生碰撞。
  5. 随机退避:等待一段随机时间后重发。

适用条件:CSMA/CD 适合半双工共享式以太网。现代交换式全双工以太网基本不再使用 CSMA/CD。


3.3 争用期和最小帧长

争用期

争用期等于两倍单程传播时延:

争用期 = 2τ

其中 τ 是信号从链路一端传播到另一端的时间。

最小帧长

为了保证发送方在发送完成前能够检测到最远端产生的碰撞,需要满足:

最小帧长 ≥ 数据率 × 2τ

理解例子:如果帧太短,发送方可能已经发送完毕,以为发送成功,但远端碰撞信号还没传回来。这样就无法检测碰撞。因此共享式以太网必须规定最小帧长。


3.4 二进制指数退避算法

发生第 k 次碰撞后,从区间中随机选择一个整数 r:

r ∈ [0, 2^k - 1]

实际以太网中 k 通常取 min(碰撞次数, 10)。等待时间为:

等待时间 = r × 512 bit time

若连续碰撞达到 16 次,通常放弃发送并向上层报告错误。

例子:第 3 次碰撞后,r 可以从 0 到 7 中随机选一个。若 r=5,则等待 5 个争用期单位后再尝试发送。


3.5 10BASE-T

10BASE-T 的含义:

部分 含义
10 数据率为 10 Mbit/s
BASE 基带传输 baseband
T 双绞线 twisted pair

10BASE-T 使用星形拓扑,物理上像星形,但如果中心设备是集线器,逻辑上仍然是共享总线。


3.6 MAC 帧格式

以太网 MAC 帧常见格式如下:

字段 长度 作用
目的 MAC 地址 6 字节 接收方硬件地址
源 MAC 地址 6 字节 发送方硬件地址
类型字段 2 字节 指出上层协议,如 0x0800 表示 IPv4
数据字段 46 到 1500 字节 上层交付的数据
FCS 4 字节 帧检验序列,用于差错检测

最小 MAC 帧长:64 字节,不包括前导码和帧开始定界符。若数据字段不足 46 字节,需要填充。


第四章 网络层

4.1 IP 地址和 CIDR

IPv4 地址为 32 bit,通常写成点分十进制,如:

192.168.1.10

CIDR 使用斜线表示网络前缀长度:

192.168.1.0/24

其中 /24 表示前 24 bit 是网络前缀,后 8 bit 是主机号。

地址块大小

地址总数 = 2^(32 - 前缀长度)

例如 /24 有:

2^(32-24) = 256 个地址

通常可分配主机数为:

可用主机数 = 2^主机位数 - 2

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


4.2 特殊 IP 地址

地址形式 含义 例子
主机位全 0 网络地址 192.168.1.0/24
主机位全 1 广播地址 192.168.1.255/24
32 位全 0 本网络上的本主机 0.0.0.0
32 位全 1 本网络广播 255.255.255.255
127.0.0.0/8 环回地址 127.0.0.1
私有地址 内网使用,不直接在公网路由 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16

4.3 ARP 与 RARP

ARP(Address Resolution Protocol)用于根据 IP 地址查找对应的 MAC 地址。

使用场景:主机或路由器已经知道下一跳 IP 地址,但要在本链路上发送帧,必须知道下一跳的 MAC 地址。

注意:ARP 只在同一个局域网或同一条链路上工作。跨网络发送时,ARP 解析的是下一跳路由器的 MAC 地址,而不是最终目的主机的 MAC 地址。

RARP 是根据 MAC 地址反查 IP 地址,早期用于无盘工作站,现在基本被 DHCP 取代。


4.4 IP 数据报格式与分片

IP 数据报首部的重要字段:

字段 作用
版本 IPv4 或 IPv6
首部长度 IP 首部长度,单位为 4 字节
总长度 首部加数据的总长度
标识 identification 同一个原始数据报的所有分片具有相同标识
标志 flags DF 表示不能分片,MF 表示后面还有分片
片偏移 fragment offset 当前分片数据在原始数据中的相对位置,单位为 8 字节
TTL 生存时间,每经过一个路由器减 1
协议 上层协议,如 TCP=6,UDP=17
首部检验和 只检验 IP 首部
源 IP 地址 发送方 IP
目的 IP 地址 接收方 IP

IP 分片规则

  1. 每个分片都有自己的 IP 首部。
  2. 除最后一个分片外,每个分片的数据部分长度必须是 8 字节的整数倍。
  3. 片偏移字段的单位是 8 字节。
  4. MF=1 表示后面还有分片,MF=0 表示最后一个分片。
  5. 分片通常只在最终目的主机重组。

4.5 互联设备的工作层次

设备 最高工作层次 是否分隔冲突域 是否分隔广播域
中继器 repeater 物理层
集线器 hub 物理层
网桥 bridge 数据链路层
交换机 switch 数据链路层 否,除非划分 VLAN
路由器 router 网络层
网关 gateway 高层或多层 视情况而定 视情况而定

默认网关通常是主机所在局域网中通向外部网络的路由器接口地址。


4.6 路由表与最长前缀匹配

路由表常见字段:

字段 含义
目的网络 要到达的网络前缀
子网掩码或前缀长度 表示网络范围
下一跳地址 下一台路由器地址
出接口 从哪个接口转发
度量值 metric 路由代价

路由器查表时采用最长前缀匹配:若多个路由表项都匹配目的地址,选择前缀最长的一项。

例子:目的地址 192.168.1.100 同时匹配 192.168.0.0/16 和 192.168.1.0/24,应选择 /24,因为 /24 更具体。


4.7 子网划分

子网划分的基本步骤:

  1. 根据每个子网需要的主机数确定主机位数。
  2. 主机数公式为 2^h - 2
  3. 主机位数 h 确定后,前缀长度为 32 - h
  4. 从大子网到小子网依次分配,避免地址浪费。

例子:某子网需要 50 台主机,求前缀长度。

2^5 - 2 = 30,不够
2^6 - 2 = 62,够用
主机位 h = 6
前缀长度 = 32 - 6 = /26

所以需要一个 /26 地址块。


4.8 RIP 协议

RIP 是距离向量路由协议,使用跳数作为度量值。

项目 内容
协议类型 内部网关协议 IGP
算法 距离向量算法
运输层 UDP
度量值 跳数
最大有效跳数 15
不可达 16
更新方式 周期性交换路由表

RIP 更新规则:

  1. 收到相邻路由器 X 的路由表。
  2. 所有距离先加 1,因为要经过 X 才能到达。
  3. 若目的网络原来没有,加入。
  4. 若下一跳原来就是 X,则更新为 X 发来的新距离。
  5. 若下一跳不是 X,但新距离更小,则更新。
  6. 否则保持原表项不变。

4.9 路由器转发 IP 分组时哪些字段会变化

通常会变化:

  1. 链路层源 MAC 和目的 MAC:每一跳都重新封装帧。
  2. TTL:每经过一个路由器减 1。
  3. IP 首部检验和:TTL 变化后必须重新计算。
  4. 分片相关字段:如果发生分片,总长度、标志、片偏移等会变化。

通常不变:

  1. 源 IP 地址。
  2. 目的 IP 地址。
  3. TCP/UDP 端口号。

例外:如果经过 NAT,源 IP、目的 IP、端口号都可能被修改。


4.10 VPN 和 NAT

NAT 用于把私有地址转换为公网地址。

内网访问公网时:

源地址:私有 IP → 公网 IP
源端口:内部端口 → NAT 映射端口

公网响应回来时:

目的地址:公网 IP → 私有 IP
目的端口:NAT 映射端口 → 内部端口

VPN 是在公共网络上建立逻辑专用通道,使远程用户像在内网一样访问资源。


第五章 运输层

5.1 UDP 和 TCP 的特点

项目 UDP TCP
连接 无连接 面向连接
数据单位 面向报文 面向字节流
可靠性 不保证可靠交付 可靠交付
顺序 不保证有序 保证按序交付
流量控制
拥塞控制
首部长度 8 字节 最少 20 字节
适用场景 实时、简单、开销低 可靠传输、文件、网页

UDP 面向报文:应用层交给 UDP 一次数据,UDP 就保留这次数据的边界,封装成一个 UDP 用户数据报。

TCP 面向字节流:应用层多次写入的数据,在 TCP 看来只是连续字节流,没有固定报文边界。


5.2 常见应用层协议使用 UDP 还是 TCP

协议 通常使用 原因
DNS UDP 为主,必要时 TCP 查询短小,UDP 开销低;区域传送或响应过大用 TCP
DHCP UDP 客户端初始时可能还没有 IP 地址
TFTP UDP 简单文件传输,可靠性由应用层处理
RIP UDP 周期性小报文,简单快速
SNMP UDP 管理查询短小
HTTP/HTTPS TCP 需要可靠传输
FTP TCP 文件传输要求可靠
SMTP TCP 邮件传输要求可靠
SSH/Telnet TCP 交互式可靠连接
BGP TCP 路由信息重要,需要可靠连接

5.3 TCP 报文段首部重点字段

字段 含义
源端口 发送进程端口号
目的端口 接收进程端口号
序号 seq 本报文段数据第一个字节的编号
确认号 ack 期望收到对方下一个字节的编号
首部长度 TCP 首部长度
ACK 确认号字段是否有效
SYN 建立连接请求或响应
FIN 释放连接
RST 复位连接
窗口 window 接收方还能接收多少字节
检验和 checksum 检验 TCP 首部和数据

核心理解:TCP 的序号按字节编号,不是按报文段编号。若某报文段序号为 100,携带 80 字节数据,则下一个报文段序号应为 180。


5.4 累积确认和捎带确认

累积确认:确认号 n 表示 n 之前的所有字节都已经按序收到,下一步期望收到第 n 个字节。

捎带确认:如果双方同时有数据要发,可以把确认信息放在自己发送的数据报文段首部中一起发出,减少单独 ACK 报文。


5.5 TCP 三次握手

假设客户端初始序号为 x,服务器初始序号为 y。

步骤 报文 序号和确认号
第一次 客户端发送 SYN seq=x
第二次 服务器发送 SYN+ACK seq=y,ack=x+1
第三次 客户端发送 ACK seq=x+1,ack=y+1

注意:SYN 会消耗一个序号,即使它不携带普通数据。


5.6 TCP 四次挥手

释放连接通常需要四次报文交换,因为 TCP 是全双工通信,两个方向要分别关闭。

步骤 报文 含义
第一次 A 发送 FIN A 表示自己没有数据要发了
第二次 B 发送 ACK B 确认收到 A 的 FIN
第三次 B 发送 FIN B 也没有数据要发了
第四次 A 发送 ACK A 确认收到 B 的 FIN

注意:FIN 也会消耗一个序号。


第六章 应用层

6.1 域名和 DNS

DNS(Domain Name System)用于把域名解析为 IP 地址。

常见域名服务器:

类型 作用
根域名服务器 管理顶级域名服务器信息
顶级域名服务器 管理 .com、.cn、.org 等
权限域名服务器 保存某个区域的权威解析记录
本地域名服务器 接收用户查询并代为递归或迭代查询

6.2 万维网 WWW

万维网基于 URL、HTTP/HTTPS、HTML 等技术。

浏览器访问网页的大致过程:

  1. DNS 解析域名得到服务器 IP。
  2. 建立 TCP 连接,HTTPS 还要进行 TLS 握手。
  3. 浏览器发送 HTTP 请求。
  4. 服务器返回 HTTP 响应。
  5. 浏览器解析 HTML、CSS、JavaScript 并显示页面。

6.3 FTP 和 TFTP

项目 FTP TFTP
运输层 TCP UDP
连接 有控制连接和数据连接 无连接
功能 完整文件传输、认证、目录操作 简单文件传输
可靠性 由 TCP 保证 应用层简单确认和重传

第二部分:参考题原题与解析

1-17 时延计算

原题

收发两端之间的传输距离为 1000 km,信号在媒体上的传播速率为 2 × 10^8 m/s。试计算以下两种情况的发送时延和传播时延:

  1. 数据长度为 10^7 bit,数据发送速率为 100 kbit/s
  2. 数据长度为 10^3 bit,数据发送速率为 1 Gbit/s

从以上计算结果可得出什么结论?

解析

公式:

发送时延 = 数据长度 / 发送速率
传播时延 = 传播距离 / 传播速率

传播距离:

1000 km = 1,000,000 m = 10^6 m

传播时延:

10^6 / (2 × 10^8) = 5 × 10^-3 s = 5 ms

情况 1

发送时延 = 10^7 / (100 × 10^3) = 100 s
传播时延 = 5 ms

情况 2

发送时延 = 10^3 / 10^9 = 10^-6 s = 1 μs
传播时延 = 5 ms

答案

  1. 情况 1:发送时延为 100 s,传播时延为 5 ms。
  2. 情况 2:发送时延为 1 μs,传播时延为 5 ms。

结论

发送时延主要由数据长度和发送速率决定;传播时延主要由距离和信号传播速率决定。大文件、低速率时发送时延占主导;小数据、高速率、长距离时传播时延占主导。


1-18 媒体中正在传播的比特数

原题

假设信号在媒体上的传播速率为 2.3 × 10^8 m/s。媒体长度 l 分别为:

  1. 10 cm,网络接口卡。
  2. 100 m,局域网。
  3. 100 km,城域网。
  4. 5000 km,广域网。

现在连续传送数据,数据率分别为 1 Mbit/s10 Gbit/s。试计算每一种情况下在媒体中的比特数。

解析

媒体中正在传播的比特数,也叫带宽时延积:

媒体中的比特数 = 数据率 × 传播时延
传播时延 = 媒体长度 / 传播速率

计算表

媒体长度 传播时延 1 Mbit/s 时媒体中比特数 10 Gbit/s 时媒体中比特数
0.1 m 4.35×10^-10 s 4.35×10^-4 bit 4.35 bit
100 m 4.35×10^-7 s 0.435 bit 4348 bit
100 km 4.35×10^-4 s 435 bit 4.35×10^6 bit
5000 km 2.17×10^-2 s 2.17×10^4 bit 2.17×10^8 bit

结论

链路越长、数据率越高,媒体中同时存在的比特越多。高速长距离链路的带宽时延积很大,TCP 窗口必须足够大,否则无法充分利用链路带宽。


2-07 奈奎斯特准则计算

原题

假定某信道受奈氏准则限制的最高码元速率为 20000 码元/秒。如果采用振幅调制,把码元的振幅划分为 16 个不同等级来传送,那么可以获得多高的数据率?

解析

16 个不同等级表示每个码元可携带:

log2(16) = 4 bit

数据率为:

20000 × 4 = 80000 bit/s

答案

80000 bit/s = 80 kbit/s

2-16 CDMA 码片序列判断

原题

共有四个站进行码分多址 CDMA 通信。四个站的码片序列为:

A: (-1 -1 -1 +1 +1 -1 +1 +1)
B: (-1 -1 +1 -1 +1 +1 +1 -1)
C: (-1 +1 -1 +1 +1 +1 -1 -1)
D: (-1 +1 -1 -1 -1 -1 +1 -1)

现收到这样的码片序列:

S = (-1 +1 -3 +1 -1 -3 +1 +1)

问哪个站发送数据了?发送的数据是 1 还是 0?

解析

用接收序列分别与每个站的码片序列做内积,再除以 8。

S·A / 8 = 1
S·B / 8 = -1
S·C / 8 = 0
S·D / 8 = 1

判断规则:

  • 结果为 +1:发送 bit 1。
  • 结果为 -1:发送 bit 0。
  • 结果为 0:未发送。

答案

A 站发送了 1,B 站发送了 0,C 站没有发送,D 站发送了 1。


3-20 CSMA/CD 最短帧长

原题

假定 1 km 长的 CSMA/CD 网络的数据率为 1 Gbit/s。设信号在网络上的传播速率为 200000 km/s。求能够使用此协议的最短帧长。

解析

单程传播时延:

τ = 1 km / 200000 km/s = 5 × 10^-6 s = 5 μs

争用期:

2τ = 10 μs = 10 × 10^-6 s

最短帧长:

1 × 10^9 bit/s × 10 × 10^-6 s = 10000 bit

换算为字节:

10000 / 8 = 1250 字节

答案

最短帧长为 10000 bit,即 1250 字节

易错点

不能只用单程传播时延,必须用两倍传播时延。因为碰撞信号需要从最远端传播回来,发送方才能检测到碰撞。


4-15 IP 分片在目的主机重组的原因

原题

在互联网中将 IP 数据报分片传送的数据报在最后目的主机进行组装。还可以有另一种做法,即数据报片通过一个网络就进行一次组装。试比较这两种方法的优劣。

解析

方法一:只在最终目的主机重组。

优点:

  1. 中间路由器负担小,只负责转发,不必缓存所有分片。
  2. 适合互联网中路径复杂、分组可能走不同路径的情况。
  3. 路由器实现简单,转发速度快。

缺点:

  1. 若一个分片丢失,目的主机收到的其他分片也无法重组成完整数据报。
  2. 目的主机需要缓存分片。

方法二:每经过一个网络就重组一次。

优点:

  1. 进入下一个网络前可以恢复完整数据报,逻辑上更直观。
  2. 对后续链路的分片处理可能更清楚。

缺点:

  1. 路由器必须缓存和重组分片,处理负担大。
  2. 如果分片不按序到达,路由器等待时间增加。
  3. 不利于高速转发。

答案

互联网采用最终目的主机重组更合理,因为它能简化路由器功能,提高转发效率。逐网络重组会显著增加中间路由器的缓存和处理开销,不适合大规模互联网。


4-17 ARP 使用次数

原题

主机 A 发送 IP 数据报给主机 B,途中经过了 5 个路由器。试问在 IP 数据报的发送过程中总共使用了几次 ARP?

解析

若途中经过 5 个路由器,则路径为:

A → R1 → R2 → R3 → R4 → R5 → B

共有 6 段链路:

  1. A 到 R1。
  2. R1 到 R2。
  3. R2 到 R3。
  4. R3 到 R4。
  5. R4 到 R5。
  6. R5 到 B。

每一段链路都需要知道下一跳的 MAC 地址。如果 ARP 缓存中没有对应表项,每段链路需要一次 ARP。

答案

在没有 ARP 缓存的情况下,共需要使用 6 次 ARP

易错点

ARP 不是一次解析最终目的主机 B 的 MAC 地址。每一跳都只解析本链路上的下一跳 MAC 地址。


4-18 路由表查找

原题

设某路由器建立了如下转发表:

前缀匹配 下一跳
192.4.153.0/26 R3
128.96.39.0/25 接口 m0
128.96.39.128/25 接口 m1
128.96.40.0/25 R2
默认 R4

现共收到 5 个分组,其目的地址分别为:

  1. 128.96.39.10
  2. 128.96.40.12
  3. 128.96.40.151
  4. 192.4.153.17
  5. 192.4.153.90

试说明每个分组应如何转发。

解析与答案

目的地址 匹配过程 转发结果
128.96.39.10 属于 128.96.39.0 到 128.96.39.127 接口 m0
128.96.40.12 属于 128.96.40.0 到 128.96.40.127 R2
128.96.40.151 不属于 128.96.40.0/25,走默认路由 R4
192.4.153.17 属于 192.4.153.0 到 192.4.153.63 R3
192.4.153.90 不属于 192.4.153.0/26,走默认路由 R4

易错点

/25 的地址块大小是 128 个地址;/26 的地址块大小是 64 个地址。判断范围时要先算出地址块边界。


4-19 地址块分配

原题

试为计算机下一跳。某单位有 4000 台计算机,平均分布在 16 个不同地点。该单位分配到一个地址块 129.250/16。每一个地点分配一个连续的地址块,并算出每个地址块中 IP 地址的最小值和最大值。

解析

每个地点平均主机数:

4000 / 16 = 250 台

需要满足:

2^h - 2 ≥ 250

当 h=8 时:

2^8 - 2 = 254

所以每个地点需要 8 位主机位,即 /24 地址块。

129.250.0.0/16 可以划分出许多 /24,给 16 个地点分配前 16 个即可。

一种可行分配

地点 地址块 可用最小地址 可用最大地址 广播地址
1 129.250.0.0/24 129.250.0.1 129.250.0.254 129.250.0.255
2 129.250.1.0/24 129.250.1.1 129.250.1.254 129.250.1.255
3 129.250.2.0/24 129.250.2.1 129.250.2.254 129.250.2.255
16 129.250.15.0/24 129.250.15.1 129.250.15.254 129.250.15.255

答案

每个地点可分配一个 /24 地址块,每个地址块可用主机地址为 254 个,能够满足 250 台主机需求。


4-20 IP 数据报分片

原题

一个数据报长度为 4000 字节,固定首部长度为 20 字节。现在经过一个网络传送,但此网络能够传送的最大数据长度为 1500 字节。试问应当划分为几个短些的数据报片?各数据报片的数据字段长度、片偏移字段和 MF 标志应为何值?

解析

原始数据报总长度为 4000 字节,首部为 20 字节,所以数据部分为:

4000 - 20 = 3980 字节

每个分片总长度最多为 1500 字节,每个分片都有 20 字节首部,所以每个分片最多可携带数据:

1500 - 20 = 1480 字节

1480 是 8 的整数倍,可以作为非最后分片的数据长度。

分片方案:

3980 = 1480 + 1480 + 1020

片偏移单位为 8 字节:

第 1 片偏移 = 0 / 8 = 0
第 2 片偏移 = 1480 / 8 = 185
第 3 片偏移 = (1480 + 1480) / 8 = 370

答案

分片 数据字段长度 总长度 片偏移 MF
第 1 片 1480 字节 1500 字节 0 1
第 2 片 1480 字节 1500 字节 185 1
第 3 片 1020 字节 1040 字节 370 0

易错点

片偏移不是字节数本身,而是以 8 字节为单位。非最后分片的数据部分长度必须是 8 字节的整数倍。


4-22 CIDR 地址块聚合

原题

有如下四个 /24 地址块,试进行最大可能的聚合。

212.56.132.0/24
212.56.133.0/24
212.56.134.0/24
212.56.135.0/24

解析

这四个地址块连续,第三个字节分别是:

132, 133, 134, 135

4 个连续 /24 可以聚合为一个 /22,因为:

4 × 256 = 1024 = 2^(32-22)

起始地址为 212.56.132.0,且 132 能被 4 整除,满足 /22 边界。

答案

212.56.132.0/22

地址范围为:

212.56.132.0 到 212.56.135.255

4-26 VLSM 不等长子网划分

原题

一个大公司有一个总部和三个下属部门。公司分配到的网络前缀是 192.77.33/24。网络布局图中,总部共有 5 个局域网,其中 LAN1 到 LAN4 都连接到路由器 R1,R1 再通过 LAN5 与路由器 R2 相连。R2 和三个部门的局域网 LAN6 到 LAN8 通过广域网 WAN1 到 WAN3 相连。每一个局域网旁标明的数字是局域网上的主机数。试给每一个局域网分配一个合适的网络前缀。

图中主机数:

网络 主机数
LAN1 50
LAN2 10
LAN3 28
LAN4 10
LAN5 4
LAN6 20
LAN7 20
LAN8 25
WAN1 2
WAN2 2
WAN3 2

解析

先按主机数从大到小排序,再分配地址块。

需要主机数 所需地址数 前缀
50 至少 64 /26
28、25、20、20 至少 32 /27
10、10 至少 16 /28
4 至少 8 /29
2 至少 4 /30

一种可行分配

网络 主机数 分配前缀 可用主机范围
LAN1 50 192.77.33.0/26 192.77.33.1 到 192.77.33.62
LAN3 28 192.77.33.64/27 192.77.33.65 到 192.77.33.94
LAN8 25 192.77.33.96/27 192.77.33.97 到 192.77.33.126
LAN6 20 192.77.33.128/27 192.77.33.129 到 192.77.33.158
LAN7 20 192.77.33.160/27 192.77.33.161 到 192.77.33.190
LAN2 10 192.77.33.192/28 192.77.33.193 到 192.77.33.206
LAN4 10 192.77.33.208/28 192.77.33.209 到 192.77.33.222
LAN5 4 192.77.33.224/29 192.77.33.225 到 192.77.33.230
WAN1 2 192.77.33.232/30 192.77.33.233 到 192.77.33.234
WAN2 2 192.77.33.236/30 192.77.33.237 到 192.77.33.238
WAN3 2 192.77.33.240/30 192.77.33.241 到 192.77.33.242

答案说明

这不是唯一答案。只要满足每个子网主机数要求、地址块不重叠、全部落在 192.77.33.0/24 内,就是合理分配。


4-31 CIDR 地址块范围

原题

已知地址块中的一个地址是 140.120.84.24/20。试求这个地址块中的最小地址和最大地址。地址掩码是什么?地址块中共有多少个地址?相当于多少个 C 类地址?

解析

/20 表示前 20 bit 为网络前缀。

子网掩码为:

255.255.240.0

第三个字节的块大小:

256 - 240 = 16

第三个字节为 84,属于:

80 到 95

所以地址块范围是:

140.120.80.0 到 140.120.95.255

地址总数:

2^(32-20) = 4096

一个 C 类 /24 地址块有 256 个地址:

4096 / 256 = 16

答案

项目 答案
最小地址 140.120.80.0
最大地址 140.120.95.255
地址掩码 255.255.240.0
地址总数 4096 个
相当于 C 类地址数 16 个 C 类地址块

4-33 等长子网划分

原题

某单位分配到一个地址块 136.23.12.64/26。现在需要进一步划分为 4 个一样大的子网。试问:

  1. 每个子网的网络前缀有多长?
  2. 每一个子网中有多少个地址?
  3. 每一个子网的地址块是什么?
  4. 每一个子网可分配给主机使用的最小地址和最大地址是什么?

解析

原地址块是 /26,共有:

2^(32-26) = 64 个地址

要划分为 4 个一样大的子网,需要再借 2 bit:

2^2 = 4

新前缀为:

/26 + 2 = /28

每个 /28 子网有:

2^(32-28) = 16 个地址

可用主机地址为:

16 - 2 = 14 个

答案

子网 地址块 可用最小地址 可用最大地址 广播地址
1 136.23.12.64/28 136.23.12.65 136.23.12.78 136.23.12.79
2 136.23.12.80/28 136.23.12.81 136.23.12.94 136.23.12.95
3 136.23.12.96/28 136.23.12.97 136.23.12.110 136.23.12.111
4 136.23.12.112/28 136.23.12.113 136.23.12.126 136.23.12.127

4-37 RIP 路由表更新

原题

假定网络中的路由器 B 的路由表有如下项目,这三列分别表示“目的网络”“距离”和“下一跳路由器”:

目的网络 距离 下一跳
N1 7 A
N2 2 C
N6 8 F
N8 4 E
N9 4 F

现在 B 收到从 C 发来的路由信息,这两列分别表示“目的网络”和“距离”:

目的网络 距离
N2 4
N3 8
N6 4
N8 3
N9 5

试求出路由器 B 更新后的路由表,并说明每一步。

解析

B 收到 C 的信息后,先把所有距离加 1,因为从 B 到这些网络要先经过 C。

目的网络 C 发来的距离 B 经 C 的新距离
N2 4 5
N3 8 9
N6 4 5
N8 3 4
N9 5 6

逐项更新:

  1. N1:C 没提供,保持原来 7, A
  2. N2:原下一跳就是 C,所以更新为 5, C
  3. N3:原表没有,加入 9, C
  4. N6:原来是 8, F,现在经 C 为 5,更短,更新为 5, C
  5. N8:原来是 4, E,现在经 C 也是 4,不更短,保持 4, E
  6. N9:原来是 4, F,现在经 C 为 6,更差,保持 4, F

答案

目的网络 距离 下一跳
N1 7 A
N2 5 C
N3 9 C
N6 5 C
N8 4 E
N9 4 F

易错点

如果原来的下一跳就是发来更新的路由器 C,即使距离变大,也要更新。因为这代表经 C 到达该网络的最新信息。


5-08 UDP 面向报文,TCP 面向字节流

原题

为什么说 UDP 是面向报文的,而 TCP 是面向字节流的?

解析

UDP 保留应用层交付数据的边界。应用层一次交给 UDP 一个报文,UDP 就添加首部后形成一个 UDP 用户数据报。接收方 UDP 也按一个完整用户数据报交付给应用层。

TCP 不保留应用层写入数据的边界。应用层多次写入的数据,在 TCP 看来只是连续的字节流。TCP 可以把应用层一次写入的数据拆开发送,也可以把多次写入的数据合并发送。

答案

UDP 面向报文,是因为 UDP 对应用层交下来的每个报文都分别封装并交付,保留报文边界;TCP 面向字节流,是因为 TCP 把应用层数据看成无结构的连续字节序列,不保留应用层写入边界。

举例

应用层连续调用两次发送:

send("hello")
send("world")

UDP 接收方通常看到两个报文:helloworld

TCP 接收方可能一次读到 helloworld,也可能分几次读到 helloworld,边界由 TCP 缓冲和应用读取方式决定。


5-23 TCP 序号与确认号

原题

主机 A 向主机 B 连续发送了两个 TCP 报文段,其序号分别是 70 和 100。试问:

  1. 第一个报文段携带了多少字节的数据?
  2. 主机 B 收到第一个报文段后发回的确认中的确认号应当是多少?
  3. 如果 B 收到第二个报文段后发回的确认号是 180,试问 A 发送的第二个报文段中的数据有多少字节?
  4. 如果 A 发送的第一个报文段丢失了,但第二个报文段到达了 B。B 在第二个报文段到达后向 A 发送确认。这个确认号应为多少?

解析

TCP 序号表示本报文段数据第一个字节的编号。

第一个报文段序号为 70,第二个报文段序号为 100,说明第一个报文段覆盖字节:

70 到 99

所以第一个报文段数据长度为:

100 - 70 = 30 字节

收到第一个报文段后,B 期望下一个字节是 100,因此确认号为 100。

如果 B 收到第二个报文段后确认号为 180,说明已经按序收到 179 号字节,下一步期望 180。第二个报文段从 100 开始,所以长度为:

180 - 100 = 80 字节

如果第一个报文段丢失,第二个报文段虽然到了,但 B 仍然缺少从 70 开始的数据,因此累积确认号仍为 70。

答案

  1. 第一个报文段携带 30 字节 数据。
  2. 收到第一个报文段后确认号为 100
  3. 第二个报文段携带 80 字节 数据。
  4. 若第一个报文段丢失而第二个到达,确认号应为 70

5-30 TCP 最大吞吐量

原题

设 TCP 使用的最大窗口为 65535 字节,而传输信道不产生差错,带宽也不受限制。若报文段的平均往返时间为 20 ms,问所能得到的最大吞吐量是多少?

解析

吞吐量受窗口和 RTT 限制:

最大吞吐量 = 窗口大小 / RTT

代入:

65535 字节 / 0.02 s = 3276750 字节/s

换算为 bit/s:

3276750 × 8 = 26214000 bit/s

答案

最大吞吐量 = 26.214 Mbit/s

约为 26.2 Mbit/s


5-31 TCP 窗口与链路利用率

原题

通信信道带宽为 1 Gbit/s,端到端传播时延为 10 ms,TCP 的发送窗口为 65535 字节。试问:可能达到的最大吞吐量是多少?信道利用率是多少?

解析

通常“端到端传播时延”理解为单程传播时延,因此:

RTT ≈ 2 × 10 ms = 20 ms

最大吞吐量:

65535 字节 / 0.02 s = 3276750 字节/s
3276750 × 8 = 26214000 bit/s

即:

26.214 Mbit/s

信道利用率:

26.214 Mbit/s / 1000 Mbit/s = 0.026214 = 2.6214%

答案

按单程传播时延 10 ms 理解:

最大吞吐量约为 26.2 Mbit/s
信道利用率约为 2.62%

补充说明

如果题目或老师明确把 10 ms 当作 RTT,则最大吞吐量为约 52.4 Mbit/s,利用率约 5.24%。但教材题中“传播时延”通常指单程时延,因此优先按 RTT=20 ms 计算。


5-65 TCP 报文段中的确认字段

原题

假定主机 A 向主机 B 发送一个 TCP 报文段。在这个报文段中,序号是 50,而数据一共有 6 字节长。试问,在这个报文中的确认字段是否应当写入 56?

解析

TCP 序号和确认号的方向不同。

  • 序号 50 表示 A 发送给 B 的数据从第 50 号字节开始。
  • 数据长度为 6 字节,说明 A 发出的数据覆盖 50 到 55。
  • B 收到后,如果要确认 A 的数据,B 发回的确认号应为 56。

但是题目问的是 A 发给 B 的这个报文段中的确认字段是否应写入 56。A 报文段中的确认号用于确认 B 发给 A 的数据,而不是确认 A 自己发出的数据。

答案

不一定,也通常不应根据这个报文段自身的序号和长度写 56。56 应该出现在 B 返回给 A 的确认号中,表示 B 已收到 A 发来的 50 到 55 号字节,下一步期望收到 56 号字节。A 发给 B 的报文段中的确认号取决于 A 已收到 B 的哪些数据。


5-66 TCP 序号是否按报文段编号

原题

主机 A 通过 TCP 连接向主机 B 发送一个很长的文件,因此需要分成很多个报文段来发送。假定某一个 TCP 报文段的序号是 x,那么下一个报文段的序号是否就是 x+1?TCP 的吞吐量应当是每秒发送的数据字节数,还是每秒发送的首部和数据之和的字节数?

解析

TCP 的序号按字节编号,不按报文段编号。

如果某报文段序号为 x,携带 n 字节数据,那么下一个报文段序号应为:

x + n

只有当该报文段只携带 1 字节数据时,下一个序号才是 x+1。

关于吞吐量,要看统计口径:

  1. 若讨论应用层文件传输效率,通常看每秒成功传输的有效数据字节数。
  2. 若讨论链路占用或网络负载,则可能统计 TCP 首部、IP 首部、链路层首部等开销。

答案

下一个 TCP 报文段的序号不一定是 x+1,而应是 x + 本报文段携带的数据字节数。TCP 传送文件时通常关注有效数据吞吐量,即每秒成功传输的文件数据字节数;若计算链路利用或协议开销,则需要把首部也计入传输总量。


第三部分:考前速记清单

1. 必背公式

发送时延 = 数据长度 / 发送速率
传播时延 = 距离 / 传播速率
媒体中比特数 = 数据率 × 传播时延
数据率 = 波特率 × log2(电平数)
奈奎斯特:最高数据率 = 2W log2(V)
香农:C = W log2(1 + S/N)
CSMA/CD 最小帧长 = 数据率 × 2τ
地址块地址数 = 2^(32 - 前缀长度)
可用主机数 = 2^主机位数 - 2
TCP 最大吞吐量 = 窗口大小 / RTT

2. 必背协议特点

协议 重点
ARP IP 地址解析为 MAC 地址,只解析下一跳
IP 尽力而为,无连接,不可靠
ICMP 差错报告和网络探测
RIP 距离向量,UDP,最大 15 跳,16 不可达
OSPF 链路状态,直接用 IP
BGP 外部网关协议,TCP
UDP 无连接,面向报文,首部 8 字节
TCP 面向连接,可靠,面向字节流,首部至少 20 字节
DNS UDP 为主,必要时 TCP
FTP TCP,有控制连接和数据连接
TFTP UDP,简单文件传输

3. 最常考易错点

  1. TCP 序号按字节编号,不按报文段编号。
  2. TCP 确认号表示期望收到的下一个字节编号。
  3. SYN 和 FIN 都消耗一个序号。
  4. IP 片偏移单位是 8 字节,不是 1 字节。
  5. 除最后一个 IP 分片外,数据部分长度必须是 8 字节整数倍。
  6. 路由器转发时通常会改变 MAC 地址、TTL 和 IP 首部检验和。
  7. 没有 NAT 时,源 IP 和目的 IP 在转发过程中通常不变。
  8. ARP 解析的是下一跳 MAC,不一定是最终目的主机 MAC。
  9. CIDR 查路由表时用最长前缀匹配。
  10. 子网划分优先从大子网开始分配,避免碎片化。