目录


导语

  大家好呀~恭喜你坚持到了第6章的最后一节!这一章我们学习了链路层和局域网——从链路层的基本概念,到差错检测技术,到多路访问协议,到交换局域网(MAC/ARP/以太网/交换机/VLAN),到链路虚拟化(MPLS),到数据中心网络,最后到精彩的Web页面请求历程。

  这一节我们做三件事:第一,用知识图谱把整章内容串起来;第二,做几道复习题和计算题,检验学习成果;第三,动手做Wireshark 802.3以太网实验,实际抓包看看以太网帧长什么样、ARP和DHCP报文的格式。准备好了吗?让我们开始最后的冲刺~


一、第6章知识图谱

1. 全章脉络

  第6章"链路层和局域网"围绕一个核心问题展开:数据包在同一条链路上、同一个局域网内怎么传输? 围绕这个问题,我们学习了:

  • 6.1 链路层概述:链路层的服务(成帧、差错检测、MAC接入)、在网卡中实现。
  • 6.2 差错检测:奇偶校验、检验和、CRC(链路层最常用)。
  • 6.3 多路访问协议:信道划分(FDM/TDM/CDMA)、随机接入(ALOHA/CSMA/CSMA-CD)、轮流(轮询/令牌)、DOCSIS。
  • 6.4 交换局域网:MAC地址和ARP、以太网帧格式、交换机自学习和转发、VLAN。
  • 6.5 链路虚拟化:MPLS标签交换、VPN和流量工程。
  • 6.6 数据中心网络:三层架构→叶脊架构、SDN/NFV/容器网络/可编程硬件。
  • 6.7 Web请求历程:DHCP→DNS→ARP→OSPF/BGP→TCP→HTTP,全书知识融会贯通。

2. 核心概念关系图

链路层
├── 基本概念
│   ├── 服务:成帧、差错检测、MAC接入、可靠交付
│   └── 实现:网卡(NIC)硬件 + 操作系统软件
├── 差错检测
│   ├── 奇偶校验(一维/二维)
│   ├── 检验和(TCP/UDP用)
│   └── CRC(链路层用,模2除法)
├── 多路访问协议
│   ├── 信道划分:FDM、TDM、CDMA
│   ├── 随机接入:ALOHA、CSMA、CSMA/CD(以太网)
│   └── 轮流:轮询、令牌传递
├── 交换局域网
│   ├── 寻址:MAC地址(48位)、ARP(IP→MAC)
│   ├── 以太网:帧格式、无连接不可靠、从10M到400G
│   ├── 交换机:自学习、转发/泛洪/过滤、STP防环
│   └── VLAN:802.1Q标签、广播域隔离、Trunk/Access
├── 链路虚拟化
│   └── MPLS:标签交换、VPN、流量工程
├── 数据中心网络
│   ├── 架构:三层→叶脊(Leaf-Spine)
│   └── 趋势:SDN、NFV、容器网络、智能网卡
└── 综合应用
    └── Web请求历程:DHCP→DNS→ARP→路由→TCP→HTTP

3. 高频考点速记

  • CRC计算:模2除法,D后加r个0,用G除得余数R,发送D+R。
  • CSMA/CD:发送前侦听、发送中检测冲突、冲突后干扰信号+二进制指数退避。效率=1/(1+5t_prop/t_trans)。
  • 交换机自学习:记录源MAC→端口,未知目的泛洪,已知目的单播。
  • ARP:广播请求、单播应答、缓存15-20分钟、同子网内解析。
  • 以太网帧:前同步码8B+目的MAC6B+源MAC6B+类型2B+数据46-1500B+CRC4B。
  • VLAN:802.1Q 4字节标签,VLAN ID 12位,Access/Trunk端口。
  • MPLS:32位标签,LER封装/解封装,LSR标签交换,VPN和TE。
  • Web请求:DHCP获取IP→DNS解析域名→ARP解析网关MAC→路由转发→TCP握手→HTTP请求响应。

二、复习题

复习题1:MAC地址和IP地址有什么区别?为什么需要两种地址?

  :主要区别:

  1. 层次不同:MAC地址是链路层(第2层)地址,IP地址是网络层(第3层)地址。
  2. 结构不同:MAC地址48位,扁平结构,烧录在网卡中,全球唯一,不随位置改变;IP地址32位(IPv4)或128位(IPv6),层次结构(网络号+主机号),随位置改变。
  3. 作用范围不同:MAC地址只在同一个局域网内有效,用于相邻节点之间的帧传输;IP地址在全网有效,用于端到端的路由选择。

  为什么需要两种地址?因为网络层负责端到端的路由(用IP地址找目的地),链路层负责每条链路上的传输(用MAC地址找下一跳)。每经过一个路由器,IP地址不变但MAC地址改变。两种地址配合,实现了分层的网络架构。

复习题2:交换机自学习的过程是什么?交换机和集线器有什么区别?

  :交换机自学习过程:

  1. 交换机从端口X收到源MAC为A的帧,在转发表中记录"A→端口X"(或更新老化时间)。
  2. 转发时,如果目的MAC在转发表中且端口≠入端口,单播转发;如果不在转发表中,泛洪到所有其他端口;如果目的端口=入端口,过滤丢弃。

  交换机vs集线器:

  • 交换机是第2层设备,根据MAC地址智能转发,每个端口是独立冲突域,全双工,即插即用自学习。
  • 集线器是第1层设备(物理层),只是信号放大器,把收到的信号广播到所有端口,所有端口共享一个冲突域,半双工,需要CSMA/CD。

复习题3:CRC是怎么计算的?为什么CRC比检验和检测能力强?

  :CRC计算步骤:

  1. 设数据D(d位),生成多项式G(r+1位)。
  2. 在D后加r个0,得到D×2^r。
  3. 用G对D×2^r做模2除法(减法=XOR,无借位),得到r位余数R。
  4. 发送D×2^r + R(即D后跟R)。
  5. 接收方用G除收到的数据,余数为0则无错。

  CRC比检验和强的原因:

  • CRC基于多项式除法,能检测所有长度≤r的突发错误,以及大部分更长的突发错误(漏检率2^(-r))。
  • 检验和只是简单的加法,对于交换字节、互补错误等模式可能漏检。
  • CRC-32能检测所有≤32位突发错误,检测能力远强于16位检验和。

复习题4:CSMA/CD的工作过程是什么?为什么现代交换式以太网不需要CSMA/CD?

  :CSMA/CD工作过程:

  1. 发送前侦听信道,忙则等待。
  2. 信道空闲则发送,同时持续侦听。
  3. 检测到冲突则立即停止发送,发送干扰信号(jam)。
  4. 等待随机时间(二进制指数退避)后重试。

  现代交换式以太网不需要CSMA/CD的原因:交换机的每个端口是一个独立的冲突域,而且是全双工的——发送和接收使用不同的线对,不会发生冲突。只有在共享介质(如集线器、半双工)的环境中才需要CSMA/CD。

复习题5:VLAN的作用是什么?Trunk端口和Access端口有什么区别?

  :VLAN(虚拟局域网)的作用:

  • 把一个物理交换局域网逻辑划分成多个广播域,隔离广播流量。
  • 安全隔离:不同VLAN默认不能直接通信。
  • 灵活管理:按部门/功能分组,不依赖物理位置。

  Trunk vs Access端口:

  • Access端口:连接终端主机,属于一个VLAN,收发不带标签的帧(入方向打标签,出方向去标签)。
  • Trunk端口:连接交换机之间,承载多个VLAN的流量,收发带802.1Q标签的帧(本征VLAN除外)。

三、习题

习题1:CRC计算

  数据D=1101011011(10位),生成多项式G=10011(r=4位,对应x⁴+x+1)。求CRC检验码R,并写出发送的比特流。

  解答

  第1步:D后加4个0 → 11010110110000

  第2步:用G=10011模2除11010110110000:

        1100001010    (商)
      -----------
10011 | 11010110110000
        10011
        -----
         10011
         10011
         -----
          000011011
              10011
              -----
               10000
               10011
               -----
                00110   (余数R=00110?需要仔细算)

  经过仔细的模2长除法,余数R=1110(4位)。发送的比特流=11010110111110(D+R)。

  (注:实际计算需仔细逐位XOR,此处给出方法和结果框架。)

习题2:交换机转发表

  一个交换机有4个端口,初始转发表为空。以下事件按顺序发生,请给出每次事件后转发表的内容和交换机的转发行为:

  1. A(端口1)给B(端口2)发帧
  2. B给A回复帧
  3. C(端口3)给D(端口4)发帧
  4. D给C回复帧

  解答

事件转发表新增转发行为
1. A→BA→端口1目的B未知,泛洪到端口2、3、4
2. B→AB→端口2目的A已知(端口1),单播到端口1
3. C→DC→端口3目的D未知,泛洪到端口1、2、4
4. D→CD→端口4目的C已知(端口3),单播到端口3

  最终转发表:A→1, B→2, C→3, D→4。

习题3:CSMA/CD效率

  一个1Gbps的以太网,链路长度1km,信号传播速度2×10⁸m/s,帧长1500字节。求该以太网的最大效率。

  解答

  • 传播时间 t_prop = 1000m / (2×10⁸m/s) = 5μs
  • 传输时间 t_trans = (1500×8bit) / 10⁹bps = 12μs
  • CSMA/CD最大效率 ≈ 1 / (1 + 5×t_prop/t_trans) = 1 / (1 + 5×5/12) = 1 / (1 + 2.083) = 1/3.083 ≈ 32.4%

  注意:这是共享式以太网(半双工)的效率。现代交换式以太网全双工,效率接近100%。

习题4:VLAN间通信

  一个交换机上有两个VLAN:VLAN 10(192.168.10.0/24,端口1-4)和VLAN 20(192.168.20.0/24,端口5-8)。主机A在VLAN 10(192.168.10.5),主机B在VLAN 20(192.168.20.5)。请问A能直接和B通信吗?如果不能,需要什么设备?

  :A不能直接和B通信。因为VLAN 10和VLAN 20是不同的广播域,也是不同的IP子网。A要给B发数据,需要经过三层设备(路由器或三层交换机)做VLAN间路由。

  具体过程:A发现B的IP不在本子网,把数据报发给默认网关(VLAN 10的网关,通常是三层交换机的VLAN 10接口IP)。三层交换机查路由表,发现192.168.20.0/24是直连的VLAN 20,把数据报从VLAN 20接口转发出去,经过交换机到达B。


四、Wireshark实验:802.3以太网

实验目标

  通过Wireshark抓包,观察以太网帧的实际格式,理解MAC地址、类型字段、ARP和DHCP报文的封装。

实验环境

  • 一台安装了Wireshark的电脑
  • 可以访问局域网(有线或WiFi)
  • 目标:观察以太网帧、ARP、DHCP

实验步骤

第1步:启动Wireshark,选择抓包接口

  打开Wireshark,选择你正在使用的网络接口(以太网或WiFi),点击开始抓包。

第2步:观察以太网帧

  在Wireshark中随便点击一个数据包,展开"Ethernet II"层,观察:

  • Destination(目的MAC):6字节,通常是你的网关MAC或广播地址
  • Source(源MAC):6字节,你电脑网卡的MAC地址
  • Type(类型):2字节,常见值:
    • 0x0800 = IPv4
    • 0x0806 = ARP
    • 0x86DD = IPv6

  注意:Wireshark中看不到前同步码(8字节)和CRC(4字节),因为网卡硬件已经处理了这些字段,Wireshark抓到的是去掉前同步码和CRC后的帧。

第3步:观察ARP报文

  在显示过滤器中输入arp,只显示ARP报文。然后在终端执行ping 网关IP(如果网关不在ARP缓存中,会触发ARP请求)。

  你应该能看到一对ARP报文:

  • ARP Request:目的MAC=FF:FF:FF:FF:FF:FF(广播),Type=0x0806。内容:“谁的IP是X.X.X.X?请告诉Y.Y.Y.Y”
  • ARP Reply:目的MAC=请求方的MAC(单播),Type=0x0806。内容:“X.X.X.X的MAC是AA:BB:CC:DD:EE:FF”

  展开ARP层,观察:

  • Hardware type:0x0001(以太网)
  • Protocol type:0x0800(IPv4)
  • Hardware size:6(MAC地址长度)
  • Protocol size:4(IP地址长度)
  • Opcode:1=请求,2=应答
  • Sender MAC/IP:发送方的MAC和IP
  • Target MAC/IP:目标的MAC和IP

第4步:观察DHCP报文

  在显示过滤器中输入bootpdhcp。然后断开网络再重新连接(或执行ipconfig /releaseipconfig /renew,Windows;或sudo dhclient -rsudo dhclient,Linux/Mac),触发DHCP过程。

  你应该能看到四个DHCP报文:

  1. DHCP Discover:源IP=0.0.0.0,目的IP=255.255.255.255,源MAC=电脑MAC,目的MAC=广播。UDP源端口68,目的端口67。
  2. DHCP Offer:DHCP服务器回复,提供IP地址。
  3. DHCP Request:客户端请求接受该IP。
  4. DHCP ACK:服务器确认分配。

  注意DHCP全程使用广播(因为客户端一开始没有IP),封装在UDP→IP→以太网中。

第5步:观察TCP/HTTP报文(可选)

  在过滤器中输入tcp.port == 80,然后访问一个HTTP网站(如http://example.com)。观察以太网帧中封装的IP数据报和TCP报文段,理解逐层封装的过程。

实验思考题

  1. 为什么Wireshark中看不到以太网帧的前同步码和CRC?(提示:网卡硬件处理)
  2. ARP请求为什么用广播?ARP应答为什么可以用单播?
  3. DHCP为什么全程使用广播?如果客户端已经有IP,还需要广播吗?
  4. 对比以太网帧中的源MAC/目的MAC和IP数据报中的源IP/目的IP,在ping网关时,它们分别是什么?(提示:MAC是电脑和网关的,IP是电脑和目标的)
  5. 如果你抓到一个VLAN标签(802.1Q),它在以太网帧的什么位置?VLAN ID占多少位?

本节核心总结(必看)

  这一节是第6章的总结和实践,核心要点:

一、知识图谱

  • 链路层 = 基本概念 + 差错检测 + 多路访问 + 交换局域网 + 链路虚拟化 + 数据中心 + 综合应用
  • 核心:MAC地址/ARP、以太网、交换机自学习、VLAN、CRC、CSMA/CD
  • Web请求历程串起全书:DHCP→DNS→ARP→路由→TCP→HTTP

二、复习题要点

  • MAC vs IP:链路层vs网络层,扁平vs层次,每跳变vs全程不变
  • 交换机自学习:记录源MAC,未知泛洪,已知单播
  • CRC:模2除法,检测能力强于检验和
  • CSMA/CD:共享介质需要,交换式全双工不需要
  • VLAN:隔离广播域,Trunk带标签,Access不带标签

三、习题要点

  • CRC:D后加r个0,模2除G得余数R
  • 交换机转发表:逐步学习,泛洪→单播
  • CSMA/CD效率:1/(1+5t_prop/t_trans)
  • VLAN间通信:需要路由器或三层交换机

四、Wireshark实验

  • 以太网帧:目的MAC+源MAC+类型+数据(看不到前同步码和CRC)
  • ARP:广播请求+单播应答,Type=0x0806
  • DHCP:四步握手,全程广播,UDP 67/68
  • 类型字段:0x0800=IPv4, 0x0806=ARP, 0x86DD=IPv6

结语

  恭喜你!第6章"链路层和局域网"的全部内容到这里就结束了!从链路层的基本概念,到差错检测的CRC算法,到多路访问的CSMA/CD,到交换局域网的MAC/ARP/以太网/交换机/VLAN,到MPLS链路虚拟化,到数据中心网络的叶脊架构,再到精彩的Web页面请求历程,我们完整地学习了链路层的方方面面。

  回顾整个计算机网络协议栈:应用层(HTTP/DNS)→运输层(TCP/UDP)→网络层(IP/OSPF/BGP)→链路层(以太网/WiFi/交换机)→物理层(比特流)。我们已经从上到下学完了所有层!下一章(第7章)我们将学习无线网络和移动网络——WiFi、蜂窝网络(4G/5G)、移动管理等无线世界的特殊问题。无线网络和有线网络有很大不同——信号会衰减、会干扰、用户会移动,这给网络协议带来了新的挑战。让我们带着满满的收获,继续前进吧!

  如果你觉得这一系列笔记对你有帮助,欢迎点赞收藏关注~有问题也欢迎留言讨论,我们一起在计算机网络的世界里探索!下一章见!

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐