HTML
			
				
			
			
					
			
		
	<!DOCTYPE html>
计算机网络知识点总结 — 谢希仁第八版(上半)

🌐

第一章 · 概论

网络是什么,由谁组成,怎么工作,有哪些基本概念

  <!-- 1.1 -->
  <div class="section">
    <div class="section-title">1.1 计算机网络的定义与分类</div>

    <div class="kcard">
      <div class="kcard-title">🖥️ 什么是计算机网络 <span class="tag">核心定义</span></div>
      <p>计算机网络 = <strong>一组互联的自治计算机的集合</strong>。"互联"指用通信线路和设备连在一起;"自治"指每台计算机自己做决定,不受别人控制。</p>
      <div class="example">
        <strong>🌰 生活例子:</strong>想象家里的电脑、手机、平板通过 WiFi 路由器连在一起,每台设备各自有自己的系统和账号,但它们又能互相通信、共享打印机——这就是一个最简单的计算机网络(家庭局域网)。
      </div>
      <div class="insight">
        <strong>💡 个人理解:</strong>"自治"是关键词。一台电脑崩溃了,其他电脑照常运行。这和电话系统不同——电话网中一旦交换机出问题,大片区域就无法通话。
      </div>
    </div>

    <div class="kcard">
      <div class="kcard-title">📏 按覆盖范围分类 <span class="tag">分类</span></div>
      <table class="compare-table">
        <tr><th>类型</th><th>英文缩写</th><th>覆盖范围</th><th>典型例子</th></tr>
        <tr><td>个人区域网</td><td>PAN</td><td>~1 米</td><td>蓝牙耳机连手机</td></tr>
        <tr><td>局域网</td><td>LAN</td><td>几百米~几千米</td><td>学校机房、公司内网</td></tr>
        <tr><td>城域网</td><td>MAN</td><td>一个城市</td><td>有线电视网络</td></tr>
        <tr><td>广域网</td><td>WAN</td><td>几百~几千公里</td><td>互联网的骨干网</td></tr>
      </table>
      <div class="example">
        <strong>🌰 例子:</strong>你在家连 WiFi(LAN)→ 流量走运营商 4G/5G 网(MAN/WAN)→ 到达百度服务器(WAN)。整个链路就穿越了多种网络。
      </div>
    </div>

    <div class="kcard">
      <div class="kcard-title">🔄 按拓扑结构分类 <span class="tag">分类</span></div>
      <p>网络中节点和线路的连接方式叫<strong>拓扑结构</strong>,主要有:</p>
      <ul style="margin:8px 0 8px 20px; font-size:0.9rem;">
        <li><strong>总线型</strong>:所有节点挂在一根线上(像公共汽车站)。便宜但单点故障影响全局。</li>
        <li><strong>星型</strong>:所有节点连向中心交换机/路由器。现代以太网最常用。</li>
        <li><strong>环型</strong>:节点首尾相连形成环。令牌环网使用过。</li>
        <li><strong>网状型</strong>:任意两节点之间有多条路径。互联网骨干网采用,可靠性最高。</li>
      </ul>
      <div class="insight">
        <strong>💡 理解:</strong>互联网的设计哲学来自冷战——即便一部分网络被摧毁,信息还能绕道传输,这就是网状拓扑的核心价值。
      </div>
    </div>
  </div>

  <!-- 1.2 -->
  <div class="section">
    <div class="section-title">1.2 互联网的发展历程</div>

    <div class="kcard">
      <div class="kcard-title">📜 ARPANET → 互联网 <span class="tag">历史</span></div>
      <table class="compare-table">
        <tr><th>阶段</th><th>时间</th><th>关键事件</th></tr>
        <tr><td>第一阶段</td><td>1969</td><td>ARPANET 诞生,仅4个节点,分组交换理念确立</td></tr>
        <tr><td>第二阶段</td><td>1980s</td><td>TCP/IP 协议确立为标准,NSFNet 骨干网建立</td></tr>
        <tr><td>第三阶段</td><td>1993至今</td><td>WWW 发明,商业化,移动互联网爆发</td></tr>
      </table>
      <div class="example">
        <strong>🌰 例子:</strong>1969年10月,UCLA 向斯坦福研究院发送了第一条网络消息 "lo"(想发 login,系统崩了只发出两个字母)。这个"半句话"是互联网的诞生瞬间。
      </div>
    </div>
  </div>

  <!-- 1.3 -->
  <div class="section">
    <div class="section-title">1.3 互联网的组成</div>

    <div class="kcard">
      <div class="kcard-title">🏗️ 边缘部分 vs 核心部分 <span class="tag">架构</span></div>
      <p>互联网由两大部分组成:</p>
      <div style="display:grid; grid-template-columns:1fr 1fr; gap:12px; margin:10px 0;">
        <div style="background:#eff6ff; border-radius:8px; padding:14px; border:1px solid #93c5fd;">
          <strong style="color:#1d4ed8;">边缘部分(用户侧)</strong><br><br>
          包含主机(Host),即用户直接使用的设备:电脑、手机、服务器等。<br><br>
          通信模式:C/S模式 或 P2P模式
        </div>
        <div style="background:#f0fdf4; border-radius:8px; padding:14px; border:1px solid #86efac;">
          <strong style="color:#065f46;">核心部分(运营商侧)</strong><br><br>
          包含路由器和通信链路,负责数据包的转发和路由。是互联网的"高速公路网"。
        </div>
      </div>
      <div class="example">
        <strong>🌰 例子(C/S模式):</strong>你用浏览器(客户端)访问百度(服务器),请求由百度服务器响应——这是 Client/Server 模式。<br><br>
        <strong>🌰 例子(P2P模式):</strong>用 BitTorrent 下载电影时,你既从别人那里下载(客户端),同时也在给别人上传(服务器)——这是 Peer-to-Peer 模式,没有中心服务器。
      </div>
    </div>
  </div>

  <!-- 1.4 -->
  <div class="section">
    <div class="section-title">1.4 三种数据交换方式</div>

    <div class="kcard">
      <div class="kcard-title">📦 电路交换 vs 报文交换 vs 分组交换 <span class="tag">核心重点</span></div>
      <table class="compare-table">
        <tr><th>方式</th><th>原理</th><th>优点</th><th>缺点</th><th>典型应用</th></tr>
        <tr>
          <td><strong>电路交换</strong></td>
          <td>通信前先建立专用物理通路,全程独占</td>
          <td>时延小、无抖动</td>
          <td>建立时间长、信道利用率低</td>
          <td>电话系统</td>
        </tr>
        <tr>
          <td><strong>报文交换</strong></td>
          <td>把整个消息作为一个单位存储转发</td>
          <td>不独占信道</td>
          <td>大报文时延高、需大存储</td>
          <td>早期电报</td>
        </tr>
        <tr>
          <td><strong>分组交换</strong></td>
          <td>把数据分成小包,独立路由</td>
          <td>效率高、可靠性强</td>
          <td>有排队时延、有开销</td>
          <td>互联网</td>
        </tr>
      </table>
      <div class="example">
        <strong>🌰 电路交换比喻:</strong>像租一条专属车道从北京到上海,不管有没有车,这条道一直被你占着,别人不能用。通话质量好但浪费。<br><br>
        <strong>🌰 分组交换比喻:</strong>像快递公司——你的货物(数据)被拆成多个包裹,每个包裹贴上地址标签独立发出,途中可能走不同路线,最终在目的地重新组装。高峰期各包裹可能排队等候,但总体效率远高于电路交换。
      </div>
      <div class="insight">
        <strong>💡 为什么互联网选择分组交换?</strong>假设你发一封2MB的邮件,分组交换把它切成1000个小包,每个包排队时间极短,总时延很小;而且某个路由器坏了,包可以绕道走——这正是军事需求下"抗毁性"的体现。
      </div>
    </div>
  </div>

  <!-- 1.5 -->
  <div class="section">
    <div class="section-title">1.5 计算机网络的性能指标</div>

    <div class="kcard">
      <div class="kcard-title">⚡ 速率(带宽)<span class="tag">性能指标</span></div>
      <p>速率 = 单位时间内传输的<strong>比特</strong>数,单位是 b/s(bps)。</p>
      <table class="compare-table">
        <tr><th>单位</th><th>值</th><th>举例</th></tr>
        <tr><td>1 Kb/s</td><td>10³ b/s</td><td>早期拨号调制解调器</td></tr>
        <tr><td>1 Mb/s</td><td>10⁶ b/s</td><td>老式宽带</td></tr>
        <tr><td>1 Gb/s</td><td>10⁹ b/s</td><td>家用千兆光纤</td></tr>
        <tr><td>1 Tb/s</td><td>10¹² b/s</td><td>骨干网光纤</td></tr>
      </table>
      <div class="callout callout-warn">
        <div class="callout-icon">⚠️</div>
        <div><strong>注意:</strong>运营商说的"百兆宽带"是 100 Mb/s,而文件大小用字节(Byte)计量,1 Byte = 8 bit。所以"百兆宽带"下载速度上限是 100÷8 = 12.5 MB/s,不是 100 MB/s!</div>
      </div>
    </div>

    <div class="kcard">
      <div class="kcard-title">⏱️ 时延的四个组成部分 <span class="tag">核心重点</span></div>
      <p>数据从发送端到接收端的总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延</p>
      <table class="compare-table">
        <tr><th>时延类型</th><th>公式 / 说明</th><th>决定因素</th></tr>
        <tr>
          <td><strong>发送时延</strong></td>
          <td>= 数据帧长度 ÷ 信道带宽</td>
          <td>数据大小 + 带宽</td>
        </tr>
        <tr>
          <td><strong>传播时延</strong></td>
          <td>= 信道长度 ÷ 传播速率(~2×10⁸ m/s)</td>
          <td>距离远近</td>
        </tr>
        <tr>
          <td><strong>处理时延</strong></td>
          <td>路由器/主机分析数据包所需时间</td>
          <td>设备处理能力</td>
        </tr>
        <tr>
          <td><strong>排队时延</strong></td>
          <td>在路由器队列中等待的时间</td>
          <td>网络拥堵程度</td>
        </tr>
      </table>
      <div class="example">
        <strong>🌰 例子:</strong>你发一个 1MB 的文件(8Mb),通过 100Mb/s 的宽带,到北京服务器(距离 1000km):<br>
        • 发送时延 = 8Mb ÷ 100Mb/s = 0.08s<br>
        • 传播时延 = 1000km ÷ (2×10⁸ m/s) ≈ 0.005s<br>
        • 排队+处理时延:平时 ~10ms,拥堵时可达 500ms<br>
        ✅ 高带宽减少发送时延;地球到月球的传播时延是固定的约1.3秒,带宽再大也无法减少。
      </div>
      <div class="insight">
        <strong>💡 有趣的时延带宽积:</strong>时延 × 带宽 = "管道中有多少比特在飞"。带宽10Gb/s、时延100ms 的链路,里面"装着"10⁹×0.1 = 10亿个bit的数据!发送方发完却还没收到ACK,这就是为什么高速长距离网络需要大缓冲区。
      </div>
    </div>

    <div class="kcard">
      <div class="kcard-title">📊 吞吐量与利用率 <span class="tag">性能指标</span></div>
      <p><strong>吞吐量</strong>:单位时间内实际传输的数据量(实际速率,通常 &lt; 理论带宽)</p>
      <p><strong>信道利用率</strong>:U = 实际使用时间 / 总时间。但利用率越高,时延越大!</p>
      <div class="callout callout-danger">
        <div class="callout-icon">🔴</div>
        <div>当信道利用率 U → 1(趋于满载),时延 → ∞(理论上趋于无穷大)。这就是为什么网络工程师不会让信道利用率超过50%——类似公路管理不允许路上的车"堵死"。</div>
      </div>
    </div>
  </div>

  <!-- 1.6 体系结构 -->
  <div class="section">
    <div class="section-title">1.6 计算机网络的体系结构(分层模型)</div>

    <div class="kcard">
      <div class="kcard-title">🏛️ 为什么要分层?<span class="tag">设计思想</span></div>
      <p>网络通信涉及从物理电信号到应用程序的极其复杂的过程,分层的好处是:</p>
      <ul style="margin:8px 0 8px 20px; font-size:0.9rem;">
        <li>每层只做一件事,职责清晰</li>
        <li>上层不关心下层如何实现(模块化)</li>
        <li>不同厂商的设备只要实现相同协议就能互通</li>
      </ul>
      <div class="example">
        <strong>🌰 类比:</strong>寄快递时,你(应用层)只管填写地址,不关心快递员(网络层)用卡车还是飞机(物理层)运输。分层让每个角色专注本职工作。
      </div>
    </div>

    <div class="kcard">
      <div class="kcard-title">📐 OSI 七层模型 vs TCP/IP 四层模型 <span class="tag">核心重点</span></div>
      <div style="display:grid; grid-template-columns:1fr 1fr; gap:24px; margin:12px 0;">
        <div>
          <strong style="display:block; margin-bottom:8px; color:#1d4ed8;">OSI 七层模型(理论标准)</strong>
          <div class="stack-diagram">
            <div class="stack-layer layer-7">7. 应用层 Application</div>
            <div class="stack-layer layer-6">6. 表示层 Presentation</div>
            <div class="stack-layer layer-5">5. 会话层 Session</div>
            <div class="stack-layer layer-4">4. 传输层 Transport</div>
            <div class="stack-layer layer-3">3. 网络层 Network</div>
            <div class="stack-layer layer-2">2. 数据链路层 Data Link</div>
            <div class="stack-layer layer-1">1. 物理层 Physical</div>
          </div>
        </div>
        <div>
          <strong style="display:block; margin-bottom:8px; color:#059669;">TCP/IP 四层模型(事实标准)</strong>
          <div class="stack-diagram" style="margin-top:0;">
            <div class="stack-layer" style="background:#dc2626; height:72px; line-height:72px;">应用层(HTTP/FTP/DNS…)</div>
            <div class="stack-layer" style="background:#059669; height:48px; line-height:48px;">传输层(TCP/UDP)</div>
            <div class="stack-layer" style="background:#0891b2; height:48px; line-height:48px;">网络层(IP/ICMP/ARP)</div>
            <div class="stack-layer" style="background:#7c3aed; height:72px; line-height:72px;">网络接口层(以太网/WiFi…)</div>
          </div>
        </div>
      </div>
      <div class="insight">
        <strong>💡 OSI vs TCP/IP:</strong>OSI 是"教科书标准",理论完美但实现复杂,现实中几乎没有产品完全按 OSI 实现。TCP/IP 是"江湖标准",先有实现再有标准,简单实用,称霸互联网。谢希仁书中用的是折中的"五层模型"(合并表示层和会话层到应用层)。
      </div>
    </div>

    <div class="kcard">
      <div class="kcard-title">🔑 关键术语:协议、服务、接口 <span class="tag">概念辨析</span></div>
      <table class="compare-table">
        <tr><th>术语</th><th>含义</th><th>比喻</th></tr>
        <tr>
          <td><strong>协议(Protocol)</strong></td>
          <td>同层实体通信的规则(水平方向)</td>
          <td>两国外交官都用英语交流的规定</td>
        </tr>
        <tr>
          <td><strong>服务(Service)</strong></td>
          <td>下层向上层提供的能力(垂直方向)</td>
          <td>快递公司提供"揽件→配送"服务</td>
        </tr>
        <tr>
          <td><strong>接口(Interface)</strong></td>
          <td>相邻层之间交换信息的方式</td>
          <td>快递员和仓库之间的交接手续</td>
        </tr>
        <tr>
          <td><strong>实体(Entity)</strong></td>
          <td>每层中能发送/接收信息的软硬件</td>
          <td>快递流程中每个岗位上的工作人员</td>
        </tr>
      </table>
    </div>

    <div class="kcard">
      <div class="kcard-title">📨 数据封装与解封装 <span class="tag">核心流程</span></div>
      <p>数据从应用层向下传输时,每经过一层都加上本层的<strong>首部(Header)</strong>,接收端从下往上逐层剥去首部,最终还原数据。</p>
      <div class="flow">
        <div class="flow-box">应用数据</div>
        <div class="flow-arrow">→</div>
        <div class="flow-box">+TCP头 = 报文段</div>
        <div class="flow-arrow">→</div>
        <div class="flow-box">+IP头 = 数据报</div>
        <div class="flow-arrow">→</div>
        <div class="flow-box">+帧头帧尾 = 帧</div>
        <div class="flow-arrow">→</div>
        <div class="flow-box">→ 比特流 →</div>
      </div>
      <div class="example">
        <strong>🌰 类比俄罗斯套娃:</strong>你的 HTTP 请求(最内层)被放进 TCP 信封,TCP 信封再放进 IP 信封,IP 信封放进以太网帧的大箱子,最终变成电信号传出去。每一层只看自己那层的"信封",不管里面装什么。
      </div>
    </div>
  </div>

</div>

第二章 · 物理层

比特 0 和 1 如何在物理介质上传输

  <!-- 2.1 -->
  <div class="section">
    <div class="section-title">2.1 物理层的基本概念</div>

    <div class="kcard">
      <div class="kcard-title">🔌 物理层的任务 <span class="tag">定义</span></div>
      <p>物理层关心的是<strong>如何在传输介质上传输比特流</strong>,它解决的是"如何用电压/光/无线电波来表示 0 和 1"的问题。</p>
      <p>物理层的四大特性:</p>
      <ul style="margin:8px 0 8px 20px; font-size:0.9rem;">
        <li><strong>机械特性</strong>:接口形状、尺寸(如 RJ45 网线接口是什么样的)</li>
        <li><strong>电气特性</strong>:电压范围(如 +5V 代表 1,0V 代表 0)</li>
        <li><strong>功能特性</strong>:某条线的含义(如某脚是数据线还是时钟线)</li>
        <li><strong>规程特性</strong>:各信号线的工作顺序和时序关系</li>
      </ul>
      <div class="example">
        <strong>🌰 例子:</strong>USB 接口就是一套物理层规范,规定了接口形状(机械)、5V电压(电气)、D+/D-数据线功能(功能)和握手时序(规程)。
      </div>
    </div>
  </div>

  <!-- 2.2 数据通信基础 -->
  <div class="section">
    <div class="section-title">2.2 数据通信基础理论</div>

    <div class="kcard">
      <div class="kcard-title">📡 模拟信号 vs 数字信号 <span class="tag">基础概念</span></div>
      <table class="compare-table">
        <tr><th>类型</th><th>特征</th><th>例子</th><th>优缺点</th></tr>
        <tr>
          <td><strong>模拟信号</strong></td>
          <td>连续变化的波形</td>
          <td>老式电话语音、AM/FM广播</td>
          <td>传远了噪声叠加,失真严重</td>
        </tr>
        <tr>
          <td><strong>数字信号</strong></td>
          <td>离散的高低电平</td>
          <td>计算机网络数据</td>
          <td>抗噪声强,可再生无损传输</td>
        </tr>
      </table>
      <div class="insight">
        <strong>💡 为什么现代通信都用数字化?</strong>数字信号在中继站可以"再生"——只要识别出是 0 还是 1,就能发出一个全新的干净信号,不会累积噪声。模拟信号每次放大,噪声也跟着放大,传 1000 公里后就面目全非了。
      </div>
    </div>

    <div class="kcard">
      <div class="kcard-title">📐 奈奎斯特定理 & 香农定理 <span class="tag">核心公式</span></div>
      <p>这两个定理决定了信道的理论最大传输速率上限:</p>

      <div style="background:#f0fdf4; border:1px solid #86efac; border-radius:8px; padding:14px; margin:10px 0;">
        <strong style="color:#065f46;">奈奎斯特定理(理想无噪声信道):</strong><br>
        最大数据率 = 2W·log₂N(bps)<br>
        W = 信道带宽(Hz),N = 信号的离散级数
      </div>

      <div style="background:#eff6ff; border:1px solid #93c5fd; border-radius:8px; padding:14px; margin:10px 0;">
        <strong style="color:#1d4ed8;">香农定理(有噪声信道):</strong><br>
        最大数据率 = W·log₂(1 + S/N)(bps)<br>
        S/N = 信噪比(通常用 dB 表示:10·lg(S/N))
      </div>

      <div class="example">
        <strong>🌰 例子:</strong>家用电话线带宽约 3kHz,信噪比约 30dB(S/N = 1000):<br>
        香农极限 = 3000 × log₂(1001) ≈ 3000 × 10 = 30,000 bps = 30 kbps<br>
        这就是为什么老式电话线调制解调器的极限是约 56kbps(还有其他工程因素)。
      </div>
      <div class="insight">
        <strong>💡 理解:</strong>奈奎斯特告诉我们"增加信号级别可以提速";香农告诉我们"噪声才是真正的天花板"。5G 之所以快,核心原因是信道质量好(短距离、多天线消除噪声),信噪比高。
      </div>
    </div>

    <div class="kcard">
      <div class="kcard-title">🔄 三种通信方向 <span class="tag">概念</span></div>
      <table class="compare-table">
        <tr><th>模式</th><th>说明</th><th>例子</th></tr>
        <tr><td>单工</td><td>只能一个方向传输</td><td>广播、遥控器</td></tr>
        <tr><td>半双工</td><td>可双向,但不能同时</td><td>对讲机(一个人说完才能另一个人说)</td></tr>
        <tr><td>全双工</td><td>同时双向传输</td><td>电话、网络通信</td></tr>
      </table>
    </div>

    <div class="kcard">
      <div class="kcard-title">🔢 基带传输与宽带传输 <span class="tag">传输方式</span></div>
      <p><strong>基带传输</strong>:直接用数字信号(方波)在信道上传输,不搬频率。以太网用的就是基带传输。</p>
      <p><strong>宽带传输(频带传输)</strong>:用数字信号调制载波(Modulation),频率搬移后传输。有线电视、WiFi 都是宽带传输。</p>
      <div style="margin:10px 0; font-size:0.9rem;">
        <strong>三种调制方式:</strong>
        <ul style="margin:6px 0 0 20px;">
          <li><strong>调幅(ASK)</strong>:用幅度高低表示 0/1,像音量大小代表不同含义</li>
          <li><strong>调频(FSK)</strong>:用频率高低表示 0/1,像音调高低代表不同含义</li>
          <li><strong>调相(PSK)</strong>:用相位变化表示 0/1,现代通信最常用(4G/5G、WiFi都用QAM)</li>
        </ul>
      </div>
    </div>
  </div>

  <!-- 2.3 -->
  <div class="section">
    <div class="section-title">2.3 物理层传输介质</div>

    <div class="kcard">
      <div class="kcard-title">🔌 导向传输介质(有线)<span class="tag">传输介质</span></div>
      <table class="compare-table">
        <tr><th>介质</th><th>特点</th><th>速率/距离</th><th>应用</th></tr>
        <tr>
          <td><strong>双绞线</strong></td>
          <td>两根铜线绞合,抵消电磁干扰。分屏蔽(STP)和非屏蔽(UTP)</td>
          <td>Cat6: 1Gbps/100m</td>
          <td>家庭/办公室以太网</td>
        </tr>
        <tr>
          <td><strong>同轴电缆</strong></td>
          <td>中心铜芯+绝缘层+金属网+外皮,抗干扰强</td>
          <td>几百Mbps/公里级</td>
          <td>有线电视、早期以太网</td>
        </tr>
        <tr>
          <td><strong>光纤</strong></td>
          <td>玻璃纤维中光信号传输,单模/多模,完全不受电磁干扰</td>
          <td>数十Tbps/数千公里</td>
          <td>骨干网、家庭光宽带</td>
        </tr>
      </table>
      <div class="example">
        <strong>🌰 光纤原理:</strong>光在玻璃纤维中以全内反射的方式传播,就像光在镜子做的管道里不停反弹前行。单模光纤芯极细(9μm),光走直线,传输距离远;多模光纤芯较粗(62.5μm),光走折线,适合短距离。
      </div>
    </div>

    <div class="kcard">
      <div class="kcard-title">📶 非导向传输介质(无线)<span class="tag">传输介质</span></div>
      <table class="compare-table">
        <tr><th>频段</th><th>特点</th><th>应用</th></tr>
        <tr><td>无线电波(&lt;1GHz)</td><td>穿透力强,绕射好</td><td>AM/FM广播、2G/3G蜂窝网</td></tr>
        <tr><td>微波(1-30GHz)</td><td>直线传播,需视距,大容量</td><td>WiFi 2.4/5GHz、4G/5G、卫星通信</td></tr>
        <tr><td>红外线</td><td>不穿墙,短距离</td><td>遥控器</td></tr>
        <tr><td>激光</td><td>带宽极大,需精准对准</td><td>大楼间无线光通信</td></tr>
      </table>
    </div>
  </div>

  <!-- 2.4 -->
  <div class="section">
    <div class="section-title">2.4 信道复用技术</div>

    <div class="kcard">
      <div class="kcard-title">🔀 频分复用 / 时分复用 / 码分复用 <span class="tag">复用技术</span></div>
      <p>复用的目的:<strong>一条物理线路同时传输多路信号,提高线路利用率</strong>。</p>
      <table class="compare-table">
        <tr><th>技术</th><th>英文</th><th>原理</th><th>例子</th></tr>
        <tr>
          <td><strong>频分复用</strong></td>
          <td>FDM</td>
          <td>给每路信号分配不同频率,同时传输</td>
          <td>有线电视(每个频道占不同频段)</td>
        </tr>
        <tr>
          <td><strong>时分复用</strong></td>
          <td>TDM</td>
          <td>给每路信号分配不同时间槽,轮流传输</td>
          <td>数字电话 E1 线路(30路电话共享)</td>
        </tr>
        <tr>
          <td><strong>统计时分复用</strong></td>
          <td>STDM</td>
          <td>按需分配时间槽(有话要说才占槽)</td>
          <td>ATM 网络</td>
        </tr>
        <tr>
          <td><strong>码分复用</strong></td>
          <td>CDM</td>
          <td>用正交码字区分不同用户,同时同频</td>
          <td>3G 移动通信(CDMA)</td>
        </tr>
      </table>
      <div class="example">
        <strong>🌰 FDM 比喻:</strong>有线电视像一条高速公路,每个频道(CCTV1、CCTV2…)就是一条车道,车辆(信号)在各自车道上同时跑,互不干扰。<br><br>
        <strong>🌰 TDM 比喻:</strong>30 个人轮流用同一条路发言,每人轮到时有 1/30 秒说话时间,循环往复。<br><br>
        <strong>🌰 CDM 比喻:</strong>在一间嘈杂的房间里,每对情侣用不同语言私密交流——中文、英文、法文同时说话,各自只听懂自己语言的信息。
      </div>
    </div>

    <div class="kcard">
      <div class="kcard-title">💡 波分复用(WDM)<span class="tag">光纤复用</span></div>
      <p>在光纤中,用不同颜色(波长)的光同时传输多路信号。本质上就是光领域的频分复用。</p>
      <p>密集波分复用(DWDM)可在一根光纤中传输 80+ 路,总容量可达数十 Tbps。</p>
      <div class="example">
        <strong>🌰 例子:</strong>一根跨太平洋的海底光缆,用 DWDM 承载了数百路信号,支撑全球互联网海量流量,但外表只是一根手指粗的细管子。
      </div>
    </div>
  </div>

  <!-- 2.5 -->
  <div class="section">
    <div class="section-title">2.5 数字传输系统 & 宽带接入技术</div>

    <div class="kcard">
      <div class="kcard-title">🏠 用户宽带接入方式 <span class="tag">接入技术</span></div>
      <table class="compare-table">
        <tr><th>技术</th><th>介质</th><th>速率</th><th>说明</th></tr>
        <tr>
          <td><strong>ADSL</strong></td>
          <td>电话线双绞线</td>
          <td>下行8Mbps/上行800Kbps</td>
          <td>"非对称"—下载比上传快</td>
        </tr>
        <tr>
          <td><strong>HFC(光纤同轴混合)</strong></td>
          <td>光纤+同轴电缆</td>
          <td>下行数百Mbps</td>
          <td>有线电视网络改造而来,邻居共享带宽</td>
        </tr>
        <tr>
          <td><strong>FTTH(光纤到户)</strong></td>
          <td>光纤直达家门</td>
          <td>1Gbps+</td>
          <td>目前最先进,国内大城市已普及</td>
        </tr>
        <tr>
          <td><strong>以太网接入</strong></td>
          <td>双绞线/光纤</td>
          <td>百兆~万兆</td>
          <td>校园/企业局域网最常用</td>
        </tr>
        <tr>
          <td><strong>WiFi(无线局域网)</strong></td>
          <td>无线电波</td>
          <td>WiFi 6: ~9.6Gbps理论</td>
          <td>802.11 系列标准,家庭最常用</td>
        </tr>
      </table>
      <div class="insight">
        <strong>💡 为什么 ADSL 非对称?</strong>普通用户下载远多于上传,所以把更多带宽分给下行方向。这是针对用户行为习惯做的工程优化。
      </div>
    </div>
  </div>

</div>
🔗

第三章 · 数据链路层

如何在两个直接相连的节点之间可靠地传输帧

  <div class="section">
    <div class="section-title">3.1 数据链路层的基本概念</div>

    <div class="kcard">
      <div class="kcard-title">🔗 数据链路层做什么?<span class="tag">定义</span></div>
      <p>数据链路层负责在<strong>相邻两个节点(一跳)</strong>之间可靠传输<strong>帧(Frame)</strong>。</p>
      <p>核心任务:</p>
      <ul style="margin:8px 0 8px 20px; font-size:0.9rem;">
        <li><strong>封装成帧</strong>:给数据加上帧头和帧尾,便于识别边界</li>
        <li><strong>透明传输</strong>:确保数据本身的内容不影响帧的传输(处理帧定界符问题)</li>
        <li><strong>差错检测</strong>:通过校验码发现传输中的错误</li>
      </ul>
      <div class="example">
        <strong>🌰 比喻:</strong>数据链路层就像城市里的快递员,负责在同一条街(一跳)上把包裹从A门牌送到B门牌,处理本地路况问题(差错),不管包裹最终要到哪个城市(那是网络层的事)。
      </div>
    </div>

    <div class="kcard">
      <div class="kcard-title">📦 帧的结构 <span class="tag">帧格式</span></div>
      <div style="display:flex; gap:0; margin:12px 0; font-family:monospace; font-size:0.85rem; text-align:center;">
        <div style="flex:1; background:#1d4ed8; color:white; padding:10px 6px; border-radius:6px 0 0 6px;">帧头<br><small>目的MAC<br>源MAC<br>类型</small></div>
        <div style="flex:3; background:#e0e7ff; color:#312e81; padding:10px 6px; border:1px solid #818cf8;">数据部分<br>(46~1500字节)</div>
        <div style="flex:1; background:#dc2626; color:white; padding:10px 6px; border-radius:0 6px 6px 0;">帧尾<br>FCS校验</div>
      </div>
      <p style="font-size:0.88rem;">以太网帧最小64字节,最大1518字节(MTU=1500字节数据)。超过这个大小的数据需要 IP 层分片。</p>
    </div>
  </div>

  <div class="section">
    <div class="section-title">3.2 差错检测技术</div>

    <div class="kcard">
      <div class="kcard-title">✅ 奇偶校验与 CRC 循环冗余检验 <span class="tag">核心重点</span></div>

      <div style="margin-bottom:14px;">
        <strong>奇偶校验(Parity Check):</strong>
        <p style="font-size:0.9rem; margin:6px 0;">在数据后面加1位校验位,使得所有比特中1的个数为奇数(奇校验)或偶数(偶校验)。</p>
        <div class="callout callout-warn">
          <div class="callout-icon">⚠️</div>
          <div>奇偶校验只能检测<strong>奇数位</strong>错误,如果同时翻转了偶数位,检测不出来!现代网络已很少单独使用。</div>
        </div>
      </div>

      <div>
        <strong>CRC(循环冗余检验):</strong>
        <p style="font-size:0.9rem; margin:6px 0;">把数据看作一个大的二进制多项式,除以一个约定的生成多项式,把<strong>余数(FCS帧检验序列)</strong>附在数据后面。接收方做同样的除法,余数为0则无错。</p>
        <div class="example">
          <strong>🌰 CRC 直觉理解:</strong>把数据看成一个大数,除以一个"密码数字",把余数写在包裹上。收件方做同样的除法,余数一样就说明数据没有改变。即使1个bit翻转,除法结果也会完全不同,所以检测率极高(CRC-32 的错误漏检率约 1/2³²)。
        </div>
      </div>

      <div class="callout callout-info" style="margin-top:12px;">
        <div class="callout-icon">ℹ️</div>
        <div><strong>重要区分:</strong>CRC 只能<strong>检测</strong>错误,不能<strong>纠正</strong>错误。以太网发现 CRC 出错就直接丢弃帧,由上层(TCP)负责重传。这是"检错重传"策略。</div>
      </div>
    </div>
  </div>

  <div class="section">
    <div class="section-title">3.3 点对点协议 PPP</div>

    <div class="kcard">
      <div class="kcard-title">📡 PPP 协议 <span class="tag">广域网链路</span></div>
      <p>PPP(Point-to-Point Protocol)是目前使用最广泛的广域网数据链路层协议,用于两点之间的串行链路通信。</p>
      <p>典型应用:<strong>拨号上网(PPPoE)</strong>——你家路由器通过 PPPoE 连接运营商,本质就是 PPP over Ethernet。</p>
      <div style="margin:10px 0; font-size:0.9rem;">
        <strong>PPP 帧结构:</strong>
        <div style="display:flex; gap:0; margin:8px 0; font-family:monospace; font-size:0.82rem; text-align:center;">
          <div style="background:#7c3aed; color:white; padding:8px 4px; min-width:45px;">F<br>7E</div>
          <div style="background:#0891b2; color:white; padding:8px 4px; min-width:45px;">A<br>FF</div>
          <div style="background:#0891b2; color:white; padding:8px 4px; min-width:45px;">C<br>03</div>
          <div style="background:#059669; color:white; padding:8px 4px; flex:1;">Protocol</div>
          <div style="background:#e0e7ff; color:#312e81; padding:8px 4px; flex:3; border:1px solid #818cf8;">Information(数据)</div>
          <div style="background:#dc2626; color:white; padding:8px 4px; min-width:45px;">FCS</div>
          <div style="background:#7c3aed; color:white; padding:8px 4px; min-width:45px;">F<br>7E</div>
        </div>
        <p>标志字段 0x7E 用作帧定界符。若数据中出现 0x7E,用"字节填充"(转义)处理,确保透明传输。</p>
      </div>
      <div class="example">
        <strong>🌰 例子(字节填充):</strong>数据中如果出现 0x7E(帧定界符),发送方改成 0x7D 0x5E 两个字节;如果出现 0x7D(转义字符),改成 0x7D 0x5D。接收方看到 0x7D 就知道下一个字节是"被转义的",还原回去。就像写文章时,引号内的引号要变成另一种符号。
      </div>
    </div>
  </div>

  <div class="section">
    <div class="section-title">3.4 以太网(局域网核心)</div>

    <div class="kcard">
      <div class="kcard-title">🌐 以太网的诞生与 CSMA/CD <span class="tag">核心重点</span></div>
      <p>以太网(Ethernet)由 Xerox 公司于1970年代发明,现在是全球最主流的局域网技术。IEEE 802.3 标准。</p>
      <p>早期以太网是<strong>总线型</strong>:所有节点共享一条总线,任何人发送的信号所有人都能听到。问题:两个人同时说话会"碰撞"。</p>
      <p>解决方案:<strong>CSMA/CD(载波侦听多路访问/碰撞检测)</strong></p>

      <div style="background:#f0fdf4; border:1px solid #86efac; border-radius:8px; padding:14px; margin:10px 0; font-size:0.9rem;">
        <strong style="color:#065f46;">CSMA/CD 工作流程(背口诀:"先听后说,边说边听,冲突后随机退避"):</strong>
        <ol style="margin:8px 0 0 20px;">
          <li><strong>载波侦听(CS):</strong>发送前先监听信道,如果有人在说就等待</li>
          <li><strong>多路访问(MA):</strong>信道空闲时才开始发送</li>
          <li><strong>碰撞检测(CD):</strong>发送过程中持续监听,发现碰撞立即停止并发强化信号</li>
          <li><strong>随机退避:</strong>等待随机时间后重试(二进制指数退避算法)</li>
        </ol>
      </div>

      <div class="example">
        <strong>🌰 CSMA/CD 类比课堂发言:</strong>
        课堂讨论(总线以太网):<br>
        - 想发言前先听有没有人说话(载波侦听)<br>
        - 没有人说话时再开口(多路访问)<br>
        - 说的过程中如果和别人撞上了,立刻停下来(碰撞检测+停止)<br>
        - 随机等几秒再重新举手(随机退避)<br><br>
        <strong>最小帧长为什么是 64 字节?</strong>为了让发送方在发完一帧之前就能检测到碰撞——信号跑完最长距离(2500m,往返约 51.2μs)所传输的数据量,即 10Mbps × 51.2μs = 512bit = 64字节。
      </div>

      <div class="insight">
        <strong>💡 现代以太网已经不用 CSMA/CD 了!</strong>现代以太网全部是<strong>全双工交换机</strong>:每个端口独享一条点对点链路,根本不会碰撞。CSMA/CD 只在老式半双工共享总线网络中才有意义,现在更多是考试知识点。
      </div>
    </div>

    <div class="kcard">
      <div class="kcard-title">🏷️ MAC 地址 <span class="tag">核心概念</span></div>
      <p>MAC 地址(Media Access Control Address)= 网卡的"出厂序列号",全球唯一,48位,写成 6 组十六进制数。</p>
      <div class="ip-bits">
        <div class="ip-byte">AA:BB</div>
        <div class="ip-sep">:</div>
        <div class="ip-byte">CC:DD</div>
        <div class="ip-sep">:</div>
        <div class="ip-byte">EE:FF</div>
      </div>
      <p style="font-size:0.88rem;">前3字节(OUI)是厂商标识,由 IEEE 分配;后3字节是厂商自己分配的序列号。</p>
      <div class="example">
        <strong>🌰 MAC vs IP 地址区别:</strong><br>
        MAC 地址 = 你的<strong>身份证号</strong>(固定,出生就定,全球唯一)<br>
        IP 地址 = 你的<strong>家庭住址</strong>(随你搬家而变,方便定位)<br><br>
        数据链路层(局域网内)用 MAC 地址找到你;网络层(跨网络)用 IP 地址找到你。
      </div>
    </div>

    <div class="kcard">
      <div class="kcard-title">🔀 集线器 vs 交换机 <span class="tag">网络设备对比</span></div>
      <table class="compare-table">
        <tr><th>设备</th><th>工作层</th><th>转发方式</th><th>碰撞域</th><th>广播域</th></tr>
        <tr>
          <td><strong>集线器(Hub)</strong></td>
          <td>物理层</td>
          <td>广播所有端口</td>
          <td>所有端口共一个</td>
          <td>一个</td>
        </tr>
        <tr>
          <td><strong>网桥(Bridge)</strong></td>
          <td>数据链路层</td>
          <td>按 MAC 地址转发,2端口</td>
          <td>每端口独立</td>
          <td>一个</td>
        </tr>
        <tr>
          <td><strong>交换机(Switch)</strong></td>
          <td>数据链路层</td>
          <td>按 MAC 地址转发,多端口</td>
          <td>每端口独立</td>
          <td>一个(默认)</td>
        </tr>
      </table>
      <div class="example">
        <strong>🌰 集线器 vs 交换机:</strong><br>
        集线器:你跟 A 说悄悄话,全班同学都能听到(广播),但每次只有一个人能说话(碰撞域)。<br>
        交换机:有"记忆"——知道每个端口后面是哪个 MAC 地址(MAC地址表),可以精准地点对点转发,多对设备同时通信互不干扰。
      </div>
      <div class="insight">
        <strong>💡 交换机的 MAC 地址学习机制:</strong>交换机刚启动时 MAC 地址表是空的。每当它收到一帧,就把源 MAC 地址和入端口记录下来。几分钟后,它就"认识"了所有设备的位置。这叫<strong>自学习(Self-learning)</strong>。如果目的 MAC 不在表中,则<strong>泛洪(Flood)</strong>(除入端口外发往所有端口)。
      </div>
    </div>

    <div class="kcard">
      <div class="kcard-title">🏷️ VLAN 虚拟局域网 <span class="tag">重要技术</span></div>
      <p>VLAN(Virtual LAN)用软件把一个物理网络划分成多个逻辑网络,实现广播域隔离。</p>
      <div class="example">
        <strong>🌰 例子:</strong>一家公司财务部和研发部在同一层楼连同一台交换机,但通过 VLAN 划分,财务部的广播流量不会被研发部看到,安全又节省带宽。<br><br>
        802.1Q 协议在以太网帧中插入 4 字节标签(VLAN Tag),其中12位 VLAN ID 最多支持 4094 个 VLAN。
      </div>
    </div>
  </div>

</div>
🗺️

第四章 · 网络层

IP 地址、数据报转发、路由选择,互联网的核心

  <div class="section">
    <div class="section-title">4.1 网络层概述</div>

    <div class="kcard">
      <div class="kcard-title">🗺️ 网络层的任务 <span class="tag">定义</span></div>
      <p>网络层的核心任务:<strong>把数据包从源主机送到目的主机</strong>,即使跨越多个网络(路由器)。</p>
      <p>两大核心功能:</p>
      <ul style="margin:8px 0 8px 20px; font-size:0.9rem;">
        <li><strong>转发(Forwarding):</strong>路由器根据转发表决定数据包下一跳去哪里(本地操作)</li>
        <li><strong>路由选择(Routing):</strong>维护路由表,计算最优路径(全局计算)</li>
      </ul>
      <div class="callout callout-info">
        <div class="callout-icon">ℹ️</div>
        <div><strong>转发 vs 路由选择:</strong>类比导航——路由选择相当于你出发前规划最优路线;转发相当于路口的指路牌告诉你"直行还是左转"。</div>
      </div>
    </div>
  </div>

  <!-- 4.1.1 -->
  <div class="section" id="ch4-411">
    <div class="section-title">4.1.1 网络层提供的两种服务</div>

    <div class="kcard">
      <div class="kcard-title">🔀 虚电路服务 vs 数据报服务 <span class="tag">核心对比</span></div>
      <p>网络层向上层(传输层)提供服务有两种设计思路,争论的焦点是:<strong>"可靠性由网络来保证,还是由端系统来保证?"</strong></p>

      <table class="compare-table">
        <tr>
          <th>对比项</th>
          <th>虚电路服务(Virtual Circuit)</th>
          <th>数据报服务(Datagram)</th>
        </tr>
        <tr>
          <td><strong>思路来源</td>
          <td>借鉴电话网络的设计思想</td>
          <td>互联网的实际做法(TCP/IP)</td>
        </tr>
        <tr>
          <td><strong>连接建立</strong></td>
          <td>通信前必须建立虚电路(逻辑连接)</td>
          <td>不需要建立连接,即发即走</td>
        </tr>
        <tr>
          <td><strong>路径</strong></td>
          <td>同一连接的所有数据包走<strong>同一条路径</strong></td>
          <td>每个数据包<strong>独立路由</strong>,可走不同路径</td>
        </tr>
        <tr>
          <td><strong>数据包顺序</strong></td>
          <td>到达顺序与发送顺序相同</td>
          <td>可能乱序到达,需上层重排</td>
        </tr>
        <tr>
          <td><strong>路由器存储</strong></td>
          <td>每条虚电路都要在路由器中维护状态</td>
          <td>路由器不保存连接状态,只查路由表转发</td>
        </tr>
        <tr>
          <td><strong>可靠性保证</strong></td>
          <td>由<strong>网络负责</strong>(误码、丢包、拥塞都在网内处理)</td>
          <td>由<strong>端系统(TCP)负责</strong>,网络尽力而为</td>
        </tr>
        <tr>
          <td><strong>节点故障影响</strong></td>
          <td>路由器故障 → 经过该节点的虚电路全断</td>
          <td>路由器故障 → 后续包绕道,已在途包可能丢失</td>
        </tr>
        <tr>
          <td><strong>典型代表</strong></td>
          <td>ATM、帧中继、X.25</td>
          <td>互联网 IP 协议</td>
        </tr>
      </table>

      <div class="example">
        <strong>🌰 虚电路服务类比:</strong>
        像打电话——先拨号建立通话(建立虚电路),通话期间所有声音都经过同一条线路,挂断后线路释放。有序、稳定,但中间哪个交换机坏了就断线。<br><br>
        <strong>🌰 数据报服务类比:</strong>
        像寄快递——每个包裹贴上目的地址独立发出,快递公司(路由器)根据当前状况决定走哪条路,不同包裹可能走不同路线,也可能后发先至。灵活、高效,但需要收件人自己检查有没有包裹丢失。
      </div>

      <div class="insight">
        <strong>💡 互联网为什么选择数据报服务?</strong><br>
        互联网的设计哲学是 <strong>"网络尽力而为(Best Effort),端系统负责可靠性"</strong>。理由是:<br>
        ① 数据报让网络核心变得简单(路由器不需要维护每条连接的状态),可以支撑海量并发连接;<br>
        ② 可靠性交给端系统(TCP)处理,更灵活——有的应用不需要可靠(视频直播用 UDP),强迫网络保证可靠反而浪费;<br>
        ③ 抗毁性更强——某个路由器挂了,数据包自动绕路,整个网络不会瘫痪。<br><br>
        这就是"端到端原则(End-to-End Principle)"——复杂性推到边缘,网络核心保持简单。
      </div>

      <div class="callout callout-success">
        <div class="callout-icon">✅</div>
        <div>
          <strong>一句话总结:</strong>虚电路服务像"包车"——路线固定,全程负责;数据报服务像"公共交通"——各走各的,乘客自负其责。互联网选择了后者,牺牲了网络内部的有序性,换取了整体的灵活性和扩展性。
        </div>
      </div>
    </div>
  </div>

  <!-- 4.1.2 -->
  <div class="section" id="ch4-412">
    <div class="section-title">4.1.2 网络层的两个层面</div>

    <div class="kcard">
      <div class="kcard-title">🏗️ 数据平面 vs 控制平面 <span class="tag">核心概念</span></div>
      <p>网络层的功能可以从两个维度来理解——<strong>「怎么转发一个包」</strong>和<strong>「怎么决定路由表」</strong>,这两件事分别对应网络层的两个层面。</p>

      <table class="compare-table">
        <tr>
          <th>对比项</th>
          <th>数据平面(Data Plane)</th>
          <th>控制平面(Control Plane)</th>
        </tr>
        <tr>
          <td><strong>别名</strong></td>
          <td>转发平面(Forwarding Plane)</td>
          <td>路由平面(Routing Plane)</td>
        </tr>
        <tr>
          <td><strong>核心任务</strong></td>
          <td>把数据包从输入端口<strong>快速转发</strong>到输出端口</td>
          <td><strong>计算并维护路由表</strong>,决定数据包应该往哪走</td>
        </tr>
        <tr>
          <td><strong>时间尺度</strong></td>
          <td>纳秒级(硬件线速处理,极快)</td>
          <td>秒/分钟级(路由协议收敛需要时间)</td>
        </tr>
        <tr>
          <td><strong>实现方式</strong></td>
          <td>路由器硬件芯片(ASIC/FPGA)完成</td>
          <td>路由协议软件(RIP、OSPF、BGP)完成</td>
        </tr>
        <tr>
          <td><strong>依据</strong></td>
          <td>查转发表(FIB,已计算好的结果)</td>
          <td>运行路由算法(链路状态/距离向量等)</td>
        </tr>
        <tr>
          <td><strong>类比角色</strong></td>
          <td>快递员(按地址投递)</td>
          <td>导航系统(规划路线)</td>
        </tr>
      </table>

      <div class="example">
        <strong>🌰 两个层面的工作流程举例:</strong><br><br>
        想象你在一个大型物流中心(路由器)工作:<br><br>
        📦 <strong>控制平面的工作:</strong>每天早上开会,和周边各物流中心交换信息——"我到上海要 2 小时,我到北京要 5 小时……"。大家汇总后各自算出最优路线,写成一张《目的地→走哪条传送带》的路由表,贴在墙上。<br><br>
        ⚡ <strong>数据平面的工作:</strong>快递包裹流水线上不停传来,扫码枪扫一下目的地,立即查墙上那张表,"上海?走3号传送带!",然后把包裹甩上去,整个过程毫秒级完成,不需要动脑子重新算路线。<br><br>
        <strong>关键点:路由表(控制平面算的)和转发表(数据平面用的)本质上是同一张表,但分开理解更清晰。</strong>
      </div>
    </div>

    <div class="kcard">
      <div class="kcard-title">🔄 传统方式 vs SDN 软件定义网络 <span class="tag">扩展理解</span></div>
      <p>两个层面的分离引出了一个重要问题:控制平面应该放在哪里?</p>

      <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin: 16px 0;">
        <div style="background: #f0f7ff; border-radius: 10px; padding: 16px; border-left: 4px solid #4a9eff;">
          <strong>📟 传统路由器(Per-Router Control)</strong>
          <ul style="margin: 10px 0 0; padding-left: 18px; line-height: 2;">
            <li>每台路由器<strong>自己运行路由协议</strong></li>
            <li>数据平面和控制平面都在同一台设备里</li>
            <li>路由器既是执行者又是决策者</li>
            <li>优点:去中心化,健壮性强</li>
            <li>缺点:难以全局优化,配置复杂</li>
          </ul>
        </div>
        <div style="background: #f0fff4; border-radius: 10px; padding: 16px; border-left: 4px solid #48bb78;">
          <strong>☁️ SDN(Software Defined Networking)</strong>
          <ul style="margin: 10px 0 0; padding-left: 18px; line-height: 2;">
            <li>控制平面从路由器中<strong>抽离出来</strong></li>
            <li>集中到云端的 <strong>SDN 控制器</strong>统一计算</li>
            <li>路由器只做数据平面(转发),变成"哑设备"</li>
            <li>优点:全局视角,灵活编程,易运维</li>
            <li>缺点:控制器成为单点故障风险</li>
          </ul>
        </div>
      </div>

      <div class="example">
        <strong>🌰 传统 vs SDN 类比:</strong><br>
        传统路由器就像<strong>每个路口的交警自己决定放哪个方向的车</strong>——每个交警只看自己的路口,靠经验和和邻居交警的信息协调。<br><br>
        SDN 就像<strong>交通指挥中心统一调度</strong>——有个大屏幕看到全城路况,统一下令每个路口的信号灯怎么配时,全局最优。<br><br>
        现代数据中心(阿里云、腾讯云内部)大量使用 SDN,因为机器多、路线复杂,集中控制更高效。
      </div>

      <div class="insight">
        <strong>💡 为什么要区分两个层面?</strong><br>
        ① <strong>性能隔离</strong>:数据平面要线速处理海量包,不能被路由计算拖慢;控制平面可以慢一点但要正确。<br>
        ② <strong>故障隔离</strong>:路由协议出 bug,不影响已有的转发规则继续工作;反之亦然。<br>
        ③ <strong>SDN 的基础</strong>:只有将两个平面在概念上分清,才能在架构上分离,实现网络的软件化编程。<br>
        ④ <strong>考试重点</strong>:数据平面 = 转发(查表动作),控制平面 = 路由(算表过程),这个区别常考!
      </div>

      <div class="callout callout-success">
        <div class="callout-icon">✅</div>
        <div>
          <strong>一句话总结:</strong>控制平面是「军师」,负责出谋划策、算出路由表;数据平面是「士兵」,负责按图索骥、快速转发数据包。两者分工明确,各司其职,是现代路由器架构设计的核心思想。
        </div>
      </div>
    </div>
  </div>

  <!-- 4.2 网际协议 IP -->
  <div class="section" id="ch4-42">
    <div class="section-title">4.2 网际协议 IP</div>

    <div class="kcard">
      <div class="kcard-title">🌐 什么是网际协议 IP? <span class="tag">总览</span></div>
      <p>IP(Internet Protocol,网际协议)是 TCP/IP 体系中<strong>最核心的协议</strong>,工作在网络层。它解决了一个根本问题:<strong>如何在由各种异构网络(不同技术、不同硬件、不同协议)组成的大型互联网络上,传递数据包?</strong></p>

      <div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin: 16px 0;">
        <div style="background: #f0f7ff; border-radius: 10px; padding: 14px; text-align: center;">
          <div style="font-size: 2em; margin-bottom: 8px;">📦</div>
          <strong>IP 数据报</strong>
          <p style="margin: 6px 0 0; font-size: 0.9em; color: #555;">统一的分组格式,屏蔽底层差异</p>
        </div>
        <div style="background: #f0fff4; border-radius: 10px; padding: 14px; text-align: center;">
          <div style="font-size: 2em; margin-bottom: 8px;">🏷️</div>
          <strong>IP 地址</strong>
          <p style="margin: 6px 0 0; font-size: 0.9em; color: #555;">全球唯一的逻辑地址体系</p>
        </div>
        <div style="background: #fffaf0; border-radius: 10px; padding: 14px; text-align: center;">
          <div style="font-size: 2em; margin-bottom: 8px;">🗺️</div>
          <strong>路由转发</strong>
          <p style="margin: 6px 0 0; font-size: 0.9em; color: #555;">逐跳决策,把包送到目的地</p>
        </div>
      </div>

      <div class="insight">
        <strong>💡 IP 协议的设计哲学:</strong>IP 是一个<strong>尽力而为(Best-Effort)</strong>的协议——它不保证数据包一定能到达,不保证顺序,也不保证延迟,只是竭尽所能地转发。可靠性由上层的 TCP 负责。这种"简单网络,智能终端"的思路让互联网得以承载各种各样的应用。
      </div>
    </div>
  </div>

  <!-- 4.2.1 虚拟互联网络 -->
  <div class="section" id="ch4-421">
    <div class="section-title">4.2.1 虚拟互联网络</div>

    <div class="kcard">
      <div class="kcard-title">🔗 什么是虚拟互联网络? <span class="tag">核心概念</span></div>
      <p>现实世界的互联网,是由成千上万个<strong>物理网络</strong>(以太网、Wi-Fi、光纤骨干网、卫星网……)通过<strong>路由器</strong>互联起来的。这些底层网络技术千差万别,帧格式、地址长度、最大传输单元(MTU)各不相同。</p>
      <p>IP 协议通过在这些异构网络之上构建一个<strong>统一的逻辑层</strong>,让所有用户感觉自己在使用同一个网络——这就是<strong>虚拟互联网络(Internet)</strong>。</p>

      <div class="example">
        <strong>🌰 类比:国际快递系统</strong><br><br>
        寄一个包裹从北京到纽约,中间会经历:陆运卡车 → 国内航班 → 国际货轮 → 当地邮车……每种运输方式都有自己的规则(装箱规格不同、票据格式不同)。<br><br>
        但你作为寄件人,只需要<strong>写上统一格式的地址标签</strong>(IP地址),剩下的都由各段运输衔接完成。你感觉到的是一个无缝的"全球快递网络",而不是一堆拼凑起来的运输片段。<br><br>
        <strong>IP 协议就是那张统一的地址标签规范,虚拟互联网络就是那个"感觉无缝"的全球快递系统。</strong>
      </div>
    </div>

    <div class="kcard">
      <div class="kcard-title">🔄 IP 数据报在异构网络中的传输过程</div>
      <p>数据从主机 A 经过多个不同类型的网络,最终到达主机 B,IP 数据报经历的变化如下:</p>

      <div style="background: #f8f9fa; border-radius: 12px; padding: 20px; margin: 16px 0; font-family: monospace; font-size: 0.9em; line-height: 2;">
        <div style="text-align: center; margin-bottom: 12px; font-weight: bold; font-family: sans-serif;">IP 数据报穿越异构网络示意</div>
        <div style="display: flex; align-items: center; justify-content: space-around; flex-wrap: wrap; gap: 8px;">
          <div style="background: #4a9eff; color: white; padding: 8px 16px; border-radius: 8px; text-align: center;">
            主机 A<br><small>以太网</small>
          </div>
          <div style="color: #666;">→ <small>以太网帧</small> →</div>
          <div style="background: #48bb78; color: white; padding: 8px 16px; border-radius: 8px; text-align: center;">
            路由器 R1<br><small>以太网 / Wi-Fi</small>
          </div>
          <div style="color: #666;">→ <small>Wi-Fi帧</small> →</div>
          <div style="background: #48bb78; color: white; padding: 8px 16px; border-radius: 8px; text-align: center;">
            路由器 R2<br><small>Wi-Fi / 光纤</small>
          </div>
          <div style="color: #666;">→ <small>光纤帧</small> →</div>
          <div style="background: #4a9eff; color: white; padding: 8px 16px; border-radius: 8px; text-align: center;">
            主机 B<br><small>光纤以太网</small>
          </div>
        </div>
        <div style="text-align: center; margin-top: 14px; color: #e55; font-weight: bold; font-family: sans-serif;">
          ↑ 底层帧格式在每段链路上不同,但 IP 数据报的内容始终不变 ↑
        </div>
      </div>

      <div class="example">
        <strong>📌 关键理解:封装与解封装</strong><br>
        每到一段新的链路,路由器会:<br>
        ① <strong>剥掉</strong>上一段链路的数据帧头(解封装),取出 IP 数据报;<br>
        ② 查路由表,决定下一跳;<br>
        ③ 用下一段链路的<strong>新帧格式重新封装</strong> IP 数据报,发出去。<br><br>
        IP 数据报就像一封信的内容,外面的信封(数据帧)每到一个中转站就换一个,但信的内容(IP 层及以上)全程不变。
      </div>
    </div>

    <div class="kcard">
      <div class="kcard-title">🧩 互联网络中的关键术语辨析</div>

      <table class="compare-table">
        <tr>
          <th>术语</th>
          <th>含义</th>
          <th>举例</th>
        </tr>
        <tr>
          <td><strong>网络(Network)</strong></td>
          <td>由相同技术组成的单一物理网络</td>
          <td>一栋楼的以太网、一个校园 Wi-Fi</td>
        </tr>
        <tr>
          <td><strong>互联网络(Internetwork)</strong></td>
          <td>由路由器将多个异构网络连接起来</td>
          <td>校园网 + 电信骨干网 + 家庭网</td>
        </tr>
        <tr>
          <td><strong>互联网(Internet)</strong></td>
          <td>全球最大的互联网络(专有名词,首字母大写)</td>
          <td>我们日常使用的"网络"</td>
        </tr>
        <tr>
          <td><strong>路由器(Router)</strong></td>
          <td>连接异构网络的关键设备,工作在网络层</td>
          <td>家里的光猫路由器、运营商核心路由器</td>
        </tr>
        <tr>
          <td><strong>虚拟互联网络</strong></td>
          <td>IP 协议在异构物理网络之上创建的<strong>逻辑统一网络</strong></td>
          <td>互联网用户感知到的"一张大网"</td>
        </tr>
      </table>

      <div class="insight">
        <strong>💡 "虚拟"体现在哪里?</strong><br>
        "虚拟"不是说网络不真实,而是说这层统一性是<strong>逻辑上的抽象</strong>,靠 IP 协议软件来维持,并没有一根真正连通全球的统一物理网线。就像"虚拟机"并不是真的机器,但用起来和真机一样。<br><br>
        正是这种虚拟化能力,让互联网可以把以太网、Wi-Fi、4G、卫星等完全不同的技术<strong>无缝整合</strong>,并在未来持续纳入新的网络技术,而不需要推倒重建。
      </div>

      <div class="callout callout-success">
        <div class="callout-icon">✅</div>
        <div>
          <strong>一句话总结:</strong>虚拟互联网络是 IP 协议的最大贡献——用一个统一的逻辑层,把底层五花八门的物理网络"粘合"成一张人人都能用同一套规则通信的全球大网。
        </div>
      </div>
    </div>
  </div>

  <!-- 4.2.2 IP 地址(原4.2) -->
  <div class="section" id="ch4-422">
    <div class="section-title">4.2.2 IP 地址</div>

    <div class="kcard">
      <div class="kcard-title">🔢 IPv4 地址结构 <span class="tag">核心重点</span></div>
      <p>IPv4 地址 = 32位二进制,通常用<strong>点分十进制</strong>表示,如 192.168.1.100</p>
      <div class="ip-bits">
        <div class="ip-byte">11000000</div>
        <div class="ip-sep">.</div>
        <div class="ip-byte">10101000</div>
        <div class="ip-sep">.</div>
        <div class="ip-byte">00000001</div>
        <div class="ip-sep">.</div>
        <div class="ip-byte">01100100</div>
      </div>
      <div class="ip-bits" style="margin-top:2px;">
        <div class="ip-byte">192</div>
        <div class="ip-sep">.</div>
        <div class="ip-byte">168</div>
        <div class="ip-sep">.</div>
        <div class="ip-byte">1</div>
        <div class="ip-sep">.</div>
        <div class="ip-byte">100</div>
      </div>
      <p style="margin-top:10px; font-size:0.9rem;">IP 地址 = <strong>网络号(Net ID)</strong> + <strong>主机号(Host ID)</strong>,用子网掩码(Subnet Mask)来划分边界。</p>
    </div>

    <div class="kcard">
      <div class="kcard-title">🅰️ 分类 IP 地址(A/B/C/D/E类)<span class="tag">传统分类</span></div>
      <table class="compare-table">
        <tr><th>类别</th><th>首字节范围</th><th>网络号位数</th><th>主机号位数</th><th>每网络主机数</th><th>用途</th></tr>
        <tr><td><strong>A 类</strong></td><td>1~126</td><td>8位</td><td>24位</td><td>~1600万</td><td>超大型网络(已分配完)</td></tr>
        <tr><td><strong>B 类</strong></td><td>128~191</td><td>16位</td><td>16位</td><td>~65000</td><td>大中型网络</td></tr>
        <tr><td><strong>C 类</strong></td><td>192~223</td><td>24位</td><td>8位</td><td>254</td><td>小型网络</td></tr>
        <tr><td><strong>D 类</strong></td><td>224~239</td><td>—</td><td>—</td><td>—</td><td>组播(Multicast)</td></tr>
        <tr><td><strong>E 类</strong></td><td>240~255</td><td>—</td><td>—</td><td>—</td><td>保留备用</td></tr>
      </table>
      <div class="kcard">
        <div class="kcard-title">⚠️ 特殊 IP 地址一览 <span class="tag">重要细节</span></div>
        <p>并非所有 IP 地址都能自由使用——有些是保留的,有些只能在特定场景下作为源地址或目的地址。以下按 RFC 5735 / RFC 1122 标准整理:</p>

        <table class="compare-table" style="font-size:0.88rem;">
          <tr>
            <th>地址范围 / 写法</th>
            <th>地址类型</th>
            <th>源地址</th>
            <th>目的地址</th>
            <th>说明与例子</th>
          </tr>
          <tr>
            <td><code>0.0.0.0 / 8</code></td>
            <td>本网络地址</td>
            <td><span style="color:#e67e22; font-weight:bold;">⚠️ 受限</span></td>
            <td><span style="color:#e74c3c; font-weight:bold;">❌ 禁止</span></td>
            <td>仅在主机<strong>刚启动、尚未获取 IP</strong>时使用,代表"本网络上的本主机"。DHCP 场景最常见。<br>如:<code>0.0.0.0</code>(主机发 DHCP 请求时)</td>
          </tr>
          <tr>
            <td><code>127.0.0.0 / 8</code></td>
            <td>环回地址(Loopback)</td>
            <td><span style="color:#27ae60; font-weight:bold;">✅ 可以</span></td>
            <td><span style="color:#27ae60; font-weight:bold;">✅ 可以</span></td>
            <td>数据包永远不离开本机,IP 层直接处理。常用于本机测试。<br>如:<code>127.0.0.1</code>(localhost)、<code>127.0.0.2</code></td>
          </tr>
          <tr>
            <td><code>10.0.0.0 / 8</code></td>
            <td>私有地址(A类)</td>
            <td><span style="color:#27ae60; font-weight:bold;">✅ 可以</span></td>
            <td><span style="color:#27ae60; font-weight:bold;">✅ 可以</span></td>
            <td>内网专用,路由器<strong>不会将其路由到公网</strong>。<br>如:<code>10.0.1.5</code>(家庭/企业内网常见)</td>
          </tr>
          <tr>
            <td><code>172.16.0.0 / 12</code></td>
            <td>私有地址(B类段)</td>
            <td><span style="color:#27ae60; font-weight:bold;">✅ 可以</span></td>
            <td><span style="color:#27ae60; font-weight:bold;">✅ 可以</span></td>
            <td>包含 172.16.x.x ~ 172.31.x.x,共 16 个 B 类网络。<br>如:<code>172.16.254.3</code></td>
          </tr>
          <tr>
            <td><code>192.168.0.0 / 16</code></td>
            <td>私有地址(C类段)</td>
            <td><span style="color:#27ae60; font-weight:bold;">✅ 可以</span></td>
            <td><span style="color:#27ae60; font-weight:bold;">✅ 可以</span></td>
            <td>最常用的内网地址段,家用路由器 LAN 口常见 <code>192.168.1.x</code>。</td>
          </tr>
          <tr>
            <td><code>100.64.0.0 / 10</code></td>
            <td>运营商级 NAT 地址</td>
            <td><span style="color:#27ae60; font-weight:bold;">✅ 可以</span></td>
            <td><span style="color:#27ae60; font-weight:bold;">✅ 可以</span></td>
            <td>运营商用来给大量用户共享少数公网 IP(NAPT 场景)。<br>如:<code>100.100.1.1</code></td>
          </tr>
          <tr>
            <td><code>169.254.0.0 / 16</code></td>
            <td>链路本地地址(Link-Local)</td>
            <td><span style="color:#e67e22; font-weight:bold;">⚠️ 受限</span></td>
            <td><span style="color:#e67e22; font-weight:bold;">⚠️ 受限</span></td>
            <td>DHCP 失败时自动分配,仅限<strong>同一条链路</strong>通信,不能跨路由器。<br>如:<code>169.254.12.34</code>(Windows 称"APIPA")</td>
          </tr>
          <tr>
            <td><code>224.0.0.0 / 4</code></td>
            <td>多播/组播地址</td>
            <td><span style="color:#e67e22; font-weight:bold;">⚠️ 受限</span></td>
            <td><span style="color:#27ae60; font-weight:bold;">✅ 可以</span></td>
            <td>源地址不能是多播地址(发送方必须是单播),但目的地址可以是多播。<br>如:<code>224.0.0.1</code>(所有主机)、<code>224.0.0.9</code>(RIPv2)</td>
          </tr>
          <tr>
            <td><code>240.0.0.0 / 4</code></td>
            <td>E 类(保留,实验用)</td>
            <td><span style="color:#e74c3c; font-weight:bold;">❌ 禁止</span></td>
            <td><span style="color:#e74c3c; font-weight:bold;">❌ 禁止</span></td>
            <td>全部保留给将来使用,<strong>绝对不能用于正常通信</strong>。</td>
          </tr>
          <tr>
            <td>主机号全 0(如 <code>192.168.1.0</code>)</td>
            <td>网络地址</td>
            <td><span style="color:#e74c3c; font-weight:bold;">❌ 禁止</span></td>
            <td><span style="color:#e67e22; font-weight:bold;">⚠️ 受限</span></td>
            <td>代表整个网络本身,不能分配给任何主机。目的地址只在路由表中表示"去往这个网络"。</td>
          </tr>
          <tr>
            <td>主机号全 1(如 <code>192.168.1.255</code>)</td>
            <td>定向广播地址</td>
            <td><span style="color:#e74c3c; font-weight:bold;">❌ 禁止</span></td>
            <td><span style="color:#27ae60; font-weight:bold;">✅ 可以</span></td>
            <td>向该网络的所有主机广播。现代路由器出于安全默认不转发此类广播。</td>
          </tr>
          <tr>
            <td><code>255.255.255.255</code></td>
            <td>受限广播地址</td>
            <td><span style="color:#e74c3c; font-weight:bold;">❌ 禁止</span></td>
            <td><span style="color:#e67e22; font-weight:bold;">⚠️ 受限</span></td>
            <td>向本网络所有主机广播(不穿透路由器)。仅用于<strong>不知道目标网络号</strong>的场景(如 DHCP 发现请求)。</td>
          </tr>
        </table>

        <div class="example">
          <strong>🌰 场景举例说明"源/目的地址限制"的实际意义:</strong><br><br>
          <strong>场景1:DHCP 获取 IP 的全过程</strong><br>
          你的电脑刚开机,还没有 IP,发 DHCP Discover:<br>
          ① <strong>源地址</strong>:<code>0.0.0.0</code>(因为还没IP)<br>
          ② <strong>目的地址</strong>:<code>255.255.255.255</code>(受限广播,找 DHCP 服务器)<br>
          获取成功后,<code>0.0.0.0</code> 就再也用不了了。<br><br>
          <strong>场景2:ping 环回地址</strong><br>
          <code>ping 127.0.0.1</code> — 源、目的都可以用 127.x.x.x,IP 层自己和自己对话,根本不经过网卡。<br><br>
          <strong>场景3:多播视频直播</strong><br>
          直播服务器发送视频流:<br>
          ① <strong>源地址</strong>:<code>202.118.1.100</code>(单播公网IP)<br>
          ② <strong>目的地址</strong>:<code>239.0.0.1</code>(某个直播频道的多播地址)<br>
          所有加入该频道的用户都能收到——多播源本身不能是多播地址。
        </div>

        <div class="insight">
          <strong>💡 为什么这些限制很重要?</strong><br>
          ① <strong>防止路由混乱</strong>:如果私有地址出现在公网上,路由器不知道往哪送,会导致路由表错乱。<br>
          ② <strong>防止广播风暴</strong>:广播地址如果被滥用成源地址,可以伪造大量广播包,直接瘫痪整个局域网。<br>
          ③ <strong>安全防护</strong>:现代防火墙通常直接<strong>丢弃所有来自特殊地址(如 127.x.x.x、0.0.0.0、240.x.x.x)的入站数据包</strong>,因为正常通信永远不应该出现这些地址。
        </div>

        <div class="callout callout-info">
          <div class="callout-icon">⚡</div>
          <div>
            <strong>⚡ 特殊地址分类为什么能让转发更迅速?</strong><br><br>
            <strong>核心原理:让路由器在查路由表之前,就用"首字节"快速分类处理,无需深入查表。</strong><br><br>
            路由器的 IP 层收到一个数据包时,源/目的 IP 地址一目了然。协议事先规定好"哪些地址不用查路由表",这样路由器可以:<br><br>
            <table class="compare-table" style="font-size:0.85rem; margin: 10px 0;">
              <tr><th>快速决策</th><th>依据</th><th>结果</th></tr>
              <tr><td><strong>目的 = 127.x.x.x?</strong></td><td>首字节 = 127 → 查表前直接本地回环</td><td>不经过任何网卡,转发时间 ≈ 0</td></tr>
              <tr><td><strong>目的 = 255.255.255.255?</strong></td><td>首字节 = 255 → 识别为受限广播</td><td>直接按链路层广播,不查路由表</td></tr>
              <tr><td><strong>目的 = 主机号全1?</strong></td><td>末字节 = 全1 → 识别为定向广播</td><td>按链路层广播转发,本地处理</td></tr>
              <tr><td><strong>目的 = 私有地址?</strong></td><td>首字节 = 10 / 172.x / 192.168 → 命中 NAT/私有规则</td><td>触发 NAT 处理或直接丢弃(外网路由器)</td></tr>
              <tr><td><strong>目的 = 多播地址?</strong></td><td>首字节 224-239 → 进入多播转发流程</td><td>走专用多播路由协议,不走普通单播表</td></tr>
              <tr><td><strong>目的 = 0.0.0.0?</strong></td><td>全0 → 启动阶段自举包</td><td>按特殊处理,DHCP场景直接交给链路层</td></tr>
            </table>
            <br>
            <strong>🌰 通俗类比:机场安检 vs 快速通道</strong><br>
            想象一个机场,海量乘客(数据包)排队过安检(查路由表):<br>
            ① <strong>普通乘客</strong>(公网单播地址)→老老实实过安检、验票、登机(查路由表找下一跳)。<br>
            ② <strong>机组人员</strong>(环回地址)→ 直接走内部通道,根本不进安检大厅(IP 层本地处理)。<br>
            ③ <strong>持贵宾券的乘客</strong>(私有地址/多播地址)→ 引导到专用窗口,不和普通乘客抢资源(走 NAT/多播路径)。<br>
            ④ <strong>没有登机牌的人</strong>(0.0.0.0、240.x.x.x)→ 安检直接拦下(防火墙丢弃)。<br><br>
            分类之后,安检大厅(路由表)需要处理的乘客数量大幅减少,安检速度自然快了很多。<br><br>
            <strong>💡 技术本质:IP 地址的"前缀规则"和"特殊段"让路由器在 O(1) 时间复杂度内就能做出转发决策的一部分判断,而不必每次都对整张路由表做最长前缀匹配。</strong> 这对于高速路由器(需要每秒处理上亿个数据包)来说至关重要——每省一次路由表查询,就省下几十到几百个时钟周期。
          </div>
        </div>
    </div>

    <div class="kcard">
      <div class="kcard-title">🔪 子网划分与子网掩码 <span class="tag">核心重点</span></div>
      <p>将一个大网络切割成多个小子网,实现更精细的管理和减少广播流量。</p>
      <p>子网掩码:与 IP 地址做 <code style="background:#f1f5f9; padding:2px 4px; border-radius:4px;">AND</code> 运算,结果就是网络地址。</p>
      <div style="background:#f1f5f9; border-radius:8px; padding:14px; margin:10px 0; font-family:monospace; font-size:0.88rem;">
        IP 地址:   192.168.1.100 = 11000000.10101000.00000001.01100100<br>
        子网掩码:  255.255.255.0   = 11111111.11111111.11111111.00000000<br>
        ────────────────────────────────────────────────────<br>
        AND 结果(网络地址):192.168.1.0
      </div>
      <div class="example">
        <strong>🌰 /24 vs /25 子网划分例子:</strong><br>
        给你 192.168.1.0/24 这个 C 类网络(254台主机):<br>
        • 用 /25(255.255.255.128)划分成2个子网:<br>
          子网1:192.168.1.0  ~ 192.168.1.127(128地址,126台主机)<br>
          子网2:192.168.1.128 ~ 192.168.1.255(128地址,126台主机)<br>
        这样一楼和二楼各用一个子网,互相隔离广播域。
      </div>
    </div>

    <div class="kcard">
      <div class="kcard-title">🌍 CIDR 无类别域间路由 <span class="tag">现代路由</span></div>
      <p>CIDR(Classless Inter-Domain Routing)抛弃了 A/B/C 类的限制,用"地址前缀/前缀长度"来表示任意大小的地址块。</p>
      <p>如 140.252.20.68/22 表示前22位是网络号,后10位是主机号(1022台主机)。</p>
      <div class="example">
        <strong>🌰 路由汇聚(超网)例子:</strong><br>
        四个连续 C 类网络:<br>
        192.168.0.0/24<br>
        192.168.1.0/24<br>
        192.168.2.0/24<br>
        192.168.3.0/24<br>
        可以汇聚为一条路由:192.168.0.0/22(因为前22位相同)。<br>
        路由器只需要维护 1 条路由记录,而不是 4 条,减少了路由表规模。
      </div>
      <div class="insight">
        <strong>💡 CIDR 解决了什么问题?</strong>1990年代初期,互联网爆炸性增长,B 类地址快速耗尽(太多机构申请65536个地址的B类,实际用不完),C 类又太小。CIDR 实现了按需分配,"你要1000台主机,我给你一个/22(1022个主机地址)",告别了浪费。
      </div>
    </div>
  </div>

  <!-- 4.2.3 IP地址与MAC地址 -->
  <div class="section" id="ch4-423">
    <div class="section-title">4.2.3 IP 地址与 MAC 地址</div>

    <div class="kcard">
      <div class="kcard-title">🏷️ 两种地址的本质区别 <span class="tag">核心概念</span></div>
      <p>IP 地址和 MAC(媒体访问控制)地址是网络中两种完全不同层次的身份标识,理解它们的区别是理解整个网络通信过程的关键。</p>

      <table class="compare-table">
        <tr>
          <th>对比维度</th>
          <th>IP 地址(网络层)</th>
          <th>MAC 地址(数据链路层)</th>
        </tr>
        <tr>
          <td><strong>别称</strong></td>
          <td>逻辑地址 / 软件地址</td>
          <td>物理地址 / 硬件地址 / LAN 地址</td>
        </tr>
        <tr>
          <td><strong>长度</strong></td>
          <td>IPv4:32位(4字节),如 192.168.1.100</td>
          <td>48位(6字节),如 00:1A:2B:3C:4D:5E</td>
        </tr>
        <tr>
          <td><strong>分配方式</strong></td>
          <td>由网络管理员或 DHCP 动态分配,可以改变</td>
          <td>由网卡厂商固化在 ROM 中,烧录式,全球唯一,理论上不可改</td>
        </tr>
        <tr>
          <td><strong>层次(OSI)</strong></td>
          <td>网络层(第3层)</td>
          <td>数据链路层(第2层)</td>
        </tr>
        <tr>
          <td><strong>作用范围</strong></td>
          <td>整个互联网,逻辑上的"门牌号",负责跨网络路由</td>
          <td>仅限同一局域网(广播域)内,物理上的"身份证号"</td>
        </tr>
        <tr>
          <td><strong>分层视角</strong></td>
          <td>端到端通信时,端系统看到的地址(发件人/收件人地址)</td>
          <td>一跳到下一跳时,链路看到的地址(快递员看的中转站地址)</td>
        </tr>
        <tr>
          <td><strong>类比</strong></td>
          <td>🌐 邮政编码 + 门牌号(可变的逻辑地址)</td>
          <td>🏭 出厂序列号(固化的物理标识)</td>
        </tr>
      </table>

      <div class="example">
        <strong>🌰 通俗比喻:搬家场景</strong><br><br>
        想象你搬家了,邮政编码从"北京 100000"变成了"上海 200000":<br>
        ① <strong>你的身份证号(MAC 地址)</strong>永远不会变——它就是你这个人,和你住哪无关。<br>
        ② <strong>你的住址(IP 地址)</strong>变了——换了城市,需要通知所有亲友更新通讯录(类似 ARP)。<br>
        ③ 快递公司(路由器)只看邮政编码(IP)决定长途走哪条路;到了城市后,快递员只看门牌号(MAC)决定最后送到哪一家。<br><br>
        <strong>关键理解:IP 地址管"我在哪栋楼",MAC 地址管"我是哪个人"。</strong>
      </div>

      <div class="insight">
        <strong>💡 为什么需要两种地址?</strong><br>
        ① <strong>分层原则</strong>:OSI 模型每一层只管自己该管的事——网络层负责跨网寻址(选路),数据链路层负责相邻节点转发(封装成帧)。如果只用 IP 地址,链路层无法知道"下一跳"的物理接口在哪;如果只用 MAC 地址,路由器无法知道数据包应该往哪个网络方向走。<br>
        ② <strong>灵活性</strong>:IP 地址可以动态分配(DHCP),方便网络管理;如果只用 MAC 地址,换网卡就要重新配置整个网络的路由表,几乎不可行。<br>
        ③ <strong>可扩展性</strong>:IPv6 用 128 位 MAC 地址的思路来生成接口标识,实现"自我配置"(SLAAC)。
      </div>
    </div>

    <div class="kcard">
      <div class="kcard-title">🔄 IP 地址与 MAC 地址在通信中的协作流程 <span class="tag">重点过程</span></div>
      <p>当主机 A(192.168.1.10)向主机 B(202.118.21.100)发送数据时,IP 层和链路层是如何配合的?</p>

      <div style="background:#f8f9fa; border-radius:12px; padding:20px; margin:16px 0; font-family:monospace; font-size:0.88rem; line-height:2.2;">
        <div style="text-align:center; font-weight:bold; font-family:sans-serif; margin-bottom:14px;">📍 A → B 通信:IP 层与链路层地址变化全过程</div>
        <div style="display:flex; flex-direction:column; gap:12px;">

          <div style="display:flex; align-items:center; gap:10px;">
            <span style="background:#4a9eff; color:white; padding:4px 10px; border-radius:6px; white-space:nowrap;">主机 A</span>
            <span style="color:#555;">源IP: 192.168.1.10</span>
            <span style="color:#555;">源MAC: AA:AA:AA:AA:AA:AA</span>
            <span style="color:#555;">目的IP: 202.118.21.100</span>
            <span style="color:#555;">目的MAC: ???(查ARP表 → 若无则发ARP请求)</span>
          </div>

          <div style="text-align:center; color:#999; font-size:0.8rem;">↓ 封装成以太网帧:目的MAC = 路由器LAN口MAC,源MAC = AA</div>

          <div style="display:flex; align-items:center; gap:10px;">
            <span style="background:#48bb78; color:white; padding:4px 10px; border-radius:6px; white-space:nowrap;">路由器 R</span>
            <span style="color:#555;">【解封】剥掉帧头,取出 IP 数据报</span>
          </div>
          <div style="display:flex; align-items:center; gap:10px;">
            <span style="background:#48bb78; color:white; padding:4px 10px; border-radius:6px; white-space:nowrap;">(转发决策)</span>
            <span style="color:#555;">查路由表:目的IP 202.118.21.100 → 下一跳 202.118.1.1</span>
          </div>
          <div style="display:flex; align-items:center; gap:10px;">
            <span style="background:#48bb78; color:white; padding:4px 10px; border-radius:6px; white-space:nowrap;">(重新封装)</span>
            <span style="color:#555;">源MAC = 路由器WAN口MAC,目的MAC = 下一跳路由器WAN口MAC</span>
          </div>

          <div style="text-align:center; color:#999; font-size:0.8rem;">↓ 经若干路由器逐跳转发,每跳MAC地址都变化 ↓</div>

          <div style="display:flex; align-items:center; gap:10px;">
            <span style="background:#e67e22; color:white; padding:4px 10px; border-radius:6px; white-space:nowrap;">主机 B</span>
            <span style="color:#555;">最终到达:目的IP = 202.118.21.100(不变!),目的MAC = BB:BB:BB:BB:BB:BB</span>
          </div>
        </div>
      </div>

      <div class="callout callout-warn">
        <div class="callout-icon">🔑</div>
        <div>
          <strong>关键结论:</strong><br>
          • <strong>IP 地址在整条链路上</strong>从源到目的<strong>始终不变</strong>(除非有 NAT),代表端到端的逻辑身份。<br>
          • <strong>MAC 地址在每一跳都会变化</strong>——源MAC和目的MAC只管"当前这一段链路"的两个相邻节点。
        </div>
      </div>
    </div>

    <div class="kcard">
      <div class="kcard-title">🗺️ 地址解析协议 ARP <span class="tag">核心重点</span></div>
      <p>ARP(Address Resolution Protocol)的作用是:根据已知的目标 IP 地址,去查询对应的 MAC 地址。这个过程发生在<strong>同一局域网内</strong>——跨网段的 IP 地址需要由路由器来转发,ARP 不跨路由器。</p>

      <div style="display:grid; grid-template-columns:1fr 1fr; gap:16px; margin:16px 0;">
        <div style="background:#fff8f0; border-radius:10px; padding:14px; border-left:4px solid #f39c12;">
          <strong>📋 ARP 表(ARP Cache)</strong>
          <p style="margin:8px 0 0; font-size:0.88em; line-height:1.8;">每台主机/路由器都维护一张 ARP 表,存储 IP 地址 → MAC 地址的映射:<br>
          <code>192.168.1.1 → AA:BB:CC:DD:EE:FF</code><br>
          <code>192.168.1.100 → 11:22:33:44:55:66</code><br>
          表项有生命周期(通常20分钟),超时后需要重新 ARP。</p>
        </div>
        <div style="background:#f0f8ff; border-radius:10px; padding:14px; border-left:4px solid #4a9eff;">
          <strong>🔍 ARP 欺骗攻击</strong>
          <p style="margin:8px 0 0; font-size:0.88em; line-height:1.8;">ARP 表可以被恶意伪造——攻击者发送伪造的 ARP 响应("我是网关,我的 IP 没变,但 MAC 是我的"),把别人的 MAC 指向自己。<br>
          <strong>防范:</strong>静态 ARP 表项、ARP 防火墙、交换机 Port-Security。</p>
        </div>
      </div>

      <div class="example">
        <strong>🌰 ARP 的完整工作过程(动画演示):</strong><br><br>
        <strong>场景:</strong>主机 A(192.168.1.10)想发消息给同一局域网的 主机 B(192.168.1.20),但不知道 B 的 MAC 地址。<br><br>
        <strong>Step 1:查 ARP 表</strong><br>
        A 先查自己的 ARP 表——"192.168.1.20 → ?"<br>
        命中 → 直接用这个 MAC 地址封装帧,结束。<br>
        未命中 → 进入 Step 2。<br><br>
        <strong>Step 2:ARP 请求(广播)</strong><br>
        A 构造 ARP 请求包,内容:<br>
        "谁有 IP 地址 192.168.1.20?请告诉我,你的 MAC 地址是什么?"<br>
        用广播 MAC(FF:FF:FF:FF:FF:FF)封装,发到局域网所有主机。<br><br>
        <strong>Step 3:ARP 响应(单播)</strong><br>
        局域网中只有 B 的 IP 匹配,B 收到后回应:<br>
        "我的 IP 是 192.168.1.20,我的 MAC 地址是 BB:BB:BB:BB:BB:BB"<br>
        B 将 A 的 IP→MAC 记录到自己的 ARP 表里。<br><br>
        <strong>Step 4:更新缓存,发送数据</strong><br>
        A 收到响应后,把 192.168.1.20 → BB:BB:BB:BB:BB:BB 写入 ARP 表,然后正常封装以太网帧发送。<br><br>
        <strong>整个过程耗时:几毫秒,用户无感知。</strong>
      </div>

      <div class="insight">
        <strong>💡 ARP 为什么是广播?</strong><br>
        因为 A 根本不知道 B 在不在局域网里、发请求给谁,只能<strong>广播给所有人</strong>,让 B 自己来认领。就像你在班级群里问"谁认识张三",而不是精确地给某个人发私信——因为你不知道张三在不在群里。<br><br>
        <strong>为什么不直接用 IP 地址通信,要转成 MAC 地址?</strong><br>
        因为数据链路层(二层)只知道 MAC 地址。交换机转发数据帧靠的是 MAC 地址表——它不认识 IP。IP 层和数据链路层是两张地图,各管各的事,ARP 就是两层的"翻译官"。
      </div>

      <div class="callout callout-success">
        <div class="callout-icon">✅</div>
        <div>
          <strong>一句话总结:</strong>IP 地址是"邮政编码"(跨网不变),MAC 地址是"身份证号"(一跳一变)。ARP 就是在只知道邮政编码的情况下,去局域网内打听对应身份证号的协议——问完记下来,下次直接用。
        </div>
      </div>
    </div>
  </div>

  <div class="section">
    <div class="section-title">4.3 IP 数据报格式</div>

    <div class="kcard">
      <div class="kcard-title">📋 IP 数据报首部各字段 <span class="tag">格式解析</span></div>
      <table class="compare-table">
        <tr><th>字段</th><th>位数</th><th>作用</th></tr>
        <tr><td>版本(Version)</td><td>4</td><td>IPv4=4,IPv6=6</td></tr>
        <tr><td>首部长度(IHL)</td><td>4</td><td>单位4字节,最小20字节(值=5)</td></tr>
        <tr><td>区分服务(ToS)</td><td>8</td><td>QoS服务质量标记,现代用 DSCP</td></tr>
        <tr><td>总长度</td><td>16</td><td>整个IP数据报的字节数,最大 65535</td></tr>
        <tr><td>标识(ID)</td><td>16</td><td>同一数据报的分片具有相同 ID</td></tr>
        <tr><td>标志(Flags)</td><td>3</td><td>DF(禁止分片)、MF(还有更多分片)</td></tr>
        <tr><td>片偏移</td><td>13</td><td>该分片在原数据报中的位置,单位8字节</td></tr>
        <tr><td><strong>TTL(生存时间)</strong></td><td>8</td><td>每过一个路由器减1,到0丢弃。防止包无限循环!</td></tr>
        <tr><td>协议</td><td>8</td><td>6=TCP,17=UDP,1=ICMP</td></tr>
        <tr><td>首部校验和</td><td>16</td><td>只校验首部,不校验数据</td></tr>
        <tr><td>源 IP 地址</td><td>32</td><td>发送方 IP</td></tr>
        <tr><td>目的 IP 地址</td><td>32</td><td>接收方 IP</td></tr>
      </table>
      <div class="example">
        <strong>🌰 TTL 的妙用:</strong>TTL 初始通常设置为64或128。<code>traceroute</code> 命令就利用了 TTL:先发 TTL=1 的包(第一跳路由器回 ICMP 超时),再发 TTL=2 的包(第二跳回应)……这样就能知道数据包经过的每一跳路由器。
      </div>
    </div>

    <div class="kcard">
      <div class="kcard-title">✂️ IP 数据报分片 <span class="tag">重要机制</span></div>
      <p>当 IP 数据报大小超过链路的<strong>MTU(最大传输单元)</strong>时,需要在路由器进行分片。</p>
      <p>以太网 MTU = 1500 字节;如果 IP 数据报为 4000 字节,需要分成 3 片:</p>
      <div style="background:#f1f5f9; border-radius:8px; padding:14px; margin:10px 0; font-size:0.88rem; font-family:monospace;">
        原始:4000字节(数据3980字节 + 首部20字节)<br><br>
        片1:1500字节,数据1480字节,偏移=0,MF=1<br>
        片2:1500字节,数据1480字节,偏移=185(1480/8),MF=1<br>
        片3:1040字节,数据1020字节,偏移=370(2960/8),MF=0
      </div>
      <div class="insight">
        <strong>💡 注意:</strong>分片只在目的主机才重组(不在中间路由器),因为分片可能走不同路径到达目的地。IPv6 不允许路由器分片(发现 MTU 不够就发 ICMP 通知发送方重新分小包),设计更合理。
      </div>
    </div>
  </div>

  <div class="section">
    <div class="section-title">4.4 ARP / ICMP 协议</div>

    <div class="kcard">
      <div class="kcard-title">🔍 ARP 地址解析协议 <span class="tag">核心协议</span></div>
      <p>问题:知道对方 IP 地址,但不知道 MAC 地址,怎么发以太网帧?</p>
      <p>ARP(Address Resolution Protocol):通过广播请求,把 IP 地址解析为 MAC 地址。</p>
      <div class="flow">
        <div class="flow-box">广播:谁是 192.168.1.1?</div>
        <div class="flow-arrow">→</div>
        <div class="flow-box">192.168.1.1 单播回复:是我,我的MAC是 AA:BB:CC…</div>
        <div class="flow-arrow">→</div>
        <div class="flow-box">存入 ARP 缓存(有效期约2分钟)</div>
      </div>
      <div class="example">
        <strong>🌰 ARP 类比:</strong>你在班级群里发消息"学号001的同学,你的座位号是多少?"001同学私信你回答,然后你把这个信息记在小本本上(ARP 缓存)。下次发快递就直接写座位号,不用再问了。
      </div>
      <div class="callout callout-danger">
        <div class="callout-icon">🔴</div>
        <div><strong>ARP 欺骗(ARP Spoofing):</strong>攻击者发送伪造的 ARP 回应:"我才是192.168.1.1,我的 MAC 是 XX:XX:XX…",让你把所有发给网关的数据都发给攻击者——这是"中间人攻击"的常用手法。</div>
      </div>
    </div>

    <div class="kcard">
      <div class="kcard-title">📨 ICMP 互联网控制报文协议 <span class="tag">诊断协议</span></div>
      <p>ICMP(Internet Control Message Protocol)用于在 IP 层传递<strong>控制信息和差错报告</strong>。</p>
      <table class="compare-table">
        <tr><th>ICMP 报文类型</th><th>触发场景</th><th>对应工具</th></tr>
        <tr>
          <td>回显请求/回显应答(Type 8/0)</td>
          <td>主动测试连通性</td>
          <td><code>ping</code> 命令</td>
        </tr>
        <tr>
          <td>超时(Type 11)</td>
          <td>TTL 减到 0</td>
          <td><code>traceroute</code> 命令</td>
        </tr>
        <tr>
          <td>目的不可达(Type 3)</td>
          <td>找不到目的地/端口</td>
          <td>连接失败时看到</td>
        </tr>
        <tr>
          <td>重定向(Type 5)</td>
          <td>路由器告知更优路由</td>
          <td>自动路由优化</td>
        </tr>
      </table>
      <div class="example">
        <strong>🌰 ping 的工作过程:</strong><br>
        <code>ping 8.8.8.8</code><br>
        1. 你发送 ICMP Echo Request(Type=8)给 8.8.8.8<br>
        2. 8.8.8.8 收到后回一个 ICMP Echo Reply(Type=0)<br>
        3. 你计算往返时延(RTT)<br>
        如果收不到回复,可能是网络不通、对方防火墙拦截了 ICMP 等。
      </div>
    </div>
  </div>

  <div class="section">
    <div class="section-title">4.5 路由选择协议</div>

    <div class="kcard">
      <div class="kcard-title">🗺️ 内部网关协议 RIP <span class="tag">路由协议</span></div>
      <p>RIP(Routing Information Protocol)基于<strong>距离向量算法(Bellman-Ford)</strong>,用"跳数"作为度量。最大跳数 15(16 表示不可达)。</p>
      <div class="example">
        <strong>🌰 RIP 工作原理:</strong>每台路由器每30秒向邻居广播"我到各个网络的距离表"。邻居收到后更新自己的路由表(到目的地 = 经过这邻居的跳数 + 1)。<br><br>
        缺点:"坏消息传得慢"问题:链路断了,路由器可能要经过很多轮才收敛到正确状态。
      </div>
    </div>

    <div class="kcard">
      <div class="kcard-title">🗺️ 内部网关协议 OSPF <span class="tag">路由协议</span></div>
      <p>OSPF(Open Shortest Path First)基于<strong>链路状态算法(Dijkstra 最短路径)</strong>。每台路由器了解全网拓扑,自己计算最短路径。</p>
      <div class="example">
        <strong>🌰 OSPF vs RIP 比较:</strong><br>
        RIP = 问路人:"到北京怎么走?" 路人说"往东走",但他只是按别人说的告诉你,不一定对。<br>
        OSPF = 自己有完整的地图,用导航软件(Dijkstra)算出最优路径,精确可靠,收敛快。<br><br>
        OSPF 支持多条等价路径(负载均衡),支持分层(骨干区域+普通区域),适合大型企业网。
      </div>
    </div>

    <div class="kcard">
      <div class="kcard-title">🌍 外部网关协议 BGP <span class="tag">互联网路由</span></div>
      <p>BGP(Border Gateway Protocol)用于不同自治系统(AS)之间的路由选择,是互联网的"主干路由协议"。</p>
      <p>BGP 不追求最短路径,而是基于<strong>策略</strong>(商业关系、政治因素等)选路。</p>
      <div class="example">
        <strong>🌰 AS 和 BGP:</strong>中国电信、中国联通、美国 AT&T 各是一个 AS(自治系统),它们之间通过 BGP 宣告"我这里能到 X.X.X.X/8 这块地址"。<br>
        你从家访问谷歌,数据可能经过:中国电信(AS4134)→ 香港核心网 → 全球互联网骨干 → 谷歌 AS(AS15169),这条路由就是 BGP 决定的。
      </div>
    </div>

    <div class="kcard">
      <div class="kcard-title">🔄 NAT 网络地址转换 <span class="tag">重要技术</span></div>
      <p>NAT(Network Address Translation):将私有 IP 地址转换为公网 IP 地址,让内网多台设备共享一个公网 IP 上网。</p>
      <div class="flow">
        <div class="flow-box">内网主机<br>192.168.1.100:5000</div>
        <div class="flow-arrow">→</div>
        <div class="flow-box">NAT 路由器<br>替换为公网IP<br>1.2.3.4:60000</div>
        <div class="flow-arrow">→</div>
        <div class="flow-box">互联网服务器<br>看到的是1.2.3.4</div>
      </div>
      <div class="example">
        <strong>🌰 例子:</strong>家里有手机、电脑、平板3台设备(内网 IP:192.168.1.x),但运营商只给你一个公网 IP(如 101.88.x.x)。NAT 让3台设备都能上网,路由器维护一个"翻译表",把内部的(IP:端口)映射到公网的不同端口,区分不同设备的流量。
      </div>
      <div class="insight">
        <strong>💡 NAT 的矛盾:</strong>NAT 是解决 IPv4 地址耗尽的"打补丁"方案,效果很好,延缓了 IPv4 枯竭十余年,但它破坏了互联网"端到端"的纯粹性。IPv6 每台设备都有全球唯一公网地址,理论上不需要 NAT,是治本方案——但 IPv6 推进缓慢,NAT 还会继续用很久。
      </div>
    </div>

    <div class="kcard">
      <div class="kcard-title">🚀 IPv6 <span class="tag">下一代IP</span></div>
      <p>IPv6 地址 = 128位,写成8组4位十六进制数,地址空间约 3.4×10³⁸ 个。</p>
      <div class="ip-bits">
        <div class="ip-byte">2001:0db8</div>
        <div class="ip-sep">:</div>
        <div class="ip-byte">0000:0000</div>
        <div class="ip-sep">:</div>
        <div class="ip-byte">0000:0000</div>
        <div class="ip-sep">:</div>
        <div class="ip-byte">0000:0001</div>
      </div>
      <p style="margin-top:8px; font-size:0.88rem;">可简写:连续的0用 <code>::</code> 替代(只能用一次),如上面可写成 2001:db8::1</p>

      <table class="compare-table" style="margin-top:14px;">
        <tr><th>特性</th><th>IPv4</th><th>IPv6</th></tr>
        <tr><td>地址长度</td><td>32位</td><td>128位</td></tr>
        <tr><td>地址总数</td><td>约43亿</td><td>约3.4×10³⁸</td></tr>
        <tr><td>首部长度</td><td>可变(20~60字节)</td><td>固定40字节</td></tr>
        <tr><td>分片处理</td><td>路由器可分片</td><td>只在源主机分片</td></tr>
        <tr><td>校验和</td><td>首部有校验和</td><td>无(上层负责)</td></tr>
        <tr><td>ARP</td><td>需要 ARP 协议</td><td>用 NDP 替代</td></tr>
        <tr><td>QoS 支持</td><td>弱(ToS字段)</td><td>强(流标签字段)</td></tr>
      </table>
      <div class="example">
        <strong>🌰 IPv6 地址够用多久?</strong>地球表面积约 5.1×10¹⁴ 平方米,IPv6 能为每平方米分配约 6.7×10²³ 个地址(阿伏伽德罗常数量级!)——给地球上每粒沙子都分配一个 IP 都绰绰有余。
      </div>
    </div>
  </div>

  <!-- 路由表查找 -->
  <div class="section">
    <div class="section-title">4.6 路由表与最长前缀匹配</div>

    <div class="kcard">
      <div class="kcard-title">🔍 最长前缀匹配(Longest Prefix Match)<span class="tag">路由查找</span></div>
      <p>路由器查找路由表时,选择与目的 IP 地址匹配的<strong>前缀最长</strong>的那条路由(最精确的匹配)。</p>
      <div style="background:#f1f5f9; border-radius:8px; padding:14px; margin:10px 0; font-family:monospace; font-size:0.88rem;">
        路由表:<br>
        192.168.1.0/24 → 接口1<br>
        192.168.1.0/25 → 接口2<br>
        0.0.0.0/0   → 接口0(默认路由)<br><br>
        目的地:192.168.1.100<br>
        匹配 /24(24位匹配)、匹配 /25(25位匹配)<br>
        → 选择 /25(前缀更长,更精确)→ 接口2
      </div>
      <div class="example">
        <strong>🌰 类比:</strong>如同查词典,192.168.1.100 既在"192.168.x.x(B区)"也在"192.168.1.x(B区-1楼)",选最精确的那条——1楼。/0 是"默认路由",相当于"找不到地址时寄到总部"。
      </div>
    </div>
  </div>

</div>

📝 全书核心要点速记

第一章 · 概论
  • 三种交换:电路 / 报文 / 分组交换
  • 四个时延:发送 / 传播 / 处理 / 排队
  • OSI 7层 vs TCP/IP 4层
  • 协议=水平通信规则,服务=向上提供能力
第二章 · 物理层
  • 奈奎斯特(无噪)vs 香农(有噪)
  • 数字信号优于模拟(可再生)
  • FDM / TDM / CDM / WDM 四种复用
  • 光纤:全反射,单模远,多模近
第三章 · 数据链路层
  • CRC 检错(不能纠错)
  • PPP:广域网链路协议,字节填充
  • CSMA/CD:"先听后说,冲突退避"
  • 交换机:MAC 自学习 + 泛洪转发
第四章 · 网络层
  • 子网划分:IP AND 掩码 = 网络地址
  • ARP:IP → MAC(广播请求)
  • ICMP:ping (echo) / traceroute (TTL)
  • RIP(跳数/距离向量)vs OSPF(链路状态)
  • NAT:私有IP→公网IP共享上网
  • IPv6:128位,固定首部,源端分片

基于谢希仁《计算机网络》第八版(上册)整理 · 知识点总结 + 个人理解 + 生活化例子

涵盖第1-4章:概论 · 物理层 · 数据链路层 · 网络层

xxxxxxxxxx    📋 目录
  第一章 · 概论 — 网络是什么、怎么工作的
  第二章 · 物理层 — 比特是怎么跑过去的
  第三章 · 数据链路层 — 帧的传输与差错控制
  第四章 · 网络层 — IP 地址与数据包路由
    
      4.1.1 网络层提供的两种服务(虚电路 vs 数据报)
      4.1.2 网络层的两个层面(数据平面 vs 控制平面)
      4.2 网际协议 IP
        
          4.2.1 虚拟互联网络
          4.2.2 IP 地址
          4.2.3 IP 地址与 MAC 地址