网络层常见问题

默认网关不存在时的 IP/ARP 通信

  • ARP 通信可以
    • 仅限于本地子网内设备。
    • ARP 不依赖默认网关设置。
    • 无法 ARP 不存在的网关地址。
  • IP 通信
    • 本地子网内设备:可以
      • 不使用默认网关,直接 ARP 并通信。
    • 局域网外部(远程网络):不可以
      • 主机尝试将流量发给不存在的默认网关,ARP 失败导致无法发送。

Hub/Switch/Router 连接下的主机 IP 通信

  • 拓扑:主机 A/B — Hub — 交换机 — (路由器) — 主机 C (直连交换机)。
  • 前提:主机 A/B/C 在同一 IP 子网
  • 通信结果可以进行 IP 通信,交换机不会丢弃报文。
  • 设备行为
    • Hub:L1 设备,无智能,泛洪所有流量,形成单个冲突域/广播域
    • 交换机:L2 设备,学习 MAC 地址,根据 MAC 表智能转发单播帧,泛洪广播帧。每个端口独立冲突域,同一 VLAN 是广播域
    • 路由器:L3 设备,连接不同 IP 子网,是广播域边界
  • 交换机丢弃情况(非正常行为):
    • 端口安全限制、MAC 地址表溢出攻击、网络环路、VLAN 配置不匹配。

VLAN 是否隔离 ARP

  • 结论是的,VLAN 会完全隔离 ARP。
  • 原理
    • VLAN 的本质是创建逻辑广播域
    • ARP 请求是广播帧
    • 交换机仅在同一 VLAN 内泛洪广播帧,不会将广播帧转发到其他 VLAN。
  • 跨 VLAN 通信
    • 不同 VLAN 间的设备无法直接通过 ARP 相互发现。
    • 需要三层设备(路由器或三层交换机)进行路由。路由器会在各自 VLAN 内进行 ARP。

ARP DHCP 报文类型

ARP (Address Resolution Protocol)

报文类型源 MAC 地址目的 MAC 地址源 IP 地址目的 IP 地址
Request单播FF:FF:FF:FF:FF:FF (广播)单播单播
Reply单播单播单播单播

DHCP (Dynamic Host Configuration Protocol)

报文类型源 MAC 地址目的 MAC 地址源 IP 地址目的 IP 地址
Discover单播FF:FF:FF:FF:FF:FF (广播)0.0.0.0 (未分配)255.255.255.255 (广播)
Offer单播广播 或 单播单播广播 或 单播
Request单播广播 或 单播0.0.0.0 或 单播广播 或 单播
ACK单播广播 或 单播单播广播 或 单播
NAK单播广播单播广播
Decline单播单播0.0.0.0单播
Release单播单播单播单播
Inform单播单播单播单播

IP 分组分片与重组(IPv4)

分片必要性

  • 原因: 跨越不同 MTU(最大传输单元)的网络链路。
  • 规则: 当 IP 分组长度 > 出接口 MTU,且 IP 头部 DF(Don’t Fragment)位为 0 时,路由器执行分片。

分片过程(由中间路由器执行)

  1. MTU 检查: 路由器比较分组长度与出接口 MTU。
  2. DF 位检查:
    • DF = 1 (不分片): 丢弃分组,发送 ICMP “Fragmentation Needed” 错误消息给源主机。
    • DF = 0 (允许分片): 执行分片。
  3. 生成分片:
    • 原始 IP 分组数据被分割成多块。
    • 每个分片获得一个原始 IP 头部的副本。
  4. IP 头部修改:
    • 总长度: 更新为当前分片长度。
    • 标志(Flags):
      • MF = 1 (More Fragments): 除最后一个分片外。
      • MF = 0: 最后一个分片。
    • 片偏移(Fragment Offset): 表示分片数据在原始分组中的起始位置(以 8 字节为单位)。
    • 标识(Identification): 所有分片保持相同值。
    • 头部校验和: 重新计算。
  5. 独立转发: 各分片独立路由。

重组过程(由最终目的主机执行)

  1. 接收与识别: 目的主机接收分片,通过相同“标识”字段识别属于同一原始分组。
  2. 缓冲: 收集所有分片到重组缓冲区。
  3. 排序与拼接: 根据“片偏移”字段将分片按正确顺序拼接。
  4. 完整性检查: 通过“MF”位确认所有分片是否到达,包括最后一个分片(MF=0)。
  5. 重组超时: 若规定时间内未收到所有分片,丢弃已接收分片。
  6. 提交: 成功重组后,提交完整 IP 分组给上层协议。

考量与 IPv6 差异

  • 性能开销: 分片和重组增加处理负担,降低效率。
  • 可靠性问题: 任一分片丢失导致整个原始分组丢失。
  • IPv6:
    • 路由器不分片: IPv6 路由器遇到 MTU 过小的分组会丢弃,并发送 ICMPv6 “Packet Too Big” 消息。
    • 源主机分片: 如果需要,IPv6 中的分片操作只能由源主机进行(通过路径 MTU 发现及分片扩展头部)。

点对点网络新旧标准的地址分配

特性/30 CIDR 地址块/31 CIDR 地址块
前缀长度30 位31 位
主机位数2 位1 位
总地址数4 个2 个
可用地址数2 个 (用于链路两端)2 个 (用于链路两端)
保留地址2 个 (网络地址和广播地址)0 个 (根据 RFC 3021 特殊处理)
RFC 规范传统 IP 寻址规则RFC 3021 (专门为 P2P 链路设计)
主要优点传统、兼容性好极大地节约 IP 地址资源
主要缺点相对于 P2P 链路需求,存在 50% 的地址浪费需要设备支持 RFC 3021;仅适用于 P2P 链路
适用场景任何需要 P2P 连接的场合,尤其是对 IP 地址节约不敏感的场景拥有大量 P2P 链路、对 IP 地址节约有强烈需求的场景(如 ISP)

简而言之,/30 提供了两个可用地址,但同时也浪费了两个保留地址;而 /31 则通过 RFC 3021 规范,使得其仅有的两个地址都能直接用于点对点链路,从而实现了 IP 地址的零浪费。在规划大型网络时,选择 /31 可以显著提高 IP 地址的利用效率。

水平分割、多播转发树、TTL 字段

  1. 水平分割 (Horizontal Split)
    • 解决问题:主要解决距离矢量路由协议(如 RIP)在网络中可能出现的路由环路问题。它通过禁止路由器将从某个接口学到的路由信息,再从同一个接口通告出去,从而有效阻止了路由信息在环路中无限传播。
  2. 多播转发树 (Multicast Forwarding Tree)
    • 解决问题:解决将一份多播数据流高效、无环地分发给网络中多个感兴趣的接收者的问题。它通过构建一个从多播源到所有接收者的树状路径,确保每份数据只在需要的地方复制和转发,避免了对整个网络进行泛洪(flooding)导致资源浪费,也防止了重复数据包的发送。
  3. TTL (Time-to-Live)
    • 解决问题:解决 IP 数据包在网络中因路由环路或其他原因无限循环,从而耗尽网络资源的问题。TTL 字段在 IP 数据包每经过一个路由器(即一个跳段)时减 1,当 TTL 值为 0 时,路由器会丢弃该数据包,有效限制了数据包在网络中的最大生存时间或跳数。