欢迎光临
我们一直在努力

第 4 章 网络层

4.1 网络层提供的两种服务

网络层负责主机到主机的分组交付,核心工作可以概括为三件事:编址(IP)、转发(查表)、路由(选路)。在整个协议栈中,它是唯一「不可靠、无连接」的一层。

围绕「可靠性由谁保证」这个问题,网络层在设计上分化出两种截然不同的服务模型。

虚电路服务数据报服务(Internet 采用)
思路 仿照电话,先建连接 每个分组独立选路
可靠性 网络保证 由端系统(TCP)保证
顺序 保证 不保证
结点故障 所有经过的虚电路中断 可绕行
代表 ATM、X.25 IP

Internet 的设计哲学非常明确:网络层尽最大努力交付,把复杂性放到端系统。路由器只做「查表 + 转发」,既不维护连接状态,也不重传丢失的分组。这样做的代价是网络层本身不可靠,收益则是网络核心足够简单、易于扩展——这正是 Internet 能从几十个节点成长为今天规模的根本原因。

两种服务模型的取舍可以用一张图概括:

#mermaid-svg-lXX805NhXkgBTfM9{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-lXX805NhXkgBTfM9 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-lXX805NhXkgBTfM9 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-lXX805NhXkgBTfM9 .error-icon{fill:#552222;}#mermaid-svg-lXX805NhXkgBTfM9 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-lXX805NhXkgBTfM9 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-lXX805NhXkgBTfM9 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-lXX805NhXkgBTfM9 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-lXX805NhXkgBTfM9 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-lXX805NhXkgBTfM9 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-lXX805NhXkgBTfM9 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-lXX805NhXkgBTfM9 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-lXX805NhXkgBTfM9 .marker.cross{stroke:#333333;}#mermaid-svg-lXX805NhXkgBTfM9 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-lXX805NhXkgBTfM9 p{margin:0;}#mermaid-svg-lXX805NhXkgBTfM9 .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-lXX805NhXkgBTfM9 .cluster-label text{fill:#333;}#mermaid-svg-lXX805NhXkgBTfM9 .cluster-label span{color:#333;}#mermaid-svg-lXX805NhXkgBTfM9 .cluster-label span p{background-color:transparent;}#mermaid-svg-lXX805NhXkgBTfM9 .label text,#mermaid-svg-lXX805NhXkgBTfM9 span{fill:#333;color:#333;}#mermaid-svg-lXX805NhXkgBTfM9 .node rect,#mermaid-svg-lXX805NhXkgBTfM9 .node circle,#mermaid-svg-lXX805NhXkgBTfM9 .node ellipse,#mermaid-svg-lXX805NhXkgBTfM9 .node polygon,#mermaid-svg-lXX805NhXkgBTfM9 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-lXX805NhXkgBTfM9 .rough-node .label text,#mermaid-svg-lXX805NhXkgBTfM9 .node .label text,#mermaid-svg-lXX805NhXkgBTfM9 .image-shape .label,#mermaid-svg-lXX805NhXkgBTfM9 .icon-shape .label{text-anchor:middle;}#mermaid-svg-lXX805NhXkgBTfM9 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-lXX805NhXkgBTfM9 .rough-node .label,#mermaid-svg-lXX805NhXkgBTfM9 .node .label,#mermaid-svg-lXX805NhXkgBTfM9 .image-shape .label,#mermaid-svg-lXX805NhXkgBTfM9 .icon-shape .label{text-align:center;}#mermaid-svg-lXX805NhXkgBTfM9 .node.clickable{cursor:pointer;}#mermaid-svg-lXX805NhXkgBTfM9 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-lXX805NhXkgBTfM9 .arrowheadPath{fill:#333333;}#mermaid-svg-lXX805NhXkgBTfM9 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-lXX805NhXkgBTfM9 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-lXX805NhXkgBTfM9 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-lXX805NhXkgBTfM9 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-lXX805NhXkgBTfM9 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-lXX805NhXkgBTfM9 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-lXX805NhXkgBTfM9 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-lXX805NhXkgBTfM9 .cluster text{fill:#333;}#mermaid-svg-lXX805NhXkgBTfM9 .cluster span{color:#333;}#mermaid-svg-lXX805NhXkgBTfM9 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-lXX805NhXkgBTfM9 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-lXX805NhXkgBTfM9 rect.text{fill:none;stroke-width:0;}#mermaid-svg-lXX805NhXkgBTfM9 .icon-shape,#mermaid-svg-lXX805NhXkgBTfM9 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-lXX805NhXkgBTfM9 .icon-shape p,#mermaid-svg-lXX805NhXkgBTfM9 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-lXX805NhXkgBTfM9 .icon-shape .label rect,#mermaid-svg-lXX805NhXkgBTfM9 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-lXX805NhXkgBTfM9 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-lXX805NhXkgBTfM9 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-lXX805NhXkgBTfM9 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

数据报服务(Internet)

每个分组独立选路

路由器只查表转发

可靠性交给端系统 TCP

虚电路服务

先建立连接

按固定路径传输

网络保证可靠与顺序

设计取舍:核心简单 vs 端系统复杂

4.2 IP 地址

IP 地址是网络层的编址基础,它标识的是接口而非主机,一个主机若有多块网卡就有多个 IP 地址。

4.2.1 分类地址

早期 IPv4 采用分类编址,用地址的最高几位区分网络号长度。

类别首位网络号位数范围默认掩码
A 0 8 1.0.0.0–126.255.255.255 255.0.0.0
B 10 16 128.0.0.0–191.255.255.255 255.255.0.0
C 110 24 192.0.0.0–223.255.255.255 255.255.255.0
D 1110 — 224.0.0.0–239.255.255.255 组播
E 1111 — 240.0.0.0– 保留

分类地址的问题在于粒度太粗:一个 B 类网络可容纳 6 万多台主机,很多单位用不完却占着整块地址,造成大量浪费。这也是后来引入子网划分与 CIDR 的直接动因。

4.2.2 特殊地址

地址含义
0.0.0.0 本网络本主机(DHCP 请求源地址)
255.255.255.255 受限广播
127.0.0.0/8 环回地址
网络号全 0 本网络
主机号全 1 本网络广播
10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 私有地址

私有地址不会在公网上被路由,只能在内部网络中使用,出网时必须经过 NAT 转换。

4.2.3 子网划分

子网划分的思路是从主机号中借出若干位作为子网号,再用子网掩码标识哪些位属于网络部分。

  • 子网数 =2n=2^n=2n,其中 nnn 为借用的位数;
  • 每个子网可用主机数 =2m−2=2^m – 2=2m−2,其中 mmm 为剩余主机位数,减 2 是去掉网络地址与广播地址。

例:把 192.168.1.0/24 划分为 4 个子网,需要借 2 位,掩码变为 255.255.255.192,每个子网可用主机数为 26−2=622^6 – 2 = 6226−2=62 台。

子网划分的推导过程可以这样理解:

#mermaid-svg-bCaA7ZSZTG7X0Kk7{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .error-icon{fill:#552222;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .marker.cross{stroke:#333333;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 p{margin:0;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .cluster-label text{fill:#333;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .cluster-label span{color:#333;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .cluster-label span p{background-color:transparent;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .label text,#mermaid-svg-bCaA7ZSZTG7X0Kk7 span{fill:#333;color:#333;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .node rect,#mermaid-svg-bCaA7ZSZTG7X0Kk7 .node circle,#mermaid-svg-bCaA7ZSZTG7X0Kk7 .node ellipse,#mermaid-svg-bCaA7ZSZTG7X0Kk7 .node polygon,#mermaid-svg-bCaA7ZSZTG7X0Kk7 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .rough-node .label text,#mermaid-svg-bCaA7ZSZTG7X0Kk7 .node .label text,#mermaid-svg-bCaA7ZSZTG7X0Kk7 .image-shape .label,#mermaid-svg-bCaA7ZSZTG7X0Kk7 .icon-shape .label{text-anchor:middle;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .rough-node .label,#mermaid-svg-bCaA7ZSZTG7X0Kk7 .node .label,#mermaid-svg-bCaA7ZSZTG7X0Kk7 .image-shape .label,#mermaid-svg-bCaA7ZSZTG7X0Kk7 .icon-shape .label{text-align:center;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .node.clickable{cursor:pointer;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .arrowheadPath{fill:#333333;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .cluster text{fill:#333;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .cluster span{color:#333;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 rect.text{fill:none;stroke-width:0;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .icon-shape,#mermaid-svg-bCaA7ZSZTG7X0Kk7 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .icon-shape p,#mermaid-svg-bCaA7ZSZTG7X0Kk7 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .icon-shape .label rect,#mermaid-svg-bCaA7ZSZTG7X0Kk7 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-bCaA7ZSZTG7X0Kk7 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

192.168.1.0/24 掩码 255.255.255.0

从主机号借 2 位作子网号

新掩码 255.255.255.192(/26)

子网数 = 2^2 = 4

每子网主机位 m = 6

可用主机数 = 2^6 – 2 = 62

4 个子网:.0 / .64 / .128 / .192

4.2.4 CIDR 与路由聚合

CIDR 用 a.b.c.d/n 的记法直接给出网络前缀长度,彻底取消了分类的概念,使地址分配可以按实际需求精确到任意 2 的幂。

  • 路由聚合(超网):把多个连续前缀合并为更短前缀。
    例:192.168.0.0/24 与 192.168.1.0/24 → 192.168.0.0/23。
  • 最长前缀匹配:转发表中选与目的地址匹配的最长前缀。

[!tip] 计算套路

  • 把地址与掩码都写成二进制;
  • 按位与得网络地址;
  • 主机号全 0 是网络地址、全 1 是广播地址,均不可分配给主机;
  • 聚合时找到公共前缀,剩余位清零。
  • 4.3 IP 数据报格式

    IPv4 数据报首部固定 20 B,加上可选字段最长 60 B。

    字段长度作用
    版本 4 b IPv4/IPv6
    首部长度 4 b 单位 4 B,最小 5(20 B)
    区分服务 8 b QoS
    总长度 16 b 首部 + 数据,单位字节,最大 65535
    标识 16b 同一数据报的所有分片相同
    标志 3b DF(禁止分片)、MF(还有分片)
    片偏移 13b 单位 8B
    生存时间 TTL 8b 每经一个路由器减 1,为 0 丢弃
    协议 8b 6=TCP,17=UDP,1=ICMP,89=OSPF
    首部检验和 16b 只检验首部
    源/目的地址 各 32b —
    可选字段 可变 填充至 4B 对齐

    分片计算

    当数据报长度超过链路 MTU 时必须分片。这里有两个容易踩坑的细节:片偏移的单位是 8 字节,因此除最后一片外,每片的数据长度必须是 8 的倍数。

    例:数据报 4000B(20B 首部 + 3980B 数据),MTU 1500 → 每片数据 ≤1480B。

    • 片 1:1480B,偏移 0,MF=1
    • 片 2:1480B,偏移 185(1480/8),MF=1
    • 片 3:1020B,偏移 370,MF=0

    注意每片都要重新加上 20B 首部,所以实际在链路上传输的长度是 1500B、1500B、1040B。

    分片过程与偏移关系如下:

    #mermaid-svg-3EMh3uD4vgDcHKxb{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-3EMh3uD4vgDcHKxb .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-3EMh3uD4vgDcHKxb .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-3EMh3uD4vgDcHKxb .error-icon{fill:#552222;}#mermaid-svg-3EMh3uD4vgDcHKxb .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-3EMh3uD4vgDcHKxb .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-3EMh3uD4vgDcHKxb .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-3EMh3uD4vgDcHKxb .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-3EMh3uD4vgDcHKxb .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-3EMh3uD4vgDcHKxb .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-3EMh3uD4vgDcHKxb .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-3EMh3uD4vgDcHKxb .marker{fill:#333333;stroke:#333333;}#mermaid-svg-3EMh3uD4vgDcHKxb .marker.cross{stroke:#333333;}#mermaid-svg-3EMh3uD4vgDcHKxb svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-3EMh3uD4vgDcHKxb p{margin:0;}#mermaid-svg-3EMh3uD4vgDcHKxb .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-3EMh3uD4vgDcHKxb .cluster-label text{fill:#333;}#mermaid-svg-3EMh3uD4vgDcHKxb .cluster-label span{color:#333;}#mermaid-svg-3EMh3uD4vgDcHKxb .cluster-label span p{background-color:transparent;}#mermaid-svg-3EMh3uD4vgDcHKxb .label text,#mermaid-svg-3EMh3uD4vgDcHKxb span{fill:#333;color:#333;}#mermaid-svg-3EMh3uD4vgDcHKxb .node rect,#mermaid-svg-3EMh3uD4vgDcHKxb .node circle,#mermaid-svg-3EMh3uD4vgDcHKxb .node ellipse,#mermaid-svg-3EMh3uD4vgDcHKxb .node polygon,#mermaid-svg-3EMh3uD4vgDcHKxb .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-3EMh3uD4vgDcHKxb .rough-node .label text,#mermaid-svg-3EMh3uD4vgDcHKxb .node .label text,#mermaid-svg-3EMh3uD4vgDcHKxb .image-shape .label,#mermaid-svg-3EMh3uD4vgDcHKxb .icon-shape .label{text-anchor:middle;}#mermaid-svg-3EMh3uD4vgDcHKxb .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-3EMh3uD4vgDcHKxb .rough-node .label,#mermaid-svg-3EMh3uD4vgDcHKxb .node .label,#mermaid-svg-3EMh3uD4vgDcHKxb .image-shape .label,#mermaid-svg-3EMh3uD4vgDcHKxb .icon-shape .label{text-align:center;}#mermaid-svg-3EMh3uD4vgDcHKxb .node.clickable{cursor:pointer;}#mermaid-svg-3EMh3uD4vgDcHKxb .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-3EMh3uD4vgDcHKxb .arrowheadPath{fill:#333333;}#mermaid-svg-3EMh3uD4vgDcHKxb .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-3EMh3uD4vgDcHKxb .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-3EMh3uD4vgDcHKxb .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-3EMh3uD4vgDcHKxb .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-3EMh3uD4vgDcHKxb .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-3EMh3uD4vgDcHKxb .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-3EMh3uD4vgDcHKxb .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-3EMh3uD4vgDcHKxb .cluster text{fill:#333;}#mermaid-svg-3EMh3uD4vgDcHKxb .cluster span{color:#333;}#mermaid-svg-3EMh3uD4vgDcHKxb div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-3EMh3uD4vgDcHKxb .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-3EMh3uD4vgDcHKxb rect.text{fill:none;stroke-width:0;}#mermaid-svg-3EMh3uD4vgDcHKxb .icon-shape,#mermaid-svg-3EMh3uD4vgDcHKxb .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-3EMh3uD4vgDcHKxb .icon-shape p,#mermaid-svg-3EMh3uD4vgDcHKxb .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-3EMh3uD4vgDcHKxb .icon-shape .label rect,#mermaid-svg-3EMh3uD4vgDcHKxb .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-3EMh3uD4vgDcHKxb .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-3EMh3uD4vgDcHKxb .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-3EMh3uD4vgDcHKxb :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

    原始数据报 4000B首部 20B + 数据 3980B

    MTU 1500B每片数据 ≤ 1480B

    片 1:数据 1480B偏移 0,MF=1

    片 2:数据 1480B偏移 185,MF=1

    片 3:数据 1020B偏移 370,MF=0

    链路长度 1500B

    链路长度 1500B

    链路长度 1040B

    4.4 地址解析协议 ARP

    ARP 解决的问题是:已知 IP 地址,求同一局域网内的 MAC 地址。

    过程分四步:查 ARP 高速缓存 → 未命中则广播 ARP 请求 → 目标单播应答 → 写入缓存(有生存时间)。

    关键点在于:跨网段通信时,ARP 解析的是默认网关的 MAC 地址,而非最终目的主机的 MAC 地址。因为帧只能在本地链路内传输,目的 IP 地址始终不变,但目的 MAC 地址会逐跳改变。

    四种典型情况:同网段主机、跨网段主机、路由器转发、路由器到主机。

    ARP 解析的完整时序:

    "目标主机/网关""本地局域网(广播)""ARP 高速缓存""源主机""目标主机/网关""本地局域网(广播)""ARP 高速缓存""源主机"#mermaid-svg-CcnpDpAMjsyyPSU3{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-CcnpDpAMjsyyPSU3 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-CcnpDpAMjsyyPSU3 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-CcnpDpAMjsyyPSU3 .error-icon{fill:#552222;}#mermaid-svg-CcnpDpAMjsyyPSU3 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-CcnpDpAMjsyyPSU3 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-CcnpDpAMjsyyPSU3 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-CcnpDpAMjsyyPSU3 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-CcnpDpAMjsyyPSU3 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-CcnpDpAMjsyyPSU3 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-CcnpDpAMjsyyPSU3 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-CcnpDpAMjsyyPSU3 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-CcnpDpAMjsyyPSU3 .marker.cross{stroke:#333333;}#mermaid-svg-CcnpDpAMjsyyPSU3 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-CcnpDpAMjsyyPSU3 p{margin:0;}#mermaid-svg-CcnpDpAMjsyyPSU3 .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-CcnpDpAMjsyyPSU3 text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-CcnpDpAMjsyyPSU3 .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-CcnpDpAMjsyyPSU3 .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg-CcnpDpAMjsyyPSU3 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-CcnpDpAMjsyyPSU3 .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-CcnpDpAMjsyyPSU3 #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-CcnpDpAMjsyyPSU3 .sequenceNumber{fill:white;}#mermaid-svg-CcnpDpAMjsyyPSU3 #sequencenumber{fill:#333;}#mermaid-svg-CcnpDpAMjsyyPSU3 #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-CcnpDpAMjsyyPSU3 .messageText{fill:#333;stroke:none;}#mermaid-svg-CcnpDpAMjsyyPSU3 .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-CcnpDpAMjsyyPSU3 .labelText,#mermaid-svg-CcnpDpAMjsyyPSU3 .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-CcnpDpAMjsyyPSU3 .loopText,#mermaid-svg-CcnpDpAMjsyyPSU3 .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-CcnpDpAMjsyyPSU3 .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-CcnpDpAMjsyyPSU3 .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-CcnpDpAMjsyyPSU3 .noteText,#mermaid-svg-CcnpDpAMjsyyPSU3 .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-CcnpDpAMjsyyPSU3 .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-CcnpDpAMjsyyPSU3 .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-CcnpDpAMjsyyPSU3 .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-CcnpDpAMjsyyPSU3 .actorPopupMenu{position:absolute;}#mermaid-svg-CcnpDpAMjsyyPSU3 .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-CcnpDpAMjsyyPSU3 .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-CcnpDpAMjsyyPSU3 .actor-man circle,#mermaid-svg-CcnpDpAMjsyyPSU3 line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-CcnpDpAMjsyyPSU3 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}alt[缓存命中][缓存未命中]查询目的 IP 对应的 MAC直接返回 MAC广播 ARP 请求(目的 IP)请求送达单播 ARP 应答(自身 MAC)写入缓存(带生存时间)

    [!warning] ARP 欺骗
    ARP 无认证,攻击者可伪造应答实现中间人攻击,需配合静态绑定或 DAI。

    4.5 IP 层转发流程

    一个分组到达路由器后,转发过程可以拆成五步:

  • 提取目的 IP 地址;
  • 判断是否直接交付(同网段);
  • 否则查路由表,按最长前缀匹配找到下一跳;
  • 交给 ARP 解析下一跳 MAC,封装成帧发出;
  • TTL 减 1,重新计算首部检验和。
  • #mermaid-svg-S9tuFMniffOt0Joe{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-S9tuFMniffOt0Joe .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-S9tuFMniffOt0Joe .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-S9tuFMniffOt0Joe .error-icon{fill:#552222;}#mermaid-svg-S9tuFMniffOt0Joe .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-S9tuFMniffOt0Joe .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-S9tuFMniffOt0Joe .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-S9tuFMniffOt0Joe .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-S9tuFMniffOt0Joe .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-S9tuFMniffOt0Joe .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-S9tuFMniffOt0Joe .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-S9tuFMniffOt0Joe .marker{fill:#333333;stroke:#333333;}#mermaid-svg-S9tuFMniffOt0Joe .marker.cross{stroke:#333333;}#mermaid-svg-S9tuFMniffOt0Joe svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-S9tuFMniffOt0Joe p{margin:0;}#mermaid-svg-S9tuFMniffOt0Joe .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-S9tuFMniffOt0Joe .cluster-label text{fill:#333;}#mermaid-svg-S9tuFMniffOt0Joe .cluster-label span{color:#333;}#mermaid-svg-S9tuFMniffOt0Joe .cluster-label span p{background-color:transparent;}#mermaid-svg-S9tuFMniffOt0Joe .label text,#mermaid-svg-S9tuFMniffOt0Joe span{fill:#333;color:#333;}#mermaid-svg-S9tuFMniffOt0Joe .node rect,#mermaid-svg-S9tuFMniffOt0Joe .node circle,#mermaid-svg-S9tuFMniffOt0Joe .node ellipse,#mermaid-svg-S9tuFMniffOt0Joe .node polygon,#mermaid-svg-S9tuFMniffOt0Joe .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-S9tuFMniffOt0Joe .rough-node .label text,#mermaid-svg-S9tuFMniffOt0Joe .node .label text,#mermaid-svg-S9tuFMniffOt0Joe .image-shape .label,#mermaid-svg-S9tuFMniffOt0Joe .icon-shape .label{text-anchor:middle;}#mermaid-svg-S9tuFMniffOt0Joe .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-S9tuFMniffOt0Joe .rough-node .label,#mermaid-svg-S9tuFMniffOt0Joe .node .label,#mermaid-svg-S9tuFMniffOt0Joe .image-shape .label,#mermaid-svg-S9tuFMniffOt0Joe .icon-shape .label{text-align:center;}#mermaid-svg-S9tuFMniffOt0Joe .node.clickable{cursor:pointer;}#mermaid-svg-S9tuFMniffOt0Joe .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-S9tuFMniffOt0Joe .arrowheadPath{fill:#333333;}#mermaid-svg-S9tuFMniffOt0Joe .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-S9tuFMniffOt0Joe .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-S9tuFMniffOt0Joe .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-S9tuFMniffOt0Joe .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-S9tuFMniffOt0Joe .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-S9tuFMniffOt0Joe .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-S9tuFMniffOt0Joe .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-S9tuFMniffOt0Joe .cluster text{fill:#333;}#mermaid-svg-S9tuFMniffOt0Joe .cluster span{color:#333;}#mermaid-svg-S9tuFMniffOt0Joe div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-S9tuFMniffOt0Joe .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-S9tuFMniffOt0Joe rect.text{fill:none;stroke-width:0;}#mermaid-svg-S9tuFMniffOt0Joe .icon-shape,#mermaid-svg-S9tuFMniffOt0Joe .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-S9tuFMniffOt0Joe .icon-shape p,#mermaid-svg-S9tuFMniffOt0Joe .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-S9tuFMniffOt0Joe .icon-shape .label rect,#mermaid-svg-S9tuFMniffOt0Joe .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-S9tuFMniffOt0Joe .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-S9tuFMniffOt0Joe .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-S9tuFMniffOt0Joe :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

    是

    否

    收到分组

    提取目的 IP

    同网段?

    ARP 解析目的主机 MAC

    查路由表最长前缀匹配

    ARP 解析下一跳 MAC

    TTL 减 1 并重算检验和

    封装成帧发出

    4.6 路由选择协议

    路由协议分为自治系统内部与自治系统之间两大类。

    协议类型算法范围特点
    RIP 内部网关协议 IGP 距离向量(Bellman-Ford) 自治系统内 跳数度量,最大 15 跳,30s 周期广播,收敛慢(坏消息传得慢)
    OSPF 内部网关协议 链路状态(Dijkstra) 自治系统内 洪泛链路状态,分区域(骨干区 0),收敛快,支持等价负载均衡
    BGP 外部网关协议 EGP 路径向量 自治系统之间 基于策略,TCP 179 端口,传的是可达性而非最优路径

    RIP 距离向量更新规则:收到邻居路由表后,所有距离 +1;若下一跳相同则无条件更新,否则仅当距离更小时更新。

    OSPF 五种分组:问候(Hello)、数据库描述、链路状态请求、链路状态更新、链路状态确认。

    三类路由协议的定位关系:

    #mermaid-svg-FDx2t2PSGguEmWCE{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-FDx2t2PSGguEmWCE .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-FDx2t2PSGguEmWCE .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-FDx2t2PSGguEmWCE .error-icon{fill:#552222;}#mermaid-svg-FDx2t2PSGguEmWCE .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-FDx2t2PSGguEmWCE .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-FDx2t2PSGguEmWCE .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-FDx2t2PSGguEmWCE .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-FDx2t2PSGguEmWCE .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-FDx2t2PSGguEmWCE .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-FDx2t2PSGguEmWCE .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-FDx2t2PSGguEmWCE .marker{fill:#333333;stroke:#333333;}#mermaid-svg-FDx2t2PSGguEmWCE .marker.cross{stroke:#333333;}#mermaid-svg-FDx2t2PSGguEmWCE svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-FDx2t2PSGguEmWCE p{margin:0;}#mermaid-svg-FDx2t2PSGguEmWCE .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-FDx2t2PSGguEmWCE .cluster-label text{fill:#333;}#mermaid-svg-FDx2t2PSGguEmWCE .cluster-label span{color:#333;}#mermaid-svg-FDx2t2PSGguEmWCE .cluster-label span p{background-color:transparent;}#mermaid-svg-FDx2t2PSGguEmWCE .label text,#mermaid-svg-FDx2t2PSGguEmWCE span{fill:#333;color:#333;}#mermaid-svg-FDx2t2PSGguEmWCE .node rect,#mermaid-svg-FDx2t2PSGguEmWCE .node circle,#mermaid-svg-FDx2t2PSGguEmWCE .node ellipse,#mermaid-svg-FDx2t2PSGguEmWCE .node polygon,#mermaid-svg-FDx2t2PSGguEmWCE .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-FDx2t2PSGguEmWCE .rough-node .label text,#mermaid-svg-FDx2t2PSGguEmWCE .node .label text,#mermaid-svg-FDx2t2PSGguEmWCE .image-shape .label,#mermaid-svg-FDx2t2PSGguEmWCE .icon-shape .label{text-anchor:middle;}#mermaid-svg-FDx2t2PSGguEmWCE .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-FDx2t2PSGguEmWCE .rough-node .label,#mermaid-svg-FDx2t2PSGguEmWCE .node .label,#mermaid-svg-FDx2t2PSGguEmWCE .image-shape .label,#mermaid-svg-FDx2t2PSGguEmWCE .icon-shape .label{text-align:center;}#mermaid-svg-FDx2t2PSGguEmWCE .node.clickable{cursor:pointer;}#mermaid-svg-FDx2t2PSGguEmWCE .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-FDx2t2PSGguEmWCE .arrowheadPath{fill:#333333;}#mermaid-svg-FDx2t2PSGguEmWCE .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-FDx2t2PSGguEmWCE .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-FDx2t2PSGguEmWCE .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-FDx2t2PSGguEmWCE .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-FDx2t2PSGguEmWCE .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-FDx2t2PSGguEmWCE .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-FDx2t2PSGguEmWCE .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-FDx2t2PSGguEmWCE .cluster text{fill:#333;}#mermaid-svg-FDx2t2PSGguEmWCE .cluster span{color:#333;}#mermaid-svg-FDx2t2PSGguEmWCE div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-FDx2t2PSGguEmWCE .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-FDx2t2PSGguEmWCE rect.text{fill:none;stroke-width:0;}#mermaid-svg-FDx2t2PSGguEmWCE .icon-shape,#mermaid-svg-FDx2t2PSGguEmWCE .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-FDx2t2PSGguEmWCE .icon-shape p,#mermaid-svg-FDx2t2PSGguEmWCE .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-FDx2t2PSGguEmWCE .icon-shape .label rect,#mermaid-svg-FDx2t2PSGguEmWCE .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-FDx2t2PSGguEmWCE .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-FDx2t2PSGguEmWCE .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-FDx2t2PSGguEmWCE :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

    路由选择协议

    自治系统内部 IGP

    自治系统之间 EGP

    RIP距离向量 Bellman-Ford最大 15 跳

    OSPF链路状态 Dijkstra分区域,收敛快

    BGP路径向量,基于策略TCP 179

    4.7 路由器结构

    部分功能
    输入端口 物理层接收、数据链路层解帧、查转发表
    交换结构 把分组从输入端口送到输出端口(内存/总线/交换网络)
    输出端口 缓存、排队、发送
    路由处理器 运行路由协议,维护路由表(控制平面)

    控制平面与数据平面分离是 SDN 的核心思想:转发表由远程控制器下发,路由器本身退化为纯粹的转发设备。

    4.8 IPv6

    对比IPv4IPv6
    地址长度 32 位 128 位
    首部 20B 固定 + 可选 40B 固定,扩展首部
    分片 路由器可分片 只在源端分片
    检验和 有 取消(依赖上下层)
    地址记法 点分十进制 冒号十六进制,:: 压缩连续 0

    过渡技术:双协议栈、隧道技术(IPv6 封装在 IPv4 中)、NAT64。

    4.9 组播、VPN 与 NAT

    • IP 组播:D 类地址,IGMP 管理组成员,组播路由协议(DVMRP、PIM)。
    • VPN:利用公网建立专用通道,隧道技术 + 加密(IPsec)。
    • NAT:私有地址与公网地址转换,NAPT 用端口区分内网主机;缓解 IPv4 地址枯竭。

    本章考点

    [!tip] 必会

  • 子网划分与可用主机数计算。
  • CIDR 聚合与最长前缀匹配查表。
  • IP 分片:片偏移、MF、总长度计算。
  • ARP 四种情形(同网段/跨网段)。
  • RIP 与 OSPF 的区别;RIP 最大跳数。
  • 路由器各部分组成与转发流程。
  • IPv6 与 IPv4 首部差异。
  • 关联

    • 上级:[[计算机网络总纲]]
    • 上一章:[[第3章 数据链路层]]
    • 下一章:[[第5章 运输层]]
    赞(0)
    未经允许不得转载:171主机测评 » 第 4 章 网络层
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址