第一章 计算机网络概述
一、通信与计算机网络基础
1. 通信的定义与模型
- 定义:信息从信源通过信道传送到信宿的过程,消息需按协议格式封装。
- 核心要素:
- 信源:信息发送者
- 信道:信息传递路径
- 信宿:信息接收者
- 协议:通信双方遵守的规则
- 通信模式:人-人、人-物、人-机、机-物、物-物、机-机通信
2. 计算机网络的定义与核心特征
- 定义:由若干自治计算机系统通过通信链路和交换设备,按协议互连,实现资源共享与信息传递的系统。
- 核心特征(划重点):
- 自治:节点计算机具有独立操作系统和功能
- 互连:通过通信链路和交换设备连接
- 协议:共同遵守的规则(保障准确性和可靠性)
- 资源共享:共享软件、硬件、数据资源
- 信息传递:实现数据交换和通信
3. 网络的软硬件构成
- 硬件:主机(端系统)、路由器、交换机、通信链路(光纤、同轴电缆、双绞线、无线电)
- 软件:协议栈(一系列协议),核心协议包括 HTTP、SMTP、DNS、TCP、IP 等
4. 协议的核心概念
- 定义:通信双方关于通信的约定,类比人类语言
- 三要素:
- 语法:数据与控制信息的结构/格式
- 语义:控制信息含义、动作及应答
- 同步:事件实现顺序
- 标准化:形式为 RFC(Request for comments),制定组织包括 ITU、IEEE、ISO
二、计算机网络的演化历程
1. 早期电路交换网络
- 工作原理:建立连接→交换数据→释放连接
- 特性:
- 需建立物理通路,独占信道
- 实时通信,无延迟
- 复用技术:频分复用(FDM)、时分复用(TDM)
- 问题:灵活性差、信道利用率低、按占用时间收费
2. 分组交换网络(核心演化)
- 动机:解决电路交换的局限性,满足计算机数据突发性传输需求
- 特性:
- 报文分割为分组传输
- 采用存储转发技术
- 分组可走不同路径
- 节点间有冗余路由
- 工作流程:报文切片→生成分组(添加首部)→发送分组→接收分组→报文还原
- 优势:信道利用率高、支持更多用户、无需预先分配带宽
- 不足:存在排队时延、分组携带控制信息(额外开销)、管理复杂
3. 两种交换技术对比
| 场景 | 推荐技术 | 原因 |
|---|---|---|
| 连续传输大量数据 | 电路交换 | 传送时间远大于呼叫建立时间 |
| 突发数据传输 | 分组交换 | 提高信道利用率 |
| 用户数多、低活跃概率 | 分组交换 | 支持更多用户,性能相当 |
4. 衍生网络类型
- 虚电路网络:模拟电路交换特征,需建立连接、路由固定、预留资源
- 数据报网络:纯分组交换,无需建立连接,路由动态选择
5. 网络互联架构
- 核心:通过主干 ISP、区域 ISP、NAP(网络接入点)、IXP(互联网交换点)实现多网络互联
- CDN(内容分发网络):解决网络瓶颈,通过边缘服务器缓存内容,缩短访问距离
三、计算机网络的分类
1. 按作用范围分类
| 类型 | 缩写 | 覆盖范围 | 典型应用 |
|---|---|---|---|
| 局域网 | LAN | 3-5 公里(办公室、校园) | 公司内部网、校园网 |
| 城域网 | MAN | 几公里-几十公里(城市) | 城市公共服务设施互联 |
| 广域网 | WAN | 跨城市、国家、洲际 | 互联网、企业异地分支互联 |
| 个域网 | PAN | 几米内(个人周边) | 蓝牙耳机、智能手表连接 |
2. 按拓扑结构分类
- 总线网、星型网、树形网、环形网、网状网、混合型网
四、计算机网络的评价指标
1. 核心指标
- 带宽:
- 信号带宽:频率范围(Hz)
- 信道带宽:允许通过的信号频率范围
- 数据率(比特率):数字信道传输速率(bps)
- 吞吐量:实际传输比特速率(bps),受瓶颈链路限制
- 时延:
- 总时延=处理时延+排队时延+传输时延+传播时延
- 往返时延(RTT):发送到收到确认的总时间
- 信道/网络利用率:信道/网络实际使用时间与总时间的比值
- 流量强度:La/R(L=分组长度,a=平均到达速率,R=链路带宽),La/R<1 时网络稳定
五、计算机网络的体系结构
1. 核心概念
- 实体:可发送/接收信息的硬件/软件进程
- 对等体:不同机器上的对应层实体
- 服务:下层向上层提供的功能,通过服务原语实现
- 接口:相邻层间的交互点(服务访问点 SAP)
- 协议数据单元(PDU):对等层传输的数据单位
- 服务数据单元(SDU):层间交换的数据单位
2. 两种主流体系结构对比
| 特征 | ISO OSI/RM 模型(7 层) | TCP/IP 参考模型(4 层) |
|---|---|---|
| 分层 | 物理层→数据链路层→网络层→传输层→会话层→表示层→应用层 | 物理层+数据链路层→网络层→传输层→应用层 |
| 核心区别 | 明确区分服务、接口、协议;先有模型后有协议 | 未明确区分三者;先有协议后有模型 |
| 连接支持 | 网络层同时支持面向连接/无连接;传输层仅支持面向连接 | 网络层仅支持无连接;传输层同时支持两种模式 |
| 实用性 | 通用但与实际脱钩 | 不通用但与现实吻合 |
3. 因特网实际采用的 5 层模型
| 层级 | 功能 | 数据单位 | 核心协议 |
|---|---|---|---|
| 应用层 | 为应用进程提供通信服务 | 报文 | HTTP、FTP、SMTP、DNS |
| 传输层 | 端到端可靠传输,标识应用 | 报文段(TCP)/用户数据报(UDP) | TCP、UDP |
| 网络层 | 路由选择,跨网传输 | 分组 | IP |
| 数据链路层 | 链路传输,差错检测 | 帧 | PPP、以太网 |
| 物理层 | 比特流传输,定义物理接口 | 比特 | 无(定义物理特性) |
4. 数据流动过程
- 发送端:应用数据→各层添加首部(尾部)→比特流→物理介质
- 接收端:比特流→各层剥去首部(尾部)→还原应用数据
六、网络中的法律和社会问题
1. 网络中立性
- 核心原则:ISP 应平等对待所有流量,禁止屏蔽、限速、付费优先
- 争议点:监管干预 vs 市场自由、ISP 盈利需求 vs 公平竞争、服务质量 vs 用户选择权
- 意义:维护互联网开放性,保障信息自由流动和创新
2. 网络安全威胁
- 定义:可能导致数据、系统、服务受损的潜在/现实风险
- 核心要素:威胁源(黑客、犯罪团伙等)、威胁路径(漏洞利用、钓鱼等)、威胁影响(数据泄露、系统崩溃等)
- 主要类型:恶意软件(病毒、勒索软件)、网络攻击(DDoS、SQL 注入)、数据安全威胁(泄露、篡改)、社会工程学攻击(钓鱼邮件、电话诈骗)
- 检测技术:特征检测、异常检测、沙箱分析、威胁情报、AI 驱动检测
- 防御策略:基础防御(边界防护、数据加密、补丁管理)、针对性防御、应急响应与恢复
3. 网络隐私保护
- 核心原则:最小必要、知情同意、目的限制
- 隐私 vs 安全:隐私关注数据是否被过度收集/滥用,安全关注数据是否被非法获取/破坏
- 泄露场景:过度收集权限、数据滥用、技术漏洞、黑产攻击
- 保护措施:
- 法律层面:《个人信息保护法》《GDPR》等
- 技术层面:数据加密、隐私计算、匿名化
- 管理层面:企业合规管理、员工培训
- 个人层面:关闭非必要权限、强密码、警惕钓鱼
4. 其他问题
- 网络欺诈:财产型(钓鱼、金融诈骗)、数据型(社工库攻击)、权限型(木马植入、账号盗用)
- 网络虚假信息:特征为非真实性、传播性、目的性;识别方法包括来源核查、内容验证、逻辑分析
七、课后作业
【题目 1】
某科技公司计划为西部某偏远地区部署一个新型通信网络,用于同时支持两种关键服务: (1)紧急语音通信:要求极低的延迟和通话清晰度,保证指令能实时、可靠传达; (2)环境监测数据传输:由大量传感器定期上传温度、湿度等小批量数据,允许一定的延迟,但需要高效利用网络带宽。 已知该地区网络基础设施薄弱,链路带宽资源极其宝贵。
(1)请简述电路交换和分组交换的核心工作机理。 答:
- 电路交换:在通信开始前,必须在通信双方之间建立一条专用的端到端物理通路(即“电路”)。在整个通信过程中,该通路一直被独占,即使没有数据传输,其他用户也无法使用,直至连接被释放。典型例子是传统电话网。
- 分组交换:将待传输的数据分割成一个个带寻址信息的分组。每个分组独立地在网络中选择路径传输(存储-转发)。网络中的链路和节点资源被所有用户的分组共享(统计复用),而非独占。
(2)从“信道资源共享方式”和“传输可靠性保障”两个角度,对比这两种交换方式的本质区别。 答:
| 对比维度 | 电路交换 | 分组交换 |
|---|---|---|
| 信道资源共享方式 | 静态的、预分配的独占式共享,资源利用率低 | 动态的、按需的统计复用式共享,资源利用率高 |
| 传输可靠性保障 | 依赖已建立的物理通路,通路中断则通信中断 | 由终端系统(如 TCP 协议)和网络协议共同保障,网络故障可通过路由切换避免,更具鲁棒性 |
(3)如果仅从技术特性出发,上述两种关键服务分别更适合采用哪种交换方式?请阐述你的理由。 答:
- 紧急语音通信:更适合电路交换。理由:语音通信需要固定带宽和极低、稳定的延迟,电路交换的独占信道特性可避免资源竞争导致的延迟波动,天然满足实时性和清晰度需求。
- 环境监测数据传输:更适合分组交换。理由:传感器数据量小、突发且间歇性传输,分组交换的统计复用特性可让多个传感器共享链路资源,避免独占信道造成的带宽浪费,高效利用宝贵的带宽资源。
(4)考虑到带宽资源极其宝贵这一硬性约束,请设计一个合理的网络架构方案,并论证为何分组交换技术最终成为现代互联网(包括你设计的这个网络)的绝对主导方案。 答:
- 网络架构方案:采用基于 IP 的分组交换网络作为统一基础架构,对紧急语音通信服务,通过叠加 QoS(服务质量)保障机制满足其实时性需求;环境监测数据传输直接利用分组交换的统计复用特性高效传输。
- 论证:分组交换成为主导方案的核心原因是其极高的带宽利用率,完美契合“带宽资源宝贵”的约束——所有服务动态共享同一带宽,比为不同服务建立独占电路更高效经济。此外,分组交换具备鲁棒性(网络故障可通过路由切换恢复)、灵活性(支持多种业务类型)和可扩展性(易于接入新增传感器或语音终端),这些特性使其成为构建通用网络的最优选择,最终成为互联网的事实标准。
(5)如果选择分组交换技术,会为“紧急语音通信”服务带来什么潜在问题? 答: 潜在问题:分组交换会导致语音通信面临可变延迟、延迟抖动和分组丢失。因为语音分组需与其他数据分组在路由器中排队等待转发,网络拥塞时排队延迟增加且不稳定(抖动),极端情况下分组可能丢失,这些都会破坏通话的实时性和清晰度(如音画不同步、卡顿、杂音)。
(6)针对上述问题,现代网络是如何在分组交换的架构基础上,通过哪些技术或机制来保障语音服务的质量(QoS)的?(请至少阐述两点) 答: ① 流量分类与优先级队列:路由器通过识别语音分组的 IP 头部标记(如 DSCP 字段)或 UDP 端口号(如 VoIP 常用端口),将其归类为高优先级流量。路由器为高优先级队列配置优先转发策略,让语音分组跳过普通数据的排队流程,减少延迟和抖动。 ② 资源预留协议(RSVP):语音通信建立时,终端通过 RSVP 向网络路由器申请特定带宽和缓冲区资源,路由器预留资源后,在通信过程中为该语音流优先分配资源,避免拥塞导致的延迟和丢失,模拟电路交换的独占资源特性。 ③ 采用 UDP 协议与实时传输技术:语音流使用 UDP 传输,避免 TCP 重传机制带来的延迟(丢失的语音分组重传已无实时意义);同时结合 RTP(实时传输协议)进行分组序号标记和时间戳同步,接收方通过缓冲对齐和丢包隐藏技术(如插值补偿)优化音质。
【题目 2】
某网络链路连接两台主机 A 和 B。已知该链路的带宽为 1 Gbps,单向传播时延为 5 ms。主机 A 要向主机 B 发送一个大小为 12.5 MB 的文件。忽略任何处理时延、排队时延和协议开销。
(1)请计算: ① 比特时间:计算在该链路上发送 1 个比特所需要的时间。 ② 传输时延:计算将整个文件的数据推送到链路上所需要的时间。 ③ 总时延:计算从主机 A 发送该文件的第一个比特开始,到主机 B 接收到该文件的最后一个比特为止,所经历的总时间。 ④ 往返时延:计算该链路的往返时延。 ⑤ 时延带宽积:计算该链路的时延带宽积,并说明其物理意义。 ⑥ 信道利用率:如果我们将“从开始发送第一个比特到接收完最后一个比特的时间”视为该文件传输任务对信道的占用时间,请计算在此次传输过程中,该链路的信道平均利用率。
答: ① 比特时间:比特时间 = 1 / 带宽 = 1 / (1×10⁹ b/s) = 10⁻⁹ 秒 = 1 纳秒。 ② 传输时延:文件大小 L = 12.5 MB = 12.5×1024×1024×8 bits = 104857600 bits;传输时延 D_trans = L / 带宽 = 104857600 bits / (1×10⁹ b/s) ≈ 0.10486 秒 = 104.86 ms。 ③ 总时延:总时延 = 传输时延 + 单向传播时延 = 104.86 ms + 5 ms = 109.86 ms。 ④ 往返时延(RTT):RTT = 2×单向传播时延 = 2×5 ms = 10 ms。 ⑤ 时延带宽积:时延带宽积 = 带宽 × 单向传播时延 = 1×10⁹ b/s × 5×10⁻³ s = 5×10⁶ bits = 5 Mb;物理意义:代表链路的“管道容量”,即从发送方发出第一个比特到该比特到达接收方的时间内,发送方最多能向链路上注入的比特数,反映链路可容纳的在途数据量。 ⑥ 信道平均利用率:信道占用时间 = 总时延 = 109.86 ms;实际传输数据的时间 = 传输时延 = 104.86 ms;利用率 = (传输时延 / 总时延)×100% ≈ (104.86 / 109.86)×100% ≈ 95.45%。
(2)请清晰地解释传输时延和传播时延的根本区别。哪一个取决于“数据块的大小”?哪一个取决于“物理距离”? 答:
- 根本区别:传输时延是将数据块的所有比特“发射”到链路上所需的时间(即数据从主机缓冲区到链路的时间);传播时延是单个比特信号在物理链路上从发送端传播到接收端的时间(即信号在介质中的传输时间)。
- 依赖关系:传输时延取决于数据块的大小(数据块越大,传输时延越长);传播时延取决于物理距离(距离越远,传播时延越长)和信号传播速度(介质相关)。
(3)带宽和吞吐量在概念上有何不同?在本题描述的理想场景下,主机 B 接收该文件的实际吞吐量是多少? 答:
- 概念区别:带宽是链路的理论最大数据传输速率(物理属性,如 1 Gbps),表示链路的传输能力上限;吞吐量是端到端实际测得的数据传输速率(实际性能指标),受带宽、时延、拥塞等因素影响,通常不超过带宽。
- 理想场景下的实际吞吐量:吞吐量 = 文件大小 / 总时延 = 104857600 bits / 0.10986 s ≈ 954.5 Mbps。
(4)如果另一个网络链路的时延带宽积很小,这通常意味着什么? 答: 意味着该链路的“管道容量”小,通常是短距离链路(传播时延小)或低带宽链路(传输速率低),例如局域网内的短距离低带宽链路,其可容纳的在途数据量少,对发送端的缓存需求较低。
(5)假设文件大小和传播时延不变,仅将链路带宽从 1 Gbps 提升到 10 Gbps: ① 传输时延将如何变化?是原来的几分之几? ② 总时延将如何变化? ③ 本次文件传输的吞吐量将如何变化?
答: ① 传输时延变化:新传输时延 D_trans_new = L / (10×10⁹ b/s) = 104857600 bits / 10¹⁰ b/s ≈ 0.01049 秒 = 10.49 ms;是原来的 1/10(10.49 ms / 104.86 ms ≈ 0.1)。 ② 总时延变化:总时延_new = 10.49 ms + 5 ms = 15.49 ms,相比原来的 109.86 ms 显著降低。 ③ 吞吐量变化:吞吐量_new = 104857600 bits / 0.01549 s ≈ 6770 Mbps(约 6.77 Gbps),相比原来的 954.5 Mbps 大幅提升,更接近链路带宽上限。
(6)假设文件大小和带宽不变,但这是一条卫星链路,传播时延增大到了 250 ms: ① 总时延将如何变化? ② 本次文件传输的吞吐量将如何变化? ③ 时延带宽积将如何变化?这一变化对网络设计有何启示?
答: ① 总时延变化:总时延_new = 104.86 ms + 250 ms = 354.86 ms,相比原来的 109.86 ms 显著增加。 ② 吞吐量变化:吞吐量_new = 104857600 bits / 0.35486 s ≈ 295.4 Mbps,相比原来的 954.5 Mbps 大幅下降,远低于 1 Gbps 的带宽上限。 ③ 时延带宽积变化:时延带宽积_new = 1×10⁹ b/s × 250×10⁻³ s = 250×10⁶ bits = 250 Mb,相比原来的 5 Mb 大幅增大;
启示:高时延带宽积链路(如卫星链路、长距离高速光纤)需要配置更大的发送端和接收端缓存,以容纳大量在途数据;同时需要优化传输协议(如 TCP 的拥塞控制算法),避免因在途数据过多导致的丢包或超时重传,提升链路利用率。
【题目 3】
(1)请简要说明协议分层的核心思想及其两个主要优点。 答:
- 核心思想:将复杂的网络通信功能划分为若干个层次分明、功能独立的模块,每个层次仅关注自身核心任务,通过标准化的层间接口与上下层交互,无需关心其他层次的实现细节。
- 主要优点:
- 模块化设计,易于实现和维护:各层功能独立,某一层的技术升级或故障修复不会影响其他层次(如升级传输层协议不影响物理层链路),降低开发和维护复杂度。
- 灵活性强,便于扩展:支持不同厂商的设备 interoperability(互操作),只要遵循层间接口标准,可替换某一层的实现(如物理层可选用光纤或双绞线);同时便于新增功能(如在应用层新增视频通话协议)。
(2)在因特网的实际模型结构中,传输层和网络层的核心任务分别是什么?这种职责划分带来了什么好处? 答:
- 核心任务:
- 网络层:核心任务是实现“主机到主机”的逻辑寻址(如 IP 地址)和路由选择,负责将数据包从源主机通过中间路由器转发到目的主机,解决跨网络的端到端传输路径问题。
- 传输层:核心任务是实现“进程到进程”的端到端传输服务,包括可靠传输(TCP)、不可靠传输(UDP)、流量控制、拥塞控制等,屏蔽网络层的不可靠性(如丢包、延迟),为应用层提供统一的传输接口。
- 职责划分的好处:实现了通信子网(网络层及以下,负责数据转发)与资源子网(传输层及以上,负责应用服务)的解耦。网络层专注于底层路由和寻址,可独立优化网络拓扑和转发效率;传输层专注于上层进程间通信,可根据应用需求提供不同的传输服务(如实时应用用 UDP,文件传输用 TCP)。这种划分让网络设计更灵活,应用开发无需关注底层网络细节,只需调用传输层服务即可。
【题目 4】
尽管 OSI 模型理论清晰完整,但最终未被广泛应用,而 TCP/IP 模型却成为了事实上的国际标准。请从实践性和设计哲学的角度,分析导致这一结果的至少两个原因。 答: (1)实践性角度:
- TCP/IP 模型“先有协议后有模型”,具有先发优势:TCP/IP 协议簇在模型正式定义前已被用于 ARPANET(互联网前身),经过大规模实践验证,具备成熟的实现方案和 interoperability(互操作性),自然成为行业默认标准;而 OSI 模型“先有模型后有协议”,理论设计完成时 TCP/IP 已占据市场主导,OSI 协议的实现复杂、运行效率低,且缺乏实际部署案例,难以推广。
- OSI 模型的七层架构过于繁琐,协议实现成本高:OSI 模型严格划分七层,部分功能存在重复(如流量控制在数据链路层、传输层均有涉及),导致协议栈复杂、资源占用高;而 TCP/IP 模型简化为四层(或五层),协议实现更简洁高效,适合各类设备(从大型服务器到小型传感器)部署。
(2)设计哲学角度:
- OSI 模型追求“理想化的全面性”,缺乏灵活性:OSI 模型试图为所有通信场景提供统一的完美解决方案,严格的分层限制了跨层优化,难以适应快速变化的网络需求(如实时通信、移动网络);而 TCP/IP 模型遵循“实用主义”,允许跨层交互(如应用层直接使用 IP 协议),设计以“够用”为原则,可根据实际需求灵活扩展(如新增 HTTP、DNS 等应用层协议)。
- TCP/IP 模型与互联网应用深度绑定:TCP/IP 协议簇直接支持网页浏览、文件传输、电子邮件等核心互联网应用,形成“应用-协议-网络”的良性循环;而 OSI 模型与具体应用场景脱节,缺乏杀手级应用支撑,难以吸引厂商和用户采纳。
第二章 网络中的数据通信
一、网络中的信号及传输介质
1. 核心概念区分
- 信息:有意义的内容(如“边关十万敌军入侵”“上课/下课”)
- 数据:信息的数字化表示
- 信号:数据在传输介质中的载体(电信号、光信号、无线电波等)
2. 网络中的信号类型
(1)按传输载体分类
| 信号类型 | 传输带宽 | 抗干扰能力 | 使用成本 | 主要应用场景 |
|---|---|---|---|---|
| 有线电信号 | 中等 | 中等 | 低 | 局域网、电话网 |
| 无线电信号 | 小~中等 | 弱 | 中 | WiFi、蜂窝网络 |
| 光信号 | 大 | 强 | 高 | 局域网、城域网、广域网 |
(2)按信号形式分类
- 模拟信号:随时间连续变化,表达式为
x(t)=Asin(2πft+φ)(A=振幅,f=频率,φ=相位)- 复杂模拟信号可通过傅里叶变换分解
- 数字信号:离散且值瞬时变化
- 比特间隙:发送 1 比特的时间
- 比特率:每秒发送的比特数(bps 或 b/s)
3. 传输介质分类及特性
(1)导引型介质(信号沿固体媒体传输)
| 介质类型 | 结构/原理 | 特点 | 分类 | 典型应用 |
|---|---|---|---|---|
| 双绞线 | 两根绝缘铜导线绞合,减小电磁干扰 | 成本低、安装方便、短距离适用 | 屏蔽双绞线(STP)、非屏蔽双绞线(UTP) | 以太网、电话线 |
| 同轴电缆 | 铜芯→绝缘层→金属编织层→外护套 | 抗干扰性好、带宽高于双绞线 | 基带同轴、宽带同轴 | 有线电视、老式以太网 |
| 光纤 | 利用光的全反射传输光脉冲,结构为芯线→包层→涂覆层→护套 | 带宽极高、抗干扰强、适合长距离 | 单模光纤(远距离)、多模光纤(短距离) | 骨干网、数据中心 |
(2)非导引型介质(信号自由传播)
- 无线电波:发射器将信号调制为电磁波,通过空气传播
- 频段分类:低频(AM 广播)、高频(Wi-Fi、蓝牙)、超高频(4G/5G)
- 影响因素:反射、障碍物阻隔、干扰
4. 以太网常用传输介质与标准
- 标准命名规则:
- 前缀数字:传输速率(如 10=10Mbps、100=100Mbps、1000=1Gbps、10G=10Gbps)
- 后缀字母:传输介质(T=双绞线、F=光纤、2/5=同轴电缆)
- 典型标准示例:
- 10BASE-T:双绞线,传输距离 100m
- 1000BASE-LX:单模/多模光纤,传输距离 550m/5000m
- 10GBASE-T:CAT6a 双绞线,传输距离 100m
二、网络中的数据传输
1. 通信模型与系统组成
- 核心要素:信源→发送设备→传输系统→接收设备→信宿
- 典型示例:PC 机→调制解调器→公用电话网→调制解调器→PC 机
- 数字比特流→模拟信号(调制)→模拟信号→数字比特流(解调)
2. 信息编码方式(4 类)
(1)数字-数字编码(数字信号表示数字信息)
| 编码类型 | 特点 | 典型方式 |
|---|---|---|
| 单极性编码 | 高电平=1,低电平=0,有直流分量 | - |
| 极化编码 | 正负电压表示,减轻直流问题 | 非归零编码(NRZ-L/NRZ-I)、归零编码(RZ)、双相位编码 |
| 双极性编码 | 正/负/零三电平,0=零电平,1=正负交替 | - |
- 关键编码:
- 曼彻斯特编码(MPE):比特中间跳变(负→正=1,正→负=0),自带同步
- 差分曼彻斯特编码(DME):比特中间跳变同步,起始跳变=0,无跳变=1
(2)数字-模拟编码(模拟信号表示数字信息)
- o 核心原理:调制载波的振幅、频率、相位
| 编码类型 | 原理 | 特点 |
|---|---|---|
| 幅移键控(ASK) | 不同振幅表示 0/1 | 抗干扰差 |
| 频移键控(FSK) | 不同频率表示 0/1 | 稳定性高于 ASK |
| 相移键控(PSK) | 不同相位表示 0/1,支持多状态(如 4-PSK 表示 2 比特) | 应用广泛 |
| 正交调幅(QAM) | 结合 ASK 和 PSK,多振幅+多相位 | 高频谱效率 |
(3)模拟-数字编码(A/D 转换)
- 步骤:采样→量化→编码
- 采样定理:采样频率>信号最高频率的 2 倍,可无失真还原
(4)模拟-模拟编码
- 应用:传统有线电视、电话系统,适用于声音信号(20Hz~20kHz)
3. 基带信号与带通信号
- 基带信号:信源直接产生的原始信号,含低频/直流分量,部分信道不支持
- 带通信号:通过载波调制后的信号,适合长距离传输,需调制解调过程
4. 传输速率相关定理
(1)奈氏准则(无噪声信道)
- 核心公式:波特率
B = 2×W(W=信道带宽,单位 Hz) - 比特率与波特率关系:
S = B×log₂N(N=码元状态数) - 意义:无噪声时,信道最大传输速率由带宽和码元状态决定
(2)香农定理(有噪声信道)
- 核心公式:
C = W×log₂(1+S/N)(C=最大传输速率,S/N=信噪比) - 信噪比换算:
信噪比(dB) = 10×log₁₀(S/N) - 意义:噪声存在时,传输速率受带宽和信噪比双重限制
5. 信道通信方式
(1)按传输方向分类
- 单工:单向传输(如广播电视)
- 半双工:双向但不同时(如对讲机)
- 全双工:双向同时传输(如电话)
(2)按接收方分类
- 点到点通信:一对一(如拨号上网)
- 广播通信:一对多(如无线广播)
6. 物理层功能与设备
(1)物理层核心功能
- 解决比特传输问题,定义接口四特性:
- 机械特性:插头、线缆、针脚排列
- 电气特性:电压、电流规格
- 功能特性:线路电压含义
- 规程特性:发送/接收时序
(2)常见物理层设备
- 中继器:再生放大信号,延长传输距离,两端为同一协议/速率的网段
- 集线器:共享式设备,放大转发信号到所有端口(除输入端口),无定向传输能力
三、数据可靠传输的基本需求
1. 数据传输的异常情况
| 异常类型 | 原因 | 影响 |
|---|---|---|
| 数据丢失 | 信道质量差、网络拥塞、路由环路 | 部分数据未到达接收方 |
| 数据出错 | 电磁干扰、信号衰减、编码错误 | 数据比特位改变,无法解析 |
| 数据乱序 | 多路径传输、负载均衡、重传错乱 | 接收顺序与发送顺序不一致 |
| 数据重复 | ACK 丢失、缓存错误 | 接收方重复处理数据 |
2. 异常检测方法
- 丢包检测:Ping 命令(ICMP Echo 请求)、Traceroute 路由跟踪
- 丢包率计算:
丢包率 = (丢失数据包数/发送数据包总数)×100% - 差错检测:误码率(
出错比特数/总比特数)、校验和、奇偶校验、循环冗余校验(CRC)
3. 可靠传输的基本需求
| 需求类型 | 具体要求 | 说明 |
|---|---|---|
| 功能性 | 无丢失 | 所有发送数据均需到达接收方 |
| 功能性 | 无错误 | 到达数据与原始数据一致 |
| 功能性 | 按序到达 | 乱序数据需重排后交付 |
| 功能性 | 无重复 | 避免数据重复处理 |
| 性能性 | 高效 | 高传输效率,低资源占用 |
4. 核心差错检测技术
| 检测方式 | 应用层 | 原理 |
|---|---|---|
| 校验和 | 运输层、网络层 | 报文 16 比特字求和,进位回卷,接收方比对 |
| 奇偶校验 | 链路层 | 增加 1 比特,使总比特数为奇/偶数 |
| 循环冗余校验(CRC) | 链路层 | 基于多项式运算,检错能力强 |
四、数据可靠传输模型及传输协议设计
1. 可靠传输任务建模
- 核心目标:N 层利用 N-1 层的不可靠传输服务,为 N+1 层提供可靠传输服务
- 关键函数:
rdt_send():上层调用,发送数据udt_send():调用底层,传输分组(不可靠)rdt_rcv():接收底层分组deliver_data():交付数据给上层
2. 逐步演进的可靠传输协议(FSM 描述)
(1)Rdt 1.0(可靠信道)
- 假设:无比特错误、无丢包
- 逻辑:发送方直接发送分组,接收方直接交付数据,无反馈机制
(2)Rdt 2.0(存在比特错误)
- 核心机制:差错检测(校验和)+ 反馈(ACK/NAK)+ 检错重传
- 局限:ACK/NAK 分组可能受损,无法分辨
(3)Rdt 2.1(解决 ACK/NAK 受损)
-
改进:分组编号(0/1 交替),接收方通过序号确认分组,发送方根据序号重传
-
发送方:支持序号 0/1 的分组发送与确认等待
-
接收方:
-
若序号是期望的 → 接收并发送 ACK。
-
若是重复分组(序号与上次相同)→ 仍发送 ACK(避免发送方因 ACK 丢失而重传)
-
(4)Rdt 2.2(取消 NAK)
- 优化:仅用 ACK 反馈,ACK 包含确认序号,重复 ACK 视为 NAK
- 接收方:对最后正确接收的分组发送 ACK,无需 NAK
(5)Rdt 3.0(存在丢包)
-
新增机制:超时重传
-
发送方:发送分组后启动定时器,超时未收到 ACK 则重传
-
接收方:保持按序接收与 ACK 反馈逻辑
3. 缓冲区设计规则
- 发送端缓冲区:不小于链路带宽-时延积(确保 RTT 内链路不空闲)
- 接收端缓冲区:至少等于带宽-时延积(避免因缓冲区不足导致发送端停发)
五、数据可靠传输模型的性能优化
1. Rdt 3.0 的性能瓶颈
- 问题:停-等机制导致链路利用率极低(如 1Gbps 链路、15ms RTT,吞吐量仅 33kB/sec)
- 根源:发送方需等待前一分组 ACK 才能发送下一分组,链路空闲时间长
2. 核心优化技术:流水线技术
- 原理:允许发送方连续发送多个分组,无需等待即时 ACK
- 关键要求:
- 扩大分组序号范围(k 位编码)
- 增大发送方/接收方缓冲区(窗口机制)
3. 两种流水线协议对比
(1)回退 N 步(GBN)协议
| 特性 | 具体说明 |
|---|---|
| 确认方式 | 累积 ACK(ACK(n)确认序号≤n 的所有分组) |
| 定时器 | 对所有未确认分组统一设置一个定时器 |
| 超时处理 | 重传超时分组及窗口内所有后续分组 |
| 失序分组 | 丢弃不缓存,重发最高序号正确分组的 ACK |
| 窗口大小 | 发送方窗口≤2ᵏ-1,接收方窗口=1 |
(2)选择重传(SR)协议
| 特性 | 具体说明 |
|---|---|
| 确认方式 | 单个 ACK(ACK(n)仅确认分组 n) |
| 定时器 | 为每个未确认分组单独设置定时器 |
| 超时处理 | 仅重传超时的单个分组 |
| 失序分组 | 缓存窗口内的失序分组,按序交付 |
| 窗口大小 | 发送方/接收方窗口≤2ᵏ⁻¹ |
4. ARQ 协议家族总结
- 定义:自动重传请求(Automatic Repeat reQuest),利用确认和超时保证可靠性
- 包含协议及窗口特性:
协议类型 最大发送窗口 接收窗口 停-等协议(Rdt 3.0) 1 1 GBN 协议 N<序号空间大小 1 SR 协议 N<1/2×序号空间大小 N
5. 滑动窗口性能优化
- 窗口大小影响:窗口越大,吞吐率越高(受限于带宽×时延)
- 最佳窗口值:基于带宽-时延积估算,确保链路充分利用
- 流量控制核心:接收方通过窗口大小控制发送方发送速率,避免缓冲区溢出
六、课后作业
【题目 1】
用香农公式计算一下,假定信道带宽为 3100 Hz,最大信息传输速率为 35 kbit/s,那么若想使最大信息传输速率增加 60%,问信噪比 S/N 应增大到多少倍?如果在刚才计算的基础上将信噪比 S/N 再增加 10 倍,问最大信息传输速率能否再增加 20%?
香农公式:(bps)
- 其中:W 为信道带宽,S 为平均信号功率,N 为平均噪声功率
答:
- 第一步:计算初始信噪比 根据香农公式变形得 ,代入已知条件:
- 初始最大信息传输速率
- 信道带宽
- 初始信噪比 (题目中已简化计算,直接取 )
- 第二步:计算传输速率增加 60% 后的信噪比
- 新传输速率
- 对应信噪比 (题目简化计算取 )
- 信噪比增大倍数: 倍
- 第三步:信噪比再增加 10 倍后的传输速率验证
- 新信噪比
- 对应最大信息传输速率
- 验证是否能增加 20%:
- 对比结果:,实际传输速率仅增加 ,无法达到 20%。
【题目 2】
考虑一个 GBN 协议,发送方窗口大小为 4,序号空间为 1024。时刻 t,接收方“期待的下一个有序分组”的序号为 k(信道不重排)。请问:
(1)发送方窗口内的报文序号 答: GBN 协议中,发送方窗口为连续序号,窗口大小固定为 4,且接收方期待下一个序号为 k,说明序号小于 k 的分组已被接收方确认(或未发送)。由于不清楚发送方已收到的 ACK 情况,窗口的起始序号(base)需满足“窗口内包含未被确认的分组”,且窗口大小为 4,因此可能的窗口范围如下:
- 若最早未被确认的序号为 ( k-4 ),则窗口为 ( {k-4, k-3, k-2, k-1} )
- 若最早未被确认的序号为 ( k-3 ),则窗口为 ( {k-3, k-2, k-1, k} )
- 若最早未被确认的序号为 ( k-2 ),则窗口为 ( {k-2, k-1, k, k+1} )
- 若最早未被确认的序号为 ( k-1 ),则窗口为 ( {k-1, k, k+1, k+2} )
- 若最早未被确认的序号为 ( k ),则窗口为 ( {k, k+1, k+2, k+3} ) (注:题目原答案中“若 k-1 未被确认,窗口为{k-2,k-1,k,k+1,k+2}”存在笔误,GBN 窗口大小固定为 4,修正为上述连续 4 个序号的窗口范围)
(2)正在回传途中的 ACK 字段的可能值 答: 接收方发送的 ACK 字段值表示“期待的下一个序号”,结合 GBN 协议的累计确认机制:
- 接收方当前期待序号为 k,说明已正确接收序号小于 k 的分组,且会对每个正确接收的分组返回累计 ACK(确认到最近一个有序分组)。
- 发送方窗口大小为 4,因此接收方近期可能发送的 ACK 序号范围为 ( k-4 ) 到 ( k-1 )(更早的 ACK 如 ( k-5 ) 已被发送方接收,否则发送方窗口无法滑动到包含 ( k-1 ) 的范围)。
- 综上,正在回传途中的 ACK 字段可能值为 ( {k-4, k-3, k-2, k-1} )
【题目 3】
现在我们对 SR 协议做一个简单的改造,接收方可以将自己的接收窗口大小 X 通知发送方,发送方在收到该通知后,将自己的发送窗口大小设置为 X。现在 A 准备发送 20K 字节的数据,B 初始化得到了一个大小为 6K 字节的接收缓冲区,并通知了 A。假设 A 和 B 在传送数据时,分组大小为 1K 字节,分组编号从 0 开始。现在 AB 之间发生了以下事件: 1)A 发送了 3K 字节的数据; 2)A 又发送了 2K 字节的数据; 3)B 收到了 5K 字节的数据,经过校验,2K-3K 字节间的数据出错,此时 B 的接收缓冲区被系统收回 3K 字节,B 向 A 发送了选择性否认应答(NACK 2 buf 3K),A 收到了 B 发出的该应答; 4)A 发送完此时缓冲区中需要发送的所有数据; 5)B 正确收到了 A 发送的上述数据,并又从系统额外申请了 1K 字节的接收缓冲区,B 对 A 发送的上述数据做确认应答(ACK),A 收到了 B 发出的确认应答;
请画图描述 A 在每一步骤后的变化情况,包括:发送窗口数据序号区域、发送并被确认的数据序号区间、发送但未被确认的数据序号区间、可以发送的数据序号区间和不能发送的数据序号区间。
答:
步骤 1:A 发送了 3K 字节的数据(对应分组编号 0、1、2)
- 发送窗口区域:0–5(接收方初始接收窗口 6K 字节,分组大小 1K,窗口包含 6 个分组编号)
- 发送并被确认的数据序号区间:无
- 发送但未被确认的数据序号区间:0–2
- 可以发送的数据序号区间:3–5
- 不能发送的数据序号区间:6–19(总数据 20K 字节,对应分组编号 0–19)
步骤 2:A 又发送了 2K 字节的数据(对应分组编号 3、4)
- 发送窗口区域:0–5(接收窗口未变化,发送窗口保持不变)
- 发送并被确认的数据序号区间:无
- 发送但未被确认的数据序号区间:0–4
- 可以发送的数据序号区间:5
- 不能发送的数据序号区间:6–19
步骤 3:B 发送 NACK 2 buf 3K,A 收到应答
- 发送窗口区域:2–4(接收方缓冲区收回 3K 后剩余 3K,窗口大小变为 3,窗口起始序号调整为未确认的错误分组编号 2)
- 发送并被确认的数据序号区间:0、1、3、4(B 正确接收分组 0、1、3、4,仅分组 2 出错)
- 发送但未被确认的数据序号区间:2(分组 2 出错,需重传)
- 可以发送的数据序号区间:2(仅允许重传分组 2,新数据因窗口限制不可发)
- 不能发送的数据序号区间:5–19
步骤 4:A 发送完此时缓冲区中需要发送的所有数据
- 发送窗口区域:2–4(窗口未变化)
- 发送并被确认的数据序号区间:0–1、3、4
- 发送但未被确认的数据序号区间:2(仅重传分组 2,无其他需发送数据)
- 可以发送的数据序号区间:无
- 不能发送的数据序号区间:5–19
步骤 5:B 发送 ACK,A 收到应答
- 发送窗口区域:5–8(B 额外申请 1K 缓冲区,接收窗口变为 4K,窗口大小 4;已确认分组 0–4,窗口滑动至下一个未发送区间)
- 发送并被确认的数据序号区间:0–4(所有分组均正确接收)
- 发送但未被确认的数据序号区间:无
- 可以发送的数据序号区间:5–8
- 不能发送的数据序号区间:9–19
【题目 4】
数字信号和数位化编码的数据之间存在着自然的联系。信号编码在执行中伪装了数据,并且能够有效地承载数据,某种程度上增强了信息的安全性。按照要求表示数字信号编码波形,初始状态为高电平,严格使用尺子和铅笔作图。
第三章 网络服务及应用
一、网络服务概述
1. 网络应用体系架构
| 架构类型 | 核心特征 | 典型应用 | 优缺点 |
|---|---|---|---|
| 客户机/服务器(C/S) | 存在中心服务器,客户机主动连接 | Web、FTP、电子邮件 | 优点:易管理、服务稳定;缺点:服务器压力大、扩展性差 |
| P2P 体系架构 | 节点既为客户机也为服务器,直接通信 | 迅雷、PPLive、BT | 优点:高可扩展性、资源分布式存储;缺点:难管理、安全性较差 |
| 混合体系架构 | 结合 C/S 和 P2P 特性 | 微信、QQ(文件传输+服务器认证) | 优点:兼顾稳定性和扩展性;缺点:架构复杂 |
2. 网络应用的传输服务需求
| 应用类型 | 数据丢失容忍度 | 带宽需求 | 实时性要求 | 典型传输协议 |
|---|---|---|---|---|
| 文件传输、电子邮件 | 零容忍 | 弹性 | 无 | TCP |
| Web 网页 | 零容忍 | 弹性 | 无 | TCP |
| 实时音频/视频 | 允许丢失 | 音频 5Kb-1Mb、视频 10Kb-5Mb | 100ms 内 | UDP(部分用 TCP) |
| 交互式游戏 | 允许丢失 | 几 Kb/s 以上 | 100ms 内 | UDP |
| 金融应用 | 零容忍 | 弹性 | 有条件 | TCP |
3. 因特网提供的两类核心传输服务
(1)TCP 服务
- 核心特性:面向连接、可靠传输、流量控制、拥塞控制
- 不提供:实时性、最小带宽承诺
- 适用场景:对可靠性要求高的应用(文件传输、网页浏览、邮件)
(2)UDP 服务
- 核心特性:无连接、不可靠传输
- 不提供:连接建立、可靠性、流量控制、拥塞控制
- 适用场景:实时性要求高、可容忍少量丢包的应用(IP 电话、流媒体、游戏)
4. 多路复用与多路分解
- 核心概念:
- 复用:发送方不同应用进程的数据通过同一传输层协议(TCP/UDP)封装后,共用网络层通道传输
- 分用:接收方传输层根据端口号,将数据交付给对应的应用进程
- 关键标识:
- 端口号(16 位):标识主机内的应用进程,范围 0-65535(0-1023 为知名端口)
- 套接字(Socket):IP 地址+端口号,唯一标识互联网中的通信端点
- TCP 套接字:四元组(源 IP、源端口、目的 IP、目的端口)
二、面向无连接的不可靠服务—UDP 协议
1. UDP 协议核心特性
- 仅提供两大功能:多路复用/多路分解、差错检查
- 无连接、无可靠性保证、无流量控制、无拥塞控制
- 首部开销小(8 字节),相比 TCP(20 字节固定首部)更高效
2. UDP 数据报结构(32 位对齐)
| 字段 | 长度(比特) | 功能 |
|---|---|---|
| 源端口号 | 16 | 标识发送方应用进程 |
| 目的端口号 | 16 | 标识接收方应用进程 |
| 长度 | 16 | 包含首部的 UDP 数据报总字节数 |
| 检查和 | 16 | 校验数据报完整性(可选,IPV6 强制) |
| 应用数据 | 可变 | 上层应用数据 |
3. UDP 的优势与适用场景
- 优势:无需建立连接(低时延)、协议简单、无拥塞控制(可按需发送)
- 典型应用:域名解析(DNS)、IP 电话、流媒体、网络管理(SNMP)、HTTP/3
4. UDP 的潜在问题与解决
- 问题:大量 UDP 流量可能导致网络拥塞,挤占 TCP 带宽
- 可靠 UDP 实现:在应用层自行添加重传、序号、确认机制(如 RTP 协议)
三、面向连接的可靠服务—TCP 协议
1. TCP 协议核心目标
- 面向连接、全双工、点对点、可靠有序字节流
- 支持流量控制、拥塞控制、流水线传输
2. TCP 报文段首部结构(20 字节固定部分)
| 字段 | 长度(比特) | 功能 |
|---|---|---|
| 源端口号/目的端口号 | 16/16 | 应用进程标识 |
| 序列号(Seq) | 32 | 报文段数据中第一个字节的字节流编号 |
| 确认号(Ack) | 32 | 期待接收的下一个字节的序列号(累积确认) |
| 首部长度 | 4 | 标识 TCP 首部总长度(以 4 字节为单位) |
| 标志位 | 6 | SYN(连接建立)、ACK(确认)、FIN(连接释放)、RST(重置)等 |
| 窗口 | 16 | 流量控制窗口大小(接收方剩余缓存空间) |
| 检查和 | 16 | 校验报文段完整性 |
| 紧急指针 | 16 | 指向紧急数据的偏移量 |
| 选项(可选) | 可变 | 如最大报文段长度(MSS)、窗口扩大因子等 |
3. TCP 核心机制
(1)序号与确认机制
- 序列号:按字节流编号,确保数据有序
- 确认号:对已接收数据的确认,采用累积确认(确认号=N 表示前 N-1 字节已接收)
- 乱序处理:TCP 规范未明确,由实现者决定(通常缓存乱序报文段)
(2)流量控制(基于滑动窗口)
- 核心目标:防止发送方发送过快导致接收方缓存溢出
- 实现方式:接收方通过 TCP 首部的“窗口”字段,告知发送方可发送的最大字节数(RcvWindow)
- 特殊情况:RcvWindow=0 时,发送方发送 1 字节探测报文,确认接收方缓存状态
(3)连接管理(三次握手+四次挥手)
- 连接建立(三次握手):
-
客户端发送 SYN 报文(Seq=x)
-
服务器回复 SYN+ACK 报文(Seq=y,Ack=x+1)
-
客户端发送 ACK 报文(Seq=x+1,Ack=y+1)
-
- 连接释放(四次挥手):
- 主动方发送 FIN 报文(Seq=x)
- 被动方回复 ACK 报文(Ack=x+1)—— 半关闭状态
- 被动方发送 FIN 报文(Seq=y)
- 主动方回复 ACK 报文(Ack=y+1)
(4)重传机制
- 超时重传:基于 RTT 估算超时时间,超时未确认则重传
- 快速重传:收到 3 个重复 ACK,立即重传丢失报文段(无需等待超时)
- 超时间隔加倍:每次重传后,超时时间设为先前的 2 倍(退避机制)
(5)RTT 估算与超时设置
当获得一个新的 RTT_sample 后,按以下公式更新 EstimatedRTT 和 DevRTT:
注:α = 1/8,β = 1/4(即权重,RFC 建议值)
-
第一次测量时:
-
后续测量时:
即:
RTO(重传超时时间)计算
四、万维网(World Wide Web)
1. WEB 核心构成
- 三大组件:Web 服务器(IIS、Apache、TomCat)、浏览器(Chrome、Firefox)、HTTP 协议
- 核心模式:C/S 模式,基于 TCP 协议(默认端口 80)
- 内容标识:URL(统一资源定位符),格式为
协议://主机名/路径名(如http://www.hust.edu.cn/cs/pic.gif)
2. HTTP 协议核心特性
- 无状态协议:服务器不维护客户端会话状态(通过 Cookie 补充)
- 报文类型:请求报文(客户端→服务器)、响应报文(服务器→客户端)
3. HTTP 请求报文结构
- 组成:请求行 + 首部行 + 空行 + 实体主体
- 请求行格式:
方法 URL 版本(如GET /index.html HTTP/1.1) - 核心方法:
- GET:请求指定 URL 的资源(数据可放在 URL 中)
- POST:提交表单数据(数据放在实体主体中)
- HEAD:仅返回响应报文首部,不包含资源
- PUT/DELETE:上传/删除指定资源
4. HTTP 响应报文结构
- 组成:状态行 + 首部行 + 空行 + 实体主体
- 状态行格式:
版本 状态码 短语(如HTTP/1.1 200 OK) - 常见状态码:
- 200 OK:请求成功
- 301 Moved Permanently:资源永久迁移
- 404 Not Found:资源未找到
- 505 HTTP Version Not Supported:协议版本不支持
5. HTTP 传输模式演进
| 版本 | 传输模式 | 特点 | 优缺点 |
|---|---|---|---|
| HTTP/1.0 | 非持久性连接 | 每个对象建立一个 TCP 连接 | 优点:实现简单;缺点:连接开销大、时延高 |
| HTTP/1.1 | 持久连接 | 单个 TCP 连接传输多个对象(流水线/非流水线) | 优点:减少连接开销;缺点:存在队首阻塞(HOL) |
| HTTP/2 | 报文分帧 | 按优先级分帧传输,支持服务器推 | 优点:解决 HOL 阻塞;缺点:依赖 TCP(仍有连接级阻塞) |
| HTTP/3 | QUIC 协议 | 基于 UDP,零 RTT 连接建立 | 优点:彻底解决阻塞,低时延;缺点:兼容性需适配 |
6. Cookie 技术(会话状态管理)
- 核心组成:HTTP 响应首部(Set-Cookie)、HTTP 请求首部(Cookie)、客户端 Cookie 文件、服务器后端数据库
- 功能:实现用户认证、购物车、个性化推荐等会话相关功能
- 隐私问题:可能泄露用户行为数据,需注意权限控制
五、文件传输协议(FTP)
1. FTP 核心特性
- 基于 C/S 模式,使用 TCP 协议,端口 21(控制连接)、20(数据连接)
- 双连接机制:
- 控制连接:持久连接,传输命令(USER、PASS、LIST、RETR、STOR)和响应
- 数据连接:临时连接,传输文件数据或目录列表
- 带外控制:控制信息与数据分开传输(区别于 HTTP 的带内控制)
2. FTP 与 HTTP 的区别
| 对比维度 | FTP | HTTP |
|---|---|---|
| 连接类型 | 双连接(控制+数据) | 单连接 |
| 控制方式 | 带外控制 | 带内控制 |
| 状态维护 | 有状态(维护用户会话) | 无状态 |
| 主要用途 | 大批量文件传输 | 网页资源传输 |
3. 常见的 FTP 应答
- 331 Username OK, password required
- 125 data connection already open; transfer starting
- 425 Can’t open data connection
- 452 Error writing file
六、电子邮件服务
1. 电子邮件系统构成
- 三大组件:用户代理(Outlook、FoxMail)、邮件服务器、SMTP 协议
- 核心协议:
- SMTP:简单邮件传输协议,用于邮件服务器之间发送邮件(TCP 端口 25)
- POP3/IMAP:用于客户端从邮件服务器接收邮件(POP3 端口 110,IMAP 端口 143)
2. SMTP 协议核心特性
- 基于 TCP 可靠传输,采用“推”模式(服务器→服务器)
- 传输阶段:握手→报文传输→结束
- 报文格式:首部(To、From、Subject)+ 空行 + 信体(要求 7-bit ASCII 码,非 ASCII 需 MIME 扩展)
3. 邮件接收协议对比
| 协议 | 核心特性 | 适用场景 |
|---|---|---|
| POP3 | 下载-删除/保存模式,无状态,不支持服务器端邮件组织 | 单设备接收邮件,对同步要求低 |
| IMAP | 邮件存储在服务器,支持文件夹管理、状态同步,有状态 | 多设备同步邮件,需服务器端组织邮件 |
4. MIME 扩展(多用途互联网邮件扩展)
- 解决问题:SMTP 仅支持 7-bit ASCII 码的限制
- 核心字段:MIME-Version(版本)、Content-Type(媒体类型)、Content-Transfer-Encoding(编码方式,如 base64)
七、域名解析服务(DNS)
1. DNS 核心功能
- 域名→IP 地址映射(核心功能)
- 辅助功能:主机/邮件服务器别名解析、负载均衡(一个域名对应多个 IP)
2. DNS 体系结构
- 分布式数据库,层次化组织:
- 根 DNS 服务器(13 个):顶级域名解析入口
- 顶级域(TLD)服务器:负责.com、.edu、.cn 等顶级域名解析
- 权威 DNS 服务器:特定组织的域名服务器,提供权威解析
- 本地 DNS 服务器:代理客户端查询,缓存解析结果(非层次结构成员)
3. 域名结构
- 层次树状结构:
四级域名.三级域名.二级域名.顶级域名(如mail.cs.hust.edu.cn) - 顶级域名分类:通用顶级域(.com、.org、.edu)、国家/地区顶级域(.cn、.us、.uk)
4. DNS 解析过程
- 两种查询方式:
- 递归查询:本地 DNS 服务器向层次结构逐层查询,最终返回结果给客户端
- 迭代查询:本地 DNS 服务器向根服务器查询,根服务器返回下一级服务器地址,客户端逐级查询
- 缓存机制:域名服务器缓存解析结果,过期自动失效(减少查询时延和根服务器负载)
5. DNS 记录格式(RR)
- 格式:
(name, value, type, ttl) - 核心类型:
- A 记录:name=主机名,value=IP 地址(域名→IP)
- NS 记录:name=域名,value=该域的权威 DNS 服务器主机名
- CNAME 记录:name=别名,value=真实主机名(别名解析)
- MX 记录:name=域名,value=邮件服务器主机名(邮件路由)
八、P2P 文件分发
1. P2P 核心特性
- 无中心服务器,节点兼具客户端和服务器功能
- 高可扩展性:节点越多,总带宽越大,分发效率越高
- 分发模式:文件分块传输,节点间相互上传/下载分块
2. C/S 与 P2P 文件分发对比
| 对比维度 | C/S 模式 | P2P 模式 |
|---|---|---|
| 服务器压力 | 集中负载,压力大 | 分布式负载,无中心压力 |
| 扩展性 | 差(服务器瓶颈) | 好(节点越多效率越高) |
| 分发时延 | 随用户数增加而增长 | 用户数增加时延增长缓慢 |
| 可靠性 | 依赖中心服务器,单点故障风险 | 分布式架构,可靠性高 |
九、课后作业
【题目 1】
假设你是一名网络应用程序开发者,正在为你的新项目选择传输层协议。该项目包含两个核心功能:
- 功能 A:需要向服务器上传一个非常重要的压缩包文件,任何微小的错误(如比特差错、数据丢失)都将导致文件无法使用。
- 功能 B:需要与服务器建立一个实时视频通话功能,要求较高的流畅性,能够容忍微小的数据丢失,但对延迟极其敏感。 已知可供选择的传输层协议主要是 TCP 和 UDP。
(1)请简要阐述计算机网络中可靠传输服务和不可靠传输服务的核心区别。这两种服务分别最关注数据传输的哪些方面? 答: ① 可靠传输服务:致力于确保数据能够无差错、不丢失、不重复、且按序地交付给接收方。它最关注数据的正确性和完整性。 ② 不可靠传输服务:提供一种“尽力而为”的数据交付,不保证数据一定能到达接收方,也不保证到达的顺序和正确性。它最关注数据传输的效率和低延迟。
(2)从协议机制的角度,说明 TCP 为了实现可靠传输,主要提供了哪三种最核心的机制?(请勿简单罗列首部字段) 答: ① 确认与重传:接收方收到数据后会发送确认报文,发送方在一定时间内未收到确认则认为数据丢失,将重传该数据。 ② 序列号:为每个数据字节编号,用于接收方按序重组数据,并用于确认机制以指明期望收到的下一个数据。 ③ 流量控制与拥塞控制:通过滑动窗口等机制,防止发送方发送数据过快导致接收方缓冲区溢出或网络拥塞。
(3)请为上述项目的功能 A 和功能 B 分别选择合适的传输层协议(TCP 或 UDP)。 答:功能 A:应选择 TCP;功能 B:应选择 UDP。
(4)结合功能 A 的需求,详细论证你为何不选择另一个协议。 答: 功能 A 要求 100%的数据正确性和完整性。TCP 的确认重传、差错校验和按序交付机制能完美满足此需求。 如果错误地选择 UDP,UDP 不保证可靠交付,文件数据包可能在网络中丢失或损坏,导致接收方无法还原出原始文件,整个传输任务失败。虽然可以在应用层实现可靠性,但这极其复杂且重复造轮子,因此必须选择 TCP。
(5)结合功能 B 的需求,详细论证你为何不选择另一个协议。 答: 功能 B 对延迟极其敏感,且能容忍部分数据丢失。视频通话中丢失少量数据包可能仅导致画面短暂模糊或卡顿,但高延迟会导致音画严重不同步,体验极差。 TCP 的重传机制在遇到丢包时,会强制等待并重传,这将引入不确定的、有时很长的延迟(等待超时),严重破坏实时性。而 UDP 没有重传机制,遇到丢包就直接丢弃,继续传输后续的新数据,从而保证了低且稳定的延迟。因此,必须选择 UDP。
(6)有一种观点认为“UDP 是简单的、无连接的,因此其性能永远优于 TCP”。请判断这种观点是否正确,并阐述你的理由。 答: 该观点是不正确的。 理由:UDP 的性能优势(低延迟、无连接开销)仅在特定场景(如实时应用、小批量查询)下成立。TCP 通过拥塞控制机制能公平、高效地利用网络带宽,在传输大量数据时(如下载文件)其整体吞吐量和效率远高于 UDP。此外,在不可靠的网络中,TCP 的可靠性保障避免了大量应用层重传,其综合性能可能更好。因此,不能绝对地说 UDP 性能永远优于 TCP。
(7)既然 UDP 本身不提供可靠传输,为何许多重要的应用(如 DNS、视频会议)依然选择使用它?开发者是如何在 UDP 的基础上解决可靠性问题的? 答: ① 为何选择 UDP:因为这些应用更看重 UDP 的低延迟、无连接状态、头部开销小等特性。 ② 如何解决可靠性:开发者会在应用层根据具体需求,有选择地、轻量级地实现所需的可靠性机制,而不是像 TCP 那样提供全面的、强制的可靠性。 例子 1(DNS):DNS 使用简单的应用层超时重传机制。如果客户端在一定时间内未收到服务器的响应,它会重新发送一次查询请求。 例子 2(视频会议):应用层协议可能会为数据包添加序列号。接收方发现丢包后,可能会请求重传极其关键的数据(如 I 帧),而对于不重要的数据(如 P 帧、B 帧)则直接丢弃,并用纠错编码等技术来弥补,这是一种部分可靠的策略。
【题目 2】
主机 A 与主机 B 建立了一条 TCP 连接,用于可靠地传输数据。假设主机 A 要向主机 B 发送一个由 10 个报文段(Segment)组成的数据流,每个报文段包含 1000 字节的数据。已知初始序列号(ISS)为 5000,接收方主机 B 的初始接收窗口为 8000 字节。在传输过程中,忽略拥塞控制的影响。
(1)请写出第 1、第 5 和第 10 个报文段的数据所覆盖的字节序列号范围。 答: 第 1 个报文段:5000 - 5999 第 5 个报文段:5000 + (5-1)*1000 = 9000 → 9000 - 9999 第 10 个报文段:5000 + (10-1)*1000 = 14000 → 14000 - 14999
(2)当主机 B 成功接收并缓存了第 1 至第 3 个报文段,以及第 5 个报文段后(假设第 4 个报文段丢失),它发送出的下一个确认号(ACK)应该是多少?这个确认号的含义是什么? 答: TCP 采用累积确认。主机 B 成功接收了 1、2、3、5 号报文段,由于第 4 个报文段(Seq=8000)丢失,接收方期望收到的下一个字节序列号仍是 8000。因此,发出的确认号 ACK=8000。 该确认号的含义是:“8000 之前的所有字节(包括 7999)都已正确接收,请求发送方下次传输从 8000 字节开始的数据”。
(3)如果主机 B 的应用程序之后读取了 3000 字节的数据,主机 B 的接收窗口会发生什么变化?它如何通过报文告知主机 A 这一变化? 答: 接收窗口的右边界会向右移动 3000 字节(释放了 3000 字节的缓存空间),接收窗口大小变为 8000 + 3000 = 11000 字节。 主机 B 会在后续发送给主机 A 的 TCP 报文段首部中,通过“窗口字段(Window Size)”将新的接收窗口值通告给主机 A。
(4)主机 A 发送了第 1 个报文段(Seq=5000)。请描述在以下两种情况下,主机 A 的行为: ① 该报文段在传输过程中丢失。 ② 该报文段成功到达主机 B,但主机 B 返回的确认报文(ACK=6000)丢失。 答:
- ① 报文段丢失:主机 A 发送报文段后启动重传计时器(RTO)。若计时器超时仍未收到对应 ACK,则判定报文段丢失,并重传该报文段。
- ② ACK 丢失:主机 A 同样启动重传计时器。计时器超时后仍未收到 ACK,会判定“报文段或其 ACK 丢失”,并重传该报文段。
(5)以上两种情况的最终结果有何异同?这体现了 TCP 协议的什么特性? 答:
- 相同点:两种情况下,主机 A 的最终行为都是重传第 1 个报文段。
- 不同点:情况②中主机 B 已成功接收数据,此次重传属于不必要的“伪重传”;情况①的重传是必要的(数据未被接收)。
- 体现的特性:TCP 协议“可靠性优先”的设计原则,采用保守的丢失推断机制——只要无法确认数据已被接收,就默认按丢失处理并重传,宁可重复传输也不遗漏数据,确保最终可靠交付。
(6)在初始状态下,主机 A 的可用发送窗口(Send Window)有多大? 答: 初始可用发送窗口 = min(拥塞窗口, 接收窗口)。因题目忽略拥塞控制(假设拥塞窗口足够大),故可用发送窗口 = 接收窗口 = 8000 字节。
(7)假设主机 A 已连续发送了 5 个报文段(Seq=5000, 6000, 7000, 8000, 9000),但只收到了主机 B 对前两个报文段的确认(ACK=7000)。同时,主机 B 在 ACK=7000 的这个报文里通告其接收窗口(rwnd)变为 6000 字节。请画出此时主机 A 的发送窗口示意图,并标出已确认、已发送未确认、可发送、不可发送的数据范围。 答:
(8)根据(7)的条件,主机 A 接下来最多还能连续发送多少字节的数据? 答: 最多还能连续发送 3000 字节的数据(对应序列号 10000 - 12999,即 3 个 1000 字节的报文段)。
(9)TCP 并非通过在传输前复制多份数据副本来实现可靠传输。请简要阐述 TCP 是如何主要依靠 序列号、确认 和 重传 这三个基本机制来共同保障数据可靠传输的。 答:
- ① 序列号:为每个数据字节分配唯一编号,是可靠传输的基础——接收方可通过序列号检测丢包(序列号不连续)、去重(重复序列号)、按序重组数据;发送方可通过序列号跟踪已发送数据的状态。
- ② 确认:接收方通过返回 ACK 报文,告知发送方“确认号之前的所有数据已正确接收”,为发送方提供数据交付的正向反馈,明确哪些数据无需重传。
- ③ 重传:发送方若未在超时时间内收到 ACK,或收到重复 ACK,则推断数据丢失,触发重传机制,弥补传输错误。
- 三者协同:序列号标识数据,确认反馈交付状态,重传纠正丢失问题,形成“标识-反馈-纠错”的闭环,保障可靠传输。
(10)假设一个极其特殊的环境:网络传输非常可靠,几乎从不丢包,但延迟非常高(例如深空通信)。在这种环境下,TCP 的超时重传机制可能会面临什么挑战?能否提出一个简单的优化思路?(提示:从 RTO 的设置角度思考) 答:
- ① 挑战:高延迟环境中 RTT(往返时间)极大且波动大。若 RTO(超时重传时间)设置过短,会将正常的高延迟误判为丢包,导致大量不必要的伪重传,浪费带宽;若 RTO 设置过长,一旦发生罕见丢包,需等待极长时间才能重传,严重降低传输效率。
- ② 优化思路:采用自适应 RTO 计算算法(如 Jacobson/Karels 算法),通过实时测量 RTT 计算平均往返时间(EstimatedRTT)和 RTT 偏差(DevRTT),动态调整 RTO = EstimatedRTT + 4×DevRTT。该算法能根据网络延迟的波动实时适配 RTO,既避免短 RTO 导致的伪重传,也减少长 RTO 带来的效率损失。
【题目 3】
假设你是一名 Web 开发者,需要为你公司的老版 Web 服务器(仅支持 HTTP/1.0)升级到支持 HTTP/1.1 的新服务器。在测试过程中,你观察并记录了不同版本协议的行为。
(1)HTTP/1.0 默认使用非持久连接。请描述在此模式下,完成一个包含 1 个 HTML 文件和 3 张图片的网页加载,需要经历多少次完整的 TCP 连接建立与关闭过程? 答: 4 次。HTTP/1.0 非持久连接要求每个资源请求对应一个独立的 TCP 连接,因此:1 个 HTML 文件 + 3 张图片 = 4 个资源,需建立 4 次 TCP 连接,每个连接完成请求-响应后关闭,共经历 4 次“建立-关闭”完整过程。
(2)HTTP/1.1 对此做出了何种改进?请写出该机制的名称,并简述其如何提升性能。 答: 改进机制:持久连接(Persistent Connection)。 提升原理:HTTP/1.1 默认保持 TCP 连接长期有效,一个连接可承载多个连续的 HTTP 请求-响应(无需每次请求都建立新连接)。这减少了重复的 TCP 三次握手(建立连接)和四次挥手(关闭连接)开销,降低了页面加载延迟,同时减少服务器的连接管理压力,提升吞吐量。
(3)尽管 HTTP/1.1 的持久连接减少了 TCP 握手开销,但它仍然采用 “队头阻塞” 模型。请解释什么是“队头阻塞”? 答: 队头阻塞(Head-of-Line Blocking, HOLB)指在 HTTP/1.1 持久连接中,同一 TCP 连接内的 HTTP 请求必须串行执行(前一个请求的响应未返回前,后一个请求无法发送)。若队首的请求因服务器处理慢、网络延迟等原因阻塞,后续所有请求都会被卡住,即使后续请求的资源已就绪,也需等待前一个请求完成才能发送。
(4)基于你对 HTTP/1.1 的理解,请分析为什么即使在高速网络下,大量小资源(如图标、脚本)的加载速度也可能不理想? 答: 主要原因有三点:
- 队头阻塞限制:大量小资源需串行请求,单个请求阻塞会影响整体进度,无法充分利用高速网络的并行能力;
- 头部开销冗余:每个小资源请求都需携带完整的 HTTP 头部(如 Cookie、User-Agent 等重复字段),小资源本身体积小,头部占比高,浪费带宽;
- 并发连接受限:浏览器对同一域名的并发 TCP 连接数有上限(通常 6-8 个),大量小资源需排队等待空闲连接,进一步增加延迟。
(5)从 HTTP/1.0 到 HTTP/1.1 的演进,体现出网络协议设计中的哪些核心思想? 答: 体现的核心思想:
- 性能优化优先:针对原有协议的性能瓶颈(如频繁建立连接),通过机制创新(持久连接)降低开销;
- 兼容性与平滑演进:HTTP/1.1 保持与 HTTP/1.0 的核心语法兼容,无需彻底重构现有应用即可升级;
- 资源高效利用:通过复用连接、减少冗余开销,提升网络带宽和服务器资源的利用率;
- 贴合实际应用场景:针对 Web 页面多资源加载的场景,优化协议交互模式,提升用户体验。
第四章 局域网
一、局域网概述
1. 局域网定位与核心特征
- 核心定义:为地理位置临近的设备提供高速互联,是计算机网络的基本构建单元
- 链路与数据链路区分:
- 链路:两相邻节点间的物理通道(有线/无线)
- 数据链路:链路基础上结合硬件和协议的功能层(对应 OSI 第二层),含帧封装、差错检测、流量控制、MAC 等功能
2. 局域网拓扑结构
| 拓扑类型 | 核心特征 | 典型应用 |
|---|---|---|
| 总线型 | 所有设备共享一条总线,易布线 | 早期 10BASE5、10BASE2 同轴电缆以太网 |
| 星型 | 设备通过单独链路连接中央设备(集线器/交换机) | 现代以太网主流,双绞线组网(10BASE-T 等) |
| 树型 | 层次化星型结构,骨干链路级联 | 大型企业网、校园网,结合 VLAN 和三层交换 |
| 环形 | 节点首尾相连,单点断开可能影响整体 | 工业以太网(ERPS 协议)、令牌环变种 |
3. 链路类型对比
| 链路类型 | 基本特征 | 典型例子 |
|---|---|---|
| 广播链路 | 多设备共享信道,消息被所有设备接收 | 总线型以太网、无线局域网 |
| 点到点链路 | 两台设备专用链路,数据仅双向传输 | 交换机与主机间的链路 |
4. 有线与无线局域网对比
| 对比维度 | 有线局域网 | 无线局域网 |
|---|---|---|
| 传输介质 | 双绞线、同轴电缆、光纤 | 无线电波 |
| 速率 | 常见 100Mbps、1Gbps、10Gbps,稳定 | Wi-Fi 7 可达 10G+bps,受距离/干扰影响大 |
| 抗干扰性 | 强,不易受无线电干扰 | 弱,易受电磁波、障碍物影响 |
| 稳定性 | 延迟低、带宽稳定 | 延迟和带宽波动大 |
| 部署灵活性 | 布线复杂,灵活性差 | 无需布线,易于扩展和移动 |
二、多路访问链路和协议
1. 核心问题与协议目标
- 核心问题:广播链路中多设备同时发送数据会导致信号碰撞,接收端无法识别
- 协议目标:全分散控制、单节点独占信道时吞吐量为 R、多节点共享时各节点吞吐量为 R/M、简单易实现
2. 多路访问协议分类及特性
(1)信道划分协议
- 核心思想:将信道划分为多个“片”(时隙、频率、编码),分配给节点专用
| 协议类型 | 工作方式 | 优势 | 不足 |
|---|---|---|---|
| TDMA(时分多址) | 循环分配固定长度时隙,仅在时隙内发送 | 无碰撞 | 无数据时时隙空闲,信道浪费 |
| FDMA(频分多址) | 划分固定频段分配给节点 | 无碰撞 | 频段闲置时信道浪费 |
| CDMA(码分多址) | 所有节点共享全频段,通过独特编码区分 | 无碰撞、频谱利用率高 | 需信号同步,实现复杂 |
(2)随机访问协议
- 核心思想:信道不分割,允许碰撞,含碰撞检测与恢复机制
| 协议类型 | 工作方式 | 效率 | 典型应用 |
|---|---|---|---|
| 纯 ALOHA | 有数据即发送,碰撞后随机重传 | 18%(1/(2e)) | 早期无线通信 |
| 时隙 ALOHA | 时间划分时隙,仅在时隙开始时发送 | 37%(1/e) | 卫星通信 |
| CSMA(载波监听) | 发送前监听信道,空闲则发送,忙则等待 | 高于 ALOHA | - |
| CSMA/CD(带碰撞检测) | 发送中检测碰撞,碰撞后立即停止并发送干扰信号 | 性能优于 CSMA | 有线以太网 |
| CSMA/CA(带碰撞避免) | 发送前监听,通过预约机制避免碰撞 | 适配无线环境 | 无线局域网(802.11) |
(3)轮流协议
- 核心思想:节点轮流使用信道,平衡轻/重负荷场景
| 协议类型 | 工作方式 | 优势 | 不足 |
|---|---|---|---|
| 轮询协议 | 主节点邀请从节点轮流传输 | 无碰撞 | 主节点单点失效,轮询开销 |
| 令牌传递协议 | 令牌依次通过节点,持有令牌方可发送 | 公平性好 | 令牌丢失影响整体,有令牌开销 |
3. 关键协议细节
(1)CSMA 分类
- 非坚持 CSMA:信道忙则延迟随机时间后重监听
- 1 坚持 CSMA:信道忙则持续监听,空闲立即发送,易碰撞
- P 坚持 CSMA:信道空闲时以概率 P 发送,1-P 延迟后重监听,平衡冲突与利用率
(2)CSMA/CD 核心机制
- 碰撞检测:发送时监测信号强度,对比收发信号(有线易实现,无线困难)
- 强化碰撞:碰撞后发送干扰信号,通知所有节点
- 争用期(碰撞窗口):2 倍端到端往返时延(2τ),超过则确认无碰撞
- 最短有效帧长:64 字节(10Mb/s 以太网),小于则为无效冲突帧
(3)CSMA/CA 核心机制
- 碰撞避免:通过 RTS(请求发送)/CTS(允许发送)预约信道
- 链路层确认:接收方收到正确帧后,等待 SIFS 后返回 ACK,解决隐藏终端问题
作业题:以太网使用 CSMA/CD 协议来控制访问
1. 简述 CSMA/CD 的基本工作过程,并说明若两个主机同时开始发送帧,描述冲突检测和指数退避的过程。
基本工作过程可概括为以下步骤:
-
载波侦听:
- 主机在发送数据前首先侦听信道。
- 若信道空闲:立即发送数据帧。
- 若信道忙碌:等待,直到检测到信道空闲。
-
发送与冲突检测:
- 发送的同时持续监听信道,检测是否发生冲突。
- 若成功发送完整个帧:认为发送成功。
- 若检测到冲突:立即停止发送,并发送一个 阻塞信号(Jam Signal),确保所有节点都能感知冲突。
-
冲突处理:
- 发送阻塞信号后,冲突主机进入 二进制指数退避 阶段,决定下一次重传时机。
冲突检测和指数退避的具体过程:
-
冲突检测:
(i) 冲突发生:当主机 A 与主机 B 同时发送信号,在共享介质上叠加,导致接收方无法正确解码。
(ii) 检测机制:发送主机在发送过程中监测接收信号强度或波形畸变。若接收信号显著强于自身发送信号,即判定为冲突。
(iii) 发送阻塞信号:检测到冲突后,主机发送一个 32~48 比特的 Jam Signal,用以:
- 强化冲突,确保所有节点感知;
- 使正在接收冲突帧的主机能正确丢弃该帧。 -
二进制指数退避:
冲突后,所有冲突主机暂停发送,并执行如下算法确定重传时间:- 时隙:基本等待单位为一个时隙(标准以太网中为 512 比特时间,即 )。
- 重传次数 :表示已尝试重传的次数( 等)。
- 退避范围 :计算 ,并从 中随机选择整数 。
- 退避时间:等待 。
- 重试:等待结束后,重新执行 CSMA/CD 流程。
- 限制:若重传达 16 次仍未成功,则放弃发送,报告链路故障。
2. 假设信号在链路上传播时延为 ,帧传输时间为 ,请说明帧传输时间 与链路传播时延 需要满足的关系,并说明原因。
要求:
原因: CSMA/CD 要求发送主机必须在 发送完整个帧之前 有能力检测到冲突。考虑最坏情况的冲突场景:
- 时刻 :主机 A(链路一端)开始发送帧。
- 时刻 :在 A 的信号尚未到达另一端主机 B 之前,B 侦听到信道空闲(因 A 的信号未到),于是也开始发送帧 → 发生冲突。
- 关键点:A 必须在 之前仍处于发送状态,才能接收到从 B 反射回来的冲突信号并检测到冲突。
若 ,则 A 可能在冲突信号返回前就已完成发送,并误判为“发送成功”。然而,该帧实际上已因冲突而损坏,接收方无法正确接收,而发送方也不会重传,导致数据丢失。
因此,为确保冲突可被检测,必须满足 。这也是以太网规定最小帧长为 64 字节(对应 比特时间)的根本原因。
作业题:WiFi(IEEE 802.11)使用 CSMA/CA 协议
1. 简述 CSMA/CA 的工作流程,并指出与 CSMA/CD 的主要差异
CSMA/CA 基本工作流程:
-
载波侦听(Carrier Sensing)
- 节点在发送前侦听信道。
- 若信道持续空闲达 DIFS(Distributed Inter-Frame Space) 时间,则进入退避阶段。
-
随机退避(Random Backoff)
- 即使信道空闲,节点仍需等待一个 随机退避时隙数(单位为时隙时间)。
- 目的:进一步分散多个同时准备发送的节点,降低冲突概率。
-
可选握手(RTS/CTS)
- 为应对隐藏节点问题,发送方可先发送 RTS(Request To Send) 帧。
- 接收方若准备好,回复 CTS(Clear To Send) 帧。
- 发送方收到 CTS 后才开始发送数据。
-
数据传输与确认(DATA + ACK)
- 数据帧发送后,接收方在 SIFS(Short Inter-Frame Space) 后回复 ACK 帧。
- 发送方收到 ACK 才认为传输成功。
-
超时与重传
- 若未在规定时间内收到 ACK(可能因冲突、干扰或丢包),则判定传输失败,重新进入退避并重试。
CSMA/CA 与 CSMA/CD 的主要差异:
| 特征 | CSMA/CA(WiFi) | CSMA/CD(以太网) |
|---|---|---|
| 冲突处理方式 | 避免(Avoidance):通过退避、RTS/CTS 等机制预防冲突 | 检测(Detection):发送时实时检测冲突,冲突后停止发送 |
| 冲突检测能力 | 无冲突检测:发送时不监测信道是否发生冲突 | 有冲突检测:通过信号强度/波形对比实时检测冲突 |
| 确认机制 | 强制 ACK:必须收到 ACK 才视为成功 | 无 ACK:依赖物理层可靠传输,无显式确认 |
| 适用介质 | 无线介质(如 WiFi) | 有线介质(如以太网) |
2. 为什么 WiFi 不能使用 CSMA/CD
WiFi 无法采用 CSMA/CD,主要原因如下:
-
无法可靠检测冲突
- 在有线以太网中,发送与接收使用独立线路或频段,可比对发送与接收信号检测冲突。
- 在无线环境中,发送信号强度远高于接收信号(自干扰/近远效应),节点在发送时几乎无法感知其他微弱的并发信号,因此无法有效检测冲突。
-
存在隐藏节点问题
- 某些节点因距离远或障碍物遮挡,彼此无法侦听到对方的传输(即“隐藏”)。
- CSMA/CD 依赖“所有节点都能听到彼此”的假设,这在无线网络中不成立。
- 即使 A 和 B 都能与 AP 通信,A 和 B 之间可能互不可见,导致同时发送并冲突,而无法被对方检测到。
由于上述物理层限制,CSMA/CD 在无线网络中不可行,故 IEEE 802.11 采用 CSMA/CA —— 一种以冲突避免和确认机制为核心的协议。
3. “DIFS + 随机退避 + RTS/CTS + 数据 + ACK”机制中各帧的作用
| 帧/阶段 | 作用(目标) | 发送方 → 接收方 | 关键信息 |
|---|---|---|---|
| DIFS + 随机退避 | 载波侦听与冲突避免:确保信道空闲,并通过随机延迟分散发送时机 | 所有节点侦听并执行 | 持续监测信道状态;退避计数器递减 |
| RTS(Request To Send) | 请求发送并预约信道:向接收方申请传输,并广播即将占用信道的时间 | 发送节点 → 接收节点 | 包含 Duration 字段(预计占用信道的总时间) |
| CTS(Clear To Send) | 授权发送并抑制其他节点:接收方确认可接收,并通知周边节点(包括隐藏节点)在 Duration 期间保持静默 | 接收节点 → 发送节点(广播) | 同样包含 Duration 字段,用于设置 NAV(网络分配向量) |
| DATA | 传输实际有效载荷 | 发送节点 → 接收节点 | 用户数据 |
| ACK(Acknowledgment) | 确认数据成功接收 | 接收节点 → 发送节点 | 简短确认帧,无数据负载 |
注:
- DIFS / SIFS 是不同优先级的帧间隔,SIFS < DIFS,确保控制帧(如 CTS、ACK)优先于数据帧。
- Duration 字段 用于设置其他节点的 NAV(Network Allocation Vector),实现虚拟载波侦听,解决隐藏节点问题。
三、以太网
1. 以太网发展与标准
- 起源:1970 年代 Xerox PARC 发明,基于 CSMA/CD,早期为总线型,后过渡到星型
- 主流标准:
- 10BASE-T:双绞线,10Mbps,传输距离 100m
- 100BASE-TX:快速以太网,100Mbps,双绞线
- 1000BASE-T:千兆以太网,1Gbps,双绞线
- 10GBASE-T:万兆以太网,10Gbps,CAT6a 双绞线
- 拓扑结构对比
| 拓扑 | 特点 | 以太网应用 |
|---|---|---|
| 总线 | 单缆串联,单冲突域;介质断→反射→全网瘫痪 | 10BASE5/10BASE2(已淘汰) |
| 星型 | 双绞线+Hub/Switch;易排错 | 10BASE-T 至今 |
| 树型 | 多级星型级联;分层管理+VLAN | 大型园区/数据中心 |
| 环型 | 节点首尾相连;断环即瘫 | 工业以太网冗余环(ERPS/IEEE 802.1Qay) |
2. 以太网帧结构和帧定界
以太网帧结构
| 字段 | 长度 | 功能 |
|---|---|---|
| 前同步码 | 7 字节 | 10101010 重复,同步发送方与接收方时钟 |
| 帧开始定界符(SFD) | 1 字节 | 10101011,标志帧的真正开始 |
| 目的地址 | 6 字节 | 接收方 MAC 地址(广播地址为 FF-FF-FF-FF-FF-FF) |
| 源地址 | 6 字节 | 发送方 MAC 地址(烧录在网卡 ROM 中,不可更改) |
| 类型 | 2 字节 | 上层协议类型(如 IP 协议) |
| 数据 | 46-1500 字节 | 上层数据,不足 46 字节则填充 |
| CRC | 4 字节 | 循环冗余校验,检测帧传输错误 |
帧定界常见方法
- 字符计数 → 计数字段错则边界全乱(弃用)
- 字符填充 → 标志字符+转义(PPP)
- 比特填充 → 01111110 标志(HDLC)
- 违规编码法 → 曼彻斯特编码中某些电平组合平时不会出现,可作为帧定界
以太网帧定界
以太网采用的是 物理层违规法 + 特定结构,具体如下:
- 前导码(Preamble)
- 长度:7 字节
- 内容:10101010(十六进制 0xAA)反复出现。
- 作用:提供一个规律的比特序列,方便接收端同步时钟。
- 帧开始定界符(SFD, Start Frame Delimiter)
- 长度:1 字节
- 内容:10101011(十六进制 0xAB)。
- 作用:标志帧的真正开始位置。
3. MAC 地址
- 组成:48 比特,前 24 比特为 OUI 号(IEEE 分配),后 24 比特由厂商自行分配
- 作用:数据链路层标识网络适配器,实现广播信道寻址
4. 以太网核心设备对比
| 设备类型 | 工作层次 | 核心功能 | 碰撞域影响 |
|---|---|---|---|
| 集线器(Hub) | 物理层 | 信号整形放大,转发到所有端口 | 所有端口在同一碰撞域 |
| 交换机(Switch) | 数据链路层 | 存储转发,基于 MAC 地址过滤转发 | 每个端口为独立碰撞域 |
| 路由器(Router) | 网络层 | 基于 IP 地址路由转发,隔离广播域 | 每个接口连接独立广播域 |
5. 交换机工作原理
- 站表维护:记录 MAC 地址与接口的映射关系,动态学习(源 MAC 地址学习)
- 转发逻辑:收到帧后缓存,查找站表,向目标接口转发,同一网段内帧不转发
- 优势:过滤通信量、扩大物理范围、提高可靠性、互连不同速率局域网
- 问题与解决:多交换机互联可能产生环路,通过生成树算法(STP)断开冗余链路
6. 虚拟局域网(VLAN)
-
核心定义:以软件方式划分逻辑工作组,不受物理位置限制
-
构建方式:基于交换机端口、基于 MAC 地址、基于 IP 地址
-
关键技术:
- 干线端口(Trunk Port):转发多 VLAN 帧,通过 802.1Q 协议添加 VLAN ID 字段
- 流量隔离:同一 VLAN 内设备可通信,不同 VLAN 需通过路由器转发
-
优势:灵活划分工作组、隔离广播流量、提高网络安全性
四、Wi-Fi:802.11 无线局域网
1. 无线网络核心元素
- 硬件组成:无线主机(笔记本、手机、IoT 设备)、基站/AP(接入点)、无线链路
- 组网形态:
- Ad hoc 网络:无基站,节点间直接通信的临时网络
- Infrastructure 网络:基于 AP 的基础结构网络,包含 BSS(基本服务集)、ESS(扩展服务集)
- 蓝牙主从网络:一个主设备连接多个从设备组成 Piconet(微微网),主设备控制同步与跳频
2. 无线链路特征
- 信号衰减:自由空间路径损失,频率越高、距离越远衰减越严重
- 多径传播:信号经反射后不同步到达接收端,影响接收
- 干扰:2.4GHz 等开放频段易受其他设备干扰
- 比特差错率(BER):高于有线链路,SNR(信噪比)越高,BER 越低
3. 关键问题:隐藏终端
- 定义:两个设备因障碍物或信号衰减无法互相感知,但均能与同一 AP 通信,同时发送会导致碰撞
- 解决:CSMA/CA 协议中的 RTS/CTS 预约机制
4. 802.11 协议簇演进
| 标准 | 发布年份 | 最大速率 | 工作频段 | 核心技术 |
|---|---|---|---|---|
| 802.11b | 1999 | 11Mbps | 2.4GHz | DSSS 调制 |
| 802.11a | 1999 | 54Mbps | 5GHz | OFDM 调制 |
| 802.11g | 2003 | 54Mbps | 2.4GHz | ERP-OFDM 调制 |
| 802.11n(Wi-Fi 4) | 2009 | 600Mbps | 2.4/5GHz | 多天线、HT-OFDM |
| 802.11ac(Wi-Fi 5) | 2013 | 3.47Gbps | 5GHz | 多天线、VHT-OFDM |
| 802.11ax(Wi-Fi 6) | 2020 | 9.6Gbps | 2.4/5GHz | OFDMA、长符号持续时间 |
5. 802.11 MAC 协议(CSMA/CA)
(1)为什么无线局域网要使用 CSMA/CA 协议
- 在无线局域网中,仍然可以使用载波监听多址接入 CSMA,即在发送帧之前先对传输媒体进 行载波监听。若发现有其他站在发送帧,就推迟发送以免发生碰撞。
- 在无线局域网中,不能使用碰撞检测 CD,原因如下:
-
由于无线信道的传输条件特殊,其信号强度的动态范围非常大,无线网卡上接收到的信号 强度往往会远远小于发送信号的强度(可能相差百万倍)。如果要在无线网卡上实现碰撞 检测 CD,对硬件的要求非常高。
-
即使能够在硬件上实现无线局域网的碰撞检测功能,但由于无线电波传播的特殊性(存在 隐蔽站问题),进行碰撞检测的意义也不大。
- 802.11 的 MAC 层标准定义了两种不同的媒体接入控制方式:
- 分 布式协调功能 DCF(Dstributed Coordinaton Funcion)。 在 DCF 方式下, 没有中心控制站 点,每 个站点使用 CSMA/CA 协议通过争用信道来获取发送权,这是 802.11 定义的 默认方式。
- 点协调功能 PCF(Point Coordinaion Funcion)。 PCF 方式使用集中控制的接入算法 (一般 在接入点 AP 实现集中控制) , 是 802.11 定义的可选方式, 在 实际中较少使用。
(2)帧间间隔 IFS (InterFrame Space)|
- 802.11 标准规定,所有的站点必须在持续检测到信道空闲一段指定时间后才能发送帧,这段时间称为帧间间隔 IFS。
- 帧间间隔的长短取决于该站点要发送的帧的类型:
- 高优先级帧需要等待的时间较短,因此可优先获得发送权;
- 低优先级帧需要等待的时间较长。若某个站的低优先级帧还没来得及发送,而其他站的高优先级帧已发送到信道上,则信道变为忙态,因而低优先级帧就只能再推迟发送了。这样就减少了发生碰撞的机会。
- 常用的两种帧间间隔如下:
- 短帧间间隔 SIFS(28μs),是最短的帧间间隔,用来分隔开属于一次对话的各帧。一个站点应当能够在这段时间内从发送方式切换到接收方式。使用 SIFS 的帧类型有 ACK 帧、CTS 帧、由过长的 MAC 帧分片后的数据帧、以及所有回答 AP 探询的帧和在 PCF 方式中接入点 AP 发送出的任何帧。
- DCF 帧间间隔 DIFS(128μs),它比短帧间间隔 SIFS 要长得多,在 DCF 方式中用来发送数据帧和管理帧。
(3)工作流程
- 监听信道空闲 DIFS 秒后传输帧
- 信道忙则选择随机退避值,信道空闲时递减
- 退避值为 0 且信道空闲则发送数据
- 收到 ACK 则继续发送下一包,未收到则扩大退避范围重传
源站为什么在检测到信道空闲后还要再等待一段时间 DIFS?
- 考虑到可能有其他的站有高优先级的帧要发送。若有,就要让高优先级帧先发送
目的站为什么正确接收数据帧后还要等待一段时间 SIFS 才能发送 ACK 帧?
- SIFS 是最短的帧间间隔,用来分隔开属于一次对话的各帧,在这段时间内,一个站点应当能 够从发送方式切换到接收方式
信道由忙转为空闲且经过 DIFS 时间后,还要退避一段随机时间才能使用信道?
- 防止多个站点同时发送数据而产生碰撞
(4)CSMA/CA 协议的退避算法
使用退避算法的时机
- 当站点检测到信道是空闲的,并且所发送的数据帧不是成功发送完上一个数据帧之后立即连续发送的数据帧,则不使用退避算法。
- 以下情况必须使用退避算法:
- 在发送数据帧之前检测到信道处于忙状态时;
- 在每一次重传一个数据帧时;
- 在每一次成功发送后要连续发送下一个帧时(这是为了避免一个站点长时间占用信道)。
退避算法流程
- 在执行退避算法时,站点为退避计时器设置一个随机的退避时间:
- 当退避计时器的时间减小到零时,就开始发送数据;
- 当退避计时器的时间还未减小到零而信道又转变为忙状态,这时就冻结退避计时器的数值,重新等待信道变为空闲,再经过时间 DIFS 后,继续启动退避计时器。
- 在进行第 i 次退避时,退避时间在时隙编号{0,1,……,2²⁺ⁱ -1}中随机选择一个,然后乘以以基本退避时间(也就是一个时隙的长度)就可以得到随机的退避时间。这样做是为了使不同站点选择相同退避时间的概率减少。当时隙编号达到 255 时(对应于第 6 次退避)就不再增加了。
(5)冲突避免机制(RTS/CTS)
- 发送方发送短 RTS 帧预约信道
- AP 广播 CTS 帧响应,告知周边节点延迟发送
- 发送方收到 CTS 后,等待 SIFS 发送数据帧,接收方收到后,等待 SIFS 返回 ACK
- 优势:避免长帧碰撞,RTS/CTS 碰撞代价低
- 除源站和目的站以外的其他各站,在收到 CTS 帧(或数据帧)后就推迟接入到无线局域网中。这样就保证了源站和目的站之间的通信不会受到其他站的干扰。
- 如果 RTS 帧发生碰撞,源站就收不到 CTS 帧,需执行退避算法重传 RTS 帧。
- 由于 RTS 帧和 CTS 帧很短,发送碰撞的概率、碰撞产生的开销及本身的开销都很小。而对于一般的数据帧,其发送时延往往大于传播时延(因为是局域网),碰撞的概率很大,且一旦发生碰撞而导致数据帧重发,则浪费的时间就很多,因此用很小的代价对信道进行预约往往是值得的。802.11 标准规定了 3 种情况供用户选择:
- 使用 RTS 帧和 CTS 帧
- 不使用 RTS 帧和 CTS 帧
- 只有当数据帧的长度超过某一数值时才使用 RTS 帧和 CTS 帧
6. 蓝牙技术补充
-
工作频段:2.4GHz ISM 频段
-
核心特征:跳频扩频(FHSS)、主从结构(1 主 7 从活跃连接)、支持点对点/点对多点
-
协议栈:无线电层、基带层、LMP、HCI、L2CAP、RFCOMM、SDP、应用层
-
安全机制:配对加密、身份认证、跳频技术、设备黑白名单
7.补充概念
(1)主机关联 AP 的过程
被动扫描(扫描信道和监听信标帧):
- AP 周期性发送信标帧(包括 SSID 及 MAC)
- H1 向选择的 AP 发送关联请求帧
- 选择的 AP 向 H1 发送关联响应帧
主动扫描:
- H1 广播探测请求帧
- AP 收到请求帧以后,发送探测响应帧(包括 SSID)
- H1 向选择的 AP 发送关联请求帧
- 选择的 AP 向 H1 发送关联响应帧
(2)无线局域网的架构及形式
无线局域网的架构以服务集(Service Set) 为核心,分为基础结构模式和自组网模式,具体包括以下关键组件:
| 组件 | 定义 | 核心特征 |
|---|---|---|
| BSS(基本服务集) | 无线局域网的最小工作单元 | 分为两种类型: - Infrastructure BSS:含 1 个 AP + 若干关联主机(基础结构模式) - IBSS(独立 BSS):无 AP,主机直接互联(Ad hoc 自组网模式) - 每个 BSS 有唯一 BSSID(通常为 AP 的 MAC 地址) |
| BSA(基本服务区) | 单个 AP 的无线信号覆盖范围 | 即 AP 的有效覆盖圈,受发射功率、障碍物、频段影响(2.4GHz 覆盖约 30-100m,5GHz 覆盖约 10-50m) |
| ESS(扩展服务集) | 多个互联的 BSS 组成的大型网络 | 特点: - 所有 BSS 共享同一个 SSID(网络名称) - 通过分布式系统(如有线以太网、无线骨干)互联 AP- 支持主机在不同 BSS 间无缝漫游 |
| ESA(扩展服务区) | ESS 对应的物理覆盖范围 | 多个 BSA 的总和,可跨楼层、建筑甚至园区,取决于 AP 布局与覆盖规划 |
(3)漫游与切换
1. 核心定义
- 漫游:无线主机在同一个 ESS 内,从一个 BSS(对应 AP1)移动到另一个 BSS(对应 AP2),保持网络连接不中断、会话持续的过程。
- 切换:漫游过程中,主机与原 AP 断开连接、与新 AP 建立连接的具体操作,是漫游的核心环节。
2. 漫游的触发条件
- 主机检测到当前 AP 的信号强度(RSSI)低于阈值(通常 - 65dBm 以下)。
- 当前 AP 的信道干扰严重,导致传输速率下降或丢包率升高。
- 主机移动超出当前 AP 的 BSA 范围,进入新 AP 的覆盖范围。
3. 漫游与切换工作流程
-
信号质量监测:主机持续监控当前关联 AP 的信号强度、信噪比(SNR)、传输速率等指标。
-
目标 AP 发现:当当前 AP 信号质量低于阈值时,主机主动扫描周边信道,收集其他 AP 的探测响应帧,筛选最优目标 AP(通常选择信号最强、干扰最小的同 ESS 内 AP)。
-
预认证与资源预留:主机与目标 AP 进行预认证(如 802.11i 协议的快速漫游机制),目标 AP 预留通信资源(如信道、缓存)。
-
链路切换:主机与原 AP 断开连接,向目标 AP 发送关联请求帧,快速完成关联(因预认证省略身份鉴别步骤)。
-
数据路径切换:目标 AP 更新自身站表,将主机的数据转发路径切换到新链路,主机保持原有 IP 地址,会话不中断。
-
旧链路释放:原 AP 删除主机的关联记录,回收资源,完成切换。
五、课后作业
【题目 1】
考虑一种混合协议 Hybrid-CSMA/ALOHA,其工作机制如下:结点在发送前先侦听信道;若信道空闲,则立即发送;若信道忙,则以概率 p 在下一个时隙重试,以概率 (1 - p) 等待两个时隙后再试。请基于你对 ALOHA 与 CSMA 原理的理解,分析此混合协议在高负载下的信道利用率和时延性能趋势。
答:
- 信道利用率:当信道忙时,结点将进入概率重试阶段。这种概率重试与时隙 ALOHA 的原理相似。如果多个结点在信道忙结束后同时进入概率重试,且选择了立即重试(概率 p),则会发生碰撞。由于缺乏 CSMA/CD 的快速碰撞检测和终止机制,碰撞会导致整个包传输时间 T 的浪费。若 p 值设计不当(过大),会导致大量竞争和碰撞,信道利用率下降,可能跌至接近或低于纯 ALOHA 的水平。若 p 值设计合理(较小),可以平滑竞争,提高效率。
- 平均时延:在高负载下,结点发送前侦听到忙碌的概率高,进入退避等待的时间增加。退避机制(p 概率等待 1 时隙,(1−p) 概率等待 2 时隙)引入了额外的等待时延。若 p 值导致高碰撞率,则重传次数增加,时延增大。
【题目 2】
下图所示网络中共有四台主机(A、B、C、D)和两台交换机(S1、S2)端口号已标明。它们的连接如下(每台主机和交换机端口都是点对点全双工连接):
已知:所有设备的初始 MAC 地址表均为空。交换机采用自学习和基于目的 MAC 地址的转发策略。若目标 MAC 未知,交换机执行泛洪。
请回答下列问题:
- 与早期共享式以太网相比,交换以太网在性能和冲突控制上有哪些改进?
- 假设以下帧依次被发送(顺序如下):
- 步骤 1:主机 A 发送帧给主机 B。
- 步骤 2:主机 B 回复帧给主机 A。
- 步骤 3:主机 C 发送帧给主机 D。
请分别说明:
- 各交换机(S1、S2)在处理该帧时的转发行为和 MAC 地址表更新行为(转发到哪些端口?泛洪还是定向?)
- 各交换机在三个步骤之后的 MAC 地址表内容(条目)。
答案:
- 如下表所示:
| 特征 | 早期共享式以太网(集线器 Hub) | 交换式以太网(交换器 Switch) |
|---|---|---|
| 冲突域 | 整个网络是一个单一冲突域 | 每个交换机端口是一个独立的冲突域 |
| 冲突控制 | 必须使用 CSMA/CD 协议来处理冲突,随着主机增加,冲突概率增加,性能降低 | 本质上消除了冲突 |
| 带宽 | 总带宽被所有主机共享 | 提供了独占带宽 |
| 性能 | 吞吐量差,扩展性受限 | 高吞吐量,支持并行转发 |
- 各步骤交换机处理行为:
| 帧发送流程 | 交换机 S1 处理行为 | 交换机 S2 处理行为 |
|---|---|---|
| A->B | 转发行为:泛洪到端口 2 和 3; MAC 表更新:添加条目(主机 A,端口 1) | 转发行为:泛洪到端口 2 和 3; MAC 表更新:添加条目(主机 A,端口 1) |
| B->A | 转发行为:定向转发到端口 1(已知主机 A 对应端口); MAC 表更新:添加条目(主机 B,端口 2) | 转发行为:帧不经过 S2,无需转发; MAC 表更新:无 |
| C->D | 转发行为:泛洪到端口 1 和 2; MAC 表更新:添加条目(主机 C,端口 3) | 转发行为:泛洪到端口 3 和 1; MAC 表更新:添加条目(主机 C,端口 2) |
三个步骤后各交换机 MAC 地址表:
- 交换机 S1:
| 主机 | 端口 |
|---|---|
| A | 1 |
| B | 2 |
| C | 3 |
- 交换机 S2:
| 主机 | 端口 |
|---|---|
| A | 1 |
| C | 2 |
第五章 网络互联
一、网络互联基础
1. 核心目标与需求
- 核心目标:实现透明通信(用户无需关注底层结构)、支持网络扩展性、保障安全性、提升可靠性(部分故障仍可通信)
- 核心功能:选路(决定数据路径)、转发(实际数据传输)、状态报告(通知网络变化)、可选连接建立(如虚电路)
- 复杂性来源:多种网络技术并存、协议不统一、安全风险增加、路由决策复杂
2. 两种互联模型对比
| 模型 | 核心特征 | 工作流程 | 优势 | 不足 | 典型协议 |
|---|---|---|---|---|---|
| 虚电路网络 | 面向连接、维护连接状态 | 建立连接→数据传输→释放连接 | 保证顺序到达、可预留资源、支持 QoS | 开销高、需维持状态 | ATM、MPLS、X.25 |
| 数据报网络 | 无连接、不维护状态 | 每个分组独立选路转发 | 简单灵活、扩展性强 | 顺序无保障、丢包需上层处理 | IP 协议 |
3. 虚电路与数据报关键差异
- 连接方式:虚电路需建立逻辑连接,数据报无需连接
- 路由方式:虚电路所有分组走同一路径,数据报每包独立选路
- 资源预留:虚电路支持,数据报不支持
- 状态维护:虚电路路由器需维护连接状态,数据报无需
二、网络互联设备—路由器
1. 路由器核心结构
- 组成模块:输入端口、交换结构、输出端口、路由选择处理机
- 核心功能:路由选择(通过路由协议生成路由表)、分组转发(基于转发表转发数据)
2. 各模块工作原理
(1)输入端口
- 功能:物理层接收信号、数据链路层拆封、网络层查表转发
- 关键问题:线头阻塞(输入队列中前序分组阻塞后续分组)、缓冲区溢出导致丢包
(2)交换结构
| 交换方式 | 工作原理 | 速率限制 | 典型应用 |
|---|---|---|---|
| 内存交换 | 分组拷贝到系统内存,CPU 控制转发 | 受内存带宽限制 | 小型路由器 |
| 总线交换 | 通过共享总线直接转发分组 | 受总线带宽限制 | 中型路由器(如 Cisco 5600) |
| 内联网络交换 | 基于 Banyan 网络,拆分固定尺寸信元转发 | 突破总线限制 | 大型路由器(如 Cisco 12000) |
(3)输出端口
- 功能:网络层处理、数据链路层封装、物理层发送信号
- 关键机制:
- 缓存管理:缓冲区大小按
B=RTT×R/√N估算(N 为 TCP 连接数) - 调度策略:先来先服务(FCFS)、加权公平排队(WFQ)
- 丢弃策略:被动弃尾策略、主动随机早期检测(RED)
- 缓存管理:缓冲区大小按
3. 路由表与转发表
(1)路由表
- 组成:目的网络地址、子网掩码、下一跳地址、出接口、跃点数(度量值)
- 生成方式:静态配置、动态路由协议(RIP、OSPF、BGP)
(2)转发表(FIB)
- 与路由表区别:路由表用于决策路由,转发表用于实际转发,格式更优化(适合快速查找)
4. 动态路由协议分类
| 协议类型 | 核心算法 | 适用场景 | 特点 |
|---|---|---|---|
| RIP | 距离向量算法 | 小型网络 | 简单、收敛慢、度量单位为跳数 |
| OSPF | 链路状态算法(Dijkstra) | 大型网络 | 快速收敛、支持大型网络 |
| BGP | 路径向量算法 | 自治系统间 | 可扩展性强、支持策略控制 |
三、网络互联中的数据转发
1. IPv4 数据报格式
| 字段 | 长度 | 核心功能 |
|---|---|---|
| 版本 | 4bit | 标识 IP 协议版本(如 IPv4) |
| 首部长度 | 4bit | 单位 4 字节,取值 5-15(20-40 字节) |
| 区分服务 | 8bit | 用于 QoS 保障,前 6 位为区分服务码点 |
| 总长度 | 16bit | 数据报总字节数(最大 65535 字节) |
| 标识 | 16bit | 标识同一次会话的分片(分片重组用) |
| 标志 | 3bit | 1 位保留、1 位禁止分片、1 位分片结束 |
| 片偏移 | 13bit | 分片在原数据报中的位置(8 字节为单位) |
| 生存时间(TTL) | 8bit | 限制分组寿命,每经 1 个节点减 1,为 0 则丢弃 |
| 协议 | 8bit | 标识上层协议(1=ICMP、6=TCP、17=UDP、89=OSPF) |
| 首部检验和 | 16bit | 仅校验首部,检测差错 |
| 源/目的地址 | 32bit | 发送端/接收端 IP 地址 |
| 可选字段 | 可变 | 按需添加(如记录路由),需填充为 4 字节整数倍 |
2. IP 分片与重组
- 触发条件:数据报总长度超过链路 MTU(最大传输单位,以太网默认 1500 字节)
- 分片字段:标识(同一会话相同)、标志(分片结束标记)、片偏移(分片位置)
- 重组规则:仅在目的主机重组,中间路由器不重组
3. IPv4 地址编址
(1)地址结构与分类
- 结构:32bit,分为网络号和主机号
- 分类规则:
类别 首位标识 网络号长度 主机号长度 地址范围 适用场景 A 类 0 7bit 24bit 1.0.0.0-126.255.255.255 大型网络 B 类 10 14bit 16bit 128.0.0.0-191.255.255.255 中型网络 C 类 110 21bit 8bit 192.0.0.0-223.255.255.255 小型网络 D 类 1110 - - 224.0.0.0-239.255.255.255 组播地址 E 类 1111 - - 240.0.0.0-255.255.255.255 保留地址
(2)子网划分
- 核心思想:从主机号借用部分位数作为子网号,形成三级地址(网络号+子网号+主机号)
- 子网掩码:网络号和子网号对应位为 1,主机号对应位为 0(如 255.255.255.128)
- 寻址过程:先匹配网络号,再匹配子网号,最后交付主机
(3)无类别域间路由(CIDR)
- 编址格式:IP 地址/前缀长度(如 192.168.0.1/24)
- 核心优势:解决地址分类利用率低的问题,支持地址聚合(路由聚合)
- 最长前缀匹配:查找路由表时选择前缀最长的匹配项(最具体路由)
4. 地址分配与获取
(1)地址分配层级
- ICANN 分配地址块给 ISP,ISP 再分配给组织/用户
- 私有地址范围:10.0.0.0/8、172.16.0.0/12、192.168.0.0/16
(2)主机地址获取方式
| 方式 | 工作原理 | 优势 | 适用场景 |
|---|---|---|---|
| 手工配置 | 管理员手动设置 IP 地址 | 稳定、安全 | 服务器等关键设备 |
| DHCP 动态获取 | 从 DHCP 服务器自动获取地址及配置 | 即插即用、管理简单 | 普通终端(PC、手机) |
(3)DHCP 工作流程
- DHCP 发现:客户端广播请求 IP 地址
- DHCP 提供:服务器广播分配的 IP 地址及租期
- DHCP 请求:客户端确认选择的 IP 地址
- DHCP 确认:服务器确认分配,客户端获取地址
5. 地址解析与转换
(1)ARP 协议(地址解析协议)
- 核心目标:根据 IP 地址获取目标主机 MAC 地址
- 工作流程(同一局域网):
- 发送方广播 ARP 请求(含目标 IP)
- 目标主机接收后单播 ARP 应答(含自身 MAC)
- 发送方更新 ARP 高速缓存(保留 IP-MAC 映射,TTL 约 20 分钟)
- 跨局域网:通过网关路由器转发,解析网关 MAC 地址
(2)NAT(网络地址转换)
- 核心功能:将私有地址转换为全球地址,节省公网 IP
- 转换方式:
- 静态 NAT:一个私有地址对应一个公网地址
- 动态 NAT:多个私有地址共享多个公网地址
- 端口 NAT(PAT):通过端口区分不同私有主机
- 优势:节省公网地址、隐藏内网主机、简化内网配置
- 问题:违反端到端原则、外部无法主动访问内网主机(需端口映射/UPnP)
6. IPv6 相关技术
(1)IPv4 面临的问题
- 地址空间耗尽、首部长度不固定、缺少 QoS 支持、安全性不足
(2)IPv6 核心改进
- 地址长度:128bit(解决地址耗尽)
- 首部特征:固定长度(加速转发)、无检验和(减少中间节点开销)
- 分片机制:中间节点不分片,仅端节点处理
(3)IPv4 到 IPv6 迁移技术
- 双栈技术:设备同时支持 IPv4/IPv6,按需选择协议
- 隧道技术:将 IPv6 数据报封装在 IPv4 中传输,穿越 IPv4 网络
(4)IPv6 地址解析(NDP)
- 邻居请求(NS):组播发送,查询目标 MAC
- 邻居通告(NA):目标主机单播应答,返回自身 MAC
四、因特网控制报文协议 ICMP
1. 核心作用
- 补充 IP 协议不足:IP 无差错报告、无状态反馈,ICMP 提供错误报告、请求应答、报文控制功能
2. ICMP 报文分类与格式
(1)报文格式
- 固定首部(4 字节):类型(8bit)、代码(8bit)、检验和(16bit)
- 数据部分:含出错 IP 数据报首部+前 64bit 数据(便于源主机定位错误)
(2)主要报文类型
| 类型 | 代码 | 功能 | 典型应用 |
|---|---|---|---|
| 3(目的不可达) | 0-12 | 报告目标主机/协议/端口不可达 | 诊断网络连通性 |
| 8(回声请求) | 0 | 请求目标主机响应 | Ping 命令 |
| 0(回声应答) | 0 | 响应回声请求 | Ping 命令应答 |
| 11(超时) | 0 | 报告 TTL 耗尽或分片重组超时 | Tracert 命令 |
| 5(重定向) | 0-3 | 通知源主机更优路由 | 优化内部网络路由 |
3. 典型应用
- Ping:通过回声请求/应答报文检测主机可达性,统计往返时延
- Tracert:发送不同 TTL 的 UDP 报文,通过 ICMP 超时报文获取路径上的路由器信息
五、网络互联中的选路
1. 选路算法基础
- 核心概念:
- 抽象图模型:N(路由器集合)、E(链路集合)、c(x,y)(链路费用)
- 路径费用:路径上所有链路费用之和
- 理想目标:找到最低费用路径,支持动态适应网络变化、负载均衡、容错
2. 静态路由与动态路由对比
| 类型 | 配置方式 | 优势 | 不足 | 适用场景 |
|---|---|---|---|---|
| 静态路由 | 管理员手动配置 | 简单、资源占用少、安全 | 无法自动适应网络变化 | 小型、结构稳定网络 |
| 动态路由 | 路由器自动学习 | 自动适应网络变化、维护简单 | 占用资源、可能出现环路 | 大型、结构复杂网络 |
3. 层次路由与协议分类
(1)自治系统(AS)
- 定义:对外表现为统一路由策略的网络集合,有唯一 ASN(自治系统编号)
- 路由协议分类:
协议类型 适用范围 核心功能 典型协议 IGP(内部网关协议) AS 内部 实现 AS 内路由转发 RIP、OSPF、IS-IS EGP(外部网关协议) AS 之间 实现 AS 间路由互通 BGP-4
4. 链路状态选路算法(LS)
(1)核心思想
- 所有节点获取全网拓扑和链路费用(通过链路状态广播),独立计算最短路径
- 代表算法:Dijkstra 算法
(2)Dijkstra 算法步骤
- 初始化:定义已确定最短路径的节点集 N’,初始仅含源节点;D(v)为源到 v 的当前最短费用
- 迭代:每次从 N’外选择 D(v)最小的节点加入 N’,更新其他节点的 D(v)
- 终止:所有节点加入 N’,得到源到所有节点的最短路径
(3)复杂性与问题
- 时间复杂性:O(n²)(普通实现)或 O(mlogn)(堆优化)
- 可能问题:链路费用依赖流量导致路由震荡,解决方案为随机化链路通告时间
(4)OSPF 协议(链路状态协议实例)
- 核心特点:开放标准、使用 SPF 算法、链路状态变化时泛洪通告、支持区域划分(减少洪泛范围)
- 关键机制:
- 链路状态数据库:全网拓扑一致,收敛快
- 区域划分:主干区域(0.0.0.0)连通其他区域,减少通信量
- 认证机制:支持简单认证和 MD5 认证,防止伪造
5. 距离向量选路算法(DV)
(1)核心思想
- 每个节点仅向邻居发送自身的路由表(距离向量),通过迭代更新逐步收敛到最短路径
- 核心公式:dx(y) = minv{c(x,v) + dv(y)}(x 到 y 的最短距离=min(x 到邻居 v 的距离+v 到 y 的距离))
(2)关键问题与解决
- 无穷计数问题(坏消息传得慢):解决方案为毒性逆转(通告不可达路由时设置距离为无穷大)
- 路由环路:通过毒性逆转、水平分割等机制避免
(3)RIP 协议(距离向量协议实例)
- 核心特点:基于跳数度量(相邻节点为 1 跳,最大 15 跳)、UDP 端口 520、30 秒更新周期、180 秒离线判定
- 适用场景:小型网络,收敛速度较慢
6. 路径向量选路算法(BGP)
(1)核心作用
- 实现 AS 间路由互通,不追求最优路径,而是寻找可达且符合策略的“好路径”
(2)BGP 关键机制
- BGP 发言人:每个 AS 选择的路由器,负责 AS 间路由交互
- 会话类型:eBGP(不同 AS 间)、iBGP(同一 AS 内)
- 路由属性:AS-PATH(路由经过的 AS 序列,用于防环路)、NEXT-HOP(下一跳路由器 IP)
(3)BGP 路由选择规则
- 优选路由策略优先级最高的路由
- 优选 AS-PATH 最短的路由
- 热土豆选路(选择到 NEXT-HOP 距离最近的路由)
- 等价路由可负载均衡
7. 三种选路协议对比
| 特性 | RIP | OSPF | BGP |
|---|---|---|---|
| 协议类型 | IGP | IGP | EGP |
| 信息表达格式 | 距离—向量协议 | 链路—状态协议 | 路径向量 |
| 交换信息范围 | 相邻路由器 | 自治系统或区域内路由器 | BGP 发言人 |
| 交换信息内容 | 路由表 | 链路状态 | 路径向量 |
| 交换信息时间 | 30S | 当链路状态发生变化 | 有变化 |
| 原则 | 最短路径 | 最小代价 | 可达性 |
| 收敛过程 | 较快 | 快 | 快 |
| 传输协议 | UDP | IP | TCP |
| 适用网络类型 | 小型网络 | 大型网络 | 自治系统之间 |
| 衡量标准 | 距离 | 可有多种度量标准 | 无 |
六、课后作业
【题目 1】
主机 H 通过快速以太网连接 Internet,IP 地址为 192.168.0.8,服务器 S 的 IP 地址为 211.68.71.80。H 与 S 使用 TCP 通信时,在 H 上捕获的其中 5 个 IP 分组如表 1 所示。
(1)表 1 中的 IP 分组中,哪几个是由 H 发送的?哪几个完成了 TCP 连接建立过程?哪几个在通过快速以太网传输时进行了填充?
**第一问:**根据 ip 数据包格式知道,第四行(97-128 位)代表源地址,ip 192.168.0.8 对应的十六进制为 c0 a8 00 08,即分组 1,3,4 是由 H 发送的
**第二问:**从图 1 和图 2 可知,黄色背景部分的后 6 位为控制位。分别对应 URG、ACK、PSH、RST、SYN、FIN,如下图所示。
编号为 2 的分组中,SYN=1、ACK=1、seq=e0 59 9f ef、ack=84 6b 41 c6 编号为 3 的分组中,SYN=0、ACK=1、seq=84 6b 41 c6、ack=e0 59 9f f0
Seq 为蓝色部分,ack 为紫色部分 符合三报文握手建立连接过程中的状态,所以编号为 1、2、3 的分组完成了 TCP 连接建立连接过程。
第三问:
根据图 1 可知,总长度字段为 IP 分组头的第 3-4 个字节 编号为 1 的 IP 分组的总长度为 00 30,转换成十进制为 48; 编号为 2 的 IP 分组的总长度为 00 30,转换成十进制为 48; 编号为 3 的 IP 分组的总长度为 00 28,转换成十进制为 40; 编号为 4 的 IP 分组的总长度为 00 38,转换成十进制为 56; 编号为 5 的 IP 分组的总长度为 00 28,转换成十进制为 40; 由于以太网的帧要求数据最小长度为 46B 编号为 3、5 的 IP 分组长度为 40,40 < 46 所以填充。
(2)根据表 1 中的 IP 分组,分析 S 已经收到的应用层数据字节数是多少
编号为 1、2、3 的 IP 分组是三报文握手建立连接到过程。编号为 4、5 的 IP 分组开始传输数据。 在编号为 4 的 IP 分组中,序号为 seq=84 6b 41 c6(H) 在编号为 5 的 IP 分组中,确认号为 ack = 84 6b 41 d6(H) 所以传输了 ack – seq = 84 6b 41 d6(H) - 84 6b 41 c6(H) = 10(H) = 16(D)字节的数据
(3)若表 1 中的某个 IP 分组在 S 发出时的前 40B 如表 2 所示,则该 IP 分组到达 H 时经过了多少个路由器?
根据第一小题的第一问可知,编号为 1、3、4 的 IP 分组为 H 发送给 S 的。 编号为 2、5 的 IP 分组为 S 发送给 H 的。 其中分组 5 的标识字段(红色部分),为 68 11(H),与题 47-b 表中收到的分组标识字段一致。 所以来自 S 的分组为 5 号分组。
从 S 发出时 5 号分组的 TTL 字段值为 40(H),H 接收到时 5 号分组的 TTL 字段值为 31(H),因为分组每经过一个路由器,值就减 1,所以两者之差即为路由器个数。 40(H) - 31(H) = F(H) = 15(D) 所以该 IP 分组到达 H 时经过了 15 个路由器。 备注:16 进制的减法做的时候可能容易出错,也可以分别转成 10 进制之后再计算。 40(H) = 64(D) 31(H) = 49(D) 64 – 49 = 15
【题目 2】
表 3 为路由器 B 的路由表,表 4 为收到来自路由器 C 的路由信息,试求更新路由器 B 的路由表信息,并加以说明。(具体步骤不能省略)
- 表 3(路由器 B 原路由表):
| 目的网络 | 距离 | 下一跳 |
|---|---|---|
| N1 | 7 | A |
| N2 | 2 | C |
| N6 | 8 | E |
| N8 | 4 | F |
| N9 | 4 | F |
- 表 4(路由器 C 发送的路由信息):
| 目的网络 | 距离 | 下一跳 |
|---|---|---|
| N2 | 4 | G |
| N3 | 8 | G |
| N6 | 4 | G |
| N8 | 3 | E |
| N9 | 5 | F |
- 前提说明:已知路由器 B 到路由器 C 的距离为 1。
- 路由更新规则:
- 若 C 提供的路由是 B 未有的目标网络,或路径更短,则更新路由表(下一跳为 C,距离为 C 的距离+1);
- 若 C 提供的路由路径更长或与现有路径等长,且 C 不是当前下一跳,则保持现有路由;
- 若 C 是当前下一跳(即原路由下一跳为 C),无论新距离是否更大,均更新距离(反映路径变化),下一跳保持为 C。
- 逐条目更新分析:
- N2:C 的距离=4,新距离=4+1=5;B 原距离=2,下一跳=C(C 是当前下一跳)→ 按规则 3 更新,距离改为 5,下一跳仍为 C。
- N3:C 的距离=8,新距离=8+1=9;B 原路由表无此条目 → 按规则 1 添加,条目为 N3 | 9 | C。
- N6:C 的距离=4,新距离=4+1=5;B 原距离=8(下一跳=E),5<8 → 按规则 1 更新,距离改为 5,下一跳改为 C。
- N8:C 的距离=3,新距离=3+1=4;B 原距离=4(下一跳=F),4=4 且 C 不是当前下一跳 → 按规则 2 忽略,不更新。
- N9:C 的距离=5,新距离=5+1=6;B 原距离=4(下一跳=F),6>4 且 C 不是当前下一跳 → 按规则 2 忽略,不更新。
- 更新后的路由器 B 路由表:
| 目的网络 | 距离 | 下一跳 |
|---|---|---|
| N1 | 7 | A |
| N2 | 5 | C |
| N3 | 9 | C |
| N6 | 5 | C |
| N8 | 4 | F |
| N9 | 4 | F |
第六章 网络中的拥塞控制
一、网络中的拥塞现象分析
1. 拥塞的定义与本质
- 核心定义:某段时间内,网络某资源的需求超过可用容量,导致网络性能恶化(吞吐量下降、延迟增加),严重时引发系统崩溃。
- 本质:资源供需失衡,且拥塞会自我加剧(如丢包导致重传,进一步占用带宽)。
2. 拥塞的产生原因
- 资源限制:节点缓存容量不足、链路带宽有限、处理机速率不足。
- 流量特性:突发流量集中、多流竞争同一资源。
- 控制不当:拥塞控制机制不合理,可能加剧拥塞。
3. 拥塞的主要影响
- 时延增加:分组在队列中排队时间延长。
- 丢包严重:缓冲区溢出导致新分组被丢弃。
- 吞吐量下降:有效数据传输率降低。
- 重传频繁:TCP 误判丢包为错误,触发慢启动,进一步降低速率。
4. 拥塞控制与流量控制的区别
- 拥塞控制:防止过多的数据注入到网络中,避免网络中的路由器或链路过载。是一个全局性的过程,涉及到所有的主机、路由器,以及与降低网络传输性能有关的所有因素。
- 流量控制:抑制发送端发送数据的速率,以使接收端来得及接收。点对点通信量的控制,是个端到端的问题。
二、拥塞控制的基本方法
1. 拥塞控制的分类维度
(1)按控制机制分类
| 类型 | 核心思路 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|---|
| 开环控制 | 设计阶段规避拥塞,运行中不动态调整 | ATM 等电路型网络 | 简单、实时性好 | 缺乏灵活性,无法应对突发拥塞 |
| 闭环控制 | 基于网络状态反馈动态调整 | 互联网环境 | 自适应强,能应对动态变化 | 实现复杂,需精准控制反馈时机 |
(2)按控制时机分类
| 类型 | 核心原理 | 特点 | 典型实例 |
|---|---|---|---|
| 拥塞避免 | 拥塞发生前主动调整,预防拥塞 | 稳定、减少丢包 | TCP Vegas、RED |
| 拥塞控制 | 拥塞发生后调整,消除拥塞 | 反应式、恢复快 | TCP Reno 快速重传 |
(3)按实现位置分类
| 类型 | 核心方式 | 优点 | 缺点 |
|---|---|---|---|
| 端到端控制 | 端系统通过观测网络行为(丢包、时延)判断拥塞 | 不依赖网络设备,兼容性强 | 反应不及时,判断可能失真 |
| 网络辅助控制 | 路由器主动反馈拥塞状态(标记分组、发送阻塞报文) | 控制精准,响应迅速 | 需网络设备支持,部署成本高 |
2. 闭环控制的关键环节
- 拥塞检测:通过指标判断拥塞(丢包率、队列长度、时延、时延标准差)。
- 拥塞通知:路由器通过比特标记、阻塞分组、探测分组等方式通知发送方。
- 拥塞调整:发送方根据通知调整发送速率(减小窗口、降低速率)。
- 反馈时机:过频导致振荡,过慢失去意义,需精准控制时间常数。
三、路由器上的分组排队规则
路由器排队规则直接影响拥塞控制效果,分为被动队列管理和主动队列管理两类。
1. 被动队列管理(PQM)
(1)先进先出(FIFO)
- 核心机制:按分组到达顺序排队,队列满时尾部丢弃(tail-drop)。
- 问题:
- 全局同步:多个 TCP 连接因尾部丢弃同时进入慢启动,导致带宽利用率剧烈波动。
- 线头阻塞:队列前部分组阻塞后续分组,浪费带宽。
(2)公平排队(FQ)
- 核心机制:为每个数据流维护独立虚拟队列,计算分组虚拟完成时间戳(F = max(当前时间, 上一分组 F) + 分组长度/流权重),优先发送时间戳最小的分组。
- 优点:避免单一流独占带宽,保证各流公平性。
- 缺点:实现复杂,需维护多队列状态;大量流时管理成本高,无法区分流的重要性。
2. 主动队列管理(AQM)
(1)随机早期检测(RED)
- 核心机制:队列长度未达阈值时正常排队,达到警惕阈值后随机丢弃分组,避免队列满溢。
- 关键参数:
- 最小门限(THmin):开始随机丢弃的队列长度。
- 最大门限(THmax):全部丢弃的队列长度。
- 平均队列长度(LAV):动态计算,避免瞬时波动影响。
- 丢弃规则:
- LAV < THmin:排队。
- LAV > THmax:丢弃。
- THmin ≤ LAV ≤ THmax:按概率 p 丢弃。
- 局限性:参数敏感(需人工调优)、无法抑制无响应流、流量突发时性能波动。
(2)DECbit 早期显式反馈机制
- 核心机制:路由器检测到拥塞(队列长度≥1 个分组)时,设置分组头部 1 比特拥塞位;接收端通过 ACK 回传,发送端根据拥塞比例调整窗口。
- 优点:拥塞前提前通知,避免丢包;开销低。
- 缺点:仅支持特定协议,阈值固定,适应性差。
(3)显式拥塞通知(ECN)
- 核心机制:基于 IP 首部 2 位字段标记拥塞,接收方通过 ACK 通知发送方,发送方缩小拥塞窗口,无需丢包。
- 关键字段(TCP 头中):
- CWR(Congestion Window Reduced):拥塞窗口减少标志。
- ECE(Echo of Congestion Encountered):拥塞响应标志。
- 优点:零丢包通知,支持量化拥塞程度,标准化(RFC 3168)。
- 局限性:需端到端支持(路由器+终端),实现复杂,存在安全风险(恶意节点伪造/忽略标记)。
四、TCP 拥塞控制机制详解
TCP 拥塞控制基于滑动窗口,属于闭环控制,核心是动态调整拥塞窗口(cwnd),关键遵循“AIMD(加法增大、乘法减小)”原则。
1. TCP 拥塞控制的核心概念
- 拥塞窗口(cwnd):发送方根据网络拥塞状态动态调整的发送窗口上限。
- 慢启动门限(ssthresh):区分慢启动和拥塞避免阶段的阈值。
- 实际发送窗口:Min(接收方通告窗口 rwnd,拥塞窗口 cwnd)。
- 拥塞判断:通过超时重传或 3 个重复 ACK(3-ACK)判断拥塞。
2. 经典 TCP Reno 算法(核心四阶段)
(1)慢启动(slow-start)
- 核心目标:探测网络负载能力,逐步增大发送速率。
- 算法规则:
- 初始 cwnd = 1(单位:SMSS,发送方最大报文段)。
- 每收到一个新报文段的 ACK,cwnd += min(确认的字节数,SMSS),即每轮 RTT cwnd 呈指数增长。
- 当 cwnd ≥ ssthresh 时,进入拥塞避免阶段。
(2)拥塞避免(congestion avoidance)
- 核心目标:缓慢增大 cwnd,避免触发拥塞。
- 算法规则:每经过一个 RTT,cwnd += 1,即 cwnd 呈线性增长(加法增大)。
- 注意:并非完全避免拥塞,而是降低拥塞发生概率。
(3)快速重传(fast retransmit)
- 核心目标:无需等待超时,尽早重传丢失的报文段。
- 触发条件:连续收到 3 个对同一报文段的重复 ACK。
- 算法规则:立即重传丢失的报文段,避免超时导致 cwnd 骤降。
(4)快速恢复(fast recovery)
- 核心目标:重传后快速恢复发送速率,避免带宽浪费。
- 算法规则:
- ssthresh = cwnd / 2(乘法减小)。
- cwnd = ssthresh + 3(补偿 3 个重复 ACK 对应的已发送报文段)。
- 之后进入拥塞避免阶段,cwnd 线性增长。
(5)超时处理(网络严重拥塞)
- 触发条件:重传定时器超时(判断为严重拥塞)。
- 算法规则:
- ssthresh = max(cwnd / 2,2)。
- cwnd = 1,重新进入慢启动阶段。
(6)公平性分析
- 基本问题:TCP Reno 在多个连接竞争带宽时,并不能实现真正的公平性。
- 核心现象:在多个 TCP 流竞争时:短 RTT 连接 更快进入拥塞恢复 → 能更快增加窗口 → 更占优势长 RTT 连接 增长速度慢,吞吐量受限 → 容易被“压制”
- 原因分析:拥塞窗口增长与 RTT 成反比发送速率受 RTT 影响:速率 ≈ cwnd / RTT
- 结论:TCP Reno 并不公平地对待不同 RTT 的流,在多流竞争场景下,偏向短 RTT 流。
(7)时延分析
- 慢启动阶段:窗口指数级增长,网络迅速填满 → 队列积压出现较大的传输时延和可能的丢包
- 拥塞避免阶段:窗口线性增长,时延稳定,但可能较高
- 重传恢复阶段(快速重传/超时):窗口骤降,发送速率下降 → 时延短暂下降之后缓慢恢复,时延波动明显
- 结论:TCP Reno 的时延波动性较大,尤其在突发性网络环境下,可能出现高抖动与不稳定的交互体验。
3. Reno 算法的改进版本
(1)New Reno 算法
- 解决问题:Reno 收到一个新 ACK 就退出快速恢复,CongWin 收缩到门限值,可能导致较长时间内无法发送新的报文段,也无法触发快速重传的机制,可能导致带宽利用率低。
- 改进机制:
- 记录进入快速恢复时的最高报文段序号(Recovery)。
- 每收到一个新的 ACK,如果序号不大于 Recovery,不退出快速恢复,而是重传该 ACK 后的报文段
- 一旦 ACK 序号大于 Recovery,立即退出快速恢复,收缩到门限值
- 结合 SACK(选择重传),避免无意义重传。
(2)CUBIC 算法
- 解决问题:将拥塞窗口值减半甚至减到 1MSS,无法充分的利用链路带宽。
- 改进机制:不调整慢启动和快速恢复,仅优化拥塞避免阶段,通过三次函数模型快速恢复 cwnd 至拥塞前水平,提高带宽利用率。
4. 基于时延的 TCP Vegas 算法
(1)核心思想
- 不同于 Reno“丢包触发拥塞控制”,Vegas 通过时延变化预测拥塞,目标是“保持管道刚好充满,不产生队列积压”。
(2)关键机制
- 核心参数:
- RTTmin:观察到的最小的 RTT (无拥塞状态)。
- 实际吞吐率 = 上一轮 RTT 发送的字节数 / 实际 RTT。
- 理想吞吐率 = cwnd / RTTmin。
- 调整规则:
- 实际吞吐率接近理想吞吐率:线性增大 cwnd(无拥塞)。
- 实际吞吐率远小于理想吞吐率:线性减小 cwnd(有拥塞)。
(3)改进点
-
慢启动:早期阶段保持指数增长检测到 RTT 急剧增加时,转为线性增长。减少突发拥塞,提高稳定性和网络友好性
-
重传机制:利用 RTT 变化 检测潜在丢包若 RTT 超过一定阈值(如超时),提前重传丢失段,减少不必要的等待,提升响应性。
-
Vegas 拥塞避免机制:每 RTT 调整 cwnd:根据估算差值微调窗口。主动控制拥塞,比丢包反应更早、控制更平滑
(4)对比分析

5. 现代 TCP BBR 算法
(1)提出动机
- 传统 TCP 算法问题(如 Reno、CUBIC):依赖丢包或延迟作为拥塞信号拥塞控制“被动”反应 → 容易造成低吞吐或高延迟网络状态剧烈变化时反应迟钝,恢复慢
- BBR 的动机:从根本建模网络瓶颈状态:⮕ 主动预测瓶颈带宽和最小 RTT⮕ 实现不依赖丢包、不依赖队列积压的拥塞控制
- 目标:最大化带宽利用,最小化延迟,跳出丢包驱动框架。
(2)核心模型
- 关键参数:
- BtlBW(瓶颈带宽):路径最大可达吞吐量。
- RTprop(往返传播时延):无排队的最小 RTT。
- 拥塞窗口公式:cwnd = BtlBW × RTprop,精准匹配瓶颈链路容量。
(3)控制周期(8 个 RTT)
- ProbeBW:探测更大带宽(周期性加速)
- ProbeRTT:短暂降低窗口获取
- RTpropStartup:快速增长,找出初始瓶颈
- Drain:清空队列防止过度拥塞
(4)性能优势与局限
- 优势:高带宽利用率、低延迟、对非拥塞丢包(如无线环境)鲁棒。
- 局限:与传统 TCP 存在公平性问题,对 RTT 抖动敏感。
五、数据中心网络中的拥塞控制
1. 数据中心网络的流量特性
- 流量类型:
- 查询流/短流:小流量、延迟敏感(如分布式数据库查询)。
- 长流:大流量、高吞吐需求(如数据备份、分布式训练)。
- 拥塞特点:链路速率高(10G/25G/100G)、RTT 极小(<1ms)、拥塞传播快、多由突发流量引发。
2. 典型拥塞控制方案
(1)DCTCP(Data Center TCP)
- 核心机制:基于 ECN 标记,交换机轻微拥塞时标记分组,发送端根据 ECN 标记比例平滑调整 cwnd(cwnd = cwnd × (1 - α/2),α为标记比)。
- 优势:降低队列积压,改善短流延迟,提高拥塞控制的灵敏性与稳定性,适合低延迟、高速连接的封闭网络环境
- 核心思路:通过细粒度反馈实现精细化窗口调节
(2)DCQCN(Data Center Quantized Congestion Notification)
-
核心机制:基于 RoCEv2 协议+ECN 反馈,采用速率控制而非窗口控制,发送端按指数下降-加性增长调整速率。
使用 Rate-Based控制,即通过发送速率而非窗口调节带宽。
-
优势:兼容 RDMA(远程直接内存访问)通信,适合无损网络架构(如 InfiniBand),支持硬件加速。
(3)TIMELY 与 HPCC
- TIMELY:基于 RTT 变化判断拥塞,动态调整发送速率,响应速度快。
- HPCC:利用 Inband Telemetry(INT)精准感知路径状态,实现近实时的路径带宽利用反馈,适合大规模高性能数据中心。
六、各类拥塞控制机制对比总结
| 机制类型 | 核心依赖 | 优势 | 适用场景 |
|---|---|---|---|
| Reno/New Reno | 丢包、3-ACK | 兼容性强、实现简单 | 通用互联网环境 |
| CUBIC | 丢包、三次函数恢复 | 带宽利用率高 | 高速宽带网络 |
| Vegas | 时延变化 | 低延迟、主动避拥塞 | 低延迟需求场景 |
| BBR | 瓶颈带宽、最小 RTT | 高吞吐+低延迟 | 视频、实时传输 |
| DCTCP/DCQCN | ECN 标记 | 适配数据中心特性 | 数据中心内部网络 |
七、课后作业
【题目 1】
假设你是一名网络工程师,正在对比各种队列管理方式的性能。
(1)什么是 HOL 阻塞?它出现在输入端口还是输出端口?
队头阻塞(HOL blocking):当位于输入端口队列最前端的数据包,因目标输出端口缺乏可用缓冲空间而被迫等待时,即使其后继数据包对应的输出队列存在可用空间,这些后续数据包也会被全部阻塞。这种现象发生在输入端口处。
(2)关于 FIFO、优先权、循环(RR)和加权公平排队(WFQ)分组调度规则。这些排队规则中,哪个规则确保所有分组是以到达的次序离开的?
只有先进先出(FIFO)队列能确保所有数据包按照其抵达的先后次序离开。
(3)RR 和 WFQ 分组调度之间的基本差异是什么?存在 RR 和 WFQ 将表现得完全相同的场合吗?
采用轮询调度(RR)时,所有服务类别均被同等对待,即任一服务类别都不具有优于其他类别的优先级。而采用加权公平队列(WFQ)时,不同服务类别会获得差异化处理——在任意时间段内,每个类别可能获得不同量级的服务。当 WFQ 中所有服务类别的权重值完全相同时,其调度效果与轮询调度完全相同。
【题目 2】
考虑下图,假设 TCP Reno 是一个经历如上所示行为的协议,回答下列问题。在各种情况中,简要地论证你的回答。
(1)TCP 慢启动运行的时间间隔
答案:[1, 6] 和 [23, 26]
论证:慢启动阶段拥塞窗口(cwnd)呈指数增长(每轮翻倍),符合图示中这两个区间的窗口变化规律。
(2)TCP 拥塞避免运行的时间间隔
答案:[7, 16] 和 [17, 22]
论证:拥塞避免阶段 cwnd 呈线性增长(每轮+1),图示中这两个区间的窗口增长速率与该特征一致。
(3)第 16 个传输轮回后,报文段丢失的检测方式
答案:根据 3 个冗余 ACK
论证:丢包后 cwnd减半(42→21),这是 TCP Reno 的快速恢复机制(仅在 3 个冗余 ACK 检测丢包时触发),而非超时后的窗口重置。
(4)第 22 个传输轮回后,报文段丢失的检测方式
答案:根据超时检测
论证:丢包后 cwnd重置为 1,符合 TCP Reno 超时丢包后的行为规则(慢启动重新开始)。
(5)第 1 个传输轮回中,ssthresh 的初始值
答案:32
论证:慢启动的停止条件是 cwnd 达到 ssthresh(慢启动阈值),图示中第 6 轮结束时 cwnd=32,第 7 轮进入拥塞避免(线性增长),因此初始 ssthresh=32。
(6)第 18 个传输轮回中,ssthresh 的值
答案:21
论证:第 16 轮发生 3 个冗余 ACK 丢包,当时 cwnd=42。根据 Reno 规则,ssthresh 设为 cwnd/2=42/2=21,该值在后续轮次中保持不变(直至下一次丢包)。
(7)第 24 个传输轮回中,ssthresh 的值
答案:14
论证:第 22 轮发生超时丢包,当时 cwnd=29。TCP 规则规定,超时后 ssthresh 设为 cwnd/2(向下取整),即 29//2=14。
(8)发送第 70 个报文段的传输轮回
答案:第 7 个传输轮回
论证:
- 第 1-6 轮(慢启动):累计发送报文段数=1+2+4+8+16+32=63 个;
- 第 7 轮(拥塞避免):cwnd=33,发送 33 个报文段(累计 63+33=96 个);
- 第 70 个报文段落在 64-96 的区间内,因此对应第 7 轮。
(9)第 26 轮后通过 3 个冗余 ACK 检测丢包,cwnd 和 ssthresh 的值
答案:ssthresh=4,cwnd=7
论证:
- 第 26 轮时 cwnd=8(由图示可知);
- 3 个冗余 ACK 丢包后,ssthresh=cwnd/2=8/2=4;
- Reno 快速恢复阶段,cwnd=ssthresh+3=4+3=7。
(10)使用 TCP Tahoe,第 16 轮收到 3 个冗余 ACK,第 19 轮的 ssthresh 和 cwnd
答案:ssthresh=21,cwnd=4
论证:
- Tahoe 不支持快速恢复,3 个冗余 ACK 丢包后,ssthresh=42/2=21,cwnd 重置为 1;
- 第 17 轮(慢启动):cwnd=1;第 18 轮:cwnd=2;第 19 轮:cwnd=4(指数增长)。
(11)使用 TCP Tahoe,第 22 轮超时,第 17-22 轮累计发送的分组数
答案:52
论证:
- 第 17 轮(超时后慢启动):cwnd=1(发送 1 个);
- 第 18 轮:cwnd=2(发送 2 个);第 19 轮:cwnd=4(发送 4 个);第 20 轮:cwnd=8(发送 8 个);第 21 轮:cwnd=16(发送 16 个);
- 第 22 轮:cwnd 达到 ssthresh=21(进入拥塞避免),发送 21 个;
- 累计:1+2+4+8+16+21=52 个。
【题目 3】
考虑仅有一条单一的 TCP (Reno)连接使用一条 10Mbps 链路,且该链路没有缓存任何数据。假设这条链路是发送主机和接收主机之间的唯一拥塞链路。假定某 TCP 发送方向接收方有一个大文件要 发送,而接收方的接收缓存比拥塞窗口要大得多。我们也做下列假设:每个 TCP 报文段长度为 1500 字节;该连接的双向传播时延是 150ms;并且该 TCP 连接总是处于拥塞避免阶段,即忽略了慢启动。
(1)最大窗口长度(以报文段计)
核心思路
最大窗口由 带宽延迟积(BDP) 决定——BDP 是链路在 RTT 时间内可承载的最大比特数,窗口需匹配该值才能充分利用链路带宽。
计算步骤
-
计算带宽延迟积(BDP):
-
计算最大窗口长度(报文段数):
最大窗口 = BDP ÷ 每个报文段比特数
答案:125 个报文段
(2)平均窗口长度(以报文段计)和平均吞吐量(以 bps 计)
当拥塞窗口大小在 W/2 到 W 之间波动时,平均窗口大小为 0.75W=94(对 93.75 向上取整)个报文段。平均吞吐量为 9415008/0.15 = 7.52Mbps。
(3)丢包恢复后再次到达最大窗口的时间
核心思路
丢包后窗口减半为 个报文段,之后在拥塞避免阶段每个 RTT 窗口增加 1 个报文段,需计算从 62 增长到 125 所需的 RTT 个数,再乘以 RTT 时长。
计算步骤
-
所需增长的窗口大小:
增长幅度 = 最大窗口 - 丢包后初始窗口 = 125 - 62 = 63 个报文段 -
所需时间:
每个 RTT 增长 1 个报文段,故所需 RTT 个数 = 63 个
总时间 = 所需 RTT 个数 × RTT 时长
喜欢的话,留下你的评论吧~