Roxy's Library

Back

本文内容基于 2025 秋季《计算机网络》课程讲述,如有差错,欢迎指正

局域网#

定义与关系#

  • 局域网 (LAN):从链路层角度定义,指不需要网络层技术(如路由)就可以进行数据传输的网络
  • 子网 (Subnet):从网络层角度定义,指由具有相同网络地址前缀的接口组成的网络
  • 结论:虽然定义角度不同,但在实际网络中,局域网 = 子网。局域网内部通信靠 MAC 地址,跨局域网通信靠 IP 地址

MAC 地址#

Mac地址是固化在网卡 (NIC) 上的 48 位 (6 字节) 标识符,用于在物理上相连的网络接口之间收发帧

  • 格式:十六进制表示,如 1A-2F-BB-76-09-AD
    • 前 24 位:厂商标识,由 IEEE 分配
    • 后 24 位:厂商内部分配的序列号
  • 特性:
    • 不同于 IP 的层次化,没有层次结构
    • 全球唯一(理论上)
    • 一般不可更改
  • 广播地址:FF-FF-FF-FF-FF-FF

在局域网内部,通过 ARP 协议,将已知的 IP 地址解析为对应的 MAC 地址,详见ARP协议

以太网#

以太网是目前最主流的有线局域网技术,其简单、价格低廉、易于扩展

以太网帧#

Ethernet_frame 各个字段的作用

  • Preamble(前同步码):8 字节
    • 前7字节用于同步发送方与接收方之间的时钟频率
    • 第8个字节作为定界符(字节填充的定界符)
    • 一般算作物理层部分,不会上交给链路层
  • 目的 MAC / 源 MAC:各 6 字节
  • 类型 (Type):2 字节。指出上层(网络层)协议类型
  • 数据 (Data):上层数据包,46 ~ 1500 字节
    • MTU:最大传输单元 1500 字节
    • 最小长度:46 字节
    • 以太网规定最短有效帧长为 64 字节(46 + 18),小于 64 字节的帧会被认为是无效帧而丢弃
    • 10Mbps以太网最大长度为2500米,最差情况下RTT约是50微秒,在这个时间内能发送500bit,加上安全余量增加至512bit,即64Bytes。详见CSMA/CD
  • CRC:4 字节,接收方用于校验
    • 无效帧直接丢弃,不负责重传

以太网提供的是无连接、不可靠服务

  • 无连接:网卡不建立连接即可发送数据
  • 不可靠:接收方进行 CRC 校验,错则丢弃,不发 ACK。重传由上层 (TCP) 负责
  • 多路访问控制 (CSMA/CD)

各个版本的以太网#

经典以太网

  • 最高速率10Mbps
  • 设备通过收发器挂接入同轴电缆(共享总线)
  • 使用中继器连接多段同轴电缆

traditional_Ethernet

由于当时中继器的处理能力和物理条件的限制,以太网的物理规模仍有一定限制,即5-4-3原则:

  • 任意两个收发器之间距离不得超过2.5km
  • 任意两个收发器之间经过的中继器不能超过4个(5段电缆)
  • 使用最多3种不同的以太网技术(不同介质上实现的以太网技术)

早期以太网采用半双工的工作方式(不能同时接收和发送数据),采取CSMA/CD技术进行多路访问控制,使用二进制指数后退确定等待时间

二进制指数后退( Binary exponential backoff )的CSMA/CD:

  • 确定基本退避时间槽,以太网中设为512比特发送时间τ\tau
  • 定义重传次数 kkk10k \leq 10,即
k=min[重传次数,10]k = \min [ \text{重传次数} , 10]
  • 从整数集合[0,1,,(2k1)][0,1,\cdots, (2^k-1)]中随机地取出一个数,记为r r
  • 等待时间就是 rr 倍的时间槽τ\tau
  • 当重传达 16 次仍不能成功时即丢弃该帧

快速以太网(Fast Ethernet)

  • 带宽达到100Mbps
  • 单比特传输延迟(比特时间)下降到10ns
  • 保留原来的工作方式(帧格式、接口、过程、规则)
  • 自动协商(autonegotiation):根据另一端速度与双工模式,自动选择最高速度

千兆以太网(gigabit Ethernet)

  • 1000Mbps(1Gbps)
  • 保留原来的工作方式(帧格式、接口、过程、规则)
  • 支持全双工方式,上下行隔离开互不冲突,可以同时收发数据,不需要CSMA/CD,但同时也兼容半双工
  • 引入了流量控制和巨型帧(Jumbo frame)
    • 流量控制:Pause帧
    • 巨型帧:9000字节(现代线路抗干扰能力强,传更大的帧收益更大)

万兆以太网(10-Gigabit Ethernet)

  • 10Gbps
  • 只支持全双工,不再使用CSMA/CD
  • 物理层改进,光纤技术

40G-100G以太网

  • 40Gbps & 100Gbps
  • 联网设备可以通过可插拔模块支持不同的物理层类型
  • 采用多根线缆并行化传输

100GEthernet

链路层数据交换技术#

在局域网内部,如何根据Mac地址来决定把帧交给哪个接收方

集线器 (Hub)#

集线器本质是一个多端口的中继器,内部所有端口用一根总线联通。从一个端口收到的比特,向所有其他端口转发

  • 工作在物理层
  • 所有端口属于同一个冲突域,必须使用CSMA/CD协议
  • 不支持全双工

hub

交换机 (Switch)#

交换机是现在链路层的核心,又称网桥,内部通过高速背板连接所有端口。在收到帧后,检查 MAC 地址,有选择地转发。

  • 工作在链路层
  • 每个端口是一个独立的冲突域
  • 可以实现并行传输
  • 支持全双工(无冲突,不需要 CSMA/CD)

HubvsSwitch

交换机内部维护了一张Mac地址表,对于每一个进来的帧,都会通过查表来确定转发端口,不需要像集线器一样广播

交换机对于网络中的站点是透明的,站点无需感受到交换机的存在

  • 即插即用:无需人工配置 IP 或路由表,自动学习

逆向学习与转发#

交换机维护一张 MAC 地址表:(MAC 地址, 接口, TTL)

考虑一个简单的场景,初始地址表为空

learnTable

学习过程:

  • 假设主机AA向主机BB发送一个帧,集线器会向所有端口广播,交换机从端口1收到该帧
  • 交换机检查该帧的源 MAC 地址AA和接收到该帧的端口1,在表中记录/更新 (MAC: A, 接口: 1),设定一个老化时间
  • 当某个表项的老化时间已到就会删除表项

转发:

  • 假设交换机从端口 xx 收到一个发往主机 BB 的帧,交换机查询 MAC 表
  • 情况 1 (命中):如果 BB 的接口是 yy (且 yxy \neq x),则单播转发到 yy
  • 情况 2 (过滤):如果 BB 的接口是 xx(目的地和源在同侧),则丢弃
  • 情况 3 (泛洪):如果表中找不到 BB或者目的MAC是广播地址,则向除 xx 以外的所有接口泛洪

现代局域网中,可以直接使用交换机连接所有主机,这样不会产生冲突域,也就不再需要CSMA/CD协议

modernLAN

虚拟局域网(VLAN)#

VLAN 本质上是想要在同一套物理设备上(交换机)构建出多张网络。这样可以隔绝一些ARP或DHCP广播,保护隐私性的同时提高网络效率

实现方式#

基于端口的方法

将交换机的端口分为不同组,每一组如同一个独立的交换机,即一个VLAN。端口可以进行动态配置

PortBase

交换机还需要维护一个VLAN Table,记录着每个VLAN ID 对应的端口。在转发时,只向属于相同VLAN的端口进行转发

VLAN之间的数据交换需要通过路由器进行,就如同两个独立局域网一样

基于MAC地址的方法

  • 交换机记录每个MAC地址所属的VLAN ID,然后再通过VLAN ID进行转发
  • 可能不够灵活,比如MAC地址变动

基于协议的方法

  • 基于网络层的协议来区分不同虚拟局域网
  • 打破了网络的分层结构,还需要主机参与

基于子网的方法

  • 根据子网IP转发
  • 设备需要网络层能力

跨越多台交换机的VLAN#

当VLAN的范围很大,一台交换机无法满足要求时,就需要多台交换机协作。 为了识别所属的VLAN,我们需要在帧头部添加额外标签(802.1Q协议)

802.1Q

通过VLAN ID识别出不同子网,然后再进行VLAN转发

生成树协议#

环路问题#

为了提高网络可靠性,减少故障带来的影响,网络中通常存在冗余链路,但这样会导致环路产生

  • 对于广播帧来说,环路会产生广播风暴,无限循环,占用网络带宽
  • 对于单播帧来说,环路可能导致重复帧的产生
  • 重复帧来自不同端口,会导致交换机MAC表不断修改 circle

STP 算法#

这个算法比较复杂,我们这里简单说一下

  • 目标:在物理上有环路的网络中,逻辑上切断某些链路,构建一棵无环的生成树
  • 机制:
    1. 选举根桥(树根节点)、根端口(交换机距离根最近的端口,父指针)、指定端口(网段距离根最近的端口,子指针)
    2. 一个网段上只会有一个指定端口,对于非指定端口进来的不会进行广播
  • 动态恢复:当某个链路故障时,STP 会重新计算,激活之前的备用链路

其他局域网技术与协议#

前面所说的以太网是一个无连接的协议,下面这两个是在链路层实现面向连接的技术

PPP#

PPP协议广泛用于将用户接入运营商网络(流量计费),简单、灵活、面向连接

  • 特点:
    • 封装:提供在同一链路上支持不同的网络层协议;既支持字节链路,也支持面向比特的比特链路
    • LCP (链路控制协议):用来建立、配置和测试数据链路的链路控制协议,通信双方可协商一些选项
    • NCP (网络控制协议):针对不同的网络层协议提供配置
    • 身份认证

PPPoE#

建立在以太网上的面向连接协议

  • 虽然以太网廉价且普及,但是运营商需要 PPP 的认证和计费功能。
  • 将 PPP 帧封装在以太网帧的数据部分,提供了基于用户的访问控制、计费、业务类型分类等功能
  • 基于Client/Server 模型,客户端与PPPoE服务器进行通讯

Hub、Switch、Router 对比#

设备层次核心功能广播域冲突域寻址依据
集线器 (Hub)物理层信号放大、盲目转发1个1个
交换机 (Switch)链路层自学习、存储转发1个 (VLAN除外)N个 (每个端口1个)MAC 地址
路由器 (Router)网络层路由计算、分组转发N个N个IP 地址
有线局域网
https://astro-pure.js.org/blog/csnet_dll_chap2
Author GreyRat
Published at December 21, 2025
Comment seems to stuck. Try to refresh?✨