<svg viewBox="0 0 960 480" xmlns="http://www.w3.org/2000/svg">
<defs>
<style>
.bg { fill: #0f172a; }
.card { fill: #1e293b; rx: 8; ry: 8; stroke: #334155; stroke-width: 1.5; }
.cell-good { fill: #022c22; stroke: #10b981; stroke-width: 1.5; rx: 6; ry: 6; }
.cell-mid { fill: #1c1917; stroke: #eab308; stroke-width: 1.5; rx: 6; ry: 6; }
.cell-bad { fill: #2a1215; stroke: #ef4444; stroke-width: 1.5; rx: 6; ry: 6; }
.text-title { fill: #f8fafc; font-family: system-ui, sans-serif; font-weight: 700; font-size: 22px; }
.text-subtitle { fill: #94a3b8; font-family: system-ui, sans-serif; font-size: 14px; }
.text-header { fill: #38bdf8; font-family: system-ui, sans-serif; font-weight: 600; font-size: 14px; }
.text-body { fill: #e2e8f0; font-family: system-ui, sans-serif; font-size: 12px; }
.text-muted { fill: #64748b; font-family: system-ui, sans-serif; font-size: 12px; }
</style>
</defs>
<rect class="bg" height="480" width="960"></rect>
<text class="text-title" y="45" x="40">图 2.2：RFC 5780 行为模型（映射 Behavior × 过滤 Behavior）矩阵</text>
<text class="text-subtitle" y="70" x="40">组合判定矩阵：决定网络 P2P 穿透能力与打洞成功率的核心规律</text>
<text class="text-header" y="180" x="40">EIM (端点无关映射)</text>
<text class="text-header" y="280" x="40">ADM (地址依赖映射)</text>
<text class="text-header" y="380" x="40">APDM (地址+端口映射)</text>
<text class="text-header" y="110" x="210">EIF (端点无关过滤)</text>
<text class="text-header" y="110" x="460">ADF (地址依赖过滤)</text>
<text class="text-header" y="110" x="710">APDF (地址+端口过滤)</text>
<rect class="cell-good" height="80" width="220" y="130" x="180"></rect>
<text fill="#6ee7b7" class="text-body" y="160" x="195">EIM + EIF (Full Cone)</text>
<text class="text-muted" y="185" x="195">P2P 联机绝佳 (NAT2 / 1)</text>
<rect class="cell-good" height="80" width="220" y="130" x="430"></rect>
<text fill="#6ee7b7" class="text-body" y="160" x="445">EIM + ADF</text>
<text class="text-muted" y="185" x="445">打洞顺畅 (Restricted)</text>
<rect class="cell-mid" height="80" width="220" y="130" x="680"></rect>
<text fill="#fef08a" class="text-body" y="160" x="695">EIM + APDF</text>
<text class="text-muted" y="185" x="695">普通限制 (Port Restricted)</text>
<rect class="cell-mid" height="80" width="220" y="230" x="180"></rect>
<text fill="#fef08a" class="text-body" y="260" x="195">ADM + EIF</text>
<text class="text-muted" y="285" x="195">尚可直连</text>
<rect class="cell-mid" height="80" width="220" y="230" x="430"></rect>
<text fill="#fef08a" class="text-body" y="260" x="445">ADM + ADF</text>
<text class="text-muted" y="285" x="445">需借助中转 / 打洞成功率下降</text>
<rect class="cell-bad" height="80" width="220" y="230" x="680"></rect>
<text fill="#fca5a5" class="text-body" y="260" x="695">ADM + APDF</text>
<text class="text-muted" y="285" x="695">困难 (接近 Symmetric)</text>
<rect class="cell-bad" height="80" width="220" y="330" x="180"></rect>
<text fill="#fca5a5" class="text-body" y="360" x="195">APDM + EIF</text>
<text class="text-muted" y="385" x="195">端口端口预测困难</text>
<rect class="cell-bad" height="80" width="220" y="330" x="430"></rect>
<text fill="#fca5a5" class="text-body" y="360" x="445">APDM + ADF</text>
<text class="text-muted" y="385" x="445">打洞极易失败</text>
<rect class="cell-bad" height="80" width="220" y="330" x="680"></rect>
<text fill="#fca5a5" class="text-body" y="360" x="695">APDM + APDF (Symmetric)</text>
<text class="text-muted" y="385" x="695">❌ 典型 NAT3 恶梦，完全无法直连</text>
</svg>
