VuePress 站点
首页
数学
计算机基础
Java后端
AI大模型
UI设计
首页
数学
计算机基础
Java后端
AI大模型
UI设计
  • 计算机基础
  • 计算机网络应用

    • 课程笔记:TCP三次握手建立连接
    • 课程笔记:TCP三次握手的必要性
    • 课程笔记:TCP协议缺陷与SYN Flood攻击
    • 课程笔记:TCP四次挥手释放连接
    • 课程笔记:TCP四次挥手释放连接的必要性
    • 课程笔记:TCP 报文段格式与 IP 分组
    • 课程笔记:HTTP/2 新特性——二进制分帧
    • 课程笔记:HTTP/2 新特性——多路复用
    • 课程笔记:HTTP/2 新特性——服务器推送(Server Push)
    • 课程笔记:HTTPS 简介与架构图
    • 课程笔记:HTTPS原理与传输层安全协议(TLS)
    • 课程笔记:HTTPS原理——对称加密算法
    • 课程笔记:HTTPS原理——非对称加密算法
    • 课程笔记:HTTPS 原理 —— 数字签名
    • 课程笔记:HTTPS 原理——证书与 CA
    • 课程笔记:完整的HTTPS协议通信流程
    • 课程笔记:HTTPS 协议的性能损耗
    • 课程笔记:TLS False Start 加速 HTTPS
    • 课程笔记:升级 HTTP 协议到 HTTP/2
    • 课程笔记:通过会话恢复加速 HTTPS
    • 课程笔记:OWASP 组织与十大 Web 安全漏洞
    • 课程笔记:XSS 跨站脚本攻击
    • 课程笔记:存储型XSS跨站脚本攻击
    • 课程笔记:XSS攻击窃取Cookie
    • 课程笔记:反射型XSS跨站脚本攻击
    • 课程笔记:DOM型XSS跨站脚本攻击
    • 课程笔记:植入 JS、HTML 代码攻击
    • 课程笔记:XSS攻击的防护策略
    • 课程笔记:XSS攻击的输入环节防护
    • 课程笔记:XSS 劫持 Cookie 的防护策略
    • 课程笔记:XSS 内容输出防护方案
    • 课程笔记:CSP 内容安全策略
    • 课程笔记:CSP 内容安全策略的应用方式
    • 课程笔记:CSRF 跨站请求伪造攻击原理
    • 课程笔记:CSRF 跨站点请求伪造攻击案例
    • 课程笔记:CSRF 跨站请求伪造防护方案
    • 课程笔记:OWASP CSRFTester 工具的原理与使用
    • 课程笔记:点击劫持攻击原理
    • 课程笔记:点击劫持防护方案
    • 课程笔记:URL 跳转漏洞原理与防护
    • 课程笔记:Session 认证与会话劫持
    • 课程笔记:Session固定与Session保持攻击
    • 课程笔记:注入攻击与 OWASP 靶机平台
    • 课程笔记:SQL盲注与ORM注入攻击及防护
    • 课程笔记:XML注入、代码注入、OS命令注入攻击
    • 课程笔记:文件上传漏洞与文件下载/目录浏览漏洞
    • 课程笔记:访问控制与权限访问漏洞
    • 课程笔记:DDoS 分布式拒绝服务攻击原理与防护
    • 课程笔记:CC(Challenge Collapsar)攻击与防护
    • 课程笔记:CDN 的工作原理
    • 课程笔记:CDN的网络架构和术语说明
    • 课程笔记:CDN应用场景与阿里云CDN
    • 课程笔记:如何使用阿里云CDN服务
    • 课程笔记:CDN 刷新与预热
    • 课程笔记:阿里云 CDN 回源配置
    • 课程笔记:CDN 缓存配置
    • 课程笔记:CDN 访问控制与性能优化
  • 计算机网网络

    • 📖 教材介绍与课程导言
    • 📖 1.1 信息时代的计算机网络
    • 📖 1.2 因特网概述
    • 📖 1.3 电路交换、分组交换和报文交换
    • 📖 1.4 计算机网络的定义和分类
    • 📖 1.5 计算机网络的性能指标(1)
    • 📖 1.5 计算机网络的性能指标(2)
    • 📖 1.6.1 常见的三种计算机网络体系结构
    • 📖 1.6.2 计算机网络体系结构分层的必要性
    • 📖 1.6.3 计算机网络体系结构分层思想举例
    • 📖 计算机网络体系结构中的专用术语
    • 📖 物理层概述
    • 📖 物理层下面的传输媒体
    • 📖 传输方式
    • 📖 编码与调制
    • 📖 2.5 信道的极限容量
    • 📖 2.6 信道复用技术
    • 📖 3.1 数据链路层概述
    • 📖 3.2 数据链路层的三个重要问题
    • 📖 3.2.1 封装成帧和透明传输
    • 📖 3.2.2 差错检测
    • 📖 3.2.3 (1) 可靠传输的相关基本概念
    • 📖 3.2.3 (2) 可靠传输的实现机制 - 停止-等待协议(SW)
    • 📖 3.2.3 (3) 可靠传输的实现机制 - 回退N帧协议(GBN)
    • 📖 3.2.3 (4) 可靠传输的实现机制 - 选择重传协议(SR)
    • 📖 3.3 点对点协议 PPP
    • 📖 3.4 共享式以太网
    • 📖 3.4.1 网络适配器和 MAC 地址
    • 📖 3.4.2 (1) CSMA/CD 协议的基本原理
    • 📖 3.4.2 (2) 共享式以太网的争用期、最小帧长和最大帧长
    • 📖 3.4.2 (3) 共享式以太网的退避算法和信道利用率
    • 📖 3.4.3 使用集线器的共享式以太网
    • 📖 3.4.4 在物理层扩展以太网
    • 📖 3.4.5 (1) 网桥的主要结构和基本工作原理
    • 📖 3.4.5 (2) 透明网桥的自学习和转发帧的过程以及生成树协议STP
    • 📖 3.5 交换式以太网
    • 📖 3.5.1 以太网交换机
    • 📖 3.5.2 共享式以太网和交换式以太网的对比
    • 📖 3.6 以太网的MAC帧格式
    • 📖 3.7.1 虚拟局域网 VLAN 概述
    • 📖 3.7.2 虚拟局域网 VLAN 的实现机制
    • 📖 3.8 以太网的发展
    • 📖 3.9.1 802.11 无线局域网的组成
    • 📖 3.9.2 802.11 无线局域网的物理层
    • 📖 3.9.3 (1) 802.11 无线局域网的数据链路层 —— 使用 CSMA/CA 协议(而不使用 CSMA/CD 协议)
    • 📖 CSMA/CA(载波监听多址接入/碰撞避免)协议的基本工作原理
    • 📖 802.11 无线局域网的 MAC 帧格式
    • 📖 网络层概述
    • 📖 网际协议 IP(网际协议)与异构网络互连
    • 📖 IPv4 地址及其编址方法——概述
    • 📖 IPv4 地址的分类编址方法
    • 📖 IPv4 地址的划分子网编址方法
    • 📖 IPv4 地址的无分类编址方法(CIDR)
    • 📖 IPv4 地址的应用规划
    • 📖 IPv4 地址与 MAC 地址
    • 📖 地址解析协议 ARP
    • 📖 IP 数据报的发送和转发流程
    • 📖 IPv4 数据报的首部格式
    • 📖 静态路由配置
    • 📖 因特网的路由选择协议概述
    • 📖 路由信息协议 RIP(路由信息协议)
    • 📖 开放最短路径优先 OSPF(开放最短路径优先)
    • 📖 边界网关协议 BGP(边界网关协议)
    • 📖 路由器的基本工作原理
    • 📖 网际控制报文协议 ICMP(网际控制报文协议)
    • 📖 虚拟专用网 VPN 和网络地址转换 NAT
    • 📖 IP 多播技术的相关基本概念
    • 📖 在局域网上进行硬件多播
    • 📖 在因特网上进行 IP 多播需要的两种协议
    • 📖 网际组管理协议 IGMP
    • 📖 多播路由选择协议
    • 📖 移动 IP 技术概述
    • 📖 IPv6 引进的主要变化
    • 📖 IPv6 数据报的基本首部和扩展首部
    • 📖 IPv6 地址
    • 📖 从 IPv4 向 IPv6 过渡
    • 📖 网际控制报文协议 ICMPv6
    • 📖 软件定义网络 SDN
    • 📖 运输层概述 — 进程间基于网络的通信
    • 📖 TCP/IP 体系结构运输层中的两个重要协议
    • 📖 运输层端口号、复用与分用的概念
    • 📖 UDP 和 TCP 的对比
    • 📖 TCP 报文段的首部格式
    • 📖 "三报文握手"建立 TCP 连接
    • 📖 "四报文挥手"释放 TCP 连接
    • 📖 TCP 的流量控制 (Flow Control)
    • 📖 TCP 的拥塞控制 (Congestion Control) 及与网际层拥塞控制的关系
    • 📖 TCP 可靠传输的实现
    • 📖 TCP 超时重传时间 (RTO) 的选择
    • 📖 TCP 的选择确认 (SACK)
    • 📖 6.1 应用层概述
    • 📖 6.2 客户—服务器方式和对等方式
    • 📖 6.3 动态主机配置协议 DHCP
    • 📖 6.4 域名系统 DNS
    • 📖 6.5 文件传送协议 FTP
    • 📖 电子邮件
    • 📖 万维网 WWW
    • 📖 网络安全概述
    • 📖 密码学相关基本概念
    • 📖 对称密钥密码体制
    • 📖 公钥密码体制
    • 📖 报文摘要和报文鉴别码
    • 📖 数字签名(digital signature)
    • 📖 实体鉴别
    • 📖 密钥分发
    • 📖 访问控制
    • 📖 网络体系结构各层采取的安全措施—物理层和数据链路层
    • 📖 网络体系结构各层采取的安全措施—网络层
    • 📖 网络体系结构各层采取的安全措施—运输层
    • 📖 网络体系结构各层采取的安全措施—应用层
    • 📖 防火墙访问控制与入侵检测系统
    • 📖 常见的网络攻击及其防范
    • 📖 定长子网划分和变长子网划分的二叉树解法

📖 3.2.3 (4) 可靠传输的实现机制 - 选择重传协议(SR)

🎯 课程摘要:本节课介绍选择重传协议(Selective Repeat, SR)。为克服回退 N 帧协议(GBN)"一个出错导致大量重传"的浪费,SR 协议将接收窗口 W_R 扩大为大于 1,先缓存失序但正确到达的分组,仅重传出现差错的分组。重点包括滑动窗口大小限制(W_T = W_R ≤ 2^(n-1))、逐一确认机制、工作过程及三种可靠传输协议的对比。

📝 详细笔记

1. 从 GBN 到 SR 的改进动机

  • GBN 的问题:一个数据分组差错可能引起大量数据分组重传,而这些重传的分组原本已正确到达接收方,仅因序号未落入接收窗口(W_R = 1)而被丢弃,造成通信资源严重浪费。
  • SR 的解决思路:设法只重传出现差错的数据分组。这就需要接收窗口 W_R > 1,以便先收下失序但正确到达且序号落入接收窗口内的数据分组,等所缺分组收齐后一并送交上层。

2. 滑动窗口大小限制

  • 序号方案:用 n 个比特给分组编序号,序号范围 0 ~ 2^n - 1,循环使用。
  • 接收窗口 W_R:
    • W_R > 1(这是与 GBN、SW 的本质区别)。
    • W_R ≤ W_T(接收窗口超过发送窗口没有意义,因为发送方不会发出那么多)。
    • W_T + W_R ≤ 2^n(确保接收窗口向前滑动后,落入的新序号与旧序号无重叠,避免无法分辨新旧分组)。
  • 推导结论:
    • 由 W_R ≤ W_T 且 W_T + W_R ≤ 2^n,可得 W_R ≤ 2^(n-1)。
    • 当 W_R 取最大值 2^(n-1) 时,W_T 能取到的最大值也为 2^(n-1)。
  • ⚠️ 重点/考点:SR 协议的窗口限制为 W_T = W_R ≤ 2^(n-1),这是与 GBN(W_T ≤ 2^n - 1)的关键区别。

3. 逐一确认机制

  • 概念定义:为使发送方仅重传出现差错的数据分组,SR 协议的接收方不再采用累积确认,而需要对每一个正确接收的数据分组进行逐一确认。
  • 助教补充:GBN 用累积确认(ACK_N 表示 N 及之前全部正确),SR 改为逐分组确认,这样才能精确告诉发送方哪些分组缺失需要重传。

4. 三种协议窗口尺寸对比

协议序号比特发送窗口 W_T接收窗口 W_R确认方式
停止等待(SW)111逐个确认
回退 N 帧(GBN)n1 < W_T ≤ 2^n - 11累积确认
选择重传(SR)n1 < W_T ≤ 2^(n-1)1 < W_R ≤ 2^(n-1)逐一确认

5. 工作过程(Mermaid 时序图)

场景一:0 号分组误码,仅重传 0 号

场景二:W_T 超过上限导致无法分辨新旧分组

  • ⚠️ 重点/考点:当 W_T 超过取值上限(2^(n-1))时,接收窗口滑动后新序号与旧序号重叠,接收方无法分辨新旧数据分组,产生分组重复。

6. 408 考研真题示例 —— 答案 D

  • 题意:发送窗口至少为 4,发送 0~3 号帧后收到 1 号帧确认,0 号和 2 号帧依次超时,需重传哪些帧?
  • 分析:
    • SR 协议不采用累积确认,接收方对每个正确接收的数据分组逐一确认。
    • 发送方仅重传未收到确认而超时的数据帧。
    • 收到 ACK1 → 1 号已确认;0 号和 2 号超时 → 仅重传 0 号和 2 号这两个帧(答案 D)。
  • ⚠️ 重点/考点:SR 与 GBN 的关键区别——SR 仅重传超时的个别帧,而 GBN 会回退重传超时帧及其后所有已发送帧。

7. 三种可靠传输协议全面对比

对比项停止等待(SW)回退 N 帧(GBN)选择重传(SR)
发送窗口 W_T11 < W_T ≤ 2^n - 11 < W_T ≤ 2^(n-1)
接收窗口 W_R111 < W_R ≤ 2^(n-1)
序号比特数1nn
确认方式逐个确认累积确认逐一确认
重传范围仅重传当前分组回退重传超时帧及之后所有已发送帧仅重传出错/超时的分组
信道利用率最低(RTT大时尤甚)较高(信道好时);信道差时反不如SW最高(仅重传必要分组)
实现复杂度最简单中等最复杂(需接收缓存)
适用场景RTT 小、简单链路信道质量好的链路信道质量差、要求高利用率的链路

💡 核心总结

  • SR 协议:发送窗口 W_T > 1,接收窗口 W_R > 1,仅重传出错分组,信道利用率最高。
  • 窗口限制:W_T = W_R ≤ 2^(n-1),超出则接收窗口滑动后新旧序号重叠,无法分辨新旧分组。
  • 采用逐一确认(非累积确认),精确告知发送方哪些分组缺失。
  • 三种协议中 SW 最简单但利用率最低,GBN 利用率较高但出错浪费大,SR 利用率最高但实现最复杂。

❓ 课后思考 / 经典考题

  1. 选择重传协议为什么要求 W_T + W_R ≤ 2^n?请从新旧序号不重叠的角度推导。
  2. SR 协议为何不采用累积确认而采用逐一确认?
  3. 当 W_R 取最大值 2^(n-1) 时,W_T 的最大值为何也是 2^(n-1)?
  4. (408 真题)发送 0~3 号帧后收到 1 号确认,0 号和 2 号超时,SR 协议需重传哪些帧?与 GBN 有何不同?
  5. 对比 SW、GBN、SR 三种协议的发送窗口、接收窗口、确认方式和重传范围。
最近更新: 2026/6/23 17:18
Contributors: yangwenguang
Prev
📖 3.2.3 (3) 可靠传输的实现机制 - 回退N帧协议(GBN)
Next
📖 3.3 点对点协议 PPP