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 (2) 可靠传输的实现机制 - 停止-等待协议(SW)

🎯 课程摘要:本节课介绍最简单的可靠传输实现机制——停止-等待协议(Stop-and-Wait, SW)。发送方每发送一个数据分组就停止等待接收方的确认(ACK),通过确认/否认、超时重传、分组编号三种机制在不可靠信道上实现可靠传输。重点包括协议工作过程、序号方案、RTO 设置以及信道利用率分析。

📝 详细笔记

1. 基本实现原理

  • 概念定义:停止-等待协议(SW)是指发送方每发送完一个数据分组就停止发送,等待接收方的确认分组(ACK)后才能发送下一个数据分组。
  • 原理解析:
    • 发送方发送一个数据分组 → 接收方差错检测 → 无误码则接受并发送确认分组 ACK → 发送方收到 ACK 后发送下一个分组。
    • 发送方每发送一个数据分组后,不能立即从发送缓存中删除该分组,因为可能需要重传;只有收到针对该分组的 ACK 后才能删除。

2. 三大核心机制

机制一:确认、否认与重传

  • 接收方检测出误码 → 丢弃数据分组 → 发送否认分组 NAK → 发送方重传该数据分组。
  • 局限:若数据分组、ACK 或 NAK 丢失,仅有确认/否认/重传无法实现可靠传输。

机制二:超时重传

  • 发送方每发送完一个数据分组就启动一个超时计时器。
  • 若到了**超时重传时间 RTO(Retransmission Time-Out)**仍未收到 ACK 或 NAK,就重传已发送的数据分组。
  • RTO 设置原则:一般将 RTO 设置为略大于收发双方之间的平均往返时间 RTT(Round-Trip Time)。
    • 数据链路层点对点:RTT 比较固定,RTO 容易设定。
    • 运输层端到端:RTT 非常不确定,设定合适 RTO 并不容易。

机制三:分组编号(序号)

  • 为什么需要序号:ACK 丢失会导致发送方超时重传,接收方收到两个相同数据分组 → 分组重复。为避免分组重复,必须给每个分组带上序号(sequence number)。
  • 数据分组序号:SW 协议每发送完一个分组就停止等待,只要新分组序号与上一个不同即可,因此用 1 个比特编号就够了(序号 0 和 1)。
    • 接收方连续收到序号相同的数据分组 → 识别为重复 → 丢弃重复分组,并向发送方再发送一个 ACK。
  • 确认分组序号:ACK 也需要编号,所用比特数与数据分组相同(1 比特)。
    • 若不编号:ACK 迟到导致发送方超时重传 0 号分组后,又收到迟到的 0 号 ACK,发送方会将其误认为是对 1 号分组的确认 → 出错。
    • 编号后:发送方可知是对 0 号的重复确认,忽略即可。
  • ⚠️ 重点/考点:
    • 数据链路层一般不会出现 ACK 迟到的情况,因此数据链路层实现 SW 协议可以不给 ACK 编号。
    • 使用超时重传机制后,可以不使用否认(NAK)机制,使协议更简单。但点对点链路误码率较高时,使用 NAK 可在超时前尽快重传。

3. 协议交互过程(Mermaid 时序图)

场景一:正常发送(无差错)

场景二:数据分组出现误码

场景三:数据分组丢失(超时重传)

场景四:确认分组丢失(超时重传 + 序号防重复)

场景五:确认分组迟到(序号防混淆)

4. 自动请求重传 ARQ

  • 概念定义:停止-等待协议属于**自动请求重传 ARQ(Automatic Repeat reQuest)**协议,即重传请求由发送方自动进行,而非接收方请求发送方重传某个序号的数据分组。

5. 信道利用率分析

  • 参数定义:
    • T_D:发送方发送数据分组所耗费的发送时延。
    • RTT:信号在收发双方之间往返传播所耗费的时间。
    • T_A:接收方发送确认分组所耗费的发送时延(一般远小于 T_D,可忽略)。
  • 信道利用率 U 计算公式:
U = T_D / (T_D + RTT + T_A)
  • 分析:
    • 当 RTT ≫ T_D(如地球同步卫星链路):数据分组很小、发送速率很大时,信道利用率很低 → 不适合用 SW 协议。
    • 当 RTT ≪ T_D(如无线局域网):信道利用率较高。
    • 若出现超时重传,信道利用率还要进一步降低。
  • ⚠️ 重点/考点:RTT 相对较大时,为提高信道利用率应改用回退 N 帧协议或选择重传协议。

6. 408 考研真题示例

  • 题目类型:给定主机甲、乙间采用 SW 协议,忽略确认帧发送时延,求使信道利用率达某值时的数据帧长度 X。
  • 解题思路:
    • 信道利用率 U = T_D / (T_D + RTT + T_A),其中 T_A 忽略。
    • 设数据帧长度为 X 比特,代入发送速率求 T_D = X / 发送速率。
    • 代入已知量求解 X。
  • 答案示例:X = 800 比特(选项 D)。

💡 核心总结

  • SW 协议:发送窗口 = 1,接收窗口 = 1,每发一个分组就停止等待。
  • 三大机制:确认/否认/重传 → 超时重传 → 分组编号(数据分组与 ACK 各用 1 比特编号)。
  • RTO 应略大于 RTT;使用超时重传后可省去 NAK。
  • 信道利用率 U = T_D / (T_D + RTT + T_A),RTT 大时利用率低,应改用 GBN 或 SR。

❓ 课后思考 / 经典考题

  1. 停止-等待协议为什么只需要 1 比特给数据分组编号?能否用更多比特?
  2. 确认分组是否必须编号?在数据链路层和运输层有何不同?
  3. 为什么使用超时重传后可以不使用否认(NAK)机制?
  4. 已知发送速率、单向传播时延、忽略确认帧发送时延,求使 SW 协议信道利用率达到 50% 的数据帧长度。
最近更新: 2026/6/23 17:18
Contributors: yangwenguang
Prev
📖 3.2.3 (1) 可靠传输的相关基本概念
Next
📖 3.2.3 (3) 可靠传输的实现机制 - 回退N帧协议(GBN)