<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>sejong.jeonjo@gmail.com</title>
    <link>https://andrewpage.tistory.com/</link>
    <description>궁금한 것이 있으면 sejong.jeonjo@gmail.com 메일로 메시지를 보내주세요.</description>
    <language>ko</language>
    <pubDate>Wed, 12 Aug 2026 08:59:21 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>AndrewJ</managingEditor>
    <image>
      <title>sejong.jeonjo@gmail.com</title>
      <url>https://tistory1.daumcdn.net/tistory/4799188/attach/9f3a7c067abf48aa87dcbdb658d3d58d</url>
      <link>https://andrewpage.tistory.com</link>
    </image>
    <item>
      <title>SSL 가시화 시스템 설계 (Open source 활용)</title>
      <link>https://andrewpage.tistory.com/506</link>
      <description>&lt;blockquote data-ke-style=&quot;style3&quot;&gt;작성일: 2026년 8월 11일&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;


&lt;!-- Tistory HTML 붙여넣기용 - SSL Visibility Design --&gt;
&lt;div style=&quot;max-width:900px;margin:0 auto;font-family:'Noto Sans KR',sans-serif;line-height:1.8;color:#2c2c2c;&quot;&gt;

&lt;h1 style=&quot;font-size:2em;border-bottom:3px solid #00695C;padding-bottom:12px;color:#004D40;&quot;&gt;SSL Visibility 직접 구현 설계서(Design Document)&lt;/h1&gt;

&lt;p style=&quot;font-size:1.05em;color:#555;&quot;&gt;Commercial SSL 가시화 Appliance(AISVA, SSL INSIDE, ePrism SSL VA 등)와 동등한 Capability(기능)를 &lt;strong&gt;Open source + Commodity hardware&lt;/strong&gt;로 구현하기 위한 Architecture·Module·Network·PKI·운영 설계 문서입니다. PoC(Proof of Concept) ~ Production pilot 범위를 대상으로 합니다.&lt;/p&gt;

&lt;p style=&quot;background:#E0F2F1;padding:12px;border-radius:8px;font-size:0.95em;&quot;&gt;&lt;strong&gt;Companion:&lt;/strong&gt; 개념·시장·Vendor 설명은 &lt;strong&gt;ssl-visibility-study.html&lt;/strong&gt; 참고.&lt;/p&gt;

&lt;!-- ===== 1. Requirements ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#00695C;border-left:5px solid #00695C;padding-left:12px;&quot;&gt;1. Requirements(요구사항)&lt;/h2&gt;

&lt;h3 style=&quot;color:#004D40;&quot;&gt;1.1 Functional Requirements&lt;/h3&gt;
&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;font-size:0.93em;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#00695C;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:8px;border:1px solid #004D40;&quot;&gt;ID&lt;/th&gt;
      &lt;th style=&quot;padding:8px;border:1px solid #004D40;&quot;&gt;Requirement&lt;/th&gt;
      &lt;th style=&quot;padding:8px;border:1px solid #004D40;&quot;&gt;Priority&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;FR-01&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;HTTPS(TCP/443) Transparent MITM decrypt · re-encrypt&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Must&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#e0f2f1;&quot;&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;FR-02&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;SNI·Domain·IP 기반 decrypt/bypass policy&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Must&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;FR-03&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Dynamic certificate signing (per-domain forged cert)&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Must&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#e0f2f1;&quot;&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;FR-04&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Cleartext traffic mirror to IDS(Suricata) / SIEM&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Must&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;FR-05&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Inline chain to existing NGFW (optional active block)&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Should&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#e0f2f1;&quot;&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;FR-06&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;TLS 1.2 / 1.3 support&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Must&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;FR-07&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Admin UI / API for policy &amp;amp; cert management&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Should&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#e0f2f1;&quot;&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;FR-08&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Audit log (who, what domain, decrypt decision)&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Must&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h3 style=&quot;color:#004D40;&quot;&gt;1.2 Non-Functional Requirements&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Throughput&lt;/strong&gt; — PoC: 1 Gbps · Pilot: 5~10 Gbps (Hardware dependent)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Latency&lt;/strong&gt; — Added latency &amp;lt; 5ms (P99) at 1G load&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Availability&lt;/strong&gt; — Active-Standby, external bypass, RTO(Recovery Time Objective) &amp;lt; 30s&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Security&lt;/strong&gt; — DTZ network isolation, HSM(Hardware Security Module) or Vault for CA key (Production)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Compliance&lt;/strong&gt; — Decrypt policy document, user notice, exclude list for sensitive categories&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 style=&quot;color:#004D40;&quot;&gt;1.3 Out of Scope (Phase 1)&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;QUIC/HTTP3 full inspect (Phase 2 — require eBPF or dedicated proxy)&lt;/li&gt;
  &lt;li&gt;ECH-complete bypass of encryption (Research track)&lt;/li&gt;
  &lt;li&gt;Certificate pinning mobile apps (Exclude list only)&lt;/li&gt;
&lt;/ul&gt;

&lt;!-- ===== 2. Architecture Options ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#00695C;border-left:5px solid #00695C;padding-left:12px;&quot;&gt;2. Architecture Options — Build vs Buy Component&lt;/h2&gt;

&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#004D40;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #00251a;&quot;&gt;Layer&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #00251a;&quot;&gt;Option A (Recommended PoC)&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #00251a;&quot;&gt;Option B (Scale-out)&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;font-weight:bold;&quot;&gt;TLS Proxy core&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Squid&lt;/strong&gt; ssl-bump / &lt;strong&gt;mitmproxy&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;HAProxy&lt;/strong&gt; + OpenSSL / &lt;strong&gt;Envoy&lt;/strong&gt; TLS inspector&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#e0f2f1;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;font-weight:bold;&quot;&gt;Transparent redirect&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;iptables/nftables TPROXY + policy routing&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;WCCP(Web Cache Communication Protocol) or VRRP inline pair&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;font-weight:bold;&quot;&gt;CA / Cert&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;step-ca&lt;/strong&gt; or OpenSSL sub-CA + cache&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;HashiCorp Vault PKI + cert-manager pattern&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#e0f2f1;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;font-weight:bold;&quot;&gt;Policy engine&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Custom Python/Go + Redis policy store&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;OPA(Open Policy Agent) + domain category feed&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;font-weight:bold;&quot;&gt;IDS mirror&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Suricata&lt;/strong&gt; on mirror interface&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Zeek + Suricata cluster&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#e0f2f1;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;font-weight:bold;&quot;&gt;Bypass HA&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;External optical bypass TAP&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Keepalived + dual proxy + TAP&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Recommendation:&lt;/strong&gt; PoC는 &lt;strong&gt;Squid ssl-bump + step-ca + Suricata + nftables TPROXY&lt;/strong&gt; stack이 Documented example이 많고 Debug(디버그)가 쉽습니다.&lt;/p&gt;

&lt;!-- ===== 3. Logical Architecture ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#00695C;border-left:5px solid #00695C;padding-left:12px;&quot;&gt;3. Logical Architecture(논리 구조)&lt;/h2&gt;

&lt;svg viewBox=&quot;0 0 900 520&quot; style=&quot;width:100%;max-width:900px;display:block;margin:20px auto;background:#e0f2f1;border-radius:12px;border:1px solid #80cbc4;&quot;&gt;
  &lt;text x=&quot;450&quot; y=&quot;28&quot; text-anchor=&quot;middle&quot; font-size=&quot;15&quot; font-weight=&quot;bold&quot; fill=&quot;#004D40&quot;&gt;DIY SSL Visibility — Reference Architecture&lt;/text&gt;
  &lt;!-- Data plane --&gt;
  &lt;rect x=&quot;20&quot; y=&quot;50&quot; width=&quot;860&quot; height=&quot;200&quot; rx=&quot;10&quot; fill=&quot;#fff&quot; stroke=&quot;#00695C&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;text x=&quot;40&quot; y=&quot;72&quot; fill=&quot;#00695C&quot; font-size=&quot;12&quot; font-weight=&quot;bold&quot;&gt;Data Plane&lt;/text&gt;
  &lt;rect x=&quot;40&quot; y=&quot;85&quot; width=&quot;90&quot; height=&quot;45&quot; rx=&quot;5&quot; fill=&quot;#00897B&quot; stroke=&quot;#00695C&quot;/&gt;
  &lt;text x=&quot;85&quot; y=&quot;105&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;TPROXY&lt;/text&gt;
  &lt;text x=&quot;85&quot; y=&quot;118&quot; text-anchor=&quot;middle&quot; fill=&quot;#B2DFDB&quot; font-size=&quot;7&quot;&gt;nftables&lt;/text&gt;
  &lt;rect x=&quot;150&quot; y=&quot;85&quot; width=&quot;100&quot; height=&quot;45&quot; rx=&quot;5&quot; fill=&quot;#00897B&quot; stroke=&quot;#00695C&quot;/&gt;
  &lt;text x=&quot;200&quot; y=&quot;105&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;Classifier&lt;/text&gt;
  &lt;text x=&quot;200&quot; y=&quot;118&quot; text-anchor=&quot;middle&quot; fill=&quot;#B2DFDB&quot; font-size=&quot;7&quot;&gt;SNI parse&lt;/text&gt;
  &lt;rect x=&quot;270&quot; y=&quot;80&quot; width=&quot;110&quot; height=&quot;55&quot; rx=&quot;5&quot; fill=&quot;#00695C&quot; stroke=&quot;#004D40&quot;/&gt;
  &lt;text x=&quot;325&quot; y=&quot;102&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot; font-weight=&quot;bold&quot;&gt;Squid ssl-bump&lt;/text&gt;
  &lt;text x=&quot;325&quot; y=&quot;118&quot; text-anchor=&quot;middle&quot; fill=&quot;#B2DFDB&quot; font-size=&quot;8&quot;&gt;Dual TLS session&lt;/text&gt;
  &lt;rect x=&quot;400&quot; y=&quot;85&quot; width=&quot;90&quot; height=&quot;45&quot; rx=&quot;5&quot; fill=&quot;#00897B&quot; stroke=&quot;#00695C&quot;/&gt;
  &lt;text x=&quot;445&quot; y=&quot;105&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;step-ca&lt;/text&gt;
  &lt;text x=&quot;445&quot; y=&quot;118&quot; text-anchor=&quot;middle&quot; fill=&quot;#B2DFDB&quot; font-size=&quot;7&quot;&gt;Dynamic cert&lt;/text&gt;
  &lt;rect x=&quot;510&quot; y=&quot;75&quot; width=&quot;120&quot; height=&quot;65&quot; rx=&quot;5&quot; fill=&quot;#FF8F00&quot; stroke=&quot;#E65100&quot;/&gt;
  &lt;text x=&quot;570&quot; y=&quot;98&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;DTZ Mirror&lt;/text&gt;
  &lt;text x=&quot;570&quot; y=&quot;112&quot; text-anchor=&quot;middle&quot; fill=&quot;#FFE0B2&quot; font-size=&quot;8&quot;&gt;→ Suricata&lt;/text&gt;
  &lt;text x=&quot;570&quot; y=&quot;126&quot; text-anchor=&quot;middle&quot; fill=&quot;#FFE0B2&quot; font-size=&quot;8&quot;&gt;→ Zeek optional&lt;/text&gt;
  &lt;rect x=&quot;650&quot; y=&quot;85&quot; width=&quot;90&quot; height=&quot;45&quot; rx=&quot;5&quot; fill=&quot;#00897B&quot; stroke=&quot;#00695C&quot;/&gt;
  &lt;text x=&quot;695&quot; y=&quot;105&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;Egress&lt;/text&gt;
  &lt;text x=&quot;695&quot; y=&quot;118&quot; text-anchor=&quot;middle&quot; fill=&quot;#B2DFDB&quot; font-size=&quot;7&quot;&gt;Re-encrypt&lt;/text&gt;
  &lt;rect x=&quot;760&quot; y=&quot;85&quot; width=&quot;100&quot; height=&quot;45&quot; rx=&quot;5&quot; fill=&quot;#C62828&quot; stroke=&quot;#B71C1C&quot;/&gt;
  &lt;text x=&quot;810&quot; y=&quot;105&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;NGFW chain&lt;/text&gt;
  &lt;text x=&quot;810&quot; y=&quot;118&quot; text-anchor=&quot;middle&quot; fill=&quot;#FFCDD2&quot; font-size=&quot;7&quot;&gt;optional&lt;/text&gt;
  &lt;line x1=&quot;130&quot; y1=&quot;107&quot; x2=&quot;148&quot; y2=&quot;107&quot; stroke=&quot;#00695C&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;line x1=&quot;250&quot; y1=&quot;107&quot; x2=&quot;268&quot; y2=&quot;107&quot; stroke=&quot;#00695C&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;line x1=&quot;380&quot; y1=&quot;107&quot; x2=&quot;398&quot; y2=&quot;107&quot; stroke=&quot;#00695C&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;line x1=&quot;490&quot; y1=&quot;107&quot; x2=&quot;508&quot; y2=&quot;107&quot; stroke=&quot;#00695C&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;line x1=&quot;630&quot; y1=&quot;107&quot; x2=&quot;648&quot; y2=&quot;107&quot; stroke=&quot;#00695C&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;line x1=&quot;740&quot; y1=&quot;107&quot; x2=&quot;758&quot; y2=&quot;107&quot; stroke=&quot;#00695C&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;!-- Control plane --&gt;
  &lt;rect x=&quot;20&quot; y=&quot;270&quot; width=&quot;420&quot; height=&quot;120&quot; rx=&quot;10&quot; fill=&quot;#fff&quot; stroke=&quot;#00695C&quot;/&gt;
  &lt;text x=&quot;40&quot; y=&quot;292&quot; fill=&quot;#00695C&quot; font-size=&quot;12&quot; font-weight=&quot;bold&quot;&gt;Control Plane&lt;/text&gt;
  &lt;rect x=&quot;40&quot; y=&quot;305&quot; width=&quot;100&quot; height=&quot;40&quot; rx=&quot;5&quot; fill=&quot;#26A69A&quot; stroke=&quot;#00897B&quot;/&gt;
  &lt;text x=&quot;90&quot; y=&quot;330&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;Policy API&lt;/text&gt;
  &lt;rect x=&quot;160&quot; y=&quot;305&quot; width=&quot;100&quot; height=&quot;40&quot; rx=&quot;5&quot; fill=&quot;#26A69A&quot; stroke=&quot;#00897B&quot;/&gt;
  &lt;text x=&quot;210&quot; y=&quot;330&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;Admin UI&lt;/text&gt;
  &lt;rect x=&quot;280&quot; y=&quot;305&quot; width=&quot;140&quot; height=&quot;40&quot; rx=&quot;5&quot; fill=&quot;#26A69A&quot; stroke=&quot;#00897B&quot;/&gt;
  &lt;text x=&quot;350&quot; y=&quot;330&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;Redis / PostgreSQL&lt;/text&gt;
  &lt;text x=&quot;230&quot; y=&quot;365&quot; text-anchor=&quot;middle&quot; fill=&quot;#546E7A&quot; font-size=&quot;9&quot;&gt;Domain lists · Exclude · Audit · Metrics(Prometheus)&lt;/text&gt;
  &lt;!-- Management --&gt;
  &lt;rect x=&quot;460&quot; y=&quot;270&quot; width=&quot;420&quot; height=&quot;120&quot; rx=&quot;10&quot; fill=&quot;#fff&quot; stroke=&quot;#00695C&quot;/&gt;
  &lt;text x=&quot;480&quot; y=&quot;292&quot; fill=&quot;#00695C&quot; font-size=&quot;12&quot; font-weight=&quot;bold&quot;&gt;Management Plane&lt;/text&gt;
  &lt;rect x=&quot;480&quot; y=&quot;305&quot; width=&quot;90&quot; height=&quot;40&quot; rx=&quot;5&quot; fill=&quot;#546E7A&quot; stroke=&quot;#37474F&quot;/&gt;
  &lt;text x=&quot;525&quot; y=&quot;330&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;Syslog&lt;/text&gt;
  &lt;rect x=&quot;590&quot; y=&quot;305&quot; width=&quot;90&quot; height=&quot;40&quot; rx=&quot;5&quot; fill=&quot;#546E7A&quot; stroke=&quot;#37474F&quot;/&gt;
  &lt;text x=&quot;635&quot; y=&quot;330&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;Grafana&lt;/text&gt;
  &lt;rect x=&quot;700&quot; y=&quot;305&quot; width=&quot;90&quot; height=&quot;40&quot; rx=&quot;5&quot; fill=&quot;#546E7A&quot; stroke=&quot;#37474F&quot;/&gt;
  &lt;text x=&quot;745&quot; y=&quot;330&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;Keepalived&lt;/text&gt;
  &lt;rect x=&quot;810&quot; y=&quot;305&quot; width=&quot;50&quot; height=&quot;40&quot; rx=&quot;5&quot; fill=&quot;#546E7A&quot; stroke=&quot;#37474F&quot;/&gt;
  &lt;text x=&quot;835&quot; y=&quot;330&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;8&quot;&gt;HA&lt;/text&gt;
  &lt;!-- Module detail --&gt;
  &lt;rect x=&quot;20&quot; y=&quot;410&quot; width=&quot;860&quot; height=&quot;95&quot; rx=&quot;8&quot; fill=&quot;#ECEFF1&quot; stroke=&quot;#90A4AE&quot;/&gt;
  &lt;text x=&quot;450&quot; y=&quot;432&quot; text-anchor=&quot;middle&quot; fill=&quot;#37474F&quot; font-size=&quot;11&quot; font-weight=&quot;bold&quot;&gt;Module Responsibilities&lt;/text&gt;
  &lt;text x=&quot;120&quot; y=&quot;455&quot; text-anchor=&quot;middle&quot; fill=&quot;#546E7A&quot; font-size=&quot;9&quot;&gt;① Traffic redirect&lt;/text&gt;
  &lt;text x=&quot;280&quot; y=&quot;455&quot; text-anchor=&quot;middle&quot; fill=&quot;#546E7A&quot; font-size=&quot;9&quot;&gt;② Policy lookup&lt;/text&gt;
  &lt;text x=&quot;440&quot; y=&quot;455&quot; text-anchor=&quot;middle&quot; fill=&quot;#546E7A&quot; font-size=&quot;9&quot;&gt;③ TLS MITM&lt;/text&gt;
  &lt;text x=&quot;600&quot; y=&quot;455&quot; text-anchor=&quot;middle&quot; fill=&quot;#546E7A&quot; font-size=&quot;9&quot;&gt;④ Cert issue&lt;/text&gt;
  &lt;text x=&quot;760&quot; y=&quot;455&quot; text-anchor=&quot;middle&quot; fill=&quot;#546E7A&quot; font-size=&quot;9&quot;&gt;⑤ Mirror &amp;amp; log&lt;/text&gt;
  &lt;text x=&quot;450&quot; y=&quot;485&quot; text-anchor=&quot;middle&quot; fill=&quot;#78909C&quot; font-size=&quot;9&quot;&gt;Session state: Squid memory + optional Redis for HA sync&lt;/text&gt;
&lt;/svg&gt;

&lt;h3 style=&quot;color:#004D40;&quot;&gt;3.1 Module Specification&lt;/h3&gt;
&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;font-size:0.92em;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#00695C;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:8px;border:1px solid #004D40;&quot;&gt;Module&lt;/th&gt;
      &lt;th style=&quot;padding:8px;border:1px solid #004D40;&quot;&gt;Input&lt;/th&gt;
      &lt;th style=&quot;padding:8px;border:1px solid #004D40;&quot;&gt;Output&lt;/th&gt;
      &lt;th style=&quot;padding:8px;border:1px solid #004D40;&quot;&gt;Tech&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Redirector&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;L3 forwarded TCP/443&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;TPROXY to local Squid&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;nftables, ip rule, routing table&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#e0f2f1;&quot;&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;SNI Classifier&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;ClientHello (plaintext or after peek)&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;decrypt / splice / bump decision&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Squid ssl_bump ACL, or eBPF parser&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;TLS Proxy&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;TCP connection&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Dual TLS + HTTP payload&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Squid 5+ / mitmproxy&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#e0f2f1;&quot;&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;CA Service&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;CSR(Common Name=domain)&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Signed leaf cert (&amp;lt;24h TTL)&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;step-ca ACME internal API&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Mirror Tap&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Cleartext from proxy&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;PCAP to IDS&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Linux bridge, ERSPAN, tc mirror&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#e0f2f1;&quot;&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Policy API&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;REST CRUD&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Squid config reload&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;FastAPI + squid -k reconfigure&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;!-- ===== 4. Network Design ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#00695C;border-left:5px solid #00695C;padding-left:12px;&quot;&gt;4. Network Design(망구성)&lt;/h2&gt;

&lt;h3 style=&quot;color:#004D40;&quot;&gt;4.1 Physical Topology (PoC Lab)&lt;/h3&gt;
&lt;svg viewBox=&quot;0 0 860 340&quot; style=&quot;width:100%;max-width:860px;display:block;margin:16px auto;background:#fafafa;border-radius:12px;border:1px solid #ddd;&quot;&gt;
  &lt;text x=&quot;430&quot; y=&quot;25&quot; text-anchor=&quot;middle&quot; font-size=&quot;14&quot; font-weight=&quot;bold&quot; fill=&quot;#37474F&quot;&gt;PoC Lab — Inline SSL Visibility Stack&lt;/text&gt;
  &lt;rect x=&quot;30&quot; y=&quot;70&quot; width=&quot;80&quot; height=&quot;45&quot; rx=&quot;5&quot; fill=&quot;#1565C0&quot; stroke=&quot;#0D47A1&quot;/&gt;
  &lt;text x=&quot;70&quot; y=&quot;98&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;Client VLAN&lt;/text&gt;
  &lt;rect x=&quot;140&quot; y=&quot;60&quot; width=&quot;100&quot; height=&quot;65&quot; rx=&quot;6&quot; fill=&quot;#FF8F00&quot; stroke=&quot;#E65100&quot;/&gt;
  &lt;text x=&quot;190&quot; y=&quot;85&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;Bypass TAP&lt;/text&gt;
  &lt;text x=&quot;190&quot; y=&quot;100&quot; text-anchor=&quot;middle&quot; fill=&quot;#FFE0B2&quot; font-size=&quot;7&quot;&gt;A/B path&lt;/text&gt;
  &lt;rect x=&quot;270&quot; y=&quot;55&quot; width=&quot;130&quot; height=&quot;75&quot; rx=&quot;8&quot; fill=&quot;#00695C&quot; stroke=&quot;#004D40&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;text x=&quot;335&quot; y=&quot;78&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot; font-weight=&quot;bold&quot;&gt;ssl-proxy-01&lt;/text&gt;
  &lt;text x=&quot;335&quot; y=&quot;94&quot; text-anchor=&quot;middle&quot; fill=&quot;#B2DFDB&quot; font-size=&quot;8&quot;&gt;eth0: inline&lt;/text&gt;
  &lt;text x=&quot;335&quot; y=&quot;108&quot; text-anchor=&quot;middle&quot; fill=&quot;#B2DFDB&quot; font-size=&quot;8&quot;&gt;eth1: mirror → IDS&lt;/text&gt;
  &lt;rect x=&quot;430&quot; y=&quot;70&quot; width=&quot;90&quot; height=&quot;45&quot; rx=&quot;5&quot; fill=&quot;#C62828&quot; stroke=&quot;#B71C1C&quot;/&gt;
  &lt;text x=&quot;475&quot; y=&quot;98&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;NGFW&lt;/text&gt;
  &lt;rect x=&quot;550&quot; y=&quot;70&quot; width=&quot;90&quot; height=&quot;45&quot; rx=&quot;5&quot; fill=&quot;#1565C0&quot; stroke=&quot;#0D47A1&quot;/&gt;
  &lt;text x=&quot;595&quot; y=&quot;98&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;Internet&lt;/text&gt;
  &lt;rect x=&quot;270&quot; y=&quot;180&quot; width=&quot;130&quot; height=&quot;55&quot; rx=&quot;6&quot; fill=&quot;#FF8F00&quot; stroke=&quot;#E65100&quot;/&gt;
  &lt;text x=&quot;335&quot; y=&quot;205&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;suricata-01&lt;/text&gt;
  &lt;text x=&quot;335&quot; y=&quot;220&quot; text-anchor=&quot;middle&quot; fill=&quot;#FFE0B2&quot; font-size=&quot;8&quot;&gt;eth0: mirror only&lt;/text&gt;
  &lt;rect x=&quot;430&quot; y=&quot;180&quot; width=&quot;130&quot; height=&quot;55&quot; rx=&quot;6&quot; fill=&quot;#26A69A&quot; stroke=&quot;#00897B&quot;/&gt;
  &lt;text x=&quot;495&quot; y=&quot;205&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;step-ca-01&lt;/text&gt;
  &lt;text x=&quot;495&quot; y=&quot;220&quot; text-anchor=&quot;middle&quot; fill=&quot;#B2DFDB&quot; font-size=&quot;8&quot;&gt;Mgmt VLAN only&lt;/text&gt;
  &lt;rect x=&quot;590&quot; y=&quot;180&quot; width=&quot;130&quot; height=&quot;55&quot; rx=&quot;6&quot; fill=&quot;#546E7A&quot; stroke=&quot;#37474F&quot;/&gt;
  &lt;text x=&quot;655&quot; y=&quot;205&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;policy-api&lt;/text&gt;
  &lt;text x=&quot;655&quot; y=&quot;220&quot; text-anchor=&quot;middle&quot; fill=&quot;#CFD8DC&quot; font-size=&quot;8&quot;&gt;Mgmt VLAN&lt;/text&gt;
  &lt;line x1=&quot;110&quot; y1=&quot;92&quot; x2=&quot;138&quot; y2=&quot;92&quot; stroke=&quot;#333&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;line x1=&quot;240&quot; y1=&quot;92&quot; x2=&quot;268&quot; y2=&quot;92&quot; stroke=&quot;#333&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;line x1=&quot;400&quot; y1=&quot;92&quot; x2=&quot;428&quot; y2=&quot;92&quot; stroke=&quot;#333&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;line x1=&quot;520&quot; y1=&quot;92&quot; x2=&quot;548&quot; y2=&quot;92&quot; stroke=&quot;#333&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;line x1=&quot;335&quot; y1=&quot;130&quot; x2=&quot;335&quot; y2=&quot;178&quot; stroke=&quot;#FF8F00&quot; stroke-width=&quot;1.5&quot; stroke-dasharray=&quot;4,3&quot;/&gt;
  &lt;text x=&quot;430&quot; y=&quot;310&quot; text-anchor=&quot;middle&quot; fill=&quot;#666&quot; font-size=&quot;10&quot;&gt;Mgmt VLAN(10.99.0.0/24): CA, API, Grafana — DTZ mirror VLAN(10.98.0.0/24) ACL deny outbound&lt;/text&gt;
&lt;/svg&gt;

&lt;h3 style=&quot;color:#004D40;&quot;&gt;4.2 IP Address Plan (Example)&lt;/h3&gt;
&lt;pre style=&quot;background:#263238;color:#ECEFF1;padding:14px;border-radius:8px;font-size:0.85em;line-height:1.5;&quot;&gt;&lt;code&gt;Inline segment:     10.10.0.0/30  (router ↔ ssl-proxy ↔ fw)
TPROXY local:       127.0.0.1:3129 (Squid intercept port)
Mirror VLAN:        10.98.0.0/24  (ssl-proxy eth1 ↔ suricata) — NO gateway
Mgmt VLAN:          10.99.0.0/24  (admin, step-ca, API)
Policy routing table 100: default via ssl-proxy for Client subnet 10.20.0.0/16&lt;/code&gt;&lt;/pre&gt;

&lt;h3 style=&quot;color:#004D40;&quot;&gt;4.3 nftables TPROXY Redirect&lt;/h3&gt;
&lt;pre style=&quot;background:#263238;color:#ECEFF1;padding:14px;border-radius:8px;overflow-x:auto;font-size:0.82em;line-height:1.5;&quot;&gt;&lt;code&gt;# /etc/nftables.conf (ssl-proxy-01)
table inet ssl_redirect {
  chain prerouting {
    type filter hook prerouting priority mangle; policy accept;
    # Client subnet HTTPS only
    ip saddr 10.20.0.0/16 tcp dport 443 tproxy to :3129 meta mark set 0x1 accept
  }
  chain output {
    type route hook output priority mangle; policy accept;
    meta mark 0x1 meta l4proto tcp tproxy ip to 127.0.0.1:3129 accept
  }
}
# ip rule add fwmark 0x1 lookup 100
# ip route add local 0.0.0.0/0 dev lo table 100&lt;/code&gt;&lt;/pre&gt;

&lt;!-- ===== 5. PKI Design ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#00695C;border-left:5px solid #00695C;padding-left:12px;&quot;&gt;5. PKI(Public Key Infrastructure) Design&lt;/h2&gt;

&lt;h3 style=&quot;color:#004D40;&quot;&gt;5.1 Certificate Hierarchy&lt;/h3&gt;
&lt;pre style=&quot;background:#ECEFF1;padding:16px;border-radius:8px;font-size:0.9em;line-height:1.6;color:#37474F;&quot;&gt;
Enterprise Root CA (offline, HSM in production)
    └── SSL Inspection Sub-CA (online, step-ca on mgmt VLAN)
            └── Dynamic leaf certs (CN=SNI domain, TTL=24h, EKU=serverAuth)
&lt;/pre&gt;

&lt;h3 style=&quot;color:#004D40;&quot;&gt;5.2 Client Trust Deployment&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Windows AD&lt;/strong&gt; — GPO(Group Policy): Computer Configuration → Trusted Root CA import&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;macOS&lt;/strong&gt; — MDM(Mobile Device Management) profile or Jamf&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Linux&lt;/strong&gt; — update-ca-certificates (Debian) / ca-certificates trust anchor&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Verify&lt;/strong&gt; — Test client에서 forged cert chain이 &quot;Enterprise SSL Inspect CA&quot;로 표시되는지 확인&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 style=&quot;color:#004D40;&quot;&gt;5.3 Squid ssl-bump Policy (Core Config)&lt;/h3&gt;
&lt;pre style=&quot;background:#263238;color:#ECEFF1;padding:14px;border-radius:8px;overflow-x:auto;font-size:0.82em;line-height:1.5;&quot;&gt;&lt;code&gt;# /etc/squid/squid.conf (excerpt)
http_port 3129 intercept ssl-bump cert=/etc/squid/ssl/cert.pem key=/etc/squid/ssl/key.pem \
  generate-host-certificates=on dynamic_cert_mem_cache_size=64MB

acl step1 at_step SslBump1
acl step2 at_step SslBump2
acl step3 at_step SslBump3

acl SSL_ports port 443
acl bump_domains dstdomain &quot;/etc/squid/bump_domains.txt&quot;
acl exclude_domains dstdomain &quot;/etc/squid/exclude_domains.txt&quot;
acl pinned_servers ssl::server_name &quot;/etc/squid/pinning_exclude.txt&quot;

ssl_bump peek step1
ssl_bump stare step2
ssl_bump bump step3 bump_domains
ssl_bump splice step3 exclude_domains
ssl_bump splice step3 pinned_servers
ssl_bump splice all

# Dynamic cert from step-ca via sslcrtd_program helper
sslcrtd_program /usr/lib/squid/security_file_certgen -s /var/lib/ssl_db -M 64MB

# Mirror cleartext to IDS (via ICAP or separate tap interface)
# icap_enable on
# icap_service ids reqmod_precache bypass=0 icap://10.98.0.10:1344/respmod&lt;/code&gt;&lt;/pre&gt;

&lt;h3 style=&quot;color:#004D40;&quot;&gt;5.4 Exclude Policy Examples&lt;/h3&gt;
&lt;pre style=&quot;background:#263238;color:#ECEFF1;padding:14px;border-radius:8px;font-size:0.85em;&quot;&gt;&lt;code&gt;# /etc/squid/exclude_domains.txt
.bank.example.com
.gov.kr
.apple.com          # pinning apps
.microsoft.com      # Office365 — selective, test first
.healthcare.org&lt;/code&gt;&lt;/pre&gt;

&lt;!-- ===== 6. HA &amp; Failover ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#00695C;border-left:5px solid #00695C;padding-left:12px;&quot;&gt;6. HA(High Availability) &amp;amp; Failover&lt;/h2&gt;

&lt;h3 style=&quot;color:#004D40;&quot;&gt;6.1 Fail-open vs Fail-close&lt;/h3&gt;
&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#004D40;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #00251a;&quot;&gt;Mode&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #00251a;&quot;&gt;Behavior on failure&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #00251a;&quot;&gt;Use case&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;font-weight:bold;&quot;&gt;Fail-open&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Bypass TAP → Encrypted traffic passes, no inspect&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Business continuity priority&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#e0f2f1;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;font-weight:bold;&quot;&gt;Fail-close&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Traffic block — no bypass&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;High security, CII environment&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h3 style=&quot;color:#004D40;&quot;&gt;6.2 Active-Standby with Keepalived&lt;/h3&gt;
&lt;pre style=&quot;background:#263238;color:#ECEFF1;padding:14px;border-radius:8px;font-size:0.82em;line-height:1.5;&quot;&gt;&lt;code&gt;# keepalived.conf (VRRP virtual inline IP — L2 adjacent deployment)
vrrp_instance SSL_VA {
  state MASTER
  interface eth0
  virtual_router_id 52
  priority 200
  advert_int 1
  virtual_ipaddress { 10.10.0.2/30 }
  track_script { chk_squid }
}
# track_script: curl localhost:3129 or systemctl is-active squid&lt;/code&gt;&lt;/pre&gt;

&lt;!-- ===== 7. Security Hardening ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#00695C;border-left:5px solid #00695C;padding-left:12px;&quot;&gt;7. Security Hardening — DTZ Protection&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Network segmentation&lt;/strong&gt; — Mirror VLAN에 Default gateway 없음, RFC1918 outbound deny&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Host hardening&lt;/strong&gt; — ssl-proxy: SSH key only, minimal package, SELinux/AppArmor&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;CA key protection&lt;/strong&gt; — step-ca root on offline machine; online intermediate only; Vault HSM (Production)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Audit&lt;/strong&gt; — Squid access.log + custom JSON (domain, action=bump|splice, user IP) → SIEM&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Anti-bypass&lt;/strong&gt; — Non-standard port 443 detect, DNS over HTTPS(DoH) to public resolver block at DNS layer&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Data retention&lt;/strong&gt; — Cleartext PCAP 저장 최소화, GDPR/개인정보보호법 retention policy&lt;/li&gt;
&lt;/ul&gt;

&lt;!-- ===== 8. Implementation Phases ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#00695C;border-left:5px solid #00695C;padding-left:12px;&quot;&gt;8. Implementation Phases(구현 단계)&lt;/h2&gt;

&lt;svg viewBox=&quot;0 0 820 120&quot; style=&quot;width:100%;max-width:820px;display:block;margin:16px auto;&quot;&gt;
  &lt;rect x=&quot;20&quot; y=&quot;40&quot; width=&quot;120&quot; height=&quot;50&quot; rx=&quot;6&quot; fill=&quot;#00897B&quot; stroke=&quot;#00695C&quot;/&gt;
  &lt;text x=&quot;80&quot; y=&quot;62&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot; font-weight=&quot;bold&quot;&gt;Phase 0&lt;/text&gt;
  &lt;text x=&quot;80&quot; y=&quot;78&quot; text-anchor=&quot;middle&quot; fill=&quot;#B2DFDB&quot; font-size=&quot;8&quot;&gt;Legal·Policy&lt;/text&gt;
  &lt;rect x=&quot;170&quot; y=&quot;40&quot; width=&quot;120&quot; height=&quot;50&quot; rx=&quot;6&quot; fill=&quot;#00897B&quot; stroke=&quot;#00695C&quot;/&gt;
  &lt;text x=&quot;230&quot; y=&quot;62&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot; font-weight=&quot;bold&quot;&gt;Phase 1&lt;/text&gt;
  &lt;text x=&quot;230&quot; y=&quot;78&quot; text-anchor=&quot;middle&quot; fill=&quot;#B2DFDB&quot; font-size=&quot;8&quot;&gt;Lab PoC&lt;/text&gt;
  &lt;rect x=&quot;320&quot; y=&quot;40&quot; width=&quot;120&quot; height=&quot;50&quot; rx=&quot;6&quot; fill=&quot;#00897B&quot; stroke=&quot;#00695C&quot;/&gt;
  &lt;text x=&quot;380&quot; y=&quot;62&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot; font-weight=&quot;bold&quot;&gt;Phase 2&lt;/text&gt;
  &lt;text x=&quot;380&quot; y=&quot;78&quot; text-anchor=&quot;middle&quot; fill=&quot;#B2DFDB&quot; font-size=&quot;8&quot;&gt;Pilot VLAN&lt;/text&gt;
  &lt;rect x=&quot;470&quot; y=&quot;40&quot; width=&quot;120&quot; height=&quot;50&quot; rx=&quot;6&quot; fill=&quot;#00897B&quot; stroke=&quot;#00695C&quot;/&gt;
  &lt;text x=&quot;530&quot; y=&quot;62&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot; font-weight=&quot;bold&quot;&gt;Phase 3&lt;/text&gt;
  &lt;text x=&quot;530&quot; y=&quot;78&quot; text-anchor=&quot;middle&quot; fill=&quot;#B2DFDB&quot; font-size=&quot;8&quot;&gt;Production&lt;/text&gt;
  &lt;rect x=&quot;620&quot; y=&quot;40&quot; width=&quot;120&quot; height=&quot;50&quot; rx=&quot;6&quot; fill=&quot;#00695C&quot; stroke=&quot;#004D40&quot;/&gt;
  &lt;text x=&quot;680&quot; y=&quot;62&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot; font-weight=&quot;bold&quot;&gt;Phase 4&lt;/text&gt;
  &lt;text x=&quot;680&quot; y=&quot;78&quot; text-anchor=&quot;middle&quot; fill=&quot;#B2DFDB&quot; font-size=&quot;8&quot;&gt;Optimize&lt;/text&gt;
  &lt;line x1=&quot;140&quot; y1=&quot;65&quot; x2=&quot;168&quot; y2=&quot;65&quot; stroke=&quot;#00695C&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;line x1=&quot;290&quot; y1=&quot;65&quot; x2=&quot;318&quot; y2=&quot;65&quot; stroke=&quot;#00695C&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;line x1=&quot;440&quot; y1=&quot;65&quot; x2=&quot;468&quot; y2=&quot;65&quot; stroke=&quot;#00695C&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;line x1=&quot;590&quot; y1=&quot;65&quot; x2=&quot;618&quot; y2=&quot;65&quot; stroke=&quot;#00695C&quot; stroke-width=&quot;2&quot;/&gt;
&lt;/svg&gt;

&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;font-size:0.92em;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#00695C;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:8px;border:1px solid #004D40;&quot;&gt;Phase&lt;/th&gt;
      &lt;th style=&quot;padding:8px;border:1px solid #004D40;&quot;&gt;Tasks&lt;/th&gt;
      &lt;th style=&quot;padding:8px;border:1px solid #004D40;&quot;&gt;Success Criteria&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;font-weight:bold;&quot;&gt;0&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Privacy assessment, user notice, exclude category 정의&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Legal sign-off&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#e0f2f1;&quot;&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;font-weight:bold;&quot;&gt;1&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;VM 3대, Squid+step-ca+Suricata, test client 10대&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;HTTPS decrypt, IDS alert on EICAR test&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;font-weight:bold;&quot;&gt;2&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Pilot user VLAN, bypass TAP, monitoring&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;1 week stable, &amp;lt;5ms latency&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#e0f2f1;&quot;&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;font-weight:bold;&quot;&gt;3&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Full rollout, HA pair, NGFW chain, SIEM integration&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Encrypted malware block verified&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;font-weight:bold;&quot;&gt;4&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Performance tune, category feed, TLS1.3 cipher audit&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Target throughput met&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;!-- ===== 9. Test Plan ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#00695C;border-left:5px solid #00695C;padding-left:12px;&quot;&gt;9. Test Plan(검증)&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Functional&lt;/strong&gt; — bump_domains match → forged cert; exclude → splice (pass-through encrypted)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Security&lt;/strong&gt; — DTZ VLAN에서 Internet outbound 차단 확인; CA private key file permission 600&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Performance&lt;/strong&gt; — wrk/ab load test, measure Squid CPU, SSL TPS(transactions per second)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Failover&lt;/strong&gt; — Squid stop → bypass TAP traffic flow OR keepalived switch &amp;lt; 3s&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Detection&lt;/strong&gt; — curl https://eicar.org download → Suricata alert fired on cleartext mirror&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Negative&lt;/strong&gt; — Banking exclude domain: certificate remains original server cert (splice)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 style=&quot;color:#004D40;&quot;&gt;9.1 Suricata Mirror Interface Setup&lt;/h3&gt;
&lt;pre style=&quot;background:#263238;color:#ECEFF1;padding:14px;border-radius:8px;font-size:0.82em;line-height:1.5;&quot;&gt;&lt;code&gt;# /etc/suricata/suricata.yaml
af-packet:
  - interface: eth0
    cluster-id: 99
    cluster-type: cluster_flow
    defrag: yes
# Mirror port — no IP address assigned
# suricata-update; rules: emerging-threats web_client&lt;/code&gt;&lt;/pre&gt;

&lt;!-- ===== 10. Commercial vs DIY ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#00695C;border-left:5px solid #00695C;padding-left:12px;&quot;&gt;10. Commercial Product vs DIY — Decision Matrix&lt;/h2&gt;
&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#004D40;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #00251a;&quot;&gt;Criteria&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #00251a;&quot;&gt;Commercial (AISVA, SSL INSIDE)&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #00251a;&quot;&gt;DIY (This design)&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Time to deploy&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Weeks&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Months (engineering)&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#e0f2f1;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Throughput 10G+&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Hardware ASIC&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Requires tuning, may need HAProxy cluster&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;국정원 확인서&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;AXGATE 등 certified&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Self-cert not applicable — 공공 입찰 불리&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#e0f2f1;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Customization&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Vendor roadmap dependent&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Full source control&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Cost (5yr TCO)&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;License + support high&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Engineering labor + commodity HW&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p style=&quot;background:#E8F5E9;padding:14px;border-radius:8px;border-left:4px solid #2E7D32;&quot;&gt;&lt;strong&gt;Recommendation:&lt;/strong&gt; 공공·금융 regulated environment → Certified commercial product (SSL INSIDE, AISVA, ePrism). Internal lab, research, MSSP(Managed Security Service Provider) custom stack → DIY design valid.&lt;/p&gt;

&lt;!-- ===== 용어 설명 ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:50px;color:#00695C;border-left:5px solid #00695C;padding-left:12px;&quot;&gt;용어 설명(Glossary)&lt;/h2&gt;
&lt;div style=&quot;background:#e0f2f1;padding:20px;border-radius:10px;border:1px solid #80cbc4;&quot;&gt;
&lt;p&gt;&lt;strong&gt;ssl-bump&lt;/strong&gt;&lt;br&gt;Squid terminology for MITM TLS inspection. peek → stare → bump(splice) state machine.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TPROXY&lt;/strong&gt;&lt;br&gt;Linux transparent proxy mechanism. Original destination IP preserved while redirecting to local proxy.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;splice&lt;/strong&gt;&lt;br&gt;Squid ssl_bump action: pass encrypted bytes without decryption — used for exclude list.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;step-ca&lt;/strong&gt;&lt;br&gt;Smallstep Certificate Authority. API-driven short-lived cert issuance for dynamic MITM.&lt;/p&gt;
&lt;/div&gt;

&lt;p style=&quot;margin-top:30px;font-size:0.85em;color:#999;text-align:center;&quot;&gt;— SSL Visibility Design Document · Tistory HTML paste ready —&lt;/p&gt;

&lt;/div&gt;</description>
      <category>Security</category>
      <author>AndrewJ</author>
      <guid isPermaLink="true">https://andrewpage.tistory.com/506</guid>
      <comments>https://andrewpage.tistory.com/506#entry506comment</comments>
      <pubDate>Tue, 11 Aug 2026 17:05:14 +0900</pubDate>
    </item>
    <item>
      <title>SSL 가시화 시스템 - 개념, 동작 원리, 기능, 아키텍처</title>
      <link>https://andrewpage.tistory.com/505</link>
      <description>&lt;blockquote data-ke-style=&quot;style3&quot;&gt;작성일: 2026년 8월 11일&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;


&lt;!-- Tistory HTML 붙여넣기용 - SSL Visibility Study --&gt;
&lt;div style=&quot;max-width:900px;margin:0 auto;font-family:'Noto Sans KR',sans-serif;line-height:1.8;color:#2c2c2c;&quot;&gt;

&lt;h1 style=&quot;font-size:2em;border-bottom:3px solid #4527A0;padding-bottom:12px;color:#311B92;&quot;&gt;SSL Visibility Study: SSL 가시화 제품의 개념, Architecture, 망구성, 시장&lt;/h1&gt;

&lt;p style=&quot;font-size:1.05em;color:#555;&quot;&gt;이 문서는 보안 장비 업체가 출시하는 &lt;strong&gt;SSL 가시화(SSL Visibility) 제품&lt;/strong&gt; — 또는 &lt;strong&gt;SSLi(SSL Inspection, SSL 검사)&lt;/strong&gt;, &lt;strong&gt;TLS Decryption(Transport Layer Security 복호화)&lt;/strong&gt; Appliance — 이 무엇인지, 왜 필요한지, 어떻게 Network에 배치하는지를 설명합니다. Network·Security Engineer를 대상으로 작성했습니다.&lt;/p&gt;

&lt;!-- ===== 1. 태동 배경 ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#4527A0;border-left:5px solid #4527A0;padding-left:12px;&quot;&gt;1. 태동 배경(Motive) — &quot;암호화 Blind Spot(사각지대)&quot;&lt;/h2&gt;

&lt;h3 style=&quot;color:#311B92;&quot;&gt;1.1 문제: HTTPS everywhere, Security nowhere&lt;/h3&gt;
&lt;p&gt;2010년대 이후 Internet Traffic의 &lt;strong&gt;90% 이상&lt;/strong&gt;이 &lt;strong&gt;TLS(Transport Layer Security, 전송 계층 보안)&lt;/strong&gt; — 과거 명칭 &lt;strong&gt;SSL(Secure Sockets Layer, 보안 소켓 계층)&lt;/strong&gt; — 로 암호화됩니다. Encryption(암호화)은 Privacy(개인정보 보호)와 Integrity(무결성)에 필수지만, Network 보안 장비 입장에서는 &lt;strong&gt;Payload(페이로드)가 보이지 않는 Tunnel(터널)&lt;/strong&gt;이 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The blind spot:&lt;/strong&gt; Firewall, IPS(Intrusion Prevention System, 침입 방지 시스템), DLP(Data Loss Prevention, 데이터 유출 방지), Sandbox, SIEM(Security Information and Event Management, 보안 정보 및 이벤트 관리) — 이 모든 Tool이 Encrypted traffic 내부의 Malware(악성코드), C2(Command and Control, 명령 제어) Channel, Data exfiltration(데이터 유출)을 탐지하지 못합니다.&lt;/p&gt;

&lt;h3 style=&quot;color:#311B92;&quot;&gt;1.2 공격자의 Encryption 활용&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;Malware download를 HTTPS로 위장&lt;/li&gt;
  &lt;li&gt;Phishing(피싱) site를 Valid certificate(유효 인증서)로 운영&lt;/li&gt;
  &lt;li&gt;Exfiltration을 TLS tunnel 안에 숨김&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;TLS 1.3&lt;/strong&gt; + &lt;strong&gt;PFS(Perfect Forward Secrecy, 완전 순방향 비밀성)&lt;/strong&gt;로 Passive decryption(수동 복호화) 불가&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 style=&quot;color:#311B92;&quot;&gt;1.3 SSL 가시화 제품의 등장&lt;/h3&gt;
&lt;p&gt;각 보안 장비가 개별적으로 Decryption을 수행하면 &lt;strong&gt;CPU(Central Processing Unit) overload(과부하)&lt;/strong&gt;, Certificate(인증서) 관리 분산, Policy(정책) 불일치가 발생합니다. &lt;strong&gt;SSL 가시화 전용 Appliance&lt;/strong&gt;는 Network 한 지점에서 &lt;strong&gt;Decrypt once, inspect many(한 번 복호화, 여러 번 검사)&lt;/strong&gt; Architecture를 제공합니다.&lt;/p&gt;

&lt;h3 style=&quot;color:#311B92;&quot;&gt;1.4 역사·규제 Timeline&lt;/h3&gt;
&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;font-size:0.95em;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#4527A0;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #311B92;&quot;&gt;시기&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #311B92;&quot;&gt;사건&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #311B92;&quot;&gt;의미&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;2010~&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;HTTPS adoption 급증 (Google, Let's Encrypt)&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Encrypted traffic blind spot 확대&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#ede7f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;2015~&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Dedicated SSLi Appliance (A10, Symantec/Broadcom, F5)&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Centralized decryption market 형성&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;2018&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;TLS 1.3 (RFC 8446) 표준화&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Passive key-based decryption 사실상 종료&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#ede7f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;2020~&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;국내 SSL VA·AISVA·SSL INSIDE 등장&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;금융·공공 SSL 복호화 수요&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;2026&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;국정원 국가용 보안요구사항 V3.0 'SSL 가시화 제품' 항목&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;공공기관 도입·인증 의무화 (AXGATE SSL INSIDE 최초 확인서)&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;!-- ===== 2. SSL 가시화 제품이란? ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#4527A0;border-left:5px solid #4527A0;padding-left:12px;&quot;&gt;2. SSL 가시화 제품이란?&lt;/h2&gt;

&lt;h3 style=&quot;color:#311B92;&quot;&gt;2.1 정의&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;SSL 가시화 제품&lt;/strong&gt;은 Network Traffic path(경로) 상에서 &lt;strong&gt;TLS/SSL Encrypted session(암호화 세션)을 Terminate(종료)&lt;/strong&gt;하고, Plaintext(평문) Payload를 Downstream(하류) Security tool에 제공한 뒤, 다시 &lt;strong&gt;Re-encrypt(재암호화)&lt;/strong&gt;하여 Destination(목적지)으로 Forward(전달)하는 &lt;strong&gt;전용 Network Security Appliance(네트워크 보안 장비)&lt;/strong&gt; 또는 Software solution입니다.&lt;/p&gt;
&lt;p&gt;다른 명칭: &lt;strong&gt;SSLi&lt;/strong&gt;, &lt;strong&gt;TLS Decryption Gateway&lt;/strong&gt;, &lt;strong&gt;Encrypted Traffic Management(ETM)&lt;/strong&gt;, &lt;strong&gt;SSL VA(Visibility Appliance)&lt;/strong&gt;, &lt;strong&gt;SSL INSIDE&lt;/strong&gt;(AXGATE), &lt;strong&gt;AISVA&lt;/strong&gt;(MONITORAPP).&lt;/p&gt;

&lt;h3 style=&quot;color:#311B92;&quot;&gt;2.2 핵심 가치&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Visibility(가시성)&lt;/strong&gt; — Encrypted tunnel 내부 Threat(위협) 탐지&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Offload(오프로드)&lt;/strong&gt; — Decryption 부하를 전용 장비에 집중, FW·IPS 성능 확보&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Centralized policy(중앙 정책)&lt;/strong&gt; — 복호화 대상 Domain, Category, User group 일괄 관리&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Tool chain integration(연동)&lt;/strong&gt; — NGFW(Next-Generation Firewall), IPS, WAF(Web Application Firewall), DLP, APT(Advanced Persistent Threat) sandbox에 Cleartext feed&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 style=&quot;color:#311B92;&quot;&gt;2.3 SSL 가시화 vs NGFW 내장 SSL Decryption&lt;/h3&gt;
&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#311B92;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #1a0f5c;&quot;&gt;구분&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #1a0f5c;&quot;&gt;전용 SSL 가시화&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #1a0f5c;&quot;&gt;NGFW 내장 Decryption&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Scale(확장)&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;10G~100G+ 전용 ASIC·Hardware acceleration&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;FW throughput과 Decryption 경쟁&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#ede7f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Multi-tool feed&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;IPS+DLP+Sandbox 동시 Cleartext 전달&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;주로 FW 자체 Inspection&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Policy granularity&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Domain exclude, Category, SNI 기반&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Vendor별 제한적&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#ede7f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;배치&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Security stack 앞단 Central hub&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Perimeter FW에 통합&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;!-- ===== 3. 동작 원리 ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#4527A0;border-left:5px solid #4527A0;padding-left:12px;&quot;&gt;3. 동작 원리 — MITM(Man-in-the-Middle) Decryption&lt;/h2&gt;

&lt;h3 style=&quot;color:#311B92;&quot;&gt;3.1 Transparent Proxy(투명 프록시) 방식&lt;/h3&gt;
&lt;p&gt;Enterprise(기업) Network에서 Client PC에는 &lt;strong&gt;Enterprise Root CA(Certificate Authority, 인증서 기관)&lt;/strong&gt;가 배포됩니다. SSL 가시화 장비는 Client와 Server 사이에서 두 개의 TLS session을 맺습니다.&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Client → SSL Appliance:&lt;/strong&gt; Appliance가 Server impersonation(사칭) Certificate로 Client handshake&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;SSL Appliance → Server:&lt;/strong&gt; Appliance가 Client impersonation으로 Origin server handshake&lt;/li&gt;
  &lt;li&gt;Appliance 내부에서 Plaintext Inspection 후 양쪽 Re-encrypt&lt;/li&gt;
&lt;/ol&gt;

&lt;svg viewBox=&quot;0 0 880 320&quot; style=&quot;width:100%;max-width:880px;display:block;margin:20px auto;background:#fafafa;border-radius:12px;border:1px solid #ddd;&quot;&gt;
  &lt;defs&gt;&lt;marker id=&quot;sslarr&quot; markerWidth=&quot;10&quot; markerHeight=&quot;7&quot; refX=&quot;9&quot; refY=&quot;3.5&quot; orient=&quot;auto&quot;&gt;&lt;polygon points=&quot;0 0,10 3.5,0 7&quot; fill=&quot;#4527A0&quot;/&gt;&lt;/marker&gt;&lt;/defs&gt;
  &lt;text x=&quot;440&quot; y=&quot;28&quot; text-anchor=&quot;middle&quot; font-size=&quot;15&quot; font-weight=&quot;bold&quot; fill=&quot;#311B92&quot;&gt;SSL Visibility — Dual TLS Session (Break-and-Inspect)&lt;/text&gt;
  &lt;rect x=&quot;40&quot; y=&quot;120&quot; width=&quot;120&quot; height=&quot;60&quot; rx=&quot;8&quot; fill=&quot;#5E35B1&quot; stroke=&quot;#4527A0&quot;/&gt;
  &lt;text x=&quot;100&quot; y=&quot;148&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot; font-weight=&quot;bold&quot;&gt;Client PC&lt;/text&gt;
  &lt;text x=&quot;100&quot; y=&quot;166&quot; text-anchor=&quot;middle&quot; fill=&quot;#D1C4E9&quot; font-size=&quot;9&quot;&gt;Enterprise CA trust&lt;/text&gt;
  &lt;rect x=&quot;340&quot; y=&quot;90&quot; width=&quot;200&quot; height=&quot;120&quot; rx=&quot;10&quot; fill=&quot;#4527A0&quot; stroke=&quot;#311B92&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;text x=&quot;440&quot; y=&quot;118&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;13&quot; font-weight=&quot;bold&quot;&gt;SSL Visibility Appliance&lt;/text&gt;
  &lt;text x=&quot;440&quot; y=&quot;138&quot; text-anchor=&quot;middle&quot; fill=&quot;#E1BEE7&quot; font-size=&quot;10&quot;&gt;① TLS terminate (Client side)&lt;/text&gt;
  &lt;text x=&quot;440&quot; y=&quot;155&quot; text-anchor=&quot;middle&quot; fill=&quot;#FFECB3&quot; font-size=&quot;10&quot; font-weight=&quot;bold&quot;&gt;② Plaintext inspect zone&lt;/text&gt;
  &lt;text x=&quot;440&quot; y=&quot;172&quot; text-anchor=&quot;middle&quot; fill=&quot;#E1BEE7&quot; font-size=&quot;10&quot;&gt;③ TLS terminate (Server side)&lt;/text&gt;
  &lt;text x=&quot;440&quot; y=&quot;192&quot; text-anchor=&quot;middle&quot; fill=&quot;#C5CAE9&quot; font-size=&quot;9&quot;&gt;Policy · Cert forge · Re-encrypt&lt;/text&gt;
  &lt;rect x=&quot;720&quot; y=&quot;120&quot; width=&quot;120&quot; height=&quot;60&quot; rx=&quot;8&quot; fill=&quot;#7E57C2&quot; stroke=&quot;#5E35B1&quot;/&gt;
  &lt;text x=&quot;780&quot; y=&quot;148&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot; font-weight=&quot;bold&quot;&gt;Origin Server&lt;/text&gt;
  &lt;text x=&quot;780&quot; y=&quot;166&quot; text-anchor=&quot;middle&quot; fill=&quot;#EDE7F6&quot; font-size=&quot;9&quot;&gt;Real certificate&lt;/text&gt;
  &lt;line x1=&quot;160&quot; y1=&quot;145&quot; x2=&quot;338&quot; y2=&quot;145&quot; stroke=&quot;#4527A0&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#sslarr)&quot;/&gt;
  &lt;text x=&quot;250&quot; y=&quot;135&quot; text-anchor=&quot;middle&quot; fill=&quot;#4527A0&quot; font-size=&quot;9&quot;&gt;TLS-A (fake cert)&lt;/text&gt;
  &lt;line x1=&quot;540&quot; y1=&quot;155&quot; x2=&quot;718&quot; y2=&quot;155&quot; stroke=&quot;#4527A0&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#sslarr)&quot;/&gt;
  &lt;text x=&quot;630&quot; y=&quot;145&quot; text-anchor=&quot;middle&quot; fill=&quot;#4527A0&quot; font-size=&quot;9&quot;&gt;TLS-B (to server)&lt;/text&gt;
  &lt;!-- Security tools --&gt;
  &lt;rect x=&quot;280&quot; y=&quot;250&quot; width=&quot;90&quot; height=&quot;35&quot; rx=&quot;5&quot; fill=&quot;#FF8F00&quot; stroke=&quot;#E65100&quot;/&gt;
  &lt;text x=&quot;325&quot; y=&quot;272&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;IPS&lt;/text&gt;
  &lt;rect x=&quot;395&quot; y=&quot;250&quot; width=&quot;90&quot; height=&quot;35&quot; rx=&quot;5&quot; fill=&quot;#FF8F00&quot; stroke=&quot;#E65100&quot;/&gt;
  &lt;text x=&quot;440&quot; y=&quot;272&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;DLP&lt;/text&gt;
  &lt;rect x=&quot;510&quot; y=&quot;250&quot; width=&quot;90&quot; height=&quot;35&quot; rx=&quot;5&quot; fill=&quot;#FF8F00&quot; stroke=&quot;#E65100&quot;/&gt;
  &lt;text x=&quot;555&quot; y=&quot;272&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;Sandbox&lt;/text&gt;
  &lt;line x1=&quot;440&quot; y1=&quot;210&quot; x2=&quot;440&quot; y2=&quot;248&quot; stroke=&quot;#E65100&quot; stroke-width=&quot;1.5&quot; stroke-dasharray=&quot;4,3&quot;/&gt;
  &lt;text x=&quot;440&quot; y=&quot;305&quot; text-anchor=&quot;middle&quot; fill=&quot;#666&quot; font-size=&quot;10&quot;&gt;Cleartext copy or inline chain to security tools inside DTZ(Decrypted Traffic Zone)&lt;/text&gt;
&lt;/svg&gt;

&lt;h3 style=&quot;color:#311B92;&quot;&gt;3.2 SNI(Server Name Indication) 기반 Policy&lt;/h3&gt;
&lt;p&gt;TLS handshake ClientHello에서 &lt;strong&gt;SNI&lt;/strong&gt; field로 Destination domain을 읽어, 복호화 여부를 결정합니다. Banking, Healthcare site는 &lt;strong&gt;Exclude list(제외 목록)&lt;/strong&gt;에 등록하는 Case가 많습니다 (Compliance·Privacy).&lt;/p&gt;

&lt;h3 style=&quot;color:#311B92;&quot;&gt;3.3 TLS 1.3 / ECH(Encrypted Client Hello) Challenge&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;TLS 1.3&lt;/strong&gt; — Passive decryption 불가, Active inline MITM만 가능&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;ECH&lt;/strong&gt; — SNI까지 암호화 시 Policy routing 어려움 → Vendor별 ECH-aware proxy 기술 경쟁&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Certificate Pinning(인증서 고정)&lt;/strong&gt; — Mobile app, Banking app은 MITM 실패 → Exclude 또는 split-tunnel&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;QUIC(Quick UDP Internet Connections)&lt;/strong&gt; — UDP 기반 HTTP/3, Decryption engine 별도 지원 필요&lt;/li&gt;
&lt;/ul&gt;

&lt;!-- ===== 4. 주요 기능 ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#4527A0;border-left:5px solid #4527A0;padding-left:12px;&quot;&gt;4. SSL 가시화 제품의 주요 기능&lt;/h2&gt;

&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;font-size:0.93em;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#4527A0;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:8px;border:1px solid #311B92;&quot;&gt;기능 Category&lt;/th&gt;
      &lt;th style=&quot;padding:8px;border:1px solid #311B92;&quot;&gt;상세&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;font-weight:bold;&quot;&gt;TLS/SSL Decryption&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;HTTPS, SMTPS, POP3S, IMAPS, STARTTLS, XMPP, SSH(일부), QUIC/HTTP3&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#ede7f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;font-weight:bold;&quot;&gt;Protocol support&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;TLS 1.0~1.3, SSL 3.0(deprecated), 100+ Cipher suite&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;font-weight:bold;&quot;&gt;Policy engine&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;IP·Domain·URL Category·User·Port 기반 decrypt/bypass · Exclude list 자동 수집&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#ede7f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;font-weight:bold;&quot;&gt;Certificate management&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Enterprise CA, Dynamic cert signing, OCSP(Online Certificate Status Protocol) stapling, HSTS bypass policy&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;font-weight:bold;&quot;&gt;Traffic steering&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Active port(Inline), Passive port(Mirror), ICAP(Internet Content Adaptation Protocol) to DLP&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#ede7f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;font-weight:bold;&quot;&gt;Performance&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Hardware SSL accelerator, Session reuse, Connection pooling to origin&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;font-weight:bold;&quot;&gt;High availability&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Active-Active/Standby, External bypass TAP, Fail-open/Fail-close&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#ede7f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;font-weight:bold;&quot;&gt;Security hardening&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Anti-SSL bypass detection, Protocol anomaly, Weak cipher block, Admin audit log&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;font-weight:bold;&quot;&gt;Reporting&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Decrypted session stat, Top domain, Policy hit, SIEM syslog export&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;!-- ===== 5. 내부 Architecture ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#4527A0;border-left:5px solid #4527A0;padding-left:12px;&quot;&gt;5. 내부 Architecture(구조)&lt;/h2&gt;

&lt;svg viewBox=&quot;0 0 900 480&quot; style=&quot;width:100%;max-width:900px;display:block;margin:20px auto;background:#ede7f6;border-radius:12px;border:1px solid #b39ddb;&quot;&gt;
  &lt;text x=&quot;450&quot; y=&quot;28&quot; text-anchor=&quot;middle&quot; font-size=&quot;15&quot; font-weight=&quot;bold&quot; fill=&quot;#311B92&quot;&gt;SSL Visibility Appliance — Internal Block Diagram&lt;/text&gt;
  &lt;!-- Ingress --&gt;
  &lt;rect x=&quot;30&quot; y=&quot;60&quot; width=&quot;100&quot; height=&quot;50&quot; rx=&quot;6&quot; fill=&quot;#5E35B1&quot; stroke=&quot;#4527A0&quot;/&gt;
  &lt;text x=&quot;80&quot; y=&quot;82&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;Network I/O&lt;/text&gt;
  &lt;text x=&quot;80&quot; y=&quot;98&quot; text-anchor=&quot;middle&quot; fill=&quot;#D1C4E9&quot; font-size=&quot;8&quot;&gt;Inline / Tap port&lt;/text&gt;
  &lt;!-- Pipeline --&gt;
  &lt;rect x=&quot;160&quot; y=&quot;55&quot; width=&quot;110&quot; height=&quot;60&quot; rx=&quot;6&quot; fill=&quot;#7E57C2&quot; stroke=&quot;#5E35B1&quot;/&gt;
  &lt;text x=&quot;215&quot; y=&quot;78&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;Flow classifier&lt;/text&gt;
  &lt;text x=&quot;215&quot; y=&quot;93&quot; text-anchor=&quot;middle&quot; fill=&quot;#EDE7F6&quot; font-size=&quot;8&quot;&gt;L3/L4 · SNI · App ID&lt;/text&gt;
  &lt;rect x=&quot;300&quot; y=&quot;55&quot; width=&quot;110&quot; height=&quot;60&quot; rx=&quot;6&quot; fill=&quot;#7E57C2&quot; stroke=&quot;#5E35B1&quot;/&gt;
  &lt;text x=&quot;355&quot; y=&quot;78&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;Policy engine&lt;/text&gt;
  &lt;text x=&quot;355&quot; y=&quot;93&quot; text-anchor=&quot;middle&quot; fill=&quot;#EDE7F6&quot; font-size=&quot;8&quot;&gt;Decrypt / Bypass&lt;/text&gt;
  &lt;rect x=&quot;440&quot; y=&quot;45&quot; width=&quot;130&quot; height=&quot;80&quot; rx=&quot;6&quot; fill=&quot;#4527A0&quot; stroke=&quot;#311B92&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;text x=&quot;505&quot; y=&quot;72&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot; font-weight=&quot;bold&quot;&gt;TLS Engine&lt;/text&gt;
  &lt;text x=&quot;505&quot; y=&quot;88&quot; text-anchor=&quot;middle&quot; fill=&quot;#E1BEE7&quot; font-size=&quot;8&quot;&gt;Handshake · Crypto&lt;/text&gt;
  &lt;text x=&quot;505&quot; y=&quot;102&quot; text-anchor=&quot;middle&quot; fill=&quot;#E1BEE7&quot; font-size=&quot;8&quot;&gt;HW accelerator&lt;/text&gt;
  &lt;rect x=&quot;600&quot; y=&quot;55&quot; width=&quot;110&quot; height=&quot;60&quot; rx=&quot;6&quot; fill=&quot;#7E57C2&quot; stroke=&quot;#5E35B1&quot;/&gt;
  &lt;text x=&quot;655&quot; y=&quot;78&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;Cert manager&lt;/text&gt;
  &lt;text x=&quot;655&quot; y=&quot;93&quot; text-anchor=&quot;middle&quot; fill=&quot;#EDE7F6&quot; font-size=&quot;8&quot;&gt;Forge · CA · CRL&lt;/text&gt;
  &lt;rect x=&quot;740&quot; y=&quot;55&quot; width=&quot;110&quot; height=&quot;60&quot; rx=&quot;6&quot; fill=&quot;#7E57C2&quot; stroke=&quot;#5E35B1&quot;/&gt;
  &lt;text x=&quot;795&quot; y=&quot;78&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;Session mgr&lt;/text&gt;
  &lt;text x=&quot;795&quot; y=&quot;93&quot; text-anchor=&quot;middle&quot; fill=&quot;#EDE7F6&quot; font-size=&quot;8&quot;&gt;Table · Timeout&lt;/text&gt;
  &lt;!-- Arrows top --&gt;
  &lt;line x1=&quot;130&quot; y1=&quot;85&quot; x2=&quot;158&quot; y2=&quot;85&quot; stroke=&quot;#4527A0&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;line x1=&quot;270&quot; y1=&quot;85&quot; x2=&quot;298&quot; y2=&quot;85&quot; stroke=&quot;#4527A0&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;line x1=&quot;410&quot; y1=&quot;85&quot; x2=&quot;438&quot; y2=&quot;85&quot; stroke=&quot;#4527A0&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;line x1=&quot;570&quot; y1=&quot;85&quot; x2=&quot;598&quot; y2=&quot;85&quot; stroke=&quot;#4527A0&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;line x1=&quot;710&quot; y1=&quot;85&quot; x2=&quot;738&quot; y2=&quot;85&quot; stroke=&quot;#4527A0&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;!-- DTZ --&gt;
  &lt;rect x=&quot;160&quot; y=&quot;170&quot; width=&quot;580&quot; height=&quot;90&quot; rx=&quot;10&quot; fill=&quot;#FFF8E1&quot; stroke=&quot;#FF8F00&quot; stroke-width=&quot;2&quot; stroke-dasharray=&quot;6,3&quot;/&gt;
  &lt;text x=&quot;450&quot; y=&quot;195&quot; text-anchor=&quot;middle&quot; fill=&quot;#E65100&quot; font-size=&quot;13&quot; font-weight=&quot;bold&quot;&gt;DTZ — Decrypted Traffic Zone (Cleartext)&lt;/text&gt;
  &lt;rect x=&quot;190&quot; y=&quot;210&quot; width=&quot;80&quot; height=&quot;35&quot; rx=&quot;5&quot; fill=&quot;#FFB74D&quot; stroke=&quot;#F57C00&quot;/&gt;
  &lt;text x=&quot;230&quot; y=&quot;232&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;Mirror tap&lt;/text&gt;
  &lt;rect x=&quot;300&quot; y=&quot;210&quot; width=&quot;80&quot; height=&quot;35&quot; rx=&quot;5&quot; fill=&quot;#FFB74D&quot; stroke=&quot;#F57C00&quot;/&gt;
  &lt;text x=&quot;340&quot; y=&quot;232&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;Inline chain&lt;/text&gt;
  &lt;rect x=&quot;410&quot; y=&quot;210&quot; width=&quot;80&quot; height=&quot;35&quot; rx=&quot;5&quot; fill=&quot;#FFB74D&quot; stroke=&quot;#F57C00&quot;/&gt;
  &lt;text x=&quot;450&quot; y=&quot;232&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;ICAP DLP&lt;/text&gt;
  &lt;rect x=&quot;520&quot; y=&quot;210&quot; width=&quot;80&quot; height=&quot;35&quot; rx=&quot;5&quot; fill=&quot;#FFB74D&quot; stroke=&quot;#F57C00&quot;/&gt;
  &lt;text x=&quot;560&quot; y=&quot;232&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;Metadata&lt;/text&gt;
  &lt;rect x=&quot;630&quot; y=&quot;210&quot; width=&quot;80&quot; height=&quot;35&quot; rx=&quot;5&quot; fill=&quot;#FFB74D&quot; stroke=&quot;#F57C00&quot;/&gt;
  &lt;text x=&quot;670&quot; y=&quot;232&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;PCAP store&lt;/text&gt;
  &lt;line x1=&quot;505&quot; y1=&quot;125&quot; x2=&quot;505&quot; y2=&quot;168&quot; stroke=&quot;#FF8F00&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;!-- Re-encrypt --&gt;
  &lt;rect x=&quot;440&quot; y=&quot;290&quot; width=&quot;130&quot; height=&quot;50&quot; rx=&quot;6&quot; fill=&quot;#4527A0&quot; stroke=&quot;#311B92&quot;/&gt;
  &lt;text x=&quot;505&quot; y=&quot;312&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;Re-encrypt engine&lt;/text&gt;
  &lt;text x=&quot;505&quot; y=&quot;328&quot; text-anchor=&quot;middle&quot; fill=&quot;#E1BEE7&quot; font-size=&quot;8&quot;&gt;Dual session restore&lt;/text&gt;
  &lt;line x1=&quot;505&quot; y1=&quot;260&quot; x2=&quot;505&quot; y2=&quot;288&quot; stroke=&quot;#4527A0&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;!-- Egress --&gt;
  &lt;rect x=&quot;740&quot; y=&quot;290&quot; width=&quot;100&quot; height=&quot;50&quot; rx=&quot;6&quot; fill=&quot;#5E35B1&quot; stroke=&quot;#4527A0&quot;/&gt;
  &lt;text x=&quot;790&quot; y=&quot;320&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;Egress I/O&lt;/text&gt;
  &lt;line x1=&quot;570&quot; y1=&quot;315&quot; x2=&quot;738&quot; y2=&quot;315&quot; stroke=&quot;#4527A0&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;!-- Management --&gt;
  &lt;rect x=&quot;30&quot; y=&quot;380&quot; width=&quot;840&quot; height=&quot;70&quot; rx=&quot;8&quot; fill=&quot;#ECEFF1&quot; stroke=&quot;#90A4AE&quot;/&gt;
  &lt;text x=&quot;450&quot; y=&quot;405&quot; text-anchor=&quot;middle&quot; fill=&quot;#37474F&quot; font-size=&quot;12&quot; font-weight=&quot;bold&quot;&gt;Management Plane&lt;/text&gt;
  &lt;text x=&quot;150&quot; y=&quot;430&quot; text-anchor=&quot;middle&quot; fill=&quot;#546E7A&quot; font-size=&quot;10&quot;&gt;Web UI / CLI&lt;/text&gt;
  &lt;text x=&quot;350&quot; y=&quot;430&quot; text-anchor=&quot;middle&quot; fill=&quot;#546E7A&quot; font-size=&quot;10&quot;&gt;REST API&lt;/text&gt;
  &lt;text x=&quot;550&quot; y=&quot;430&quot; text-anchor=&quot;middle&quot; fill=&quot;#546E7A&quot; font-size=&quot;10&quot;&gt;Syslog / SNMP&lt;/text&gt;
  &lt;text x=&quot;750&quot; y=&quot;430&quot; text-anchor=&quot;middle&quot; fill=&quot;#546E7A&quot; font-size=&quot;10&quot;&gt;HA sync channel&lt;/text&gt;
&lt;/svg&gt;

&lt;h3 style=&quot;color:#311B92;&quot;&gt;5.1 DTZ(Decrypted Traffic Zone, 복호화 트래픽 영역)&lt;/h3&gt;
&lt;p&gt;수산아이앤티 ePrism SSL VA, A10 SSLi 등이 사용하는 개념입니다. Appliance 내부 또는 Adjacent segment(인접 세그먼트)에서 Cleartext traffic이 Security tool로 전달됩니다. &lt;strong&gt;Physical isolation(물리적 격리)&lt;/strong&gt;와 &lt;strong&gt;Access control(접근 통제)&lt;/strong&gt;이 필수 — Cleartext leak(유출)은 Critical incident(중대 사고)입니다.&lt;/p&gt;

&lt;!-- ===== 6. 망구성·Deployment Mode ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#4527A0;border-left:5px solid #4527A0;padding-left:12px;&quot;&gt;6. 망구성(Network Topology)과 Deployment Mode&lt;/h2&gt;

&lt;h3 style=&quot;color:#311B92;&quot;&gt;6.1 대표 Perimeter Inline 구성&lt;/h3&gt;
&lt;p&gt;가장 일반적인 Enterprise 배치: Internet Gateway(인터넷 게이트웨이)와 Internal network(내부망) 사이, Firewall 앞 또는 뒤에 SSL 가시화를 Inline으로 설치합니다.&lt;/p&gt;

&lt;svg viewBox=&quot;0 0 900 380&quot; style=&quot;width:100%;max-width:900px;display:block;margin:20px auto;background:#fafafa;border-radius:12px;border:1px solid #ddd;&quot;&gt;
  &lt;defs&gt;&lt;marker id=&quot;netarr&quot; markerWidth=&quot;10&quot; markerHeight=&quot;7&quot; refX=&quot;9&quot; refY=&quot;3.5&quot; orient=&quot;auto&quot;&gt;&lt;polygon points=&quot;0 0,10 3.5,0 7&quot; fill=&quot;#1565C0&quot;/&gt;&lt;/marker&gt;&lt;/defs&gt;
  &lt;text x=&quot;450&quot; y=&quot;25&quot; text-anchor=&quot;middle&quot; font-size=&quot;15&quot; font-weight=&quot;bold&quot; fill=&quot;#37474F&quot;&gt;Enterprise Perimeter — SSL Visibility Inline Chain&lt;/text&gt;
  &lt;ellipse cx=&quot;60&quot; cy=&quot;120&quot; rx=&quot;45&quot; ry=&quot;25&quot; fill=&quot;#1565C0&quot; stroke=&quot;#0D47A1&quot;/&gt;
  &lt;text x=&quot;60&quot; y=&quot;125&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;Internet&lt;/text&gt;
  &lt;rect x=&quot;130&quot; y=&quot;95&quot; width=&quot;90&quot; height=&quot;50&quot; rx=&quot;6&quot; fill=&quot;#78909C&quot; stroke=&quot;#546E7A&quot;/&gt;
  &lt;text x=&quot;175&quot; y=&quot;118&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;Edge Router&lt;/text&gt;
  &lt;rect x=&quot;250&quot; y=&quot;85&quot; width=&quot;110&quot; height=&quot;70&quot; rx=&quot;8&quot; fill=&quot;#4527A0&quot; stroke=&quot;#311B92&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;text x=&quot;305&quot; y=&quot;112&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot; font-weight=&quot;bold&quot;&gt;SSL Visibility&lt;/text&gt;
  &lt;text x=&quot;305&quot; y=&quot;128&quot; text-anchor=&quot;middle&quot; fill=&quot;#E1BEE7&quot; font-size=&quot;8&quot;&gt;Decrypt/Re-encrypt&lt;/text&gt;
  &lt;text x=&quot;305&quot; y=&quot;142&quot; text-anchor=&quot;middle&quot; fill=&quot;#E1BEE7&quot; font-size=&quot;8&quot;&gt;AISVA / SSL INSIDE&lt;/text&gt;
  &lt;rect x=&quot;390&quot; y=&quot;95&quot; width=&quot;80&quot; height=&quot;50&quot; rx=&quot;6&quot; fill=&quot;#C62828&quot; stroke=&quot;#B71C1C&quot;/&gt;
  &lt;text x=&quot;430&quot; y=&quot;118&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;NGFW&lt;/text&gt;
  &lt;rect x=&quot;500&quot; y=&quot;95&quot; width=&quot;70&quot; height=&quot;50&quot; rx=&quot;6&quot; fill=&quot;#C62828&quot; stroke=&quot;#B71C1C&quot;/&gt;
  &lt;text x=&quot;535&quot; y=&quot;118&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;IPS&lt;/text&gt;
  &lt;rect x=&quot;600&quot; y=&quot;95&quot; width=&quot;70&quot; height=&quot;50&quot; rx=&quot;6&quot; fill=&quot;#C62828&quot; stroke=&quot;#B71C1C&quot;/&gt;
  &lt;text x=&quot;635&quot; y=&quot;118&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;Proxy&lt;/text&gt;
  &lt;rect x=&quot;700&quot; y=&quot;80&quot; width=&quot;160&quot; height=&quot;80&quot; rx=&quot;10&quot; fill=&quot;#E8F5E9&quot; stroke=&quot;#2E7D32&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;text x=&quot;780&quot; y=&quot;115&quot; text-anchor=&quot;middle&quot; fill=&quot;#1B5E20&quot; font-size=&quot;11&quot; font-weight=&quot;bold&quot;&gt;Internal Network&lt;/text&gt;
  &lt;text x=&quot;780&quot; y=&quot;135&quot; text-anchor=&quot;middle&quot; fill=&quot;#388E3C&quot; font-size=&quot;9&quot;&gt;Users · Servers · AD&lt;/text&gt;
  &lt;line x1=&quot;105&quot; y1=&quot;120&quot; x2=&quot;128&quot; y2=&quot;120&quot; stroke=&quot;#1565C0&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#netarr)&quot;/&gt;
  &lt;line x1=&quot;220&quot; y1=&quot;120&quot; x2=&quot;248&quot; y2=&quot;120&quot; stroke=&quot;#1565C0&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#netarr)&quot;/&gt;
  &lt;line x1=&quot;360&quot; y1=&quot;120&quot; x2=&quot;388&quot; y2=&quot;120&quot; stroke=&quot;#1565C0&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#netarr)&quot;/&gt;
  &lt;line x1=&quot;470&quot; y1=&quot;120&quot; x2=&quot;498&quot; y2=&quot;120&quot; stroke=&quot;#1565C0&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#netarr)&quot;/&gt;
  &lt;line x1=&quot;570&quot; y1=&quot;120&quot; x2=&quot;598&quot; y2=&quot;120&quot; stroke=&quot;#1565C0&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#netarr)&quot;/&gt;
  &lt;line x1=&quot;670&quot; y1=&quot;120&quot; x2=&quot;698&quot; y2=&quot;120&quot; stroke=&quot;#1565C0&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#netarr)&quot;/&gt;
  &lt;!-- Bypass TAP --&gt;
  &lt;rect x=&quot;240&quot; y=&quot;200&quot; width=&quot;130&quot; height=&quot;45&quot; rx=&quot;6&quot; fill=&quot;#FF8F00&quot; stroke=&quot;#E65100&quot;/&gt;
  &lt;text x=&quot;305&quot; y=&quot;220&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;External Bypass TAP&lt;/text&gt;
  &lt;text x=&quot;305&quot; y=&quot;235&quot; text-anchor=&quot;middle&quot; fill=&quot;#FFE0B2&quot; font-size=&quot;8&quot;&gt;Fail-open on appliance failure&lt;/text&gt;
  &lt;line x1=&quot;305&quot; y1=&quot;155&quot; x2=&quot;305&quot; y2=&quot;198&quot; stroke=&quot;#FF8F00&quot; stroke-width=&quot;1.5&quot; stroke-dasharray=&quot;4,3&quot;/&gt;
  &lt;!-- Passive mirror --&gt;
  &lt;rect x=&quot;390&quot; y=&quot;200&quot; width=&quot;280&quot; height=&quot;55&quot; rx=&quot;8&quot; fill=&quot;#FFF3E0&quot; stroke=&quot;#FF9800&quot;/&gt;
  &lt;text x=&quot;530&quot; y=&quot;222&quot; text-anchor=&quot;middle&quot; fill=&quot;#E65100&quot; font-size=&quot;10&quot; font-weight=&quot;bold&quot;&gt;Passive Monitor Zone (Out-of-Band)&lt;/text&gt;
  &lt;text x=&quot;530&quot; y=&quot;242&quot; text-anchor=&quot;middle&quot; fill=&quot;#F57C00&quot; font-size=&quot;9&quot;&gt;SIEM · NDR · Forensic PCAP · Sandbox (Mirror port from SSL VA)&lt;/text&gt;
  &lt;line x1=&quot;305&quot; y1=&quot;155&quot; x2=&quot;450&quot; y2=&quot;198&quot; stroke=&quot;#FF9800&quot; stroke-width=&quot;1&quot; stroke-dasharray=&quot;3,2&quot;/&gt;
  &lt;!-- CA --&gt;
  &lt;rect x=&quot;130&quot; y=&quot;290&quot; width=&quot;200&quot; height=&quot;55&quot; rx=&quot;8&quot; fill=&quot;#E3F2FD&quot; stroke=&quot;#1565C0&quot;/&gt;
  &lt;text x=&quot;230&quot; y=&quot;315&quot; text-anchor=&quot;middle&quot; fill=&quot;#0D47A1&quot; font-size=&quot;10&quot; font-weight=&quot;bold&quot;&gt;Enterprise PKI(Public Key Infrastructure)&lt;/text&gt;
  &lt;text x=&quot;230&quot; y=&quot;332&quot; text-anchor=&quot;middle&quot; fill=&quot;#1976D2&quot; font-size=&quot;9&quot;&gt;Root CA → Client GPO(Group Policy) / MDM(Mobile Device Management) 배포&lt;/text&gt;
  &lt;line x1=&quot;230&quot; y1=&quot;290&quot; x2=&quot;280&quot; y2=&quot;155&quot; stroke=&quot;#1565C0&quot; stroke-width=&quot;1&quot; stroke-dasharray=&quot;3,2&quot;/&gt;
  &lt;text x=&quot;450&quot; y=&quot;365&quot; text-anchor=&quot;middle&quot; fill=&quot;#666&quot; font-size=&quot;10&quot;&gt;Traffic flow: Internet → SSL decrypt → FW/IPS inspect cleartext → Internal (re-encrypted to origin if outbound)&lt;/text&gt;
&lt;/svg&gt;

&lt;h3 style=&quot;color:#311B92;&quot;&gt;6.2 Deployment Mode 4종 (Broadcom SSL Visibility 기준)&lt;/h3&gt;
&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;font-size:0.92em;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#311B92;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:8px;border:1px solid #1a0f5c;&quot;&gt;Mode&lt;/th&gt;
      &lt;th style=&quot;padding:8px;border:1px solid #1a0f5c;&quot;&gt;SSL VA 위치&lt;/th&gt;
      &lt;th style=&quot;padding:8px;border:1px solid #1a0f5c;&quot;&gt;Security tool&lt;/th&gt;
      &lt;th style=&quot;padding:8px;border:1px solid #1a0f5c;&quot;&gt;Blocking&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;font-weight:bold;&quot;&gt;Active-Inline&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Traffic path inline&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;IPS/NGFW active — traffic return&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;가능 — Malware block&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#ede7f6;&quot;&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;font-weight:bold;&quot;&gt;Passive-Inline&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Traffic path inline&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Passive analyzer — copy only&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;불가 — Detect only&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;font-weight:bold;&quot;&gt;Active-Out-of-Band&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;TAP mirror or SPAN&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;Active IPS on copy&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;제한적 (async block)&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#ede7f6;&quot;&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;font-weight:bold;&quot;&gt;Passive-Out-of-Band&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;TAP/SPAN&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;SIEM, NDR(Network Detection and Response)&lt;/td&gt;&lt;td style=&quot;padding:7px;border:1px solid #ddd;&quot;&gt;불가 — Forensics&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h3 style=&quot;color:#311B92;&quot;&gt;6.3 Forward vs Reverse Proxy 배치&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Forward(Outbound)&lt;/strong&gt; — Internal user → Internet. User traffic decrypt. AXGATE SSL INSIDE, MONITORAPP AISVA 주력.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Reverse(Inbound)&lt;/strong&gt; — Internet → Internal server. Server front-end SSL termination + inspection. WAF 연동 Case.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Bidirectional(양방향)&lt;/strong&gt; — ePrism SSL VA 등 Dual direction 지원.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 style=&quot;color:#311B92;&quot;&gt;6.4 HA(High Availability) 망구성&lt;/h3&gt;
&lt;svg viewBox=&quot;0 0 700 200&quot; style=&quot;width:100%;max-width:700px;display:block;margin:16px auto;background:#fafafa;border-radius:10px;border:1px solid #ddd;&quot;&gt;
  &lt;text x=&quot;350&quot; y=&quot;22&quot; text-anchor=&quot;middle&quot; font-size=&quot;13&quot; font-weight=&quot;bold&quot; fill=&quot;#37474F&quot;&gt;Active-Standby + External Bypass&lt;/text&gt;
  &lt;rect x=&quot;280&quot; y=&quot;40&quot; width=&quot;140&quot; height=&quot;35&quot; rx=&quot;5&quot; fill=&quot;#FF8F00&quot; stroke=&quot;#E65100&quot;/&gt;
  &lt;text x=&quot;350&quot; y=&quot;62&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;Bypass TAP (n+1 path)&lt;/text&gt;
  &lt;rect x=&quot;120&quot; y=&quot;100&quot; width=&quot;120&quot; height=&quot;50&quot; rx=&quot;6&quot; fill=&quot;#4527A0&quot; stroke=&quot;#311B92&quot;/&gt;
  &lt;text x=&quot;180&quot; y=&quot;122&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;SSL VA Active&lt;/text&gt;
  &lt;text x=&quot;180&quot; y=&quot;138&quot; text-anchor=&quot;middle&quot; fill=&quot;#E1BEE7&quot; font-size=&quot;8&quot;&gt;Session sync&lt;/text&gt;
  &lt;rect x=&quot;460&quot; y=&quot;100&quot; width=&quot;120&quot; height=&quot;50&quot; rx=&quot;6&quot; fill=&quot;#9575CD&quot; stroke=&quot;#7E57C2&quot;/&gt;
  &lt;text x=&quot;520&quot; y=&quot;122&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;SSL VA Standby&lt;/text&gt;
  &lt;text x=&quot;520&quot; y=&quot;138&quot; text-anchor=&quot;middle&quot; fill=&quot;#EDE7F6&quot; font-size=&quot;8&quot;&gt;Hot standby&lt;/text&gt;
  &lt;line x1=&quot;350&quot; y1=&quot;75&quot; x2=&quot;180&quot; y2=&quot;98&quot; stroke=&quot;#4527A0&quot; stroke-width=&quot;1.5&quot;/&gt;
  &lt;line x1=&quot;350&quot; y1=&quot;75&quot; x2=&quot;520&quot; y2=&quot;98&quot; stroke=&quot;#7E57C2&quot; stroke-width=&quot;1.5&quot;/&gt;
  &lt;line x1=&quot;240&quot; y1=&quot;125&quot; x2=&quot;458&quot; y2=&quot;125&quot; stroke=&quot;#B39DDB&quot; stroke-width=&quot;1&quot; stroke-dasharray=&quot;4,3&quot;/&gt;
  &lt;text x=&quot;350&quot; y=&quot;185&quot; text-anchor=&quot;middle&quot; fill=&quot;#666&quot; font-size=&quot;9&quot;&gt;Failure → Bypass TAP forwards encrypted traffic (fail-open) OR block (fail-close, high security)&lt;/text&gt;
&lt;/svg&gt;

&lt;!-- ===== 7. 시장·선도 기업 ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#4527A0;border-left:5px solid #4527A0;padding-left:12px;&quot;&gt;7. 시장, 선도 기업, 미래 전망&lt;/h2&gt;

&lt;h3 style=&quot;color:#311B92;&quot;&gt;7.1 Global Vendor&lt;/h3&gt;
&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#4527A0;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #311B92;&quot;&gt;Vendor&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #311B92;&quot;&gt;Product&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #311B92;&quot;&gt;특징&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Broadcom (Symantec)&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;SSL Visibility Appliance&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Enterprise ETM(Encrypted Traffic Management) 선두, TLS 1.3, 100 cipher suite&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#ede7f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;A10 Networks&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Thunder SSLi&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;High-performance ADC( Application Delivery Controller) 기반, ICAP DLP&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;F5 Networks&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;SSL Orchestrator&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Dynamic service chain, iRules policy, Cloud·Hardware&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#ede7f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Gigamon&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;GigaSMART SSL/TLS Decryption&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Visibility node + Packet broker 통합&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Niagara Networks&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Packetron/ePacketron&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;NPB(Network Packet Broker) + L7 decryption&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#ede7f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Palo Alto Networks&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;NGFW Decryption / Panorama&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Integrated decryption, SSL forward proxy&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h3 style=&quot;color:#311B92;&quot;&gt;7.2 국내 Vendor&lt;/h3&gt;
&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#311B92;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #1a0f5c;&quot;&gt;Vendor&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #1a0f5c;&quot;&gt;Product&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #1a0f5c;&quot;&gt;Position&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;AXGATE(엑스게이트)&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;SSL INSIDE&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;2026 국정원 'SSL 가시화 제품' 보안기능확인서 업계 최초. 공공·금융 레퍼런스&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#ede7f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;MONITORAPP(모니터랩)&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;AISVA&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Full transparent proxy, SSL accelerator card, NGFW/IPS/WAF/DLP 연동&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Soosan INT(수산아이앤티)&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;ePrism SSL VA&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;TST engine, DTZ, Inline+Mirror dual port, Anti-bypass&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#ede7f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;WINS(윈스)&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;SNIPER SSL Decryption&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;통합 Network security platform 내 SSL module&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Penta Security(펜타시큐리티)&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;WAPPLES SA&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;WAF 영역 SSL termination·inspection (전용 SSL VA와 positioning 차별)&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h3 style=&quot;color:#311B92;&quot;&gt;7.3 시장·미래&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Market growth&lt;/strong&gt; — Encrypted traffic 비율 증가 → SSLi market CAGR 10%+ (2024~2030 추정)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Regulation(규제)&lt;/strong&gt; — 국정원·ISMS-P(Information Security Management System) — 공공·CII(Critical Information Infrastructure) 암호화 Traffic inspection 의무화&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Privacy tension(긴장)&lt;/strong&gt; — GDPR(General Data Protection Regulation), 개인정보보호법과 Decryption policy 충돌 → Category-based selective decrypt&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Future tech&lt;/strong&gt; — ECH 대응, QUIC/HTTP3 full inspect, Cloud SSE(Secure Service Edge) 통합, AI-based encrypted threat detection&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Alternative&lt;/strong&gt; — Endpoint-based inspection(EDR), Zero Trust Network Access — Network MITM 의존 감소 Trend 병존&lt;/li&gt;
&lt;/ul&gt;

&lt;p style=&quot;background:#FFF3E0;padding:14px;border-radius:8px;border-left:4px solid #E65100;font-size:0.95em;&quot;&gt;&lt;strong&gt;Legal·Ethics note:&lt;/strong&gt; SSL 가시화는 Employee·User 통신 Decryption에 해당합니다. 사전 고지, 내부 Policy 수립, Privacy impact assessment(영향 평가)가 선행되어야 합니다. Banking·Medical category Exclude는 Compliance 필수입니다.&lt;/p&gt;

&lt;!-- ===== 용어 설명 ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:50px;color:#4527A0;border-left:5px solid #4527A0;padding-left:12px;&quot;&gt;용어 설명(Glossary)&lt;/h2&gt;

&lt;div style=&quot;background:#ede7f6;padding:20px;border-radius:10px;border:1px solid #b39ddb;&quot;&gt;

&lt;p&gt;&lt;strong&gt;SSL(Secure Sockets Layer, 보안 소켓 계층)&lt;/strong&gt;&lt;br&gt;
Netscape이 개발한 Encryption protocol. 현재는 TLS로 대체되었으나 Industry에서 &quot;SSL&quot;과 &quot;TLS&quot;를 혼용. &quot;SSL 가시화&quot; = TLS traffic visibility.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TLS(Transport Layer Security, 전송 계층 보안)&lt;/strong&gt;&lt;br&gt;
RFC 8446(TLS 1.3) 등으로 표준화된 Cryptographic protocol. HTTP, SMTP, IMAP 등 Application layer 위에서 Confidentiality(기밀성) 제공.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SSL Visibility / SSLi(SSL Inspection)&lt;/strong&gt;&lt;br&gt;
Encrypted traffic을 Decrypt하여 Security tool이 Inspect할 수 있게 하는 Technology·Product category. Break-and-inspect, SSL bump(Proxy terminology)와 동일 개념.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DTZ(Decrypted Traffic Zone, 복호화 트래픽 영역)&lt;/strong&gt;&lt;br&gt;
Cleartext traffic이 흐르는 Logical·Physical segment. Strict access control과 Monitoring 필수.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MITM(Man-in-the-Middle, 중간자 공격)&lt;/strong&gt;&lt;br&gt;
Product context에서는 Attack이 아니라 &lt;strong&gt;Authorized interception(승인된 중개)&lt;/strong&gt; — Enterprise policy 하의 Dual TLS termination.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SNI(Server Name Indication, 서버 이름 표시)&lt;/strong&gt;&lt;br&gt;
TLS ClientHello extension. Client가 접속할 Hostname을 plaintext로 전달. Policy-based decryption routing의 핵심 field.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enterprise Root CA(Certificate Authority, 인증서 기관)&lt;/strong&gt;&lt;br&gt;
Organization 내부 PKI root. Client trust store에 배포되어 SSL Appliance forged certificate를 Valid로 인식.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PFS(Perfect Forward Secrecy, 완전 순방향 비밀성)&lt;/strong&gt;&lt;br&gt;
Ephemeral key exchange(DHE, ECDHE). Session key 유출 시 과거 traffic 복호화 불가. Passive tap decryption 불가능하게 만듦.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bypass TAP&lt;/strong&gt;&lt;br&gt;
Inline appliance 장애 시 Traffic을 우회시키는 Hardware switch. Fail-open(가용성) vs fail-close(보안) Policy 선택.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ICAP(Internet Content Adaptation Protocol, 인터넷 콘텐츠 적응 프로토콜)&lt;/strong&gt;&lt;br&gt;
Proxy와 DLP·Antivirus server 간 Content inspection protocol. SSL VA → ICAP → DLP chain에 사용.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ECH(Encrypted Client Hello, 암호화된 클라이언트 헬로)&lt;/strong&gt;&lt;br&gt;
TLS extension. SNI·ALPN(Application-Layer Protocol Negotiation)까지 Encrypt. SSL visibility Policy 우회 가능성 — Vendor 대응 기술 경쟁 중.&lt;/p&gt;

&lt;/div&gt;

&lt;p style=&quot;margin-top:24px;padding:16px;background:#E8EAF6;border-radius:8px;border:1px solid #9FA8DA;&quot;&gt;&lt;strong&gt;Related document:&lt;/strong&gt; 직접 구현을 위한 Architecture·Module·망구성·PKI 설계는 companion 문서 &lt;strong&gt;ssl-visibility-design.html&lt;/strong&gt;을 참고하세요.&lt;/p&gt;

&lt;p style=&quot;margin-top:30px;font-size:0.85em;color:#999;text-align:center;&quot;&gt;— SSL Visibility Study · Tistory HTML paste ready —&lt;/p&gt;

&lt;/div&gt;



&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Security</category>
      <author>AndrewJ</author>
      <guid isPermaLink="true">https://andrewpage.tistory.com/505</guid>
      <comments>https://andrewpage.tistory.com/505#entry505comment</comments>
      <pubDate>Tue, 11 Aug 2026 17:03:09 +0900</pubDate>
    </item>
    <item>
      <title>Wine Study: 역사, 종류, Terroir, Champagne, Sparkling Wine</title>
      <link>https://andrewpage.tistory.com/504</link>
      <description>&lt;!-- Tistory HTML 붙여넣기용 - Wine Study --&gt;
&lt;div style=&quot;max-width:900px;margin:0 auto;font-family:'Noto Sans KR',sans-serif;line-height:1.8;color:#2c2c2c;&quot;&gt;

&lt;!-- ===== 1. 태동 배경과 역사 ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#722F37;border-left:5px solid #722F37;padding-left:12px;&quot;&gt;1. Wine의 태동 배경(Motive)과 역사&lt;/h2&gt;

&lt;h3 style=&quot;color:#4A1520;&quot;&gt;1.1 Motive: 왜 Wine이 탄생했는가?&lt;/h3&gt;
&lt;p&gt;Wine의 탄생 Motive(동기)는 크게 세 가지로 요약됩니다.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Preservation(보존)&lt;/strong&gt; — Grape juice는 Fermentation(발효)을 통해 Alcohol(알코올)이 생성되며, Microorganism(미생물) 증식을 억제. Pre-refrigeration era의 Food preservation technology.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Ritual &amp;amp; Religion(의식·종교)&lt;/strong&gt; — Ancient Greece, Rome, Christianity에서 Wine은 Sacrifice(제사)와 Celebration(축하)의 Medium.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Social bonding(사회적 연결)&lt;/strong&gt; — Symposium (Ancient Greece), Banquet(연회)에서 Conversation과 Diplomacy의 Catalyst.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 style=&quot;color:#4A1520;&quot;&gt;1.2 역사 Timeline&lt;/h3&gt;
&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;font-size:0.95em;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#722F37;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a2530;&quot;&gt;시기&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a2530;&quot;&gt;사건&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a2530;&quot;&gt;의미&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;BC 6000~&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Caucasus region Grape cultivation&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Wine의 Archaeological origin&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;BC 2000~&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Ancient Egypt, Mesopotamia Wine trade&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Commercial Wine 시작&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;BC 800~&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Ancient Greece Wine culture&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Dionysus(디오니소스) worship, Symposium culture&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;BC 200~AD 400&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Roman Empire Expansion&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Gaul, Hispania Vineyard 확산&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Middle Ages&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Monastery(수도원) Winemaking&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Burgundy, Champagne 등 Terroir knowledge 축적&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;1855&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Bordeaux Classification&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Grand Cru(그랑 크뤼) 등급 System 확립&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;1976&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Judgment of Paris&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;California Wine가 French Wine을 Blind tasting에서 defeat&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;2015&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Champagne UNESCO World Heritage&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Champagne Hillsides, Houses and Cellars 등재&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;figure style=&quot;text-align:center;margin:24px 0;&quot;&gt;
  &lt;img src=&quot;https://upload.wikimedia.org/wikipedia/commons/c/c0/Red_Wine_Glass.jpg&quot; alt=&quot;Red wine glass&quot; style=&quot;max-width:100%;border-radius:8px;&quot; width=&quot;428&quot; height=&quot;800&quot;&gt;
  &lt;figcaption style=&quot;font-size:0.9em;color:#777;margin-top:8px;&quot;&gt;Red Wine — Fermented grape juice, thousands of years of culture (Wikimedia Commons)&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;!-- ===== 2. Wine 종류 ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#722F37;border-left:5px solid #722F37;padding-left:12px;&quot;&gt;2. Wine 종류(Classification)&lt;/h2&gt;

&lt;h3 style=&quot;color:#4A1520;&quot;&gt;2.1 Color 기준 Classification&lt;/h3&gt;
&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#4A1520;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #3a1018;&quot;&gt;Type&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #3a1018;&quot;&gt;Production&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #3a1018;&quot;&gt;Flavor profile&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #3a1018;&quot;&gt;대표 예&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Red Wine(적색 Wine)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Skin contact Fermentation&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Tannin(타닌), Dark fruit, Earthy&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Cabernet Sauvignon, Pinot Noir, Nebbiolo&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;White Wine(백색 Wine)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Skin 분리 후 Fermentation&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Crisp acidity, Citrus, Floral&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Chardonnay, Sauvignon Blanc, Riesling&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Rosé Wine(로제)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Short skin contact&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Light, Fruity, Refreshing&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Provence Rosé, Sangiovese Rosé&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Sparkling Wine(스파클링)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Second fermentation → CO₂&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Bubbles, High acidity, Toasty&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Champagne, Prosecco, Cava&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Fortified Wine(주정 강화)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Distilled spirit 추가&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Sweet, High alcohol&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Port, Sherry, Madeira&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Orange Wine(오렌지 Wine)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;White grape + Extended skin contact&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Tannic, Complex, Amber color&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Georgian Qvevri Wine&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h3 style=&quot;color:#4A1520;&quot;&gt;2.2 주요 Grape Variety(포도 품종)&lt;/h3&gt;
&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#722F37;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a2530;&quot;&gt;품종&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a2530;&quot;&gt;Color&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a2530;&quot;&gt;주요 산지&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a2530;&quot;&gt;특징&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Cabernet Sauvignon&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Red&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Bordeaux, Napa Valley, Chile&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Blackcurrant, Cedar, High tannin. Aging potential 우수.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Pinot Noir&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Red&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Burgundy, Oregon, New Zealand&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Red cherry, Earth, Delicate. Terroir expression 극대화.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Merlot&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Red&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Bordeaux Right Bank, California&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Plum, Soft tannin. Approachable style.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Syrah/Shiraz&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Red&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Rhône, Barossa Valley(Australia)&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Pepper, Dark berry, Full body.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Nebbiolo&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Red&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Piedmont(Barolo, Barbaresco)&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Tar, Rose, High tannin &amp;amp; acidity. &quot;King of wines&quot;.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Chardonnay&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;White&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Burgundy, California, Australia&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Versatile. Unoaked: Citrus. Oaked: Butter, Vanilla.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Sauvignon Blanc&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;White&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Loire, Marlborough(NZ)&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Gooseberry, Grass, High acidity.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Riesling&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;White&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Germany, Alsace, Australia&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Aromatic, Mineral, Dry to Sweet spectrum.&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;figure style=&quot;text-align:center;margin:24px 0;&quot;&gt;
  &lt;img src=&quot;https://upload.wikimedia.org/wikipedia/commons/3/3f/Pinot_Noir_Grapes_Ripening.jpg&quot; alt=&quot;Pinot Noir grapes&quot; style=&quot;max-width:100%;border-radius:8px;&quot; width=&quot;605&quot; height=&quot;453&quot;&gt;
  &lt;figcaption style=&quot;font-size:0.9em;color:#777;margin-top:8px;&quot;&gt;Pinot Noir grapes — Terroir-sensitive variety (Wikimedia Commons)&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;!-- ===== 3. 산지 ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#722F37;border-left:5px solid #722F37;padding-left:12px;&quot;&gt;3. 주요 Wine 산지(Region)와 Terroir&lt;/h2&gt;

&lt;h3 style=&quot;color:#4A1520;&quot;&gt;3.1 Terroir(떼루아)란?&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Terroir&lt;/strong&gt;는 French term으로, 특정 Wine region의 &lt;strong&gt;Soil(토양), Climate(기후), Topography(지형), Human tradition(인간의 전통)&lt;/strong&gt;이 Grape와 Wine flavor에 미치는 Unique combination을 의미합니다. Same grape variety도 Terroir에 따라 완전히 다른 Wine이 됩니다.&lt;/p&gt;

&lt;!-- Terroir Diagram SVG --&gt;
&lt;svg viewBox=&quot;0 0 860 340&quot; style=&quot;width:100%;max-width:860px;display:block;margin:20px auto;background:#fdf5f6;border-radius:12px;border:1px solid #e8d0d4;&quot;&gt;
  &lt;text x=&quot;430&quot; y=&quot;30&quot; text-anchor=&quot;middle&quot; font-size=&quot;16&quot; font-weight=&quot;bold&quot; fill=&quot;#4A1520&quot;&gt;Terroir Components — Wine Flavor Architecture&lt;/text&gt;
  &lt;!-- center circle --&gt;
  &lt;circle cx=&quot;430&quot; cy=&quot;190&quot; r=&quot;70&quot; fill=&quot;#722F37&quot; opacity=&quot;0.9&quot;/&gt;
  &lt;text x=&quot;430&quot; y=&quot;185&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;14&quot; font-weight=&quot;bold&quot;&gt;WINE&lt;/text&gt;
  &lt;text x=&quot;430&quot; y=&quot;205&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot;&gt;Flavor Identity&lt;/text&gt;
  &lt;!-- surrounding elements --&gt;
  &lt;rect x=&quot;60&quot; y=&quot;80&quot; width=&quot;140&quot; height=&quot;55&quot; rx=&quot;10&quot; fill=&quot;#8B4513&quot; stroke=&quot;#722F37&quot;/&gt;
  &lt;text x=&quot;130&quot; y=&quot;105&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;12&quot;&gt;Soil(토양)&lt;/text&gt;
  &lt;text x=&quot;130&quot; y=&quot;122&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;Chalk, Clay, Gravel&lt;/text&gt;
  &lt;rect x=&quot;660&quot; y=&quot;80&quot; width=&quot;140&quot; height=&quot;55&quot; rx=&quot;10&quot; fill=&quot;#4682B4&quot; stroke=&quot;#722F37&quot;/&gt;
  &lt;text x=&quot;730&quot; y=&quot;105&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;12&quot;&gt;Climate(기후)&lt;/text&gt;
  &lt;text x=&quot;730&quot; y=&quot;122&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;Temperature, Rainfall&lt;/text&gt;
  &lt;rect x=&quot;60&quot; y=&quot;250&quot; width=&quot;140&quot; height=&quot;55&quot; rx=&quot;10&quot; fill=&quot;#556B2F&quot; stroke=&quot;#722F37&quot;/&gt;
  &lt;text x=&quot;130&quot; y=&quot;275&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;12&quot;&gt;Topography(지형)&lt;/text&gt;
  &lt;text x=&quot;130&quot; y=&quot;292&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;Slope, Altitude, Aspect&lt;/text&gt;
  &lt;rect x=&quot;660&quot; y=&quot;250&quot; width=&quot;140&quot; height=&quot;55&quot; rx=&quot;10&quot; fill=&quot;#9370DB&quot; stroke=&quot;#722F37&quot;/&gt;
  &lt;text x=&quot;730&quot; y=&quot;275&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;12&quot;&gt;Human(인간)&lt;/text&gt;
  &lt;text x=&quot;730&quot; y=&quot;292&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;Tradition, Winemaking&lt;/text&gt;
  &lt;!-- lines --&gt;
  &lt;line x1=&quot;200&quot; y1=&quot;107&quot; x2=&quot;360&quot; y2=&quot;160&quot; stroke=&quot;#722F37&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;line x1=&quot;660&quot; y1=&quot;107&quot; x2=&quot;500&quot; y2=&quot;160&quot; stroke=&quot;#722F37&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;line x1=&quot;200&quot; y1=&quot;277&quot; x2=&quot;360&quot; y2=&quot;220&quot; stroke=&quot;#722F37&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;line x1=&quot;660&quot; y1=&quot;277&quot; x2=&quot;500&quot; y2=&quot;220&quot; stroke=&quot;#722F37&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;text x=&quot;430&quot; y=&quot;330&quot; text-anchor=&quot;middle&quot; font-size=&quot;11&quot; fill=&quot;#666&quot;&gt;Example: Champagne chalk soil → High acidity → Ideal for Sparkling Wine&lt;/text&gt;
&lt;/svg&gt;

&lt;h3 style=&quot;color:#4A1520;&quot;&gt;3.2 Old World vs New World&lt;/h3&gt;
&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#4A1520;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #3a1018;&quot;&gt;구분&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #3a1018;&quot;&gt;Old World(구세계)&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #3a1018;&quot;&gt;New World(신세계)&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Region&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;France, Italy, Spain, Germany&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;USA, Australia, Chile, Argentina, NZ, S. Africa&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Labeling&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Region/Terroir 중심 (e.g., Chablis, Barolo)&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Grape variety 중심 (e.g., Napa Cabernet)&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Regulation&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Strict AOC/AOP/DOC system&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Flexible, Winemaker creativity&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Style&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Elegant, Earthy, Lower alcohol&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Fruity, Bold, Higher alcohol&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h3 style=&quot;color:#4A1520;&quot;&gt;3.3 주요 Wine Region Map&lt;/h3&gt;
&lt;figure style=&quot;text-align:center;margin:24px 0;&quot;&gt;
  &lt;img src=&quot;https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/Map_of_France%27s_wines-regions_and_appelations-fr.svg/330px-Map_of_France%27s_wines-regions_and_appelations-fr.svg.png&quot; alt=&quot;France wine regions map&quot; style=&quot;max-width:100%;border:1px solid #ddd;border-radius:8px;&quot; width=&quot;330&quot; height=&quot;345&quot;&gt;
  &lt;figcaption style=&quot;font-size:0.9em;color:#777;margin-top:8px;&quot;&gt;France Wine Regions — Bordeaux, Burgundy, Champagne, Rhône, Loire, Alsace, Provence (Wikimedia Commons)&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;font-size:0.93em;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#722F37;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a2530;&quot;&gt;Country&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a2530;&quot;&gt;주요 Region&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a2530;&quot;&gt;대표 Wine&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;France&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Bordeaux, Burgundy, Champagne, Rhône, Loire, Alsace&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Bordeaux blend, Burgundy Pinot, Champagne&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Italy&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Piedmont, Tuscany, Veneto, Sicily&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Barolo, Chianti, Amarone, Prosecco&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Spain&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Rioja, Ribera del Duero, Priorat, Penedès&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Tempranillo, Cava&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Germany&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Mosel, Rheingau, Pfalz&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Riesling (Dry~Eiswein)&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;USA&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Napa Valley, Sonoma, Willamette, Central Coast&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Napa Cabernet, Oregon Pinot Noir&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Australia&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Barossa, Margaret River, Hunter Valley&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Shiraz, Chardonnay&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Chile&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Maipo, Colchagua, Casablanca&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Carménère, Cabernet Sauvignon&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Argentina&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Mendoza, Salta&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Malbec (High altitude Terroir)&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;New Zealand&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Marlborough, Central Otago&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Sauvignon Blanc, Pinot Noir&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;!-- ===== 4. Vintage ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#722F37;border-left:5px solid #722F37;padding-left:12px;&quot;&gt;4. Vintage(빈티지)와 Aging&lt;/h2&gt;

&lt;h3 style=&quot;color:#4A1520;&quot;&gt;4.1 Vintage란?&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Vintage(빈티지)&lt;/strong&gt;는 Grape harvest(수확) Year(연도)를 의미합니다. Climate condition이 Grape quality에 직접 영향을 미치므로, Same region·Same producer라도 Vintage year에 따라 Wine quality와 Aging potential이 크게 달라집니다.&lt;/p&gt;

&lt;h3 style=&quot;color:#4A1520;&quot;&gt;4.2 Vintage vs Non-Vintage&lt;/h3&gt;
&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#4A1520;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #3a1018;&quot;&gt;구분&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #3a1018;&quot;&gt;Vintage Wine&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #3a1018;&quot;&gt;Non-Vintage(NV)&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Grape source&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Single harvest year&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Multiple years blend&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Purpose&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Specific year Terroir expression&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Consistent house style&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Aging&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Longer aging potential&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Drink young, Consistent&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Price&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Premium (great years)&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Accessible, Everyday&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Example&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;2015 Bordeaux, 2012 Barolo&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Moët NV Champagne, House blend Red&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h3 style=&quot;color:#4A1520;&quot;&gt;4.3 Wine Production Flow&lt;/h3&gt;
&lt;svg viewBox=&quot;0 0 860 280&quot; style=&quot;width:100%;max-width:860px;display:block;margin:20px auto;background:#fdf5f6;border-radius:12px;border:1px solid #e8d0d4;&quot;&gt;
  &lt;defs&gt;&lt;marker id=&quot;warr&quot; markerWidth=&quot;10&quot; markerHeight=&quot;7&quot; refX=&quot;9&quot; refY=&quot;3.5&quot; orient=&quot;auto&quot;&gt;&lt;polygon points=&quot;0 0, 10 3.5, 0 7&quot; fill=&quot;#722F37&quot;/&gt;&lt;/marker&gt;&lt;/defs&gt;
  &lt;text x=&quot;430&quot; y=&quot;25&quot; text-anchor=&quot;middle&quot; font-size=&quot;15&quot; font-weight=&quot;bold&quot; fill=&quot;#4A1520&quot;&gt;Still Wine Production Process&lt;/text&gt;
  &lt;rect x=&quot;15&quot; y=&quot;55&quot; width=&quot;100&quot; height=&quot;45&quot; rx=&quot;6&quot; fill=&quot;#556B2F&quot;/&gt;&lt;text x=&quot;65&quot; y=&quot;82&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot;&gt;Harvest&lt;/text&gt;
  &lt;rect x=&quot;130&quot; y=&quot;55&quot; width=&quot;100&quot; height=&quot;45&quot; rx=&quot;6&quot; fill=&quot;#6B8E23&quot;/&gt;&lt;text x=&quot;180&quot; y=&quot;82&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot;&gt;Crushing&lt;/text&gt;
  &lt;rect x=&quot;245&quot; y=&quot;55&quot; width=&quot;100&quot; height=&quot;45&quot; rx=&quot;6&quot; fill=&quot;#8B4513&quot;/&gt;&lt;text x=&quot;295&quot; y=&quot;75&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;Fermentation&lt;/text&gt;&lt;text x=&quot;295&quot; y=&quot;90&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;(Primary)&lt;/text&gt;
  &lt;rect x=&quot;360&quot; y=&quot;55&quot; width=&quot;100&quot; height=&quot;45&quot; rx=&quot;6&quot; fill=&quot;#722F37&quot;/&gt;&lt;text x=&quot;410&quot; y=&quot;82&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot;&gt;Aging&lt;/text&gt;
  &lt;rect x=&quot;475&quot; y=&quot;55&quot; width=&quot;100&quot; height=&quot;45&quot; rx=&quot;6&quot; fill=&quot;#4A1520&quot;/&gt;&lt;text x=&quot;525&quot; y=&quot;82&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot;&gt;Blending&lt;/text&gt;
  &lt;rect x=&quot;590&quot; y=&quot;55&quot; width=&quot;100&quot; height=&quot;45&quot; rx=&quot;6&quot; fill=&quot;#722F37&quot;/&gt;&lt;text x=&quot;640&quot; y=&quot;82&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot;&gt;Fining&lt;/text&gt;
  &lt;rect x=&quot;705&quot; y=&quot;55&quot; width=&quot;100&quot; height=&quot;45&quot; rx=&quot;6&quot; fill=&quot;#3a1018&quot;/&gt;&lt;text x=&quot;755&quot; y=&quot;82&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot;&gt;Bottling&lt;/text&gt;
  &lt;line x1=&quot;115&quot; y1=&quot;77&quot; x2=&quot;128&quot; y2=&quot;77&quot; stroke=&quot;#722F37&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#warr)&quot;/&gt;
  &lt;line x1=&quot;230&quot; y1=&quot;77&quot; x2=&quot;243&quot; y2=&quot;77&quot; stroke=&quot;#722F37&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#warr)&quot;/&gt;
  &lt;line x1=&quot;345&quot; y1=&quot;77&quot; x2=&quot;358&quot; y2=&quot;77&quot; stroke=&quot;#722F37&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#warr)&quot;/&gt;
  &lt;line x1=&quot;460&quot; y1=&quot;77&quot; x2=&quot;473&quot; y2=&quot;77&quot; stroke=&quot;#722F37&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#warr)&quot;/&gt;
  &lt;line x1=&quot;575&quot; y1=&quot;77&quot; x2=&quot;588&quot; y2=&quot;77&quot; stroke=&quot;#722F37&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#warr)&quot;/&gt;
  &lt;line x1=&quot;690&quot; y1=&quot;77&quot; x2=&quot;703&quot; y2=&quot;77&quot; stroke=&quot;#722F37&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#warr)&quot;/&gt;
  &lt;rect x=&quot;30&quot; y=&quot;140&quot; width=&quot;800&quot; height=&quot;120&quot; rx=&quot;10&quot; fill=&quot;#fff&quot; stroke=&quot;#e8d0d4&quot;/&gt;
  &lt;text x=&quot;430&quot; y=&quot;165&quot; text-anchor=&quot;middle&quot; font-size=&quot;13&quot; font-weight=&quot;bold&quot; fill=&quot;#4A1520&quot;&gt;Aging Options&lt;/text&gt;
  &lt;text x=&quot;50&quot; y=&quot;190&quot; font-size=&quot;11&quot; fill=&quot;#555&quot;&gt;Stainless steel tank — Fresh, Fruity white wine (Sauvignon Blanc, Riesling)&lt;/text&gt;
  &lt;text x=&quot;50&quot; y=&quot;210&quot; font-size=&quot;11&quot; fill=&quot;#555&quot;&gt;Oak barrel (French/American) — Vanilla, Toast, Tannin integration (Bordeaux, Napa Chardonnay)&lt;/text&gt;
  &lt;text x=&quot;50&quot; y=&quot;230&quot; font-size=&quot;11&quot; fill=&quot;#555&quot;&gt;Bottle aging — Complex tertiary aromas: Leather, Truffle, Dried fruit (Barolo, Vintage Port)&lt;/text&gt;
  &lt;text x=&quot;50&quot; y=&quot;250&quot; font-size=&quot;11&quot; fill=&quot;#555&quot;&gt;Concrete/Egg — Neutral vessel, Pure Terroir expression (Natural wine trend)&lt;/text&gt;
&lt;/svg&gt;

&lt;!-- ===== 5. Champagne ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#722F37;border-left:5px solid #722F37;padding-left:12px;&quot;&gt;5. Champagne(샴페인)&lt;/h2&gt;

&lt;h3 style=&quot;color:#4A1520;&quot;&gt;5.1 Champagne이란?&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Champagne&lt;/strong&gt;은 northeastern France &lt;strong&gt;Champagne region&lt;/strong&gt;에서만 생산 가능한 Sparkling wine입니다. EU(European Union) Law와 International agreement에 따라 &quot;Champagne&quot; name은 해당 Region product에만 허용됩니다. This is a &lt;strong&gt;PDO(Protected Designation of Origin, 원산지 보호 표시)&lt;/strong&gt;.&lt;/p&gt;

&lt;figure style=&quot;text-align:center;margin:24px 0;&quot;&gt;
  &lt;img src=&quot;https://upload.wikimedia.org/wikipedia/commons/a/a6/Champagne_flute_and_bottle.jpg&quot; alt=&quot;Champagne bottle and flute&quot; style=&quot;max-width:100%;border-radius:8px;&quot; width=&quot;907&quot; height=&quot;1282&quot;&gt;
  &lt;figcaption style=&quot;font-size:0.9em;color:#777;margin-top:8px;&quot;&gt;Champagne — Protected designation, Traditional method sparkling wine (Wikimedia Commons)&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 style=&quot;color:#4A1520;&quot;&gt;5.2 Champagne Region &amp;amp; Terroir&lt;/h3&gt;
&lt;p&gt;Champagne region은 Paris에서 약 160km 동쪽. &lt;strong&gt;Cool continental climate&lt;/strong&gt;과 &lt;strong&gt;Chalk(백악) soil&lt;/strong&gt;이 핵심 Terroir element입니다. Chalk는 Drainage(배수)와 Moisture retention(수분 보유)을 동시에 제공하며, Grape에 &lt;strong&gt;High acidity&lt;/strong&gt;를 부여 — Sparkling wine production에 이상적.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5 major sub-regions:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Montagne de Reims&lt;/strong&gt; — Pinot Noir 중심. Powerful, Structured.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vallée de la Marne&lt;/strong&gt; — Pinot Meunier 중심. Fruity, Approachable.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Côte des Blancs&lt;/strong&gt; — Chardonnay 전용. Elegant, Mineral, Citrus.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Côte de Sézanne&lt;/strong&gt; — Chardonnay. Soft, Fruity.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Aube (Côte des Bar)&lt;/strong&gt; — Pinot Noir. Rich, Pinot character.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 style=&quot;color:#4A1520;&quot;&gt;5.3 Champagne Grape Varieties&lt;/h3&gt;
&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#722F37;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a2530;&quot;&gt;품종&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a2530;&quot;&gt;Planting ratio&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a2530;&quot;&gt;Role in blend&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Pinot Noir&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;~38%&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Structure, Body, Red fruit note&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Pinot Meunier&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;~32%&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Fruitiness, Roundness, Early drinking&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Chardonnay&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;~30%&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Elegance, Acidity, Aging potential&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h3 style=&quot;color:#4A1520;&quot;&gt;5.4 Méthode Champenoise(Traditional Method) — 동작 시나리오&lt;/h3&gt;
&lt;p&gt;Champagne production의 Core는 &lt;strong&gt;Méthode Champenoise(메퇴드 샴피노즈)&lt;/strong&gt;, 즉 &lt;strong&gt;Traditional method(전통 방식)&lt;/strong&gt;입니다. Second fermentation(2차 발효)이 Bottle 내부에서 일어납니다.&lt;/p&gt;

&lt;svg viewBox=&quot;0 0 860 420&quot; style=&quot;width:100%;max-width:860px;display:block;margin:20px auto;background:#fdf5f6;border-radius:12px;border:1px solid #e8d0d4;&quot;&gt;
  &lt;text x=&quot;430&quot; y=&quot;25&quot; text-anchor=&quot;middle&quot; font-size=&quot;15&quot; font-weight=&quot;bold&quot; fill=&quot;#4A1520&quot;&gt;Méthode Champenoise — Step by Step&lt;/text&gt;
  &lt;!-- Step boxes --&gt;
  &lt;rect x=&quot;20&quot; y=&quot;45&quot; width=&quot;150&quot; height=&quot;60&quot; rx=&quot;8&quot; fill=&quot;#556B2F&quot; stroke=&quot;#722F37&quot;/&gt;
  &lt;text x=&quot;95&quot; y=&quot;68&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot; font-weight=&quot;bold&quot;&gt;Step 1&lt;/text&gt;
  &lt;text x=&quot;95&quot; y=&quot;85&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;Base Wine&lt;/text&gt;
  &lt;text x=&quot;95&quot; y=&quot;98&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;Still wine production&lt;/text&gt;
  &lt;rect x=&quot;190&quot; y=&quot;45&quot; width=&quot;150&quot; height=&quot;60&quot; rx=&quot;8&quot; fill=&quot;#6B8E23&quot; stroke=&quot;#722F37&quot;/&gt;
  &lt;text x=&quot;265&quot; y=&quot;68&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot; font-weight=&quot;bold&quot;&gt;Step 2&lt;/text&gt;
  &lt;text x=&quot;265&quot; y=&quot;85&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;Tirage&lt;/text&gt;
  &lt;text x=&quot;265&quot; y=&quot;98&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;Yeast + Sugar added&lt;/text&gt;
  &lt;rect x=&quot;360&quot; y=&quot;45&quot; width=&quot;150&quot; height=&quot;60&quot; rx=&quot;8&quot; fill=&quot;#8B4513&quot; stroke=&quot;#722F37&quot;/&gt;
  &lt;text x=&quot;435&quot; y=&quot;68&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot; font-weight=&quot;bold&quot;&gt;Step 3&lt;/text&gt;
  &lt;text x=&quot;435&quot; y=&quot;85&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;2nd Fermentation&lt;/text&gt;
  &lt;text x=&quot;435&quot; y=&quot;98&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;In bottle → CO₂ bubbles&lt;/text&gt;
  &lt;rect x=&quot;530&quot; y=&quot;45&quot; width=&quot;150&quot; height=&quot;60&quot; rx=&quot;8&quot; fill=&quot;#722F37&quot; stroke=&quot;#4A1520&quot;/&gt;
  &lt;text x=&quot;605&quot; y=&quot;68&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot; font-weight=&quot;bold&quot;&gt;Step 4&lt;/text&gt;
  &lt;text x=&quot;605&quot; y=&quot;85&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;Aging on Lees&lt;/text&gt;
  &lt;text x=&quot;605&quot; y=&quot;98&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;Minimum 15 months (NV)&lt;/text&gt;
  &lt;rect x=&quot;700&quot; y=&quot;45&quot; width=&quot;140&quot; height=&quot;60&quot; rx=&quot;8&quot; fill=&quot;#4A1520&quot; stroke=&quot;#3a1018&quot;/&gt;
  &lt;text x=&quot;770&quot; y=&quot;68&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot; font-weight=&quot;bold&quot;&gt;Step 5&lt;/text&gt;
  &lt;text x=&quot;770&quot; y=&quot;85&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;Riddling&lt;/text&gt;
  &lt;text x=&quot;770&quot; y=&quot;98&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;Lees → bottle neck&lt;/text&gt;
  &lt;!-- Row 2 --&gt;
  &lt;rect x=&quot;105&quot; y=&quot;140&quot; width=&quot;150&quot; height=&quot;60&quot; rx=&quot;8&quot; fill=&quot;#722F37&quot; stroke=&quot;#4A1520&quot;/&gt;
  &lt;text x=&quot;180&quot; y=&quot;163&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot; font-weight=&quot;bold&quot;&gt;Step 6&lt;/text&gt;
  &lt;text x=&quot;180&quot; y=&quot;180&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;Disgorgement&lt;/text&gt;
  &lt;text x=&quot;180&quot; y=&quot;193&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;Remove lees plug&lt;/text&gt;
  &lt;rect x=&quot;275&quot; y=&quot;140&quot; width=&quot;150&quot; height=&quot;60&quot; rx=&quot;8&quot; fill=&quot;#8B6914&quot; stroke=&quot;#722F37&quot;/&gt;
  &lt;text x=&quot;350&quot; y=&quot;163&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot; font-weight=&quot;bold&quot;&gt;Step 7&lt;/text&gt;
  &lt;text x=&quot;350&quot; y=&quot;180&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;Dosage&lt;/text&gt;
  &lt;text x=&quot;350&quot; y=&quot;193&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;Sweetness adjustment&lt;/text&gt;
  &lt;rect x=&quot;445&quot; y=&quot;140&quot; width=&quot;150&quot; height=&quot;60&quot; rx=&quot;8&quot; fill=&quot;#4A1520&quot; stroke=&quot;#3a1018&quot;/&gt;
  &lt;text x=&quot;520&quot; y=&quot;163&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot; font-weight=&quot;bold&quot;&gt;Step 8&lt;/text&gt;
  &lt;text x=&quot;520&quot; y=&quot;180&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;Cork &amp;amp; Cage&lt;/text&gt;
  &lt;text x=&quot;520&quot; y=&quot;193&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;9&quot;&gt;Final sealing&lt;/text&gt;
  &lt;rect x=&quot;615&quot; y=&quot;140&quot; width=&quot;150&quot; height=&quot;60&quot; rx=&quot;8&quot; fill=&quot;#3a1018&quot; stroke=&quot;#2a0808&quot;/&gt;
  &lt;text x=&quot;690&quot; y=&quot;170&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;12&quot; font-weight=&quot;bold&quot;&gt;Champagne!&lt;/text&gt;
  &lt;text x=&quot;690&quot; y=&quot;188&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;Ready to serve&lt;/text&gt;
  &lt;!-- arrows row 1 --&gt;
  &lt;line x1=&quot;170&quot; y1=&quot;75&quot; x2=&quot;188&quot; y2=&quot;75&quot; stroke=&quot;#722F37&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#warr)&quot;/&gt;
  &lt;line x1=&quot;340&quot; y1=&quot;75&quot; x2=&quot;358&quot; y2=&quot;75&quot; stroke=&quot;#722F37&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#warr)&quot;/&gt;
  &lt;line x1=&quot;510&quot; y1=&quot;75&quot; x2=&quot;528&quot; y2=&quot;75&quot; stroke=&quot;#722F37&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#warr)&quot;/&gt;
  &lt;line x1=&quot;680&quot; y1=&quot;75&quot; x2=&quot;698&quot; y2=&quot;75&quot; stroke=&quot;#722F37&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#warr)&quot;/&gt;
  &lt;!-- arrow down from step 5 --&gt;
  &lt;line x1=&quot;770&quot; y1=&quot;105&quot; x2=&quot;770&quot; y2=&quot;125&quot; stroke=&quot;#722F37&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;line x1=&quot;770&quot; y1=&quot;125&quot; x2=&quot;180&quot; y2=&quot;125&quot; stroke=&quot;#722F37&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;line x1=&quot;180&quot; y1=&quot;125&quot; x2=&quot;180&quot; y2=&quot;138&quot; stroke=&quot;#722F37&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#warr)&quot;/&gt;
  &lt;!-- arrows row 2 --&gt;
  &lt;line x1=&quot;255&quot; y1=&quot;170&quot; x2=&quot;273&quot; y2=&quot;170&quot; stroke=&quot;#722F37&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#warr)&quot;/&gt;
  &lt;line x1=&quot;425&quot; y1=&quot;170&quot; x2=&quot;443&quot; y2=&quot;170&quot; stroke=&quot;#722F37&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#warr)&quot;/&gt;
  &lt;line x1=&quot;595&quot; y1=&quot;170&quot; x2=&quot;613&quot; y2=&quot;170&quot; stroke=&quot;#722F37&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#warr)&quot;/&gt;
  &lt;!-- detail box --&gt;
  &lt;rect x=&quot;30&quot; y=&quot;230&quot; width=&quot;800&quot; height=&quot;170&quot; rx=&quot;10&quot; fill=&quot;#fff&quot; stroke=&quot;#e8d0d4&quot;/&gt;
  &lt;text x=&quot;430&quot; y=&quot;255&quot; text-anchor=&quot;middle&quot; font-size=&quot;13&quot; font-weight=&quot;bold&quot; fill=&quot;#4A1520&quot;&gt;Champagne Style by Dosage(도사주) Level&lt;/text&gt;
  &lt;text x=&quot;50&quot; y=&quot;280&quot; font-size=&quot;11&quot; fill=&quot;#555&quot;&gt;&lt;strong&gt;Brut Nature/Brut Zero&lt;/strong&gt;: 0~3g/L sugar — Driest&lt;/text&gt;
  &lt;text x=&quot;50&quot; y=&quot;300&quot; font-size=&quot;11&quot; fill=&quot;#555&quot;&gt;&lt;strong&gt;Extra Brut&lt;/strong&gt;: 0~6g/L — Very dry&lt;/text&gt;
  &lt;text x=&quot;50&quot; y=&quot;320&quot; font-size=&quot;11&quot; fill=&quot;#555&quot;&gt;&lt;strong&gt;Brut&lt;/strong&gt;: &amp;lt;12g/L — Most common style (Moët, Veuve Clicquot)&lt;/text&gt;
  &lt;text x=&quot;450&quot; y=&quot;280&quot; font-size=&quot;11&quot; fill=&quot;#555&quot;&gt;&lt;strong&gt;Extra Dry&lt;/strong&gt;: 12~17g/L — Slightly sweet (misleading name!)&lt;/text&gt;
  &lt;text x=&quot;450&quot; y=&quot;300&quot; font-size=&quot;11&quot; fill=&quot;#555&quot;&gt;&lt;strong&gt;Sec&lt;/strong&gt;: 17~32g/L — Medium sweet&lt;/text&gt;
  &lt;text x=&quot;450&quot; y=&quot;320&quot; font-size=&quot;11&quot; fill=&quot;#555&quot;&gt;&lt;strong&gt;Demi-Sec / Doux&lt;/strong&gt;: 32~50g/L+ — Sweet dessert style&lt;/text&gt;
  &lt;text x=&quot;430&quot; y=&quot;375&quot; text-anchor=&quot;middle&quot; font-size=&quot;11&quot; fill=&quot;#722F37&quot;&gt;&lt;strong&gt;Blanc de Blancs&lt;/strong&gt; = 100% Chardonnay | &lt;strong&gt;Blanc de Noirs&lt;/strong&gt; = 100% Pinot Noir/Meunier | &lt;strong&gt;Rosé&lt;/strong&gt; = Skin contact or Red wine blend&lt;/text&gt;
&lt;/svg&gt;

&lt;h3 style=&quot;color:#4A1520;&quot;&gt;5.5 Champagne History Highlights&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;987&lt;/strong&gt; — Hugh Capet coronation at Reims cathedral. Local Wine at royal banquets → Prestige association.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;1670~1720&lt;/strong&gt; — Intentional Sparkling wine production begins. Dom Pérignon(Benedictine monk)가 Blending, Quality control technique 발전.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;18th century&lt;/strong&gt; — Champagne Houses 설립: Ruinart(1729, oldest), Moët, Veuve Clicquot, Heidsieck 등.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;1887&lt;/strong&gt; — &quot;Champagne&quot; term Legal protection 시작.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2015&lt;/strong&gt; — UNESCO World Heritage 등재.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 style=&quot;color:#4A1520;&quot;&gt;5.6 Major Champagne Houses&lt;/h3&gt;
&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#4A1520;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #3a1018;&quot;&gt;House&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #3a1018;&quot;&gt;Founded&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #3a1018;&quot;&gt;Position&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Moët &amp;amp; Chandon&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;1743&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;World's largest Champagne producer. LVMH group. Global market leader.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Veuve Clicquot&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;1772&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Madame Clicquot — Riddling technique pioneer. LVMH. Iconic Yellow label.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Dom Pérignon&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;—&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Moët's Prestige cuvée. Vintage only. Luxury benchmark.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Krug&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;1843&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Ultra-premium. Extended lees aging. LVMH. &quot;Single year&quot; concept.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Ruinart&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;1729&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Oldest Champagne House. Chardonnay focus. LVMH.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Bollinger&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;1829&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Pinot Noir dominant. Independent. James Bond association.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Taittinger&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;1734&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Chardonnay elegance. Family-owned. Comtes de Champagne prestige.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Laurent-Perrier&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;1812&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Ultra Brut pioneer. Family-owned. Cuvée Rosé famous.&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;!-- ===== 6. Sparkling Wine ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#722F37;border-left:5px solid #722F37;padding-left:12px;&quot;&gt;6. Sparkling Wine(스파클링 Wine) — Champagne 외&lt;/h2&gt;

&lt;h3 style=&quot;color:#4A1520;&quot;&gt;6.1 Sparkling Wine Production Methods&lt;/h3&gt;
&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#722F37;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a2530;&quot;&gt;Method&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a2530;&quot;&gt;Process&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a2530;&quot;&gt;Quality&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a2530;&quot;&gt;Example&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Traditional Method&lt;/strong&gt;&lt;br&gt;(Méthode Traditionnelle)&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;2nd fermentation in bottle&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Highest — Fine bubbles, Complex&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Champagne, Cava, Crémant, Franciacorta&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Tank Method&lt;/strong&gt;&lt;br&gt;(Charmat/Martinotti)&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;2nd fermentation in pressurized tank&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Medium — Fresh, Fruity, Large bubbles&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Prosecco, Lambrusco&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Transfer Method&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Bottle ferment → Transfer to tank → Re-bottle&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Medium-High&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Some Australian Sparkling&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Carbonation&lt;/strong&gt;&lt;br&gt;(Injection)&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;CO₂ directly injected&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Low — Large aggressive bubbles&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Inexpensive commercial Sparkling&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Ancestral Method&lt;/strong&gt;&lt;br&gt;(Méthode Ancestrale)&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Single fermentation, Bottled before complete&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Rustic — Natural bubbles, Cloudy&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Pét-Nat (Pétillant Naturel)&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h3 style=&quot;color:#4A1520;&quot;&gt;6.2 Global Sparkling Wine Map&lt;/h3&gt;
&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;font-size:0.93em;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#4A1520;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #3a1018;&quot;&gt;Name&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #3a1018;&quot;&gt;Country/Region&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #3a1018;&quot;&gt;Method&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #3a1018;&quot;&gt;특징&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Champagne&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;France, Champagne&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Traditional&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;PDO. Global benchmark. Premium price.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Crémant&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;France (Alsace, Loire, Burgundy)&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Traditional&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Champagne quality at lower price. Regional character.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Prosecco&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Italy, Veneto&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Tank (Charmat)&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Glera grape. Fresh, Fruity. Global volume leader.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Cava&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Spain, Catalonia (Penedès)&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Traditional&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Macabeo, Xarel·lo, Parellada. Great value Traditional method.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Franciacorta&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Italy, Lombardy&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Traditional&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Italy's premium Traditional method. Long aging.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Sekt&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Germany, Austria&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Tank or Traditional&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Deutscher Sekt b.A. = Quality German Sparkling.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;English Sparkling&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;England (Sussex, Kent)&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Traditional&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Climate change → Rising star. Nyetimber, Ridgeview.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Cap Classique&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;South Africa&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Traditional&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;MCC(Méthode Cap Classique). Chenin, Chardonnay base.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;American Sparkling&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;USA (Napa, Anderson Valley)&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Traditional&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Schramsberg, Domaine Carneros. New World innovation.&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;figure style=&quot;text-align:center;margin:24px 0;&quot;&gt;
  &lt;img src=&quot;https://upload.wikimedia.org/wikipedia/commons/thumb/c/ce/Prosecco_di_Conegliano_bottle_and_glass.jpg/330px-Prosecco_di_Conegliano_bottle_and_glass.jpg&quot; alt=&quot;Prosecco bottle and glass&quot; style=&quot;max-width:100%;border-radius:8px;&quot; width=&quot;330&quot; height=&quot;523&quot;&gt;
  &lt;figcaption style=&quot;font-size:0.9em;color:#777;margin-top:8px;&quot;&gt;Prosecco di Conegliano — Italy's Tank method Sparkling wine (Wikimedia Commons)&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;!-- ===== 7. 시장 ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#722F37;border-left:5px solid #722F37;padding-left:12px;&quot;&gt;7. 시장 상황과 미래 성장성&lt;/h2&gt;

&lt;h3 style=&quot;color:#4A1520;&quot;&gt;7.1 Global Wine Market&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;Global wine market: 약 &lt;strong&gt;$400B+&lt;/strong&gt; (2025 기준). Production: ~260M hectoliters/year.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Consumption trend&lt;/strong&gt;: Volume stagnation in Traditional markets (France, Italy) → Premiumization. Quality over quantity.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Sparkling wine growth&lt;/strong&gt;: Fastest growing segment. Prosecco volume explosion. Champagne premium stable.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Climate change impact&lt;/strong&gt;: Traditional region harvest timing shift. New regions (England, Scandinavia trial) emerging.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 style=&quot;color:#4A1520;&quot;&gt;7.2 선도 기업&lt;/h3&gt;
&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#722F37;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a2530;&quot;&gt;Category&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a2530;&quot;&gt;기업/Group&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a2530;&quot;&gt;Position&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Luxury Conglomerate&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;LVMH (Moët, Krug, Veuve Clicquot, Ruinart, Dom Pérignon, Château d'Yquem)&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Champagne + Fine wine Dominance&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Global Wine Giant&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Constellation Brands, Treasury Wine Estates, Gallo&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Volume, Multi-brand portfolio&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Bordeaux Icon&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Château Lafite (Rothschild), Château Margaux, Château Haut-Brion&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Investment-grade fine wine&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#fdf5f6;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Prosecco Leader&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;La Marca, Mionetto, Zonin&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Accessible Sparkling volume&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Tech/Innovation&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Coravin, Vivino&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Wine access, Data-driven consumer platform&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h3 style=&quot;color:#4A1520;&quot;&gt;7.3 Future Outlook&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Low/No-alcohol Wine&lt;/strong&gt;: Health trend. Dealcoholization technology advance.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Sustainability&lt;/strong&gt;: Organic, Biodynamic, Regenerative viticulture. Carbon-neutral Winery.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Climate adaptation&lt;/strong&gt;: New grape varieties, Higher altitude planting, Irrigation technology.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Direct-to-consumer(DTC)&lt;/strong&gt;: Winery e-commerce, Wine subscription. Bypass traditional Distribution.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;English Sparkling&lt;/strong&gt;: Climate change beneficiary. Quality rivaling Champagne in blind tastings.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Asia-Pacific growth&lt;/strong&gt;: China, Korea, Japan Premium wine market expansion.&lt;/li&gt;
&lt;/ul&gt;

&lt;!-- ===== 용어 설명 ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:50px;color:#722F37;border-left:5px solid #722F37;padding-left:12px;&quot;&gt;용어 설명(Glossary)&lt;/h2&gt;

&lt;div style=&quot;background:#fdf5f6;padding:20px;border-radius:10px;border:1px solid #e8d0d4;&quot;&gt;

&lt;p&gt;&lt;strong&gt;AOC(Appellation d'Origine Contrôlée, 원산지 통제 명칭)&lt;/strong&gt;&lt;br&gt;
French Wine quality classification system. Specific region, Grape variety, Production method을 Legal binding. Highest tier = AOP(Appellation d'Origine Protégée).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Grand Cru(그랑 크뤼)&lt;/strong&gt;&lt;br&gt;
&quot;Great growth&quot; — Highest vineyard classification. Burgundy has 33 Grand Cru vineyards (e.g., Romanée-Conti). Bordeaux 1855 Classification: 5 Premier Grand Cru (Lafite, Latour, Margaux, Haut-Brion, Mouton).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tannin(타닌)&lt;/strong&gt;&lt;br&gt;
Grape skin, Seed, Oak barrel에서 추출되는 Polyphenol(폴리페놀). Mouth-drying sensation. Red wine aging structure의 핵심. Soft tannin = Smooth, Grippy tannin = Powerful.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Body(바디)&lt;/strong&gt;&lt;br&gt;
Wine의 Mouthfeel weight. Light body = Water-like (Pinot Noir). Full body = Cream-like (Napa Cabernet, Amarone).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decanting(디캔팅)&lt;/strong&gt;&lt;br&gt;
Wine을 Bottle에서 Decanter(디캔터)로 옮겨 Aeration(산소 접촉)과 Sediment(침전물) 분리. Young tannic red: 1~2 hours. Old fragile wine: Minimal decanting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lees(리즈/침균)&lt;/strong&gt;&lt;br&gt;
Fermentation 후 Dead yeast cells. Aging on lees(Batonnage(바토나주) stirring) → Creamy texture, Brioche, Toast aroma. Champagne production의 핵심.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dosage(도사주)&lt;/strong&gt;&lt;br&gt;
Champagne Disgorgement 후 추가하는 Liqueur(Liquor + Sugar mix). Sweetness level 결정. Brut = industry standard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Autolysis(자기 용해)&lt;/strong&gt;&lt;br&gt;
Lees aging 중 Yeast cell wall이 분해하여 Amino acid, Mannoprotein 방출. Champagne의 Toasty, Yeasty complexity origin.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PDO(PDO, Protected Designation of Origin)&lt;/strong&gt;&lt;br&gt;
EU Regulation. Product name이 Specific geographic region과 Production method에 Legal binding. Champagne, Parma ham, Roquefort cheese 등.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Malolactic Fermentation(말로락틱 발효, MLF)&lt;/strong&gt;&lt;br&gt;
Sharp malic acid → Soft lactic acid conversion. Red wine 대부분, Some Chardonnay에서 진행. &quot;Butter&quot; note origin.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Botrytis cinerea(균류)&lt;/strong&gt;&lt;br&gt;
&quot;Noble rot&quot; — Grape surface fungus. Water evaporation → Sugar concentration. Sauternes, Tokaji sweet wine production.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phylloxera(뿌리혹벌레)&lt;/strong&gt;&lt;br&gt;
19th century Europe Wine industry catastrophe. American rootstock grafting으로 해결. Modern viticulture foundation.&lt;/p&gt;

&lt;/div&gt;

&lt;p style=&quot;margin-top:30px;font-size:0.85em;color:#999;text-align:center;&quot;&gt;— Wine Study Document · Tistory HTML paste ready —&lt;/p&gt;

&lt;/div&gt;</description>
      <category>Wine</category>
      <author>AndrewJ</author>
      <guid isPermaLink="true">https://andrewpage.tistory.com/504</guid>
      <comments>https://andrewpage.tistory.com/504#entry504comment</comments>
      <pubDate>Tue, 4 Aug 2026 16:45:50 +0900</pubDate>
    </item>
    <item>
      <title>Anycast Networking 개념&amp;middot;동작&amp;middot;활용&amp;middot;구현</title>
      <link>https://andrewpage.tistory.com/503</link>
      <description>&lt;div class=&quot;sdoc&quot;&gt;
&lt;style&gt;
.sdoc{
  --c-text:#1f2933; --c-sub:#52606d; --c-line:#e4e7eb;
  --c-primary:#2563eb; --c-primary-d:#1e40af; --c-accent:#db2777;
  --c-bg-soft:#f5f7fa; --c-bg-blue:#eff4ff; --c-bg-warn:#fff7ed;
  --c-bg-danger:#fef2f2; --c-bg-ok:#f0fdf4;
  color:var(--c-text);
  font-family:-apple-system,BlinkMacSystemFont,&quot;Segoe UI&quot;,&quot;Apple SD Gothic Neo&quot;,&quot;Malgun Gothic&quot;,sans-serif;
  line-height:1.75; font-size:16px; word-break:keep-all; max-width:920px; margin:0 auto;
}
.sdoc *{box-sizing:border-box;}
.sdoc h1{font-size:2em; line-height:1.3; margin:.2em 0 .6em; letter-spacing:-.02em;}
.sdoc h2{font-size:1.5em; margin:2em 0 .7em; padding-bottom:.3em; border-bottom:3px solid var(--c-primary); letter-spacing:-.02em;}
.sdoc h3{font-size:1.2em; margin:1.6em 0 .5em; color:var(--c-primary-d);}
.sdoc p{margin:.7em 0;}
.sdoc ul,.sdoc ol{margin:.6em 0; padding-left:1.4em;}
.sdoc li{margin:.35em 0;}
.sdoc code{background:var(--c-bg-soft); padding:.1em .4em; border-radius:4px; font-size:.9em;
  font-family:&quot;SFMono-Regular&quot;,Consolas,&quot;Liberation Mono&quot;,Menlo,monospace; color:var(--c-accent);}
.sdoc pre{background:#0f172a; color:#e2e8f0; padding:1em 1.2em; border-radius:8px; overflow-x:auto;
  font-size:.86em; line-height:1.6;}
.sdoc pre code{background:none; color:inherit; padding:0;}
/* 코드 블록: 줄무늬(zebra) 방지 — 모든 줄을 검은 배경+밝은 글씨로 강제 고정 */
.sdoc pre, .sdoc pre *{background:#0f172a !important; color:#e2e8f0 !important;}
.sdoc a{color:var(--c-primary); }

.sdoc .lead{font-size:1.1em; color:var(--c-sub); border-left:4px solid var(--c-primary);
  padding:.6em 1em; background:var(--c-bg-blue); border-radius:0 8px 8px 0;}

.sdoc .callout{border-radius:10px; padding:1em 1.2em; margin:1.2em 0; border:1px solid var(--c-line);}
.sdoc .callout.info{background:var(--c-bg-blue); border-color:#bfdbfe;}
.sdoc .callout.warn{background:var(--c-bg-warn); border-color:#fed7aa;}
.sdoc .callout.danger{background:var(--c-bg-danger); border-color:#fecaca;}
.sdoc .callout.ok{background:var(--c-bg-ok); border-color:#bbf7d0;}
.sdoc .callout .tag{font-weight:700; display:block; margin-bottom:.3em;}

.sdoc table{border-collapse:collapse; width:100%; margin:1.2em 0; font-size:.94em; overflow:hidden;
  border-radius:8px;}
.sdoc th,.sdoc td{border:1px solid var(--c-line); padding:.6em .8em; text-align:left; vertical-align:top;}
.sdoc thead th{background:var(--c-primary); color:#fff; border-color:var(--c-primary);}
.sdoc tbody tr:nth-child(even){background:var(--c-bg-soft);}

.sdoc figure{margin:1.6em 0; text-align:center;}
.sdoc figure svg{max-width:100%; height:auto;}
.sdoc figcaption{font-size:.88em; color:var(--c-sub); margin-top:.6em;}

.sdoc .fig-wrap{overflow-x:auto; border:1px solid var(--c-line); border-radius:10px; background:#fff; padding:14px;}

.sdoc .toc{background:var(--c-bg-soft); border:1px solid var(--c-line); border-radius:10px; padding:1em 1.4em;}
.sdoc .toc strong{display:block; margin-bottom:.4em; font-size:1.05em;}
.sdoc .toc ol{margin:.3em 0;}

.sdoc .glossary dt{font-weight:700; color:var(--c-primary-d); margin-top:.9em;}
.sdoc .glossary dd{margin:.2em 0 .2em 0; color:var(--c-sub);}

.sdoc .pill{display:inline-block; background:var(--c-primary); color:#fff; font-size:.75em;
  padding:.15em .6em; border-radius:999px; vertical-align:middle; margin-left:.3em;}
&lt;/style&gt;

&lt;h1&gt;Anycast Networking 완전 정리 — 하나의 IP, 세계 곳곳의 서버&lt;/h1&gt;

&lt;p class=&quot;lead&quot;&gt;
&quot;전 세계 어디서 접속해도 &lt;code&gt;8.8.8.8&lt;/code&gt;은 항상 가장 가까운 서버로 연결된다.&quot; 이 마법 같은 일을 가능하게 하는 것이
&lt;strong&gt;Anycast(애니캐스트)&lt;/strong&gt;입니다. 하나의 IP(Internet Protocol) 주소를 세계 여러 곳의 서버가 &lt;em&gt;동시에&lt;/em&gt; 사용하고,
네트워크가 사용자를 가장 가까운 서버로 알아서 보내 줍니다. 이 문서는 Anycast의 개념·동작 원리·장단점·활용·구현·시장을
그림과 함께 자세히 정리합니다.
&lt;/p&gt;

&lt;div class=&quot;callout info&quot;&gt;
  &lt;span class=&quot;tag&quot;&gt;이미 만난 적 있는 개념&lt;/span&gt;
  Anycast는 앞서 다룬 &quot;DNS 구조&quot; 문서(루트 서버·공용 리졸버)와 &quot;DoS·DDoS&quot; 문서(공격 트래픽 분산 흡수)에서
  이미 등장했습니다. 이 글은 그 Anycast 자체를 깊게 파고드는 편입니다.
&lt;/div&gt;

&lt;div class=&quot;toc&quot;&gt;
  &lt;strong&gt;목차&lt;/strong&gt;
  &lt;ol&gt;
    &lt;li&gt;Anycast란 무엇인가&lt;/li&gt;
    &lt;li&gt;캐스트 4형제 — Unicast · Broadcast · Multicast · Anycast&lt;/li&gt;
    &lt;li&gt;어떻게 동작하나 — BGP와 &quot;가장 가까운 경로&quot;&lt;/li&gt;
    &lt;li&gt;동작 시나리오 — 사용자는 어디로 연결되나&lt;/li&gt;
    &lt;li&gt;&quot;가장 가깝다&quot;는 것의 진짜 의미&lt;/li&gt;
    &lt;li&gt;태동 배경과 역사 (Motive &amp;amp; History)&lt;/li&gt;
    &lt;li&gt;장점 — 왜 쓰는가&lt;/li&gt;
    &lt;li&gt;단점과 도전 과제&lt;/li&gt;
    &lt;li&gt;대표 활용 사례 (Use Case)&lt;/li&gt;
    &lt;li&gt;Anycast vs GSLB (DNS 기반 부하분산)&lt;/li&gt;
    &lt;li&gt;어떻게 구축하나 — 구현 개요&lt;/li&gt;
    &lt;li&gt;시장과 선도 기업&lt;/li&gt;
    &lt;li&gt;용어 설명&lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;

&lt;h2&gt;1. Anycast란 무엇인가&lt;/h2&gt;
&lt;p&gt;
&lt;strong&gt;Anycast&lt;/strong&gt;는 &lt;strong&gt;&quot;하나의 목적지 IP 주소를 여러 대의 서버(노드)가 공유&quot;&lt;/strong&gt;하는 네트워크 주소 지정·라우팅 방식입니다.
같은 IP를 세계 여러 데이터센터에서 광고(advertise)하면, 인터넷 라우팅이 각 사용자를 &lt;strong&gt;네트워크적으로 가장 가까운&lt;/strong&gt;
서버로 자동 연결합니다. 사용자는 언제나 같은 IP로 접속하지만, 실제로 응답하는 물리 서버는 사람마다·위치마다 다를 수 있습니다.
&lt;/p&gt;

&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 820 260&quot; role=&quot;img&quot; aria-label=&quot;Unicast와 Anycast의 개념 비교&quot;&gt;
  &lt;!-- Unicast --&gt;
  &lt;rect x=&quot;20&quot; y=&quot;30&quot; width=&quot;380&quot; height=&quot;200&quot; rx=&quot;12&quot; fill=&quot;#fef2f2&quot; stroke=&quot;#fecaca&quot;/&gt;
  &lt;text x=&quot;210&quot; y=&quot;56&quot; font-size=&quot;14&quot; font-weight=&quot;700&quot; fill=&quot;#b91c1c&quot; text-anchor=&quot;middle&quot;&gt;Unicast — 1 IP = 1 서버&lt;/text&gt;
  &lt;g fill=&quot;#2563eb&quot;&gt;&lt;circle cx=&quot;70&quot; cy=&quot;120&quot; r=&quot;14&quot;/&gt;&lt;circle cx=&quot;70&quot; cy=&quot;170&quot; r=&quot;14&quot;/&gt;&lt;/g&gt;
  &lt;text x=&quot;70&quot; y=&quot;205&quot; font-size=&quot;10&quot; fill=&quot;#334155&quot; text-anchor=&quot;middle&quot;&gt;사용자들&lt;/text&gt;
  &lt;rect x=&quot;300&quot; y=&quot;120&quot; width=&quot;80&quot; height=&quot;50&quot; rx=&quot;8&quot; fill=&quot;#dc2626&quot;/&gt;
  &lt;text x=&quot;340&quot; y=&quot;149&quot; font-size=&quot;10&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot;&gt;단일 서버&lt;/text&gt;
  &lt;line x1=&quot;84&quot; y1=&quot;120&quot; x2=&quot;298&quot; y2=&quot;140&quot; stroke=&quot;#94a3b8&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#ac1)&quot;/&gt;
  &lt;line x1=&quot;84&quot; y1=&quot;170&quot; x2=&quot;298&quot; y2=&quot;152&quot; stroke=&quot;#94a3b8&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#ac1)&quot;/&gt;
  &lt;text x=&quot;210&quot; y=&quot;228&quot; font-size=&quot;10.5&quot; fill=&quot;#7f1d1d&quot; text-anchor=&quot;middle&quot;&gt;멀어도 무조건 그 한 대로 (지연↑, 단일 장애점)&lt;/text&gt;

  &lt;!-- Anycast --&gt;
  &lt;rect x=&quot;420&quot; y=&quot;30&quot; width=&quot;380&quot; height=&quot;200&quot; rx=&quot;12&quot; fill=&quot;#f0fdf4&quot; stroke=&quot;#bbf7d0&quot;/&gt;
  &lt;text x=&quot;610&quot; y=&quot;56&quot; font-size=&quot;14&quot; font-weight=&quot;700&quot; fill=&quot;#166534&quot; text-anchor=&quot;middle&quot;&gt;Anycast — 1 IP = 여러 서버&lt;/text&gt;
  &lt;g fill=&quot;#2563eb&quot;&gt;&lt;circle cx=&quot;470&quot; cy=&quot;110&quot; r=&quot;12&quot;/&gt;&lt;circle cx=&quot;470&quot; cy=&quot;180&quot; r=&quot;12&quot;/&gt;&lt;/g&gt;
  &lt;rect x=&quot;700&quot; y=&quot;70&quot; width=&quot;78&quot; height=&quot;40&quot; rx=&quot;7&quot; fill=&quot;#16a34a&quot;/&gt;&lt;text x=&quot;739&quot; y=&quot;94&quot; font-size=&quot;9.5&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot;&gt;서버 A&lt;/text&gt;
  &lt;rect x=&quot;700&quot; y=&quot;130&quot; width=&quot;78&quot; height=&quot;40&quot; rx=&quot;7&quot; fill=&quot;#16a34a&quot;/&gt;&lt;text x=&quot;739&quot; y=&quot;154&quot; font-size=&quot;9.5&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot;&gt;서버 B&lt;/text&gt;
  &lt;rect x=&quot;700&quot; y=&quot;190&quot; width=&quot;78&quot; height=&quot;30&quot; rx=&quot;7&quot; fill=&quot;#16a34a&quot;/&gt;&lt;text x=&quot;739&quot; y=&quot;210&quot; font-size=&quot;9.5&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot;&gt;서버 C&lt;/text&gt;
  &lt;text x=&quot;640&quot; y=&quot;46&quot; font-size=&quot;9&quot; fill=&quot;#166534&quot;&gt;&lt;/text&gt;
  &lt;line x1=&quot;482&quot; y1=&quot;108&quot; x2=&quot;698&quot; y2=&quot;92&quot; stroke=&quot;#16a34a&quot; stroke-width=&quot;2.5&quot; marker-end=&quot;url(#ac2)&quot;/&gt;
  &lt;line x1=&quot;482&quot; y1=&quot;180&quot; x2=&quot;698&quot; y2=&quot;150&quot; stroke=&quot;#16a34a&quot; stroke-width=&quot;2.5&quot; marker-end=&quot;url(#ac2)&quot;/&gt;
  &lt;text x=&quot;610&quot; y=&quot;228&quot; font-size=&quot;10.5&quot; fill=&quot;#14532d&quot; text-anchor=&quot;middle&quot;&gt;각자 &quot;가장 가까운&quot; 서버로 (지연↓, 장애 우회)&lt;/text&gt;

  &lt;defs&gt;
    &lt;marker id=&quot;ac1&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#94a3b8&quot;/&gt;&lt;/marker&gt;
    &lt;marker id=&quot;ac2&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#16a34a&quot;/&gt;&lt;/marker&gt;
  &lt;/defs&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 1. Unicast는 하나의 IP가 한 서버를 가리키지만, Anycast는 같은 IP를 여러 서버가 공유해 &quot;가까운 곳&quot;으로 연결한다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;h2&gt;2. 캐스트 4형제 — Unicast · Broadcast · Multicast · Anycast&lt;/h2&gt;
&lt;p&gt;네트워크 주소 지정 방식은 &quot;하나의 출발지에서 누구에게 전달하느냐&quot;에 따라 네 가지로 나뉩니다.&lt;/p&gt;

&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 840 240&quot; role=&quot;img&quot; aria-label=&quot;Unicast Broadcast Multicast Anycast 비교&quot;&gt;
  &lt;!-- unicast --&gt;
  &lt;text x=&quot;105&quot; y=&quot;30&quot; font-size=&quot;12&quot; font-weight=&quot;700&quot; fill=&quot;#1e40af&quot; text-anchor=&quot;middle&quot;&gt;Unicast (1:1)&lt;/text&gt;
  &lt;circle cx=&quot;40&quot; cy=&quot;120&quot; r=&quot;12&quot; fill=&quot;#2563eb&quot;/&gt;
  &lt;circle cx=&quot;170&quot; cy=&quot;120&quot; r=&quot;12&quot; fill=&quot;#16a34a&quot;/&gt;
  &lt;line x1=&quot;52&quot; y1=&quot;120&quot; x2=&quot;156&quot; y2=&quot;120&quot; stroke=&quot;#334155&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#c4)&quot;/&gt;
  &lt;text x=&quot;105&quot; y=&quot;170&quot; font-size=&quot;10&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;특정 1명에게&lt;/text&gt;

  &lt;!-- broadcast --&gt;
  &lt;text x=&quot;315&quot; y=&quot;30&quot; font-size=&quot;12&quot; font-weight=&quot;700&quot; fill=&quot;#b91c1c&quot; text-anchor=&quot;middle&quot;&gt;Broadcast (1:전체)&lt;/text&gt;
  &lt;circle cx=&quot;250&quot; cy=&quot;120&quot; r=&quot;12&quot; fill=&quot;#2563eb&quot;/&gt;
  &lt;g fill=&quot;#dc2626&quot;&gt;&lt;circle cx=&quot;380&quot; cy=&quot;80&quot; r=&quot;9&quot;/&gt;&lt;circle cx=&quot;380&quot; cy=&quot;120&quot; r=&quot;9&quot;/&gt;&lt;circle cx=&quot;380&quot; cy=&quot;160&quot; r=&quot;9&quot;/&gt;&lt;/g&gt;
  &lt;g stroke=&quot;#334155&quot; stroke-width=&quot;1.8&quot; fill=&quot;none&quot;&gt;
    &lt;line x1=&quot;262&quot; y1=&quot;118&quot; x2=&quot;368&quot; y2=&quot;82&quot; marker-end=&quot;url(#c4)&quot;/&gt;
    &lt;line x1=&quot;262&quot; y1=&quot;120&quot; x2=&quot;368&quot; y2=&quot;120&quot; marker-end=&quot;url(#c4)&quot;/&gt;
    &lt;line x1=&quot;262&quot; y1=&quot;122&quot; x2=&quot;368&quot; y2=&quot;158&quot; marker-end=&quot;url(#c4)&quot;/&gt;
  &lt;/g&gt;
  &lt;text x=&quot;315&quot; y=&quot;190&quot; font-size=&quot;10&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;같은 망 전체에게&lt;/text&gt;

  &lt;!-- multicast --&gt;
  &lt;text x=&quot;525&quot; y=&quot;30&quot; font-size=&quot;12&quot; font-weight=&quot;700&quot; fill=&quot;#7c3aed&quot; text-anchor=&quot;middle&quot;&gt;Multicast (1:그룹)&lt;/text&gt;
  &lt;circle cx=&quot;460&quot; cy=&quot;120&quot; r=&quot;12&quot; fill=&quot;#2563eb&quot;/&gt;
  &lt;g fill=&quot;#7c3aed&quot;&gt;&lt;circle cx=&quot;590&quot; cy=&quot;90&quot; r=&quot;9&quot;/&gt;&lt;circle cx=&quot;590&quot; cy=&quot;150&quot; r=&quot;9&quot;/&gt;&lt;/g&gt;
  &lt;circle cx=&quot;590&quot; cy=&quot;120&quot; r=&quot;6&quot; fill=&quot;#cbd5e1&quot;/&gt;
  &lt;g stroke=&quot;#7c3aed&quot; stroke-width=&quot;1.8&quot; fill=&quot;none&quot;&gt;
    &lt;line x1=&quot;472&quot; y1=&quot;118&quot; x2=&quot;578&quot; y2=&quot;92&quot; marker-end=&quot;url(#c4p)&quot;/&gt;
    &lt;line x1=&quot;472&quot; y1=&quot;122&quot; x2=&quot;578&quot; y2=&quot;148&quot; marker-end=&quot;url(#c4p)&quot;/&gt;
  &lt;/g&gt;
  &lt;text x=&quot;525&quot; y=&quot;190&quot; font-size=&quot;10&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;구독한 그룹에게만&lt;/text&gt;

  &lt;!-- anycast --&gt;
  &lt;text x=&quot;740&quot; y=&quot;30&quot; font-size=&quot;12&quot; font-weight=&quot;700&quot; fill=&quot;#166534&quot; text-anchor=&quot;middle&quot;&gt;Anycast (1:가장 가까운 1)&lt;/text&gt;
  &lt;circle cx=&quot;670&quot; cy=&quot;120&quot; r=&quot;12&quot; fill=&quot;#2563eb&quot;/&gt;
  &lt;g fill=&quot;#16a34a&quot;&gt;&lt;circle cx=&quot;800&quot; cy=&quot;90&quot; r=&quot;9&quot;/&gt;&lt;circle cx=&quot;800&quot; cy=&quot;150&quot; r=&quot;9&quot;/&gt;&lt;/g&gt;
  &lt;line x1=&quot;682&quot; y1=&quot;118&quot; x2=&quot;788&quot; y2=&quot;92&quot; stroke=&quot;#16a34a&quot; stroke-width=&quot;2.5&quot; marker-end=&quot;url(#c4g)&quot;/&gt;
  &lt;line x1=&quot;682&quot; y1=&quot;122&quot; x2=&quot;788&quot; y2=&quot;148&quot; stroke=&quot;#cbd5e1&quot; stroke-width=&quot;1.5&quot; stroke-dasharray=&quot;3 3&quot;/&gt;
  &lt;text x=&quot;740&quot; y=&quot;190&quot; font-size=&quot;10&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;같은 그룹 중 가장 가까운 1명&lt;/text&gt;

  &lt;defs&gt;
    &lt;marker id=&quot;c4&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#334155&quot;/&gt;&lt;/marker&gt;
    &lt;marker id=&quot;c4p&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#7c3aed&quot;/&gt;&lt;/marker&gt;
    &lt;marker id=&quot;c4g&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#16a34a&quot;/&gt;&lt;/marker&gt;
  &lt;/defs&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 2. 주소 지정 4형제. Anycast는 &quot;여럿 중 네트워크적으로 가장 가까운 하나&quot;에게만 전달된다는 점이 독특하다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;table&gt;
  &lt;thead&gt;&lt;tr&gt;&lt;th&gt;방식&lt;/th&gt;&lt;th&gt;대상&lt;/th&gt;&lt;th&gt;대표 예&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Unicast&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;특정 한 대상(1:1)&lt;/td&gt;&lt;td&gt;일반적인 웹 접속 대부분&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Broadcast&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;같은 네트워크의 모든 대상(1:전체)&lt;/td&gt;&lt;td&gt;ARP(Address Resolution Protocol) 요청&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Multicast&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;구독한 그룹 전체(1:그룹)&lt;/td&gt;&lt;td&gt;IPTV, 화상회의 스트리밍&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Anycast&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;같은 그룹 중 가장 가까운 하나(1:최근접)&lt;/td&gt;&lt;td&gt;공용 DNS(8.8.8.8), CDN&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2&gt;3. 어떻게 동작하나 — BGP와 &quot;가장 가까운 경로&quot;&lt;/h2&gt;
&lt;p&gt;
Anycast의 심장은 &lt;strong&gt;BGP(Border Gateway Protocol, 경계 경로 프로토콜)&lt;/strong&gt;입니다. BGP는 인터넷의 자율 시스템들
(AS, Autonomous System) 사이에서 &quot;어떤 IP 대역(prefix)이 어디에 있는지&quot;를 광고하고 최적 경로를 정하는 프로토콜입니다.
&lt;/p&gt;
&lt;p&gt;Anycast는 이 성질을 역이용합니다. &lt;strong&gt;동일한 IP 대역을 세계 여러 위치(POP, Point of Presence)에서 동시에 BGP로 광고&lt;/strong&gt;합니다.
그러면 인터넷의 라우터들은 각자의 위치에서 &lt;strong&gt;&quot;가장 좋은(가까운) 경로&quot;&lt;/strong&gt;에 있는 POP를 선택하게 됩니다.&lt;/p&gt;

&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 820 280&quot; role=&quot;img&quot; aria-label=&quot;여러 POP가 같은 프리픽스를 BGP로 광고하는 구조&quot;&gt;
  &lt;text x=&quot;410&quot; y=&quot;26&quot; font-size=&quot;13&quot; font-weight=&quot;700&quot; fill=&quot;#1e40af&quot; text-anchor=&quot;middle&quot;&gt;같은 IP 대역(203.0.113.0/24)을 3곳에서 동시에 광고&lt;/text&gt;

  &lt;!-- POPs --&gt;
  &lt;rect x=&quot;40&quot; y=&quot;60&quot; width=&quot;150&quot; height=&quot;60&quot; rx=&quot;10&quot; fill=&quot;#16a34a&quot;/&gt;
  &lt;text x=&quot;115&quot; y=&quot;85&quot; font-size=&quot;11&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;POP 서울&lt;/text&gt;
  &lt;text x=&quot;115&quot; y=&quot;104&quot; font-size=&quot;9.5&quot; fill=&quot;#dcfce7&quot; text-anchor=&quot;middle&quot;&gt;&quot;203.0.113.0/24 여기 있음&quot;&lt;/text&gt;

  &lt;rect x=&quot;335&quot; y=&quot;60&quot; width=&quot;150&quot; height=&quot;60&quot; rx=&quot;10&quot; fill=&quot;#16a34a&quot;/&gt;
  &lt;text x=&quot;410&quot; y=&quot;85&quot; font-size=&quot;11&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;POP 런던&lt;/text&gt;
  &lt;text x=&quot;410&quot; y=&quot;104&quot; font-size=&quot;9.5&quot; fill=&quot;#dcfce7&quot; text-anchor=&quot;middle&quot;&gt;&quot;203.0.113.0/24 여기 있음&quot;&lt;/text&gt;

  &lt;rect x=&quot;630&quot; y=&quot;60&quot; width=&quot;150&quot; height=&quot;60&quot; rx=&quot;10&quot; fill=&quot;#16a34a&quot;/&gt;
  &lt;text x=&quot;705&quot; y=&quot;85&quot; font-size=&quot;11&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;POP 뉴욕&lt;/text&gt;
  &lt;text x=&quot;705&quot; y=&quot;104&quot; font-size=&quot;9.5&quot; fill=&quot;#dcfce7&quot; text-anchor=&quot;middle&quot;&gt;&quot;203.0.113.0/24 여기 있음&quot;&lt;/text&gt;

  &lt;!-- internet cloud --&gt;
  &lt;ellipse cx=&quot;410&quot; cy=&quot;180&quot; rx=&quot;250&quot; ry=&quot;45&quot; fill=&quot;#eff4ff&quot; stroke=&quot;#93c5fd&quot;/&gt;
  &lt;text x=&quot;410&quot; y=&quot;178&quot; font-size=&quot;12&quot; fill=&quot;#1e40af&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;인터넷 (BGP 라우팅)&lt;/text&gt;
  &lt;text x=&quot;410&quot; y=&quot;196&quot; font-size=&quot;9.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;각 라우터가 자기 위치에서 &quot;가장 가까운 광고&quot;를 채택&lt;/text&gt;

  &lt;g stroke=&quot;#16a34a&quot; stroke-width=&quot;2&quot; fill=&quot;none&quot; stroke-dasharray=&quot;4 3&quot;&gt;
    &lt;line x1=&quot;115&quot; y1=&quot;120&quot; x2=&quot;250&quot; y2=&quot;150&quot; marker-end=&quot;url(#bg)&quot;/&gt;
    &lt;line x1=&quot;410&quot; y1=&quot;120&quot; x2=&quot;410&quot; y2=&quot;140&quot; marker-end=&quot;url(#bg)&quot;/&gt;
    &lt;line x1=&quot;705&quot; y1=&quot;120&quot; x2=&quot;570&quot; y2=&quot;150&quot; marker-end=&quot;url(#bg)&quot;/&gt;
  &lt;/g&gt;

  &lt;!-- users --&gt;
  &lt;circle cx=&quot;150&quot; cy=&quot;245&quot; r=&quot;11&quot; fill=&quot;#2563eb&quot;/&gt;&lt;text x=&quot;150&quot; y=&quot;272&quot; font-size=&quot;9.5&quot; fill=&quot;#334155&quot; text-anchor=&quot;middle&quot;&gt;한국 사용자&lt;/text&gt;
  &lt;circle cx=&quot;670&quot; cy=&quot;245&quot; r=&quot;11&quot; fill=&quot;#2563eb&quot;/&gt;&lt;text x=&quot;670&quot; y=&quot;272&quot; font-size=&quot;9.5&quot; fill=&quot;#334155&quot; text-anchor=&quot;middle&quot;&gt;미국 사용자&lt;/text&gt;
  &lt;line x1=&quot;150&quot; y1=&quot;234&quot; x2=&quot;150&quot; y2=&quot;210&quot; stroke=&quot;#2563eb&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#bgu)&quot;/&gt;
  &lt;line x1=&quot;670&quot; y1=&quot;234&quot; x2=&quot;670&quot; y2=&quot;210&quot; stroke=&quot;#2563eb&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#bgu)&quot;/&gt;
  &lt;text x=&quot;120&quot; y=&quot;150&quot; font-size=&quot;9&quot; fill=&quot;#166534&quot;&gt;→ 서울 POP&lt;/text&gt;
  &lt;text x=&quot;620&quot; y=&quot;150&quot; font-size=&quot;9&quot; fill=&quot;#166534&quot;&gt;→ 뉴욕 POP&lt;/text&gt;

  &lt;defs&gt;
    &lt;marker id=&quot;bg&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#16a34a&quot;/&gt;&lt;/marker&gt;
    &lt;marker id=&quot;bgu&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#2563eb&quot;/&gt;&lt;/marker&gt;
  &lt;/defs&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 3. 여러 POP가 같은 IP 대역을 BGP로 동시에 광고하면, 라우터가 알아서 가까운 POP로 트래픽을 보낸다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;div class=&quot;callout info&quot;&gt;
  &lt;span class=&quot;tag&quot;&gt;핵심&lt;/span&gt;
  Anycast는 특별한 새 프로토콜이 아닙니다. &lt;strong&gt;기존 BGP 라우팅을 영리하게 활용&lt;/strong&gt;한 &quot;운영 기법&quot;에 가깝습니다.
  그래서 서버 입장에서는 평범한 IP를 쓰지만, &quot;그 IP를 여러 곳에서 광고한다&quot;는 점만 다릅니다.
&lt;/div&gt;

&lt;h2&gt;4. 동작 시나리오 — 사용자는 어디로 연결되나&lt;/h2&gt;
&lt;ol&gt;
  &lt;li&gt;운영자가 IP 대역 &lt;code&gt;203.0.113.0/24&lt;/code&gt;를 서울·런던·뉴욕 POP에서 &lt;strong&gt;동시에 BGP로 광고&lt;/strong&gt;한다.&lt;/li&gt;
  &lt;li&gt;인터넷의 라우터들은 각자 위치에서 이 대역으로 가는 &lt;strong&gt;최적 경로&lt;/strong&gt;를 계산한다.&lt;/li&gt;
  &lt;li&gt;한국 사용자의 트래픽은 대개 &lt;strong&gt;서울 POP&lt;/strong&gt;로, 미국 사용자는 &lt;strong&gt;뉴욕 POP&lt;/strong&gt;로 흐른다.&lt;/li&gt;
  &lt;li&gt;만약 &lt;strong&gt;서울 POP가 장애&lt;/strong&gt;로 광고를 멈추면, BGP가 이를 감지해 한국 사용자를 자동으로 다음으로 가까운 POP(예: 도쿄·런던)로 우회시킨다.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;callout ok&quot;&gt;
  &lt;span class=&quot;tag&quot;&gt;자동 장애 조치(Failover)&lt;/span&gt;
  Anycast의 우아함은 여기 있습니다. 한 POP가 죽으면 그 POP가 BGP 광고를 중단하고, 라우팅이 &lt;strong&gt;남은 POP들로 자연스럽게 재수렴&lt;/strong&gt;합니다.
  별도의 복잡한 장치 없이 라우팅 자체가 고가용성을 제공합니다.
&lt;/div&gt;

&lt;h2&gt;5. &quot;가장 가깝다&quot;는 것의 진짜 의미&lt;/h2&gt;
&lt;p&gt;
여기서 흔한 오해가 있습니다. Anycast의 &quot;가장 가까운&quot;은 &lt;strong&gt;물리적(지리적) 거리&lt;/strong&gt;가 아니라
&lt;strong&gt;BGP가 판단하는 네트워크적 거리(최적 경로)&lt;/strong&gt;입니다. BGP는 다음과 같은 기준으로 경로를 고릅니다.
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;AS 경로 길이(AS Path)&lt;/strong&gt; — 거쳐 가는 자율 시스템 수가 적을수록 선호&lt;/li&gt;
  &lt;li&gt;로컬 우선순위(Local Preference), MED, 그리고 각 사업자의 라우팅 정책&lt;/li&gt;
  &lt;li&gt;피어링(peering)·전송(transit) 관계 등 상업적 요인&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;callout warn&quot;&gt;
  &lt;span class=&quot;tag&quot;&gt;그래서 생기는 현상&lt;/span&gt;
  물리적으로 서울이 더 가까워도, 네트워크 경로 사정에 따라 도쿄 POP로 연결될 수 있습니다. 즉 Anycast는
  &quot;대체로 가까운 곳&quot;으로 보내 주지만 &lt;strong&gt;정확한 지리적 라우팅을 보장하지는 않습니다&lt;/strong&gt;. 이 점이 뒤에 나올 단점과 연결됩니다.
&lt;/div&gt;

&lt;h2&gt;6. 태동 배경과 역사 (Motive &amp;amp; History)&lt;/h2&gt;
&lt;p&gt;
Anycast 개념은 1993년 &lt;strong&gt;RFC 1546(&quot;Host Anycasting Service&quot;)&lt;/strong&gt;에서 처음 공식화되었습니다.
초기의 강력한 동기는 &lt;strong&gt;DNS 루트 서버의 생존성&lt;/strong&gt;이었습니다. 전 세계 인터넷의 근간인 13개(논리) 루트 서버를
지리적으로 한 곳에만 두면 장애·공격에 매우 취약합니다. 그래서 &lt;strong&gt;같은 IP를 여러 대륙에 분산 배치&lt;/strong&gt;하는
Anycast가 자연스러운 해법이 되었고, 오늘날 루트 서버는 Anycast로 전 세계 수백~수천 개 인스턴스로 운영됩니다.
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;1993&lt;/strong&gt; — RFC 1546으로 Anycast 개념 정의&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2000년대 초&lt;/strong&gt; — DNS 루트/최상위 도메인(TLD) 서버에 Anycast 본격 적용&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2006&lt;/strong&gt; — RFC 4786(&quot;Operation of Anycast Services&quot;)로 운영 모범 사례 표준화&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2010년대~&lt;/strong&gt; — CDN·공용 DNS(8.8.8.8, 1.1.1.1)·DDoS 방어의 핵심 기반으로 대중화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
참고로 IPv6는 Anycast를 &lt;strong&gt;주소 체계에 공식 포함&lt;/strong&gt;했지만, 현실의 대규모 Anycast는 IPv4·IPv6 모두
&lt;strong&gt;BGP 라우팅으로 구현&lt;/strong&gt;하는 것이 일반적입니다.
&lt;/p&gt;

&lt;h2&gt;7. 장점 — 왜 쓰는가&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;&lt;tr&gt;&lt;th&gt;장점&lt;/th&gt;&lt;th&gt;설명&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;낮은 지연(Latency)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;사용자를 가까운 POP로 보내 왕복 시간(RTT)을 줄인다&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;부하 분산(Load Balancing)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;전 세계 트래픽이 여러 POP로 자연 분산된다&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;고가용성(High Availability)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;한 POP 장애 시 BGP가 자동으로 다른 POP로 재라우팅&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;DDoS 완화&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;공격 트래픽도 여러 POP로 분산되어 한 지점에 집중되지 않음(흡수)&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;운영 단순성&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;사용자에게는 IP가 하나뿐 — 클라이언트 설정 변경이 필요 없다&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;확장성&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;POP를 추가로 광고하기만 하면 용량·커버리지가 늘어난다&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 800 240&quot; role=&quot;img&quot; aria-label=&quot;Anycast를 이용한 DDoS 트래픽 분산 흡수&quot;&gt;
  &lt;text x=&quot;400&quot; y=&quot;28&quot; font-size=&quot;13&quot; font-weight=&quot;700&quot; fill=&quot;#b91c1c&quot; text-anchor=&quot;middle&quot;&gt;DDoS 공격 트래픽이 여러 POP로 쪼개져 흡수된다&lt;/text&gt;
  &lt;!-- botnet --&gt;
  &lt;g fill=&quot;#ef4444&quot;&gt;
    &lt;circle cx=&quot;60&quot; cy=&quot;80&quot; r=&quot;9&quot;/&gt;&lt;circle cx=&quot;60&quot; cy=&quot;120&quot; r=&quot;9&quot;/&gt;&lt;circle cx=&quot;60&quot; cy=&quot;160&quot; r=&quot;9&quot;/&gt;&lt;circle cx=&quot;60&quot; cy=&quot;200&quot; r=&quot;9&quot;/&gt;
  &lt;/g&gt;
  &lt;text x=&quot;60&quot; y=&quot;228&quot; font-size=&quot;10&quot; fill=&quot;#b91c1c&quot; text-anchor=&quot;middle&quot;&gt;Botnet&lt;/text&gt;

  &lt;!-- POPs --&gt;
  &lt;rect x=&quot;330&quot; y=&quot;55&quot; width=&quot;120&quot; height=&quot;34&quot; rx=&quot;7&quot; fill=&quot;#16a34a&quot;/&gt;&lt;text x=&quot;390&quot; y=&quot;77&quot; font-size=&quot;10&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot;&gt;POP 1&lt;/text&gt;
  &lt;rect x=&quot;330&quot; y=&quot;103&quot; width=&quot;120&quot; height=&quot;34&quot; rx=&quot;7&quot; fill=&quot;#16a34a&quot;/&gt;&lt;text x=&quot;390&quot; y=&quot;125&quot; font-size=&quot;10&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot;&gt;POP 2&lt;/text&gt;
  &lt;rect x=&quot;330&quot; y=&quot;151&quot; width=&quot;120&quot; height=&quot;34&quot; rx=&quot;7&quot; fill=&quot;#16a34a&quot;/&gt;&lt;text x=&quot;390&quot; y=&quot;173&quot; font-size=&quot;10&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot;&gt;POP 3&lt;/text&gt;
  &lt;rect x=&quot;330&quot; y=&quot;199&quot; width=&quot;120&quot; height=&quot;34&quot; rx=&quot;7&quot; fill=&quot;#16a34a&quot;/&gt;&lt;text x=&quot;390&quot; y=&quot;221&quot; font-size=&quot;10&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot;&gt;POP 4&lt;/text&gt;

  &lt;g stroke=&quot;#dc2626&quot; stroke-width=&quot;2&quot; fill=&quot;none&quot;&gt;
    &lt;line x1=&quot;69&quot; y1=&quot;80&quot; x2=&quot;328&quot; y2=&quot;72&quot; marker-end=&quot;url(#dd)&quot;/&gt;
    &lt;line x1=&quot;69&quot; y1=&quot;120&quot; x2=&quot;328&quot; y2=&quot;120&quot; marker-end=&quot;url(#dd)&quot;/&gt;
    &lt;line x1=&quot;69&quot; y1=&quot;160&quot; x2=&quot;328&quot; y2=&quot;168&quot; marker-end=&quot;url(#dd)&quot;/&gt;
    &lt;line x1=&quot;69&quot; y1=&quot;200&quot; x2=&quot;328&quot; y2=&quot;216&quot; marker-end=&quot;url(#dd)&quot;/&gt;
  &lt;/g&gt;

  &lt;text x=&quot;560&quot; y=&quot;120&quot; font-size=&quot;12&quot; fill=&quot;#166534&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;각 POP는 자기 몫만 감당&lt;/text&gt;
  &lt;text x=&quot;560&quot; y=&quot;145&quot; font-size=&quot;10.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;→ 한 곳에 집중됐다면 마비됐을 규모가&lt;/text&gt;
  &lt;text x=&quot;560&quot; y=&quot;163&quot; font-size=&quot;10.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;여러 곳으로 나뉘어 견딜 수 있다&lt;/text&gt;
  &lt;defs&gt;&lt;marker id=&quot;dd&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#dc2626&quot;/&gt;&lt;/marker&gt;&lt;/defs&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 4. Anycast의 DDoS 완화 효과 — 공격 트래픽이 여러 POP로 분산되어 자연스럽게 흡수된다. (Cloudflare 등 클라우드 방어의 핵심 원리)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;h2&gt;8. 단점과 도전 과제&lt;/h2&gt;
&lt;p&gt;Anycast가 만능은 아닙니다. 특히 &lt;strong&gt;연결 지향(stateful) 세션&lt;/strong&gt;과 관련한 어려움이 있습니다.&lt;/p&gt;

&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 800 220&quot; role=&quot;img&quot; aria-label=&quot;경로 변경 시 TCP 세션이 다른 POP로 튀는 문제&quot;&gt;
  &lt;circle cx=&quot;70&quot; cy=&quot;110&quot; r=&quot;12&quot; fill=&quot;#2563eb&quot;/&gt;&lt;text x=&quot;70&quot; y=&quot;140&quot; font-size=&quot;10&quot; fill=&quot;#334155&quot; text-anchor=&quot;middle&quot;&gt;사용자&lt;/text&gt;

  &lt;rect x=&quot;330&quot; y=&quot;45&quot; width=&quot;130&quot; height=&quot;45&quot; rx=&quot;8&quot; fill=&quot;#16a34a&quot;/&gt;&lt;text x=&quot;395&quot; y=&quot;72&quot; font-size=&quot;10.5&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot;&gt;POP A (세션 진행중)&lt;/text&gt;
  &lt;rect x=&quot;330&quot; y=&quot;140&quot; width=&quot;130&quot; height=&quot;45&quot; rx=&quot;8&quot; fill=&quot;#f59e0b&quot;/&gt;&lt;text x=&quot;395&quot; y=&quot;167&quot; font-size=&quot;10.5&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot;&gt;POP B (상태 모름!)&lt;/text&gt;

  &lt;line x1=&quot;82&quot; y1=&quot;106&quot; x2=&quot;328&quot; y2=&quot;72&quot; stroke=&quot;#16a34a&quot; stroke-width=&quot;2.5&quot; marker-end=&quot;url(#ta)&quot;/&gt;
  &lt;text x=&quot;200&quot; y=&quot;80&quot; font-size=&quot;10&quot; fill=&quot;#166534&quot;&gt;① TCP 연결 맺음&lt;/text&gt;

  &lt;line x1=&quot;82&quot; y1=&quot;114&quot; x2=&quot;328&quot; y2=&quot;160&quot; stroke=&quot;#dc2626&quot; stroke-width=&quot;2.5&quot; stroke-dasharray=&quot;5 3&quot; marker-end=&quot;url(#tr)&quot;/&gt;
  &lt;text x=&quot;200&quot; y=&quot;165&quot; font-size=&quot;10&quot; fill=&quot;#b91c1c&quot;&gt;② 경로 변경(route flap) → B로 튐&lt;/text&gt;

  &lt;text x=&quot;600&quot; y=&quot;95&quot; font-size=&quot;11&quot; fill=&quot;#b91c1c&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;POP B는 이 세션을 모름&lt;/text&gt;
  &lt;text x=&quot;600&quot; y=&quot;115&quot; font-size=&quot;10&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;→ 연결 끊김·재접속 필요&lt;/text&gt;
  &lt;text x=&quot;600&quot; y=&quot;140&quot; font-size=&quot;10&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;(짧은 DNS/UDP 질의는 문제 적음,&lt;/text&gt;
  &lt;text x=&quot;600&quot; y=&quot;156&quot; font-size=&quot;10&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt; 긴 TCP·TLS 세션은 주의)&lt;/text&gt;
  &lt;defs&gt;
    &lt;marker id=&quot;ta&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#16a34a&quot;/&gt;&lt;/marker&gt;
    &lt;marker id=&quot;tr&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#dc2626&quot;/&gt;&lt;/marker&gt;
  &lt;/defs&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 5. Anycast의 대표 약점 — 경로가 바뀌면 진행 중이던 TCP 세션이 상태를 모르는 다른 POP로 튈 수 있다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;세션 안정성&lt;/strong&gt; — 라우팅 경로가 바뀌면(route flap) 진행 중이던 TCP·TLS 세션이 다른 POP로 이동해 끊길 수 있다. 그래서 Anycast는 원래 &lt;strong&gt;짧고 무상태(stateless)한 질의&lt;/strong&gt;(DNS 등)에 가장 잘 맞았다.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;정확한 지리 제어 어려움&lt;/strong&gt; — &quot;가장 가까운&quot;은 BGP 정책에 좌우되어, 원하는 대로 특정 지역을 특정 POP로 보내기 어렵다.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;디버깅·관측의 어려움&lt;/strong&gt; — 같은 IP인데 사용자마다 다른 서버에 닿으므로 문제 재현·추적이 까다롭다.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;진입 장벽&lt;/strong&gt; — 자체 &lt;strong&gt;AS 번호&lt;/strong&gt;와 &lt;strong&gt;독립 IP 대역(Provider Independent)&lt;/strong&gt;, 여러 POP에서의 BGP 운영 능력이 필요하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;callout info&quot;&gt;
  &lt;span class=&quot;tag&quot;&gt;현대의 해법&lt;/span&gt;
  요즘 CDN·클라우드는 안정적인 백본과 세션 처리 기법으로 TCP·TLS·HTTP까지 Anycast 위에서 안정적으로 운영합니다.
  즉 &quot;Anycast는 DNS 전용&quot;이라는 옛 통념은 상당 부분 극복되었습니다.
&lt;/div&gt;

&lt;h2&gt;9. 대표 활용 사례 (Use Case)&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;&lt;tr&gt;&lt;th&gt;분야&lt;/th&gt;&lt;th&gt;Anycast가 하는 일&lt;/th&gt;&lt;th&gt;예시&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;공용·권한 DNS&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;세계 어디서나 가까운 서버로 빠르게 이름 해석, 루트 서버 생존성 확보&lt;/td&gt;&lt;td&gt;8.8.8.8(Google), 1.1.1.1(Cloudflare), 9.9.9.9(Quad9), DNS 루트 서버&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;CDN(콘텐츠 전송 네트워크)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;사용자를 가까운 엣지 서버로 보내 콘텐츠를 빠르게 제공&lt;/td&gt;&lt;td&gt;Cloudflare, Fastly, Akamai&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;DDoS 완화&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;공격 트래픽을 여러 POP로 분산 흡수&lt;/td&gt;&lt;td&gt;클라우드 DDoS 방어 서비스 전반&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;NTP(시간 동기화)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;가까운 시간 서버로 연결&lt;/td&gt;&lt;td&gt;일부 공용 NTP 서비스&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;글로벌 API·엣지&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;단일 IP로 전 세계에 저지연 진입점 제공&lt;/td&gt;&lt;td&gt;AWS Global Accelerator 등&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2&gt;10. Anycast vs GSLB (DNS 기반 부하분산)&lt;/h2&gt;
&lt;p&gt;
&quot;사용자를 가까운 서버로 보낸다&quot;는 목표는 &lt;strong&gt;GSLB(Global Server Load Balancing)&lt;/strong&gt;로도 달성할 수 있습니다.
GSLB는 &lt;strong&gt;DNS 응답 단계에서&lt;/strong&gt; 사용자 위치에 따라 다른 IP를 돌려주는 방식입니다. 둘은 자주 함께 쓰이지만 계층이 다릅니다.
&lt;/p&gt;
&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 820 200&quot; role=&quot;img&quot; aria-label=&quot;Anycast와 GSLB 비교&quot;&gt;
  &lt;rect x=&quot;20&quot; y=&quot;30&quot; width=&quot;380&quot; height=&quot;150&quot; rx=&quot;12&quot; fill=&quot;#f0fdf4&quot; stroke=&quot;#bbf7d0&quot;/&gt;
  &lt;text x=&quot;210&quot; y=&quot;56&quot; font-size=&quot;13&quot; font-weight=&quot;700&quot; fill=&quot;#166534&quot; text-anchor=&quot;middle&quot;&gt;Anycast (라우팅 계층)&lt;/text&gt;
  &lt;text x=&quot;210&quot; y=&quot;82&quot; font-size=&quot;11&quot; fill=&quot;#14532d&quot; text-anchor=&quot;middle&quot;&gt;같은 IP를 여러 곳에서 BGP 광고&lt;/text&gt;
  &lt;text x=&quot;210&quot; y=&quot;104&quot; font-size=&quot;11&quot; fill=&quot;#14532d&quot; text-anchor=&quot;middle&quot;&gt;→ 네트워크가 경로로 결정&lt;/text&gt;
  &lt;text x=&quot;210&quot; y=&quot;130&quot; font-size=&quot;10.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;빠른 장애 조치 · 클라이언트 IP 불변&lt;/text&gt;
  &lt;text x=&quot;210&quot; y=&quot;150&quot; font-size=&quot;10.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;세밀한 지역 제어는 약함&lt;/text&gt;

  &lt;rect x=&quot;420&quot; y=&quot;30&quot; width=&quot;380&quot; height=&quot;150&quot; rx=&quot;12&quot; fill=&quot;#eff4ff&quot; stroke=&quot;#93c5fd&quot;/&gt;
  &lt;text x=&quot;610&quot; y=&quot;56&quot; font-size=&quot;13&quot; font-weight=&quot;700&quot; fill=&quot;#1e40af&quot; text-anchor=&quot;middle&quot;&gt;GSLB (DNS 계층)&lt;/text&gt;
  &lt;text x=&quot;610&quot; y=&quot;82&quot; font-size=&quot;11&quot; fill=&quot;#1e3a8a&quot; text-anchor=&quot;middle&quot;&gt;위치·상태에 따라 다른 IP 응답&lt;/text&gt;
  &lt;text x=&quot;610&quot; y=&quot;104&quot; font-size=&quot;11&quot; fill=&quot;#1e3a8a&quot; text-anchor=&quot;middle&quot;&gt;→ DNS 이름 해석 단계에서 결정&lt;/text&gt;
  &lt;text x=&quot;610&quot; y=&quot;130&quot; font-size=&quot;10.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;세밀한 정책·헬스체크 유리&lt;/text&gt;
  &lt;text x=&quot;610&quot; y=&quot;150&quot; font-size=&quot;10.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;DNS 캐시(TTL) 탓 전환이 느릴 수 있음&lt;/text&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 6. Anycast(라우팅 계층)와 GSLB(DNS 계층)는 서로 다른 층위의 해법이며, 실무에서는 함께 조합해 쓰기도 한다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;h2&gt;11. 어떻게 구축하나 — 구현 개요&lt;/h2&gt;
&lt;p&gt;Anycast를 직접 운영하려면 대략 다음이 필요합니다.&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;자체 AS 번호(ASN)&lt;/strong&gt; — 인터넷에 BGP로 경로를 광고할 자격&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;독립 IP 대역(PI, Provider Independent address space)&lt;/strong&gt; — 여러 곳에서 동일하게 광고할 주소&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;여러 POP(데이터센터)&lt;/strong&gt; — 각 위치에서 서버 + BGP 라우터 운영&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;동일 프리픽스의 BGP 광고&lt;/strong&gt; — 모든 POP에서 같은 대역을 광고&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;헬스체크 연동&lt;/strong&gt; — 서버가 죽으면 그 POP의 광고를 자동 철회(withdraw)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;개념을 보여주는 라우터 BGP 설정 예시입니다(제품마다 문법은 다릅니다).&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# (개념 예시) 각 POP의 라우터에서 동일한 Anycast 프리픽스를 광고
router bgp 65001
 address-family ipv4 unicast
  network 203.0.113.0/24        # 세 POP 모두 동일하게 광고
 neighbor 198.51.100.1 remote-as 64500   # 상위 사업자(transit)와 피어링

# 서버 헬스체크 실패 시 광고를 자동 철회하는 흐름 (개념)
#   healthy   -&gt; announce 203.0.113.0/24
#   unhealthy -&gt; withdraw 203.0.113.0/24   (트래픽이 다른 POP로 재라우팅됨)&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&quot;callout warn&quot;&gt;
  &lt;span class=&quot;tag&quot;&gt;현실적인 조언&lt;/span&gt;
  자체 Anycast 운영은 BGP 전문성과 여러 지역 인프라가 필요해 진입 장벽이 높습니다. 대부분의 서비스는
  &lt;strong&gt;Cloudflare·Fastly·AWS 같은 사업자의 Anycast 네트워크를 빌려 쓰는 것&lt;/strong&gt;이 훨씬 현실적입니다.
&lt;/div&gt;

&lt;h2&gt;12. 시장과 선도 기업&lt;/h2&gt;
&lt;p&gt;
Anycast는 이제 대규모 인터넷 서비스의 &lt;strong&gt;필수 기반 기술&lt;/strong&gt;입니다. 특히 CDN·공용 DNS·DDoS 방어 시장의
핵심 경쟁력으로 자리 잡았습니다.
&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;&lt;tr&gt;&lt;th&gt;기업&lt;/th&gt;&lt;th&gt;Anycast 활용 강점&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Cloudflare&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;전 세계 수백 개 도시의 거대한 Anycast 네트워크. 공용 DNS 1.1.1.1, CDN, DDoS 방어의 근간. Anycast 대중화의 상징&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Google&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;공용 DNS 8.8.8.8을 Anycast로 운영. 글로벌 백본 기반의 대규모 Anycast&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Akamai&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;세계 최대급 CDN·Scrubbing 네트워크에 Anycast 활용&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Fastly&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;엣지 클라우드·CDN에서 Anycast를 적극 활용(강력한 POP 기반)&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Amazon Web Services&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Global Accelerator, Route 53 등에서 Anycast 기반 글로벌 진입점 제공&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;NS1 · Quad9 등&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;관리형 DNS·공용 리졸버 서비스에 Anycast 적용&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
성장 동력은 분명합니다. 저지연에 대한 요구, 글로벌 서비스 확산, 그리고 초대형 DDoS의 상시화가 모두
&lt;strong&gt;&quot;많은 POP를 가진 Anycast 네트워크&quot;&lt;/strong&gt;를 더욱 중요하게 만들고 있습니다.
&lt;/p&gt;

&lt;h2&gt;13. 용어 설명&lt;/h2&gt;
&lt;dl class=&quot;glossary&quot;&gt;
  &lt;dt&gt;Anycast (애니캐스트)&lt;/dt&gt;
  &lt;dd&gt;하나의 IP 주소를 여러 서버가 공유하고, 각 사용자를 네트워크적으로 가장 가까운 서버로 연결하는 주소 지정·라우팅 방식.&lt;/dd&gt;

  &lt;dt&gt;Unicast / Broadcast / Multicast&lt;/dt&gt;
  &lt;dd&gt;각각 1:1 전달, 같은 망 전체 전달, 구독한 그룹 전달 방식. Anycast는 &quot;그룹 중 가장 가까운 하나&quot;에 전달.&lt;/dd&gt;

  &lt;dt&gt;BGP (Border Gateway Protocol, 경계 경로 프로토콜)&lt;/dt&gt;
  &lt;dd&gt;인터넷의 자율 시스템(AS)들 사이에서 경로 정보를 교환하고 최적 경로를 정하는 프로토콜. Anycast의 동작 기반.&lt;/dd&gt;

  &lt;dt&gt;AS / ASN (Autonomous System / AS Number)&lt;/dt&gt;
  &lt;dd&gt;하나의 정책으로 운영되는 네트워크 집합(AS)과 그 식별 번호(ASN). BGP로 경로를 광고하는 주체.&lt;/dd&gt;

  &lt;dt&gt;Prefix (프리픽스) / Advertise (광고)&lt;/dt&gt;
  &lt;dd&gt;프리픽스는 IP 주소 대역(예: 203.0.113.0/24). &quot;광고&quot;는 그 대역이 자기 네트워크에 있다고 BGP로 알리는 것.&lt;/dd&gt;

  &lt;dt&gt;POP (Point of Presence)&lt;/dt&gt;
  &lt;dd&gt;서비스 제공자의 네트워크 접속·서버 거점. Anycast는 여러 POP에서 같은 IP를 광고한다.&lt;/dd&gt;

  &lt;dt&gt;PI Address (Provider Independent 주소)&lt;/dt&gt;
  &lt;dd&gt;특정 통신사에 종속되지 않고 조직이 독립적으로 보유·광고할 수 있는 IP 대역. 자체 Anycast 운영에 필요.&lt;/dd&gt;

  &lt;dt&gt;AS Path (AS 경로)&lt;/dt&gt;
  &lt;dd&gt;목적지까지 거쳐 가는 AS들의 목록. BGP는 대체로 이 경로가 짧은 쪽을 선호한다.&lt;/dd&gt;

  &lt;dt&gt;Route Flap (경로 요동)&lt;/dt&gt;
  &lt;dd&gt;BGP 경로가 짧은 시간에 바뀌는 현상. Anycast에서 진행 중인 TCP 세션이 다른 POP로 이동해 끊길 수 있는 원인.&lt;/dd&gt;

  &lt;dt&gt;Failover (장애 조치)&lt;/dt&gt;
  &lt;dd&gt;한 POP가 광고를 중단하면 트래픽이 자동으로 다른 POP로 우회되는 것. Anycast의 고가용성 핵심.&lt;/dd&gt;

  &lt;dt&gt;Withdraw (광고 철회)&lt;/dt&gt;
  &lt;dd&gt;장애 등으로 특정 프리픽스 광고를 취소하는 것. 헬스체크와 연동해 자동 장애 조치를 구현한다.&lt;/dd&gt;

  &lt;dt&gt;GSLB (Global Server Load Balancing)&lt;/dt&gt;
  &lt;dd&gt;DNS 응답 단계에서 사용자 위치·상태에 따라 다른 IP를 돌려주는 글로벌 부하분산. Anycast와 계층이 다르며 함께 쓰이기도 한다.&lt;/dd&gt;

  &lt;dt&gt;CDN (Content Delivery Network)&lt;/dt&gt;
  &lt;dd&gt;전 세계에 분산된 캐시 서버 네트워크. Anycast로 사용자를 가까운 엣지로 연결한다.&lt;/dd&gt;
&lt;/dl&gt;

&lt;hr style=&quot;margin:2.5em 0; border:none; border-top:1px solid var(--c-line);&quot;&gt;
&lt;p style=&quot;color:#94a3b8; font-size:.86em;&quot;&gt;
본 문서는 학습 목적의 개념 정리입니다. &quot;DNS 구조&quot;·&quot;DoS·DDoS&quot; 문서와 함께 보면 Anycast가 실제로 어떻게 활용되는지 더 깊이 이해할 수 있습니다.
&lt;/p&gt;

&lt;/div&gt;</description>
      <category>Network</category>
      <author>AndrewJ</author>
      <guid isPermaLink="true">https://andrewpage.tistory.com/503</guid>
      <comments>https://andrewpage.tistory.com/503#entry503comment</comments>
      <pubDate>Tue, 4 Aug 2026 16:34:07 +0900</pubDate>
    </item>
    <item>
      <title>AI 기반 DDoS 공격 탐지 &amp;mdash; 상용 제품 &amp;middot; 연구 &amp;middot; 오픈소스</title>
      <link>https://andrewpage.tistory.com/502</link>
      <description>
&lt;div class=&quot;sdoc&quot;&gt;
&lt;style&gt;
.sdoc{
  --c-text:#1f2933; --c-sub:#52606d; --c-line:#e4e7eb;
  --c-primary:#2563eb; --c-primary-d:#1e40af; --c-accent:#db2777;
  --c-bg-soft:#f5f7fa; --c-bg-blue:#eff4ff; --c-bg-warn:#fff7ed;
  --c-bg-danger:#fef2f2; --c-bg-ok:#f0fdf4;
  color:var(--c-text);
  font-family:-apple-system,BlinkMacSystemFont,&quot;Segoe UI&quot;,&quot;Apple SD Gothic Neo&quot;,&quot;Malgun Gothic&quot;,sans-serif;
  line-height:1.75; font-size:16px; word-break:keep-all; max-width:920px; margin:0 auto;
}
.sdoc *{box-sizing:border-box;}
.sdoc h1{font-size:2em; line-height:1.3; margin:.2em 0 .6em; letter-spacing:-.02em;}
.sdoc h2{font-size:1.5em; margin:2em 0 .7em; padding-bottom:.3em; border-bottom:3px solid var(--c-primary); letter-spacing:-.02em;}
.sdoc h3{font-size:1.2em; margin:1.6em 0 .5em; color:var(--c-primary-d);}
.sdoc p{margin:.7em 0;}
.sdoc ul,.sdoc ol{margin:.6em 0; padding-left:1.4em;}
.sdoc li{margin:.35em 0;}
.sdoc code{background:var(--c-bg-soft); padding:.1em .4em; border-radius:4px; font-size:.9em;
  font-family:&quot;SFMono-Regular&quot;,Consolas,&quot;Liberation Mono&quot;,Menlo,monospace; color:var(--c-accent);}
.sdoc pre{background:#0f172a; color:#e2e8f0; padding:1em 1.2em; border-radius:8px; overflow-x:auto;
  font-size:.86em; line-height:1.6;}
.sdoc pre code{background:none; color:inherit; padding:0;}
/* 코드 블록: 줄무늬(zebra) 방지 — 모든 줄을 검은 배경+밝은 글씨로 강제 고정 */
.sdoc pre, .sdoc pre *{background:#0f172a !important; color:#e2e8f0 !important; border:0 !important; box-shadow:none !important;}
.sdoc pre table, .sdoc pre tr, .sdoc pre td, .sdoc pre th{border:0 !important; border-collapse:collapse !important; padding:0 !important;}
.sdoc a{color:var(--c-primary); }

.sdoc .lead{font-size:1.1em; color:var(--c-sub); border-left:4px solid var(--c-primary);
  padding:.6em 1em; background:var(--c-bg-blue); border-radius:0 8px 8px 0;}

.sdoc .callout{border-radius:10px; padding:1em 1.2em; margin:1.2em 0; border:1px solid var(--c-line);}
.sdoc .callout.info{background:var(--c-bg-blue); border-color:#bfdbfe;}
.sdoc .callout.warn{background:var(--c-bg-warn); border-color:#fed7aa;}
.sdoc .callout.danger{background:var(--c-bg-danger); border-color:#fecaca;}
.sdoc .callout.ok{background:var(--c-bg-ok); border-color:#bbf7d0;}
.sdoc .callout .tag{font-weight:700; display:block; margin-bottom:.3em;}

.sdoc table{border-collapse:collapse; width:100%; margin:1.2em 0; font-size:.92em; overflow:hidden;
  border-radius:8px;}
.sdoc th,.sdoc td{border:1px solid var(--c-line); padding:.6em .8em; text-align:left; vertical-align:top;}
.sdoc thead th{background:var(--c-primary); color:#fff; border-color:var(--c-primary);}
.sdoc tbody tr:nth-child(even){background:var(--c-bg-soft);}

.sdoc figure{margin:1.6em 0; text-align:center;}
.sdoc figure svg{max-width:100%; height:auto;}
.sdoc figcaption{font-size:.88em; color:var(--c-sub); margin-top:.6em;}

.sdoc .fig-wrap{overflow-x:auto; border:1px solid var(--c-line); border-radius:10px; background:#fff; padding:14px;}

.sdoc .toc{background:var(--c-bg-soft); border:1px solid var(--c-line); border-radius:10px; padding:1em 1.4em;}
.sdoc .toc strong{display:block; margin-bottom:.4em; font-size:1.05em;}
.sdoc .toc ol{margin:.3em 0;}

.sdoc .glossary dt{font-weight:700; color:var(--c-primary-d); margin-top:.9em;}
.sdoc .glossary dd{margin:.2em 0 .2em 0; color:var(--c-sub);}

.sdoc .refs{font-size:.9em;} .sdoc .refs li{margin:.3em 0; word-break:break-all;}
.sdoc .pill{display:inline-block; background:var(--c-primary); color:#fff; font-size:.72em;
  padding:.12em .55em; border-radius:999px; vertical-align:middle; margin-left:.3em;}
.sdoc .pill.g{background:#16a34a;} .sdoc .pill.p{background:#7c3aed;} .sdoc .pill.o{background:#ea580c;}

/* 그림 확대(zoom) — 순수 CSS :target 오버레이, JS 불필요 */
.sdoc figcaption{position:relative; padding:0 66px;}
.sdoc .zoom-btn{position:absolute; right:4px; top:50%; transform:translateY(-50%);
  display:inline-block; padding:2px 9px; font-size:.82em; line-height:1.5; white-space:nowrap;
  border:1px solid var(--c-primary); border-radius:6px; color:var(--c-primary);
  background:#fff; text-decoration:none; cursor:zoom-in;}
.sdoc .zoom-btn:hover{background:var(--c-primary); color:#fff;}
.sdoc .zoom-close, .sdoc .zoom-backdrop{display:none;}
.sdoc .fig-wrap:target{position:fixed; inset:0; z-index:99999; margin:0; border:0; border-radius:0;
  padding:24px; background:rgba(15,23,42,.92); display:flex; align-items:center; justify-content:center; overflow:auto;}
.sdoc .fig-wrap:target figure{position:relative; z-index:2; margin:0; background:#fff;
  border-radius:12px; padding:20px; width:96vw; height:92vh; max-width:96vw; max-height:92vh;
  display:flex; flex-direction:column; overflow:auto;}
.sdoc .fig-wrap:target figure svg{flex:1 1 auto; width:100%; height:100%;
  min-height:0; max-width:100%; max-height:100%;}
.sdoc .fig-wrap:target figcaption{flex:0 0 auto; padding:10px 20px 0; margin-top:8px;}
.sdoc .fig-wrap:target .zoom-btn{display:none;}
.sdoc .fig-wrap:target .zoom-backdrop{display:block; position:fixed; inset:0; z-index:1; cursor:zoom-out;}
.sdoc .fig-wrap:target .zoom-close{display:flex; align-items:center; justify-content:center;
  position:fixed; top:18px; right:22px; width:46px; height:46px; z-index:3; border-radius:50%;
  background:#fff; color:#0f172a; font-size:24px; line-height:1; text-decoration:none;
  box-shadow:0 3px 10px rgba(0,0,0,.35); cursor:pointer;}
&lt;/style&gt;

&lt;h1&gt;AI로 DDoS를 잡는다 — 상용 제품 · 연구 · 오픈소스 총조사&lt;/h1&gt;

&lt;p class=&quot;lead&quot;&gt;
DDoS(Distributed Denial of Service, 분산 서비스 거부) 공격은 갈수록 정교해지고, 공격자마저 AI·자동화를 쓰기 시작했습니다.
이에 맞서 방어 진영도 &lt;strong&gt;인공지능(AI, Artificial Intelligence)·머신러닝(ML, Machine Learning)&lt;/strong&gt;을 탐지의 핵심으로 끌어올렸습니다.
이 문서는 &lt;strong&gt;① AI를 활용하는 상용 제품&lt;/strong&gt;, &lt;strong&gt;② 학술 연구 결과와 데이터셋&lt;/strong&gt;,
&lt;strong&gt;③ 바로 써 볼 수 있는 오픈소스 코드&lt;/strong&gt;를 한자리에 정리한 조사 보고서입니다.
&lt;/p&gt;

&lt;div class=&quot;callout info&quot;&gt;
  &lt;span class=&quot;tag&quot;&gt;함께 보면 좋은 문서&lt;/span&gt;
  이 글은 &quot;DDoS 탐지 방법 총정리&quot;의 &lt;strong&gt;머신러닝·딥러닝 파트&lt;/strong&gt;를 제품·연구·코드 관점에서 확장한 조사편입니다.
  탐지 기법의 원리(시그니처·엔트로피·오토인코더·LSTM 등)는 그 문서를, 여기서는 &quot;누가 실제로 만들고 있는가&quot;를 다룹니다.
&lt;/div&gt;

&lt;div class=&quot;toc&quot;&gt;
  &lt;strong&gt;목차&lt;/strong&gt;
  &lt;ol&gt;
    &lt;li&gt;큰 그림 — AI DDoS 탐지의 3축&lt;/li&gt;
    &lt;li&gt;왜 AI인가 — 규칙 기반의 한계&lt;/li&gt;
    &lt;li&gt;AI 탐지 기법 분류(taxonomy)&lt;/li&gt;
    &lt;li&gt;AI 기반 상용 제품 총정리&lt;/li&gt;
    &lt;li&gt;학술 연구 동향과 대표 성능&lt;/li&gt;
    &lt;li&gt;연구·학습용 공개 데이터셋&lt;/li&gt;
    &lt;li&gt;오픈소스 코드 (바로 써 보기)&lt;/li&gt;
    &lt;li&gt;전형적인 AI 탐지 파이프라인&lt;/li&gt;
    &lt;li&gt;냉정한 현실 — 벤치마크의 함정&lt;/li&gt;
    &lt;li&gt;AI vs AI — 공격도 AI를 쓴다&lt;/li&gt;
    &lt;li&gt;용어 설명&lt;/li&gt;
    &lt;li&gt;참고 자료(Sources)&lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;

&lt;h2&gt;1. 큰 그림 — AI DDoS 탐지의 3축&lt;/h2&gt;
&lt;div class=&quot;fig-wrap&quot; id=&quot;zoom-14-1&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 840 250&quot; role=&quot;img&quot; aria-label=&quot;AI DDoS 탐지의 3축: 상용 제품, 연구, 오픈소스&quot;&gt;
  &lt;rect x=&quot;20&quot; y=&quot;40&quot; width=&quot;250&quot; height=&quot;170&quot; rx=&quot;12&quot; fill=&quot;#eff4ff&quot; stroke=&quot;#93c5fd&quot;/&gt;
  &lt;text x=&quot;145&quot; y=&quot;70&quot; font-size=&quot;14&quot; font-weight=&quot;700&quot; fill=&quot;#1e40af&quot; text-anchor=&quot;middle&quot;&gt;① 상용 제품&lt;/text&gt;
  &lt;text x=&quot;145&quot; y=&quot;98&quot; font-size=&quot;11&quot; fill=&quot;#1e3a8a&quot; text-anchor=&quot;middle&quot;&gt;Radware · NETSCOUT&lt;/text&gt;
  &lt;text x=&quot;145&quot; y=&quot;118&quot; font-size=&quot;11&quot; fill=&quot;#1e3a8a&quot; text-anchor=&quot;middle&quot;&gt;Cloudflare · Akamai&lt;/text&gt;
  &lt;text x=&quot;145&quot; y=&quot;138&quot; font-size=&quot;11&quot; fill=&quot;#1e3a8a&quot; text-anchor=&quot;middle&quot;&gt;A10 · Corero · Nexusguard&lt;/text&gt;
  &lt;text x=&quot;145&quot; y=&quot;158&quot; font-size=&quot;11&quot; fill=&quot;#1e3a8a&quot; text-anchor=&quot;middle&quot;&gt;Fortinet · Kentik · Darktrace&lt;/text&gt;
  &lt;text x=&quot;145&quot; y=&quot;188&quot; font-size=&quot;10&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;&quot;지금 돈 주고 쓰는&quot; 것&lt;/text&gt;

  &lt;rect x=&quot;295&quot; y=&quot;40&quot; width=&quot;250&quot; height=&quot;170&quot; rx=&quot;12&quot; fill=&quot;#f5f3ff&quot; stroke=&quot;#c4b5fd&quot;/&gt;
  &lt;text x=&quot;420&quot; y=&quot;70&quot; font-size=&quot;14&quot; font-weight=&quot;700&quot; fill=&quot;#6d28d9&quot; text-anchor=&quot;middle&quot;&gt;② 학술 연구&lt;/text&gt;
  &lt;text x=&quot;420&quot; y=&quot;98&quot; font-size=&quot;11&quot; fill=&quot;#5b21b6&quot; text-anchor=&quot;middle&quot;&gt;CNN · LSTM · CNN-BiLSTM&lt;/text&gt;
  &lt;text x=&quot;420&quot; y=&quot;118&quot; font-size=&quot;11&quot; fill=&quot;#5b21b6&quot; text-anchor=&quot;middle&quot;&gt;GNN · Transformer&lt;/text&gt;
  &lt;text x=&quot;420&quot; y=&quot;138&quot; font-size=&quot;11&quot; fill=&quot;#5b21b6&quot; text-anchor=&quot;middle&quot;&gt;오토인코더 · 강화학습&lt;/text&gt;
  &lt;text x=&quot;420&quot; y=&quot;158&quot; font-size=&quot;11&quot; fill=&quot;#5b21b6&quot; text-anchor=&quot;middle&quot;&gt;서베이 논문 · 데이터셋&lt;/text&gt;
  &lt;text x=&quot;420&quot; y=&quot;188&quot; font-size=&quot;10&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;&quot;앞으로 올&quot; 것&lt;/text&gt;

  &lt;rect x=&quot;570&quot; y=&quot;40&quot; width=&quot;250&quot; height=&quot;170&quot; rx=&quot;12&quot; fill=&quot;#fff7ed&quot; stroke=&quot;#fdba74&quot;/&gt;
  &lt;text x=&quot;695&quot; y=&quot;70&quot; font-size=&quot;14&quot; font-weight=&quot;700&quot; fill=&quot;#c2410c&quot; text-anchor=&quot;middle&quot;&gt;③ 오픈소스&lt;/text&gt;
  &lt;text x=&quot;695&quot; y=&quot;98&quot; font-size=&quot;11&quot; fill=&quot;#9a3412&quot; text-anchor=&quot;middle&quot;&gt;LUCID · learn2ban&lt;/text&gt;
  &lt;text x=&quot;695&quot; y=&quot;118&quot; font-size=&quot;11&quot; fill=&quot;#9a3412&quot; text-anchor=&quot;middle&quot;&gt;SDN+ML 탐지·완화&lt;/text&gt;
  &lt;text x=&quot;695&quot; y=&quot;138&quot; font-size=&quot;11&quot; fill=&quot;#9a3412&quot; text-anchor=&quot;middle&quot;&gt;비교 연구 코드 모음&lt;/text&gt;
  &lt;text x=&quot;695&quot; y=&quot;158&quot; font-size=&quot;11&quot; fill=&quot;#9a3412&quot; text-anchor=&quot;middle&quot;&gt;GitHub ddos-detection&lt;/text&gt;
  &lt;text x=&quot;695&quot; y=&quot;188&quot; font-size=&quot;10&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;&quot;직접 만들어 볼&quot; 것&lt;/text&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 1. AI DDoS 탐지 생태계의 3축 — 이 문서는 이 셋을 각각 조사한다. &lt;a class=&quot;zoom-btn&quot; href=&quot;#zoom-14-1&quot;&gt;[확대]&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;a class=&quot;zoom-backdrop&quot; href=&quot;#_close&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;
&lt;a class=&quot;zoom-close&quot; href=&quot;#_close&quot; aria-label=&quot;닫기&quot; role=&quot;button&quot;&gt;✕&lt;/a&gt;
&lt;/div&gt;

&lt;h2&gt;2. 왜 AI인가 — 규칙 기반의 한계&lt;/h2&gt;
&lt;p&gt;
전통적 탐지(시그니처·고정 임계치)는 &lt;strong&gt;&quot;알려진 것&quot;&lt;/strong&gt;에 강하지만, 다음 문제를 가집니다.
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;새로운(zero-day) 공격&lt;/strong&gt;과 끊임없이 변형되는 공격 패턴을 못 따라감&lt;/li&gt;
  &lt;li&gt;정상 급증(Flash Crowd)과 공격을 구별 못 해 &lt;strong&gt;오탐(False Positive)&lt;/strong&gt; 발생&lt;/li&gt;
  &lt;li&gt;정상 트래픽을 흉내 내는 &lt;strong&gt;저용량 L7(Application) 공격&lt;/strong&gt;에 취약&lt;/li&gt;
  &lt;li&gt;규칙을 사람이 계속 손봐야 함 — 대규모·고속 환경에서 한계&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
AI는 &lt;strong&gt;데이터에서 &quot;정상다움&quot;을 스스로 학습&lt;/strong&gt;해, 규칙에 없던 이상까지 포착하고 오탐을 줄일 수 있습니다.
그래서 오늘날 거의 모든 주요 방어 제품이 AI/ML을 핵심 엔진으로 채택했습니다.
&lt;/p&gt;

&lt;h2&gt;3. AI 탐지 기법 분류(taxonomy)&lt;/h2&gt;
&lt;p&gt;DDoS 탐지에 쓰이는 AI 기법은 크게 다섯 갈래입니다(서베이 논문 기준).&lt;/p&gt;
&lt;div class=&quot;fig-wrap&quot; id=&quot;zoom-14-2&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 840 300&quot; role=&quot;img&quot; aria-label=&quot;AI 기반 DDoS 탐지 기법 분류 트리&quot;&gt;
  &lt;rect x=&quot;330&quot; y=&quot;20&quot; width=&quot;180&quot; height=&quot;42&quot; rx=&quot;10&quot; fill=&quot;#1e40af&quot;/&gt;
  &lt;text x=&quot;420&quot; y=&quot;46&quot; font-size=&quot;13&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;AI 기반 DDoS 탐지&lt;/text&gt;

  &lt;g stroke=&quot;#94a3b8&quot; stroke-width=&quot;2&quot; fill=&quot;none&quot;&gt;
    &lt;line x1=&quot;420&quot; y1=&quot;62&quot; x2=&quot;110&quot; y2=&quot;100&quot; marker-end=&quot;url(#ax1)&quot;/&gt;
    &lt;line x1=&quot;420&quot; y1=&quot;62&quot; x2=&quot;290&quot; y2=&quot;100&quot; marker-end=&quot;url(#ax1)&quot;/&gt;
    &lt;line x1=&quot;420&quot; y1=&quot;62&quot; x2=&quot;470&quot; y2=&quot;100&quot; marker-end=&quot;url(#ax1)&quot;/&gt;
    &lt;line x1=&quot;420&quot; y1=&quot;62&quot; x2=&quot;640&quot; y2=&quot;100&quot; marker-end=&quot;url(#ax1)&quot;/&gt;
    &lt;line x1=&quot;420&quot; y1=&quot;62&quot; x2=&quot;790&quot; y2=&quot;100&quot; marker-end=&quot;url(#ax1)&quot;/&gt;
  &lt;/g&gt;

  &lt;!-- supervised --&gt;
  &lt;rect x=&quot;20&quot; y=&quot;102&quot; width=&quot;180&quot; height=&quot;46&quot; rx=&quot;8&quot; fill=&quot;#dbeafe&quot; stroke=&quot;#2563eb&quot;/&gt;
  &lt;text x=&quot;110&quot; y=&quot;122&quot; font-size=&quot;11.5&quot; fill=&quot;#1e40af&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;지도 학습&lt;/text&gt;
  &lt;text x=&quot;110&quot; y=&quot;139&quot; font-size=&quot;9.5&quot; fill=&quot;#1e3a8a&quot; text-anchor=&quot;middle&quot;&gt;RandomForest·SVM·XGBoost&lt;/text&gt;
  &lt;text x=&quot;110&quot; y=&quot;185&quot; font-size=&quot;9.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;라벨로 정상/공격 분류&lt;/text&gt;
  &lt;text x=&quot;110&quot; y=&quot;200&quot; font-size=&quot;9.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;정확·성숙, 라벨 필요&lt;/text&gt;

  &lt;!-- unsupervised --&gt;
  &lt;rect x=&quot;205&quot; y=&quot;102&quot; width=&quot;170&quot; height=&quot;46&quot; rx=&quot;8&quot; fill=&quot;#e0f2fe&quot; stroke=&quot;#0891b2&quot;/&gt;
  &lt;text x=&quot;290&quot; y=&quot;122&quot; font-size=&quot;11.5&quot; fill=&quot;#0e7490&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;비지도 학습&lt;/text&gt;
  &lt;text x=&quot;290&quot; y=&quot;139&quot; font-size=&quot;9.5&quot; fill=&quot;#155e75&quot; text-anchor=&quot;middle&quot;&gt;K-means·Isolation Forest&lt;/text&gt;
  &lt;text x=&quot;290&quot; y=&quot;185&quot; font-size=&quot;9.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;정상만 학습→이상 탐지&lt;/text&gt;
  &lt;text x=&quot;290&quot; y=&quot;200&quot; font-size=&quot;9.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;zero-day에 강함&lt;/text&gt;

  &lt;!-- deep learning --&gt;
  &lt;rect x=&quot;385&quot; y=&quot;102&quot; width=&quot;170&quot; height=&quot;46&quot; rx=&quot;8&quot; fill=&quot;#ede9fe&quot; stroke=&quot;#7c3aed&quot;/&gt;
  &lt;text x=&quot;470&quot; y=&quot;122&quot; font-size=&quot;11.5&quot; fill=&quot;#6d28d9&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;딥러닝&lt;/text&gt;
  &lt;text x=&quot;470&quot; y=&quot;139&quot; font-size=&quot;9.5&quot; fill=&quot;#5b21b6&quot; text-anchor=&quot;middle&quot;&gt;CNN·LSTM·오토인코더·GNN&lt;/text&gt;
  &lt;text x=&quot;470&quot; y=&quot;185&quot; font-size=&quot;9.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;자동 특징·시계열·구조&lt;/text&gt;
  &lt;text x=&quot;470&quot; y=&quot;200&quot; font-size=&quot;9.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;고정확, 고비용&lt;/text&gt;

  &lt;!-- RL --&gt;
  &lt;rect x=&quot;565&quot; y=&quot;102&quot; width=&quot;150&quot; height=&quot;46&quot; rx=&quot;8&quot; fill=&quot;#fef3c7&quot; stroke=&quot;#d97706&quot;/&gt;
  &lt;text x=&quot;640&quot; y=&quot;122&quot; font-size=&quot;11.5&quot; fill=&quot;#b45309&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;강화 학습&lt;/text&gt;
  &lt;text x=&quot;640&quot; y=&quot;139&quot; font-size=&quot;9.5&quot; fill=&quot;#92400e&quot; text-anchor=&quot;middle&quot;&gt;Q-learning&lt;/text&gt;
  &lt;text x=&quot;640&quot; y=&quot;185&quot; font-size=&quot;9.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;적응형 완화 정책&lt;/text&gt;
  &lt;text x=&quot;640&quot; y=&quot;200&quot; font-size=&quot;9.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;탐지+대응 최적화&lt;/text&gt;

  &lt;!-- hybrid --&gt;
  &lt;rect x=&quot;725&quot; y=&quot;102&quot; width=&quot;110&quot; height=&quot;46&quot; rx=&quot;8&quot; fill=&quot;#dcfce7&quot; stroke=&quot;#16a34a&quot;/&gt;
  &lt;text x=&quot;780&quot; y=&quot;122&quot; font-size=&quot;11.5&quot; fill=&quot;#166534&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;하이브리드&lt;/text&gt;
  &lt;text x=&quot;780&quot; y=&quot;139&quot; font-size=&quot;9.5&quot; fill=&quot;#14532d&quot; text-anchor=&quot;middle&quot;&gt;앙상블·CNN-LSTM&lt;/text&gt;
  &lt;text x=&quot;780&quot; y=&quot;185&quot; font-size=&quot;9.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;여러 기법 결합&lt;/text&gt;
  &lt;text x=&quot;780&quot; y=&quot;200&quot; font-size=&quot;9.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;현재 주류&lt;/text&gt;

  &lt;text x=&quot;420&quot; y=&quot;250&quot; font-size=&quot;11.5&quot; fill=&quot;#334155&quot; text-anchor=&quot;middle&quot;&gt;실무·최신 연구는 대부분 &quot;하이브리드&quot;(예: CNN이 공간 특징 + LSTM이 시간 특징을 함께 학습)로 수렴한다.&lt;/text&gt;
  &lt;defs&gt;&lt;marker id=&quot;ax1&quot; markerWidth=&quot;8&quot; markerHeight=&quot;8&quot; refX=&quot;6&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L6,3 L0,6 Z&quot; fill=&quot;#94a3b8&quot;/&gt;&lt;/marker&gt;&lt;/defs&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 2. AI 기반 DDoS 탐지 기법 분류 — 지도/비지도/딥러닝/강화학습/하이브리드. &lt;a class=&quot;zoom-btn&quot; href=&quot;#zoom-14-2&quot;&gt;[확대]&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;a class=&quot;zoom-backdrop&quot; href=&quot;#_close&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;
&lt;a class=&quot;zoom-close&quot; href=&quot;#_close&quot; aria-label=&quot;닫기&quot; role=&quot;button&quot;&gt;✕&lt;/a&gt;
&lt;/div&gt;

&lt;h2&gt;4. AI 기반 상용 제품 총정리&lt;/h2&gt;
&lt;p&gt;
현재 주요 DDoS 방어 벤더는 대부분 &lt;strong&gt;행위 기반(behavioral) 분석 + 머신러닝&lt;/strong&gt;을 탐지 엔진으로 씁니다.
&quot;머신러닝으로 정상 트래픽의 기준선을 학습하고, 벗어나면 자동으로 탐지·완화&quot;하는 것이 공통 패턴입니다.
&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;&lt;th&gt;제품 / 기업&lt;/th&gt;&lt;th&gt;AI·ML 활용 방식(공개 정보 기준)&lt;/th&gt;&lt;th&gt;형태&lt;/th&gt;&lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Radware&lt;/strong&gt;&lt;br&gt;DefensePro · Cloud DDoS&lt;/td&gt;&lt;td&gt;실시간 &lt;strong&gt;행위 기반 분석 + 머신러닝&lt;/strong&gt;. 정상 트래픽을 학습하는 &lt;strong&gt;Adaptive Behavioral Modeling&lt;/strong&gt;으로 자동 시그니처 생성·오탐 감소&lt;/td&gt;&lt;td&gt;온프레미스+클라우드 하이브리드&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;NETSCOUT Arbor&lt;/strong&gt;&lt;br&gt;Adaptive DDoS Protection (AED/AEM)&lt;/td&gt;&lt;td&gt;&lt;strong&gt;ATLAS&lt;/strong&gt; 글로벌 위협 인텔리전스에 AI/ML 적용. 2024년 말 &lt;strong&gt;AI 기반(AI-enabled) DDoS 위협&lt;/strong&gt; 대응 강화 발표&lt;/td&gt;&lt;td&gt;온프레미스·하이브리드·통신사&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Cloudflare&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;전 세계 네트워크 트래픽으로 학습한 &lt;strong&gt;자율(autonomous) ML 탐지&lt;/strong&gt;가 엣지에서 자동 완화. L3/L4/L7 전반&lt;/td&gt;&lt;td&gt;클라우드&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Akamai&lt;/strong&gt;&lt;br&gt;Prolexic · App &amp;amp; API Protector&lt;/td&gt;&lt;td&gt;적응형(adaptive) 방어와 &lt;strong&gt;ML 기반 봇·이상 탐지&lt;/strong&gt;. 대규모 Scrubbing 네트워크 결합&lt;/td&gt;&lt;td&gt;클라우드&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;A10 Networks&lt;/strong&gt;&lt;br&gt;A10 Defend (+ Kentik 연동)&lt;/td&gt;&lt;td&gt;&lt;strong&gt;빅데이터 분석 + 머신러닝&lt;/strong&gt;으로 탐지, 고성능 완화를 자동 트리거. Kentik과 통합 솔루션&lt;/td&gt;&lt;td&gt;온프레미스+클라우드&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Corero&lt;/strong&gt;&lt;br&gt;SmartWall&lt;/td&gt;&lt;td&gt;항상 인라인(always-inline)으로 &lt;strong&gt;자동·적응형 실시간 탐지&lt;/strong&gt;, 초 단위(sub-second) 완화&lt;/td&gt;&lt;td&gt;온프레미스·엣지&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Nexusguard&lt;/strong&gt;&lt;br&gt;Smart Mode&lt;/td&gt;&lt;td&gt;&lt;strong&gt;머신러닝으로 트래픽의 정상/공격 여부를 예측&lt;/strong&gt;하는 Smart Mode 탐지&lt;/td&gt;&lt;td&gt;클라우드&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Fortinet&lt;/strong&gt;&lt;br&gt;FortiDDoS&lt;/td&gt;&lt;td&gt;&lt;strong&gt;100% 머신러닝 기반&lt;/strong&gt;을 표방. 자율 학습으로 정상 baseline을 만들고 이상을 탐지하는 전용 어플라이언스&lt;/td&gt;&lt;td&gt;어플라이언스&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Kentik&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;빅데이터 기반 &lt;strong&gt;ML DDoS 탐지&lt;/strong&gt; + BGP·트래픽 심층 분석. A10 등과 완화 연동&lt;/td&gt;&lt;td&gt;클라우드(SaaS)&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Huawei&lt;/strong&gt;&lt;br&gt;AntiDDoS&lt;/td&gt;&lt;td&gt;AI/ML 기반 탐지를 표방하는 통신사·대기업용 방어 솔루션&lt;/td&gt;&lt;td&gt;어플라이언스·통신사&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Darktrace&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;자가 학습(self-learning) 비지도 AI&lt;/strong&gt;로 네트워크 이상을 탐지·자율 대응. DDoS 전용은 아니나 이상 탐지 전반에 강점&lt;/td&gt;&lt;td&gt;네트워크 전반(AI 플랫폼)&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;font-size:.86em; color:#94a3b8;&quot;&gt;
※ 위 &quot;AI·ML 활용 방식&quot;은 각 벤더의 공개 자료·마케팅 기준입니다. 내부 알고리즘 세부는 비공개이며, 제품·버전에 따라 달라질 수 있습니다.
&lt;/p&gt;

&lt;div class=&quot;fig-wrap&quot; id=&quot;zoom-14-3&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 820 260&quot; role=&quot;img&quot; aria-label=&quot;상용 제품 포지셔닝: 배포 형태와 강점&quot;&gt;
  &lt;line x1=&quot;60&quot; y1=&quot;220&quot; x2=&quot;780&quot; y2=&quot;220&quot; stroke=&quot;#94a3b8&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;line x1=&quot;60&quot; y1=&quot;30&quot; x2=&quot;60&quot; y2=&quot;220&quot; stroke=&quot;#94a3b8&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;text x=&quot;420&quot; y=&quot;245&quot; font-size=&quot;11&quot; fill=&quot;#64748b&quot; text-anchor=&quot;middle&quot;&gt;← 온프레미스/어플라이언스        배포 형태        클라우드/SaaS →&lt;/text&gt;
  &lt;text x=&quot;30&quot; y=&quot;40&quot; font-size=&quot;10&quot; fill=&quot;#64748b&quot; transform=&quot;rotate(-90 30,120)&quot;&gt;규모 · 자율성 →&lt;/text&gt;

  &lt;g font-size=&quot;10.5&quot; font-weight=&quot;700&quot;&gt;
    &lt;rect x=&quot;90&quot; y=&quot;150&quot; width=&quot;120&quot; height=&quot;30&quot; rx=&quot;6&quot; fill=&quot;#dbeafe&quot; stroke=&quot;#2563eb&quot;/&gt;&lt;text x=&quot;150&quot; y=&quot;170&quot; fill=&quot;#1e40af&quot; text-anchor=&quot;middle&quot;&gt;Fortinet FortiDDoS&lt;/text&gt;
    &lt;rect x=&quot;120&quot; y=&quot;110&quot; width=&quot;120&quot; height=&quot;30&quot; rx=&quot;6&quot; fill=&quot;#dbeafe&quot; stroke=&quot;#2563eb&quot;/&gt;&lt;text x=&quot;180&quot; y=&quot;130&quot; fill=&quot;#1e40af&quot; text-anchor=&quot;middle&quot;&gt;Corero SmartWall&lt;/text&gt;
    &lt;rect x=&quot;250&quot; y=&quot;150&quot; width=&quot;120&quot; height=&quot;30&quot; rx=&quot;6&quot; fill=&quot;#dbeafe&quot; stroke=&quot;#2563eb&quot;/&gt;&lt;text x=&quot;310&quot; y=&quot;170&quot; fill=&quot;#1e40af&quot; text-anchor=&quot;middle&quot;&gt;Radware&lt;/text&gt;
    &lt;rect x=&quot;300&quot; y=&quot;105&quot; width=&quot;120&quot; height=&quot;30&quot; rx=&quot;6&quot; fill=&quot;#e0e7ff&quot; stroke=&quot;#4f46e5&quot;/&gt;&lt;text x=&quot;360&quot; y=&quot;125&quot; fill=&quot;#3730a3&quot; text-anchor=&quot;middle&quot;&gt;NETSCOUT Arbor&lt;/text&gt;
    &lt;rect x=&quot;360&quot; y=&quot;150&quot; width=&quot;110&quot; height=&quot;30&quot; rx=&quot;6&quot; fill=&quot;#dbeafe&quot; stroke=&quot;#2563eb&quot;/&gt;&lt;text x=&quot;415&quot; y=&quot;170&quot; fill=&quot;#1e40af&quot; text-anchor=&quot;middle&quot;&gt;A10 Defend&lt;/text&gt;
    &lt;rect x=&quot;520&quot; y=&quot;120&quot; width=&quot;120&quot; height=&quot;30&quot; rx=&quot;6&quot; fill=&quot;#dcfce7&quot; stroke=&quot;#16a34a&quot;/&gt;&lt;text x=&quot;580&quot; y=&quot;140&quot; fill=&quot;#166534&quot; text-anchor=&quot;middle&quot;&gt;Kentik&lt;/text&gt;
    &lt;rect x=&quot;560&quot; y=&quot;70&quot; width=&quot;130&quot; height=&quot;30&quot; rx=&quot;6&quot; fill=&quot;#ede9fe&quot; stroke=&quot;#7c3aed&quot;/&gt;&lt;text x=&quot;625&quot; y=&quot;90&quot; fill=&quot;#6d28d9&quot; text-anchor=&quot;middle&quot;&gt;Cloudflare&lt;/text&gt;
    &lt;rect x=&quot;620&quot; y=&quot;115&quot; width=&quot;120&quot; height=&quot;30&quot; rx=&quot;6&quot; fill=&quot;#ede9fe&quot; stroke=&quot;#7c3aed&quot;/&gt;&lt;text x=&quot;680&quot; y=&quot;135&quot; fill=&quot;#6d28d9&quot; text-anchor=&quot;middle&quot;&gt;Akamai Prolexic&lt;/text&gt;
    &lt;rect x=&quot;640&quot; y=&quot;160&quot; width=&quot;120&quot; height=&quot;30&quot; rx=&quot;6&quot; fill=&quot;#dcfce7&quot; stroke=&quot;#16a34a&quot;/&gt;&lt;text x=&quot;700&quot; y=&quot;180&quot; fill=&quot;#166534&quot; text-anchor=&quot;middle&quot;&gt;Nexusguard&lt;/text&gt;
  &lt;/g&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 3. 상용 제품 대략적 포지셔닝 — 왼쪽(장비)일수록 인라인 저지연, 오른쪽(클라우드)일수록 대규모·자율 완화. (개념적 배치) &lt;a class=&quot;zoom-btn&quot; href=&quot;#zoom-14-3&quot;&gt;[확대]&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;a class=&quot;zoom-backdrop&quot; href=&quot;#_close&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;
&lt;a class=&quot;zoom-close&quot; href=&quot;#_close&quot; aria-label=&quot;닫기&quot; role=&quot;button&quot;&gt;✕&lt;/a&gt;
&lt;/div&gt;

&lt;h2&gt;5. 학술 연구 동향과 대표 성능&lt;/h2&gt;
&lt;p&gt;
학계에서는 특히 &lt;strong&gt;딥러닝 하이브리드&lt;/strong&gt;가 활발합니다. CNN(공간 특징)과 LSTM(시간 특징)을 결합한
&lt;strong&gt;CNN-LSTM / CNN-BiLSTM&lt;/strong&gt;이 대표적이고, 최근에는 &lt;strong&gt;Transformer, GNN(그래프 신경망), 강화학습,
연합학습(Federated Learning)&lt;/strong&gt;으로 확장되고 있습니다.
&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;&lt;tr&gt;&lt;th&gt;연구 접근&lt;/th&gt;&lt;th&gt;핵심 아이디어&lt;/th&gt;&lt;th&gt;보고된 성능(데이터셋 기준·참고용)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;CNN-LSTM / CNN-BiLSTM 하이브리드&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;공간+시간 특징을 함께 학습&lt;/td&gt;&lt;td&gt;CIC-DDoS2019에서 약 94~99%대 정확도 보고(연구마다 상이)&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;앙상블(RandomForest+GradientBoosting+AdaBoost)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;여러 분류기 결합으로 안정성↑&lt;/td&gt;&lt;td&gt;이진 분류 F1 ≈ 0.9967 보고&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;DNN(심층 신경망)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;다층 신경망 분류&lt;/td&gt;&lt;td&gt;CIC-IoT2023 이진 분류 약 99% 보고&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;오토인코더 / One-Class&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;정상만 학습→복원 오차로 이상 탐지&lt;/td&gt;&lt;td&gt;라벨 없는 zero-day 탐지에 유리(정확도는 환경 의존)&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Transformer 기반 IDS&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Self-Attention으로 멀티클래스 침입 분류(IoT)&lt;/td&gt;&lt;td&gt;멀티클래스에서 높은 정확도 보고&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;GNN(그래프 신경망)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;호스트-통신 그래프 구조 학습&lt;/td&gt;&lt;td&gt;분산·구조적 공격 포착에 유망(연구 단계)&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;강화학습(Q-learning)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;탐지 후 완화 정책을 스스로 최적화&lt;/td&gt;&lt;td&gt;적응형 대응 자동화에 초점&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;P4-SDN Early-Exit 신경망&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;데이터 평면에서 협력적 조기 탐지&lt;/td&gt;&lt;td&gt;초저지연 in-network 탐지 지향(최신)&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;가장 널리 인용되는 종합 자료로는 arXiv 서베이 &lt;em&gt;&quot;Detecting and Mitigating DDoS Attacks with AI: A Survey&quot;&lt;/em&gt;(2025)가 있으며, 위 기법 분류·데이터셋·과제를 체계적으로 정리합니다.&lt;/p&gt;

&lt;h3&gt;CNN-LSTM 하이브리드는 왜 잘 되는가&lt;/h3&gt;
&lt;div class=&quot;fig-wrap&quot; id=&quot;zoom-14-4&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 820 210&quot; role=&quot;img&quot; aria-label=&quot;CNN-LSTM 하이브리드 구조&quot;&gt;
  &lt;rect x=&quot;20&quot; y=&quot;80&quot; width=&quot;120&quot; height=&quot;50&quot; rx=&quot;8&quot; fill=&quot;#e2e8f0&quot;/&gt;
  &lt;text x=&quot;80&quot; y=&quot;100&quot; font-size=&quot;10.5&quot; fill=&quot;#334155&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;트래픽/Flow&lt;/text&gt;
  &lt;text x=&quot;80&quot; y=&quot;117&quot; font-size=&quot;9&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;특징 행렬로 변환&lt;/text&gt;
  &lt;line x1=&quot;140&quot; y1=&quot;105&quot; x2=&quot;185&quot; y2=&quot;105&quot; stroke=&quot;#334155&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#cl1)&quot;/&gt;

  &lt;rect x=&quot;188&quot; y=&quot;75&quot; width=&quot;160&quot; height=&quot;60&quot; rx=&quot;8&quot; fill=&quot;#ede9fe&quot; stroke=&quot;#7c3aed&quot;/&gt;
  &lt;text x=&quot;268&quot; y=&quot;98&quot; font-size=&quot;11&quot; fill=&quot;#6d28d9&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;CNN&lt;/text&gt;
  &lt;text x=&quot;268&quot; y=&quot;116&quot; font-size=&quot;9.5&quot; fill=&quot;#5b21b6&quot; text-anchor=&quot;middle&quot;&gt;공간 패턴(지역 특징) 추출&lt;/text&gt;
  &lt;line x1=&quot;348&quot; y1=&quot;105&quot; x2=&quot;393&quot; y2=&quot;105&quot; stroke=&quot;#334155&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#cl1)&quot;/&gt;

  &lt;rect x=&quot;396&quot; y=&quot;75&quot; width=&quot;160&quot; height=&quot;60&quot; rx=&quot;8&quot; fill=&quot;#e0f2fe&quot; stroke=&quot;#0891b2&quot;/&gt;
  &lt;text x=&quot;476&quot; y=&quot;98&quot; font-size=&quot;11&quot; fill=&quot;#0e7490&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;LSTM&lt;/text&gt;
  &lt;text x=&quot;476&quot; y=&quot;116&quot; font-size=&quot;9.5&quot; fill=&quot;#155e75&quot; text-anchor=&quot;middle&quot;&gt;시간 순서(흐름 변화) 학습&lt;/text&gt;
  &lt;line x1=&quot;556&quot; y1=&quot;105&quot; x2=&quot;601&quot; y2=&quot;105&quot; stroke=&quot;#334155&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#cl1)&quot;/&gt;

  &lt;rect x=&quot;604&quot; y=&quot;70&quot; width=&quot;120&quot; height=&quot;34&quot; rx=&quot;8&quot; fill=&quot;#fee2e2&quot; stroke=&quot;#dc2626&quot;/&gt;
  &lt;text x=&quot;664&quot; y=&quot;92&quot; font-size=&quot;10.5&quot; fill=&quot;#b91c1c&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;공격&lt;/text&gt;
  &lt;rect x=&quot;604&quot; y=&quot;112&quot; width=&quot;120&quot; height=&quot;34&quot; rx=&quot;8&quot; fill=&quot;#dcfce7&quot; stroke=&quot;#16a34a&quot;/&gt;
  &lt;text x=&quot;664&quot; y=&quot;134&quot; font-size=&quot;10.5&quot; fill=&quot;#166534&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;정상&lt;/text&gt;

  &lt;text x=&quot;410&quot; y=&quot;180&quot; font-size=&quot;11&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;&quot;어떤 모양의 트래픽인가(CNN)&quot; + &quot;시간에 따라 어떻게 변하는가(LSTM)&quot;를 함께 봐서 정확도를 높인다.&lt;/text&gt;
  &lt;defs&gt;&lt;marker id=&quot;cl1&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#334155&quot;/&gt;&lt;/marker&gt;&lt;/defs&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 4. CNN-LSTM 하이브리드 — 공간 특징(CNN)과 시간 특징(LSTM)의 결합이 최근 연구의 주류. &lt;a class=&quot;zoom-btn&quot; href=&quot;#zoom-14-4&quot;&gt;[확대]&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;a class=&quot;zoom-backdrop&quot; href=&quot;#_close&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;
&lt;a class=&quot;zoom-close&quot; href=&quot;#_close&quot; aria-label=&quot;닫기&quot; role=&quot;button&quot;&gt;✕&lt;/a&gt;
&lt;/div&gt;

&lt;h2&gt;6. 연구·학습용 공개 데이터셋&lt;/h2&gt;
&lt;p&gt;AI 탐지 모델은 좋은 데이터로 학습·평가해야 합니다. 대표적인 공개 데이터셋은 다음과 같습니다.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;&lt;tr&gt;&lt;th&gt;데이터셋&lt;/th&gt;&lt;th&gt;특징&lt;/th&gt;&lt;th&gt;비고&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;KDD Cup 1999 / NSL-KDD&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;고전 침입탐지 벤치마크. NSL-KDD는 KDD99의 중복을 정리한 개선판&lt;/td&gt;&lt;td&gt;오래되고 비현실적이나 여전히 비교용으로 사용&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;CIC-IDS2017&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;캐나다 사이버보안연구소(CIC) 제작. 약 80개 특징, 14종 공격, 현실적 트래픽&lt;/td&gt;&lt;td&gt;DDoS 외 다양한 공격 포함&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;CSE-CIC-IDS2018&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;CIC-IDS2017의 대규모 확장판(클라우드 환경)&lt;/td&gt;&lt;td&gt;대용량&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;CIC-DDoS2019&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;DDoS 특화&lt;/strong&gt;. 반사·증폭 공격 다수(PortMap, NetBIOS, LDAP, MSSQL, NTP, DNS, SNMP, SYN, UDP 등)&lt;/td&gt;&lt;td&gt;DDoS 연구의 사실상 표준 데이터셋&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;UNSW-NB15&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;호주 사이버 레인지 기반 현대적 공격 데이터셋&lt;/td&gt;&lt;td&gt;다양한 공격 계열&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Bot-IoT&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;IoT 환경 공격 특화(봇넷 포함)&lt;/td&gt;&lt;td&gt;IoT DDoS 연구에 인기&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;CIC-IoT2023&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;최신 IoT 공격 데이터셋&lt;/td&gt;&lt;td&gt;최근 논문에서 활발히 사용&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;CAIDA&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;실제 백본 트래픽(예: DDoS 이벤트 트레이스)&lt;/td&gt;&lt;td&gt;현실적이나 라벨이 부족&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2&gt;7. 오픈소스 코드 (바로 써 보기)&lt;/h2&gt;
&lt;p&gt;
연구를 넘어 &lt;strong&gt;직접 실행·학습해 볼 수 있는 오픈소스&lt;/strong&gt;도 많습니다. 학습용으로 특히 유용한 것들을 정리했습니다.
&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;&lt;tr&gt;&lt;th&gt;리포지토리&lt;/th&gt;&lt;th&gt;내용&lt;/th&gt;&lt;th&gt;기술&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;strong&gt;doriguzzi/lucid-ddos&lt;/strong&gt; &lt;span class=&quot;pill p&quot;&gt;논문기반&lt;/span&gt;&lt;/td&gt;
      &lt;td&gt;&lt;strong&gt;LUCID&lt;/strong&gt;(Lightweight, Usable CNN in DDoS Detection). 경량 CNN으로 자원 제약(엣지)·실시간 환경을 겨냥. 학술 논문(IEEE)으로 검증된 대표 오픈소스&lt;/td&gt;
      &lt;td&gt;Python · CNN&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;strong&gt;chiragbiradar/DDoS-Attack-&lt;br&gt;Detection-and-Mitigation&lt;/strong&gt;&lt;/td&gt;
      &lt;td&gt;SDN(Software-Defined Networking) 환경에서 ML/LSTM으로 &lt;strong&gt;탐지 + 자동 완화&lt;/strong&gt;까지. Ryu 컨트롤러·Mininet 기반 실습에 좋음&lt;/td&gt;
      &lt;td&gt;Python · SDN · LSTM&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;strong&gt;ReubenJoe/DDoS-Detection&lt;/strong&gt;&lt;/td&gt;
      &lt;td&gt;KNN·SGD·MLP·로지스틱·나이브베이즈·SVM·XGBoost·의사결정나무·DNN 등 &lt;strong&gt;다양한 모델 비교 분석&lt;/strong&gt;&lt;/td&gt;
      &lt;td&gt;Python · 다중 ML/DNN&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;strong&gt;kedarghule/DetectingDDosAttacks&lt;/strong&gt;&lt;/td&gt;
      &lt;td&gt;여러 머신러닝 알고리즘으로 DDoS 분류·탐지를 구현·비교&lt;/td&gt;
      &lt;td&gt;Python · scikit-learn&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;strong&gt;equalitie/learn2ban&lt;/strong&gt;&lt;/td&gt;
      &lt;td&gt;웹 서버 로그의 요청 행위(평균 요청 간격 등) 특징으로 ML 탐지. 오래됐지만 개념 학습에 유용&lt;/td&gt;
      &lt;td&gt;Python · ML&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;strong&gt;JamesQuintero/DDoS-Attack-Detection&lt;/strong&gt;&lt;/td&gt;
      &lt;td&gt;실시간(live) DDoS 탐지를 ML로 시도하는 예제&lt;/td&gt;
      &lt;td&gt;Python · ML&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;strong&gt;GitHub 토픽: &lt;code&gt;ddos-detection&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
      &lt;td&gt;위 외에도 수많은 관련 프로젝트가 모인 토픽 페이지 — 탐색의 출발점&lt;/td&gt;
      &lt;td&gt;모음&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;div class=&quot;callout ok&quot;&gt;
  &lt;span class=&quot;tag&quot;&gt;추천 학습 경로&lt;/span&gt;
  ① &lt;strong&gt;CIC-DDoS2019&lt;/strong&gt; 데이터셋을 내려받아 → ② &lt;strong&gt;ReubenJoe/DDoS-Detection&lt;/strong&gt;으로 여러 모델의 성능을 비교해 감을 잡고 →
  ③ &lt;strong&gt;LUCID&lt;/strong&gt;로 &quot;경량 실시간 CNN&quot;을 체험한 뒤 → ④ &lt;strong&gt;SDN+ML 리포지토리&lt;/strong&gt;로 &quot;탐지에서 자동 완화까지&quot; 확장해 보는 순서를 권합니다.
&lt;/div&gt;

&lt;p&gt;참고로 대부분의 오픈소스는 아래와 같은 전형적 실행 흐름을 가집니다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# (예시) 일반적인 ML DDoS 탐지 코드 실행 흐름 — 개념용 의사 명령
git clone https://github.com/&amp;lt;org&amp;gt;/&amp;lt;repo&amp;gt;.git
cd &amp;lt;repo&amp;gt;
pip install -r requirements.txt

# 1) 데이터셋 준비 (예: CIC-DDoS2019 CSV)
# 2) 전처리 + 특징 추출 (feature extraction)
python preprocess.py --input dataset.csv --out features.npz
# 3) 모델 학습 (train)
python train.py --data features.npz --model cnn_lstm --epochs 30
# 4) 평가 (accuracy / precision / recall / F1)
python evaluate.py --model model.h5 --test test.npz&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;font-size:.86em; color:#94a3b8;&quot;&gt;※ 위 명령은 특정 리포지토리의 실제 명령이 아니라, 공통 실행 패턴을 보여주는 개념 예시입니다. 각 리포지토리의 README를 따르세요.&lt;/p&gt;

&lt;h2&gt;8. 전형적인 AI 탐지 파이프라인&lt;/h2&gt;
&lt;div class=&quot;fig-wrap&quot; id=&quot;zoom-14-5&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 840 200&quot; role=&quot;img&quot; aria-label=&quot;AI DDoS 탐지 파이프라인&quot;&gt;
  &lt;g font-size=&quot;10.5&quot;&gt;
    &lt;rect x=&quot;15&quot; y=&quot;80&quot; width=&quot;110&quot; height=&quot;50&quot; rx=&quot;8&quot; fill=&quot;#0e7490&quot;/&gt;&lt;text x=&quot;70&quot; y=&quot;100&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;데이터 수집&lt;/text&gt;&lt;text x=&quot;70&quot; y=&quot;117&quot; fill=&quot;#cffafe&quot; text-anchor=&quot;middle&quot;&gt;Flow/패킷&lt;/text&gt;
    &lt;rect x=&quot;150&quot; y=&quot;80&quot; width=&quot;120&quot; height=&quot;50&quot; rx=&quot;8&quot; fill=&quot;#2563eb&quot;/&gt;&lt;text x=&quot;210&quot; y=&quot;100&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;전처리·특징추출&lt;/text&gt;&lt;text x=&quot;210&quot; y=&quot;117&quot; fill=&quot;#dbeafe&quot; text-anchor=&quot;middle&quot;&gt;정규화·라벨&lt;/text&gt;
    &lt;rect x=&quot;295&quot; y=&quot;80&quot; width=&quot;110&quot; height=&quot;50&quot; rx=&quot;8&quot; fill=&quot;#7c3aed&quot;/&gt;&lt;text x=&quot;350&quot; y=&quot;100&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;모델 학습&lt;/text&gt;&lt;text x=&quot;350&quot; y=&quot;117&quot; fill=&quot;#ede9fe&quot; text-anchor=&quot;middle&quot;&gt;CNN-LSTM 등&lt;/text&gt;
    &lt;rect x=&quot;430&quot; y=&quot;80&quot; width=&quot;120&quot; height=&quot;50&quot; rx=&quot;8&quot; fill=&quot;#db2777&quot;/&gt;&lt;text x=&quot;490&quot; y=&quot;100&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;실시간 추론&lt;/text&gt;&lt;text x=&quot;490&quot; y=&quot;117&quot; fill=&quot;#fce7f3&quot; text-anchor=&quot;middle&quot;&gt;정상/공격 판정&lt;/text&gt;
    &lt;rect x=&quot;575&quot; y=&quot;80&quot; width=&quot;110&quot; height=&quot;50&quot; rx=&quot;8&quot; fill=&quot;#dc2626&quot;/&gt;&lt;text x=&quot;630&quot; y=&quot;100&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;경보&lt;/text&gt;&lt;text x=&quot;630&quot; y=&quot;117&quot; fill=&quot;#fee2e2&quot; text-anchor=&quot;middle&quot;&gt;공격 식별&lt;/text&gt;
    &lt;rect x=&quot;710&quot; y=&quot;80&quot; width=&quot;115&quot; height=&quot;50&quot; rx=&quot;8&quot; fill=&quot;#16a34a&quot;/&gt;&lt;text x=&quot;767&quot; y=&quot;100&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;자동 완화&lt;/text&gt;&lt;text x=&quot;767&quot; y=&quot;117&quot; fill=&quot;#dcfce7&quot; text-anchor=&quot;middle&quot;&gt;차단·Scrubbing&lt;/text&gt;
  &lt;/g&gt;
  &lt;g stroke=&quot;#94a3b8&quot; stroke-width=&quot;2&quot; fill=&quot;none&quot;&gt;
    &lt;line x1=&quot;125&quot; y1=&quot;105&quot; x2=&quot;148&quot; y2=&quot;105&quot; marker-end=&quot;url(#pp)&quot;/&gt;
    &lt;line x1=&quot;270&quot; y1=&quot;105&quot; x2=&quot;293&quot; y2=&quot;105&quot; marker-end=&quot;url(#pp)&quot;/&gt;
    &lt;line x1=&quot;405&quot; y1=&quot;105&quot; x2=&quot;428&quot; y2=&quot;105&quot; marker-end=&quot;url(#pp)&quot;/&gt;
    &lt;line x1=&quot;550&quot; y1=&quot;105&quot; x2=&quot;573&quot; y2=&quot;105&quot; marker-end=&quot;url(#pp)&quot;/&gt;
    &lt;line x1=&quot;685&quot; y1=&quot;105&quot; x2=&quot;708&quot; y2=&quot;105&quot; marker-end=&quot;url(#pp)&quot;/&gt;
  &lt;/g&gt;
  &lt;path d=&quot;M767,130 C767,175 350,175 350,132&quot; stroke=&quot;#f59e0b&quot; stroke-width=&quot;2&quot; fill=&quot;none&quot; stroke-dasharray=&quot;5 3&quot; marker-end=&quot;url(#ppo)&quot;/&gt;
  &lt;text x=&quot;500&quot; y=&quot;170&quot; font-size=&quot;10&quot; fill=&quot;#b45309&quot; text-anchor=&quot;middle&quot;&gt;피드백: 새 공격을 반영해 재학습(continuous learning)&lt;/text&gt;
  &lt;defs&gt;
    &lt;marker id=&quot;pp&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#94a3b8&quot;/&gt;&lt;/marker&gt;
    &lt;marker id=&quot;ppo&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#f59e0b&quot;/&gt;&lt;/marker&gt;
  &lt;/defs&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 5. AI 탐지 파이프라인 — 수집→특징추출→학습→추론→경보→완화, 그리고 재학습 피드백 루프. &lt;a class=&quot;zoom-btn&quot; href=&quot;#zoom-14-5&quot;&gt;[확대]&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;a class=&quot;zoom-backdrop&quot; href=&quot;#_close&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;
&lt;a class=&quot;zoom-close&quot; href=&quot;#_close&quot; aria-label=&quot;닫기&quot; role=&quot;button&quot;&gt;✕&lt;/a&gt;
&lt;/div&gt;

&lt;h2&gt;9. 냉정한 현실 — 벤치마크의 함정&lt;/h2&gt;
&lt;div class=&quot;callout warn&quot;&gt;
  &lt;span class=&quot;tag&quot;&gt;&quot;정확도 99%&quot; 를 그대로 믿지 말 것&lt;/span&gt;
  논문의 높은 정확도는 대개 &lt;strong&gt;정제된 공개 데이터셋(오프라인)&lt;/strong&gt; 기준입니다. 실제 운영 환경에서는 다음 때문에 성능이 떨어질 수 있습니다.
  &lt;ul style=&quot;margin-top:.5em;&quot;&gt;
    &lt;li&gt;&lt;strong&gt;개념 표류(Concept Drift)&lt;/strong&gt; — 공격·정상 트래픽이 시간에 따라 변해 모델이 낡음&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;클래스 불균형·기저율(Base Rate)&lt;/strong&gt; — 정상이 압도적으로 많아, 낮은 오탐률도 실제로는 대량 오경보가 됨&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;일반화 실패&lt;/strong&gt; — 특정 데이터셋에만 잘 맞고 다른 네트워크에선 저조&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;실시간 지연·비용&lt;/strong&gt; — 무거운 딥러닝은 회선 속도 탐지가 어려움&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;적대적 공격(Adversarial ML)&lt;/strong&gt; — 공격자가 모델을 속이도록 트래픽을 조작&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;설명가능성 부족&lt;/strong&gt; — 왜 공격이라 판단했는지 설명이 어려워 운영 신뢰가 낮음&lt;/li&gt;
  &lt;/ul&gt;
  그래서 실무는 여전히 &lt;strong&gt;AI + 규칙 기반 + 사람의 검증&lt;/strong&gt;을 함께 쓰는 계층 방어를 택합니다.
&lt;/div&gt;

&lt;h2&gt;10. AI vs AI — 공격도 AI를 쓴다&lt;/h2&gt;
&lt;p&gt;
방어만 AI를 쓰는 것이 아닙니다. 공격자도 &lt;strong&gt;AI·자동화로 더 정교하고 회피적인 공격&lt;/strong&gt;을 만듭니다.
정상 사용자를 흉내 내는 트래픽 생성, 방어 모델을 속이는 적대적 트래픽, 공격 규모·표적의 자동 최적화 등입니다.
NETSCOUT 같은 벤더가 2024년 &lt;strong&gt;&quot;AI 기반(AI-enabled) DDoS 위협&quot;&lt;/strong&gt;을 겨냥한 제품 강화를 발표한 것도 이 맥락입니다.
&lt;/p&gt;
&lt;div class=&quot;fig-wrap&quot; id=&quot;zoom-14-6&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 800 200&quot; role=&quot;img&quot; aria-label=&quot;공격 AI와 방어 AI의 군비 경쟁&quot;&gt;
  &lt;rect x=&quot;30&quot; y=&quot;60&quot; width=&quot;230&quot; height=&quot;80&quot; rx=&quot;12&quot; fill=&quot;#fef2f2&quot; stroke=&quot;#fca5a5&quot;/&gt;
  &lt;text x=&quot;145&quot; y=&quot;88&quot; font-size=&quot;13&quot; font-weight=&quot;700&quot; fill=&quot;#b91c1c&quot; text-anchor=&quot;middle&quot;&gt;공격 측 AI&lt;/text&gt;
  &lt;text x=&quot;145&quot; y=&quot;110&quot; font-size=&quot;10&quot; fill=&quot;#991b1b&quot; text-anchor=&quot;middle&quot;&gt;정상 흉내 · 적대적 트래픽&lt;/text&gt;
  &lt;text x=&quot;145&quot; y=&quot;126&quot; font-size=&quot;10&quot; fill=&quot;#991b1b&quot; text-anchor=&quot;middle&quot;&gt;표적·규모 자동 최적화&lt;/text&gt;

  &lt;rect x=&quot;540&quot; y=&quot;60&quot; width=&quot;230&quot; height=&quot;80&quot; rx=&quot;12&quot; fill=&quot;#f0fdf4&quot; stroke=&quot;#86efac&quot;/&gt;
  &lt;text x=&quot;655&quot; y=&quot;88&quot; font-size=&quot;13&quot; font-weight=&quot;700&quot; fill=&quot;#166534&quot; text-anchor=&quot;middle&quot;&gt;방어 측 AI&lt;/text&gt;
  &lt;text x=&quot;655&quot; y=&quot;110&quot; font-size=&quot;10&quot; fill=&quot;#14532d&quot; text-anchor=&quot;middle&quot;&gt;행위 학습 · 자율 완화&lt;/text&gt;
  &lt;text x=&quot;655&quot; y=&quot;126&quot; font-size=&quot;10&quot; fill=&quot;#14532d&quot; text-anchor=&quot;middle&quot;&gt;위협 인텔리전스 결합&lt;/text&gt;

  &lt;line x1=&quot;260&quot; y1=&quot;90&quot; x2=&quot;538&quot; y2=&quot;90&quot; stroke=&quot;#dc2626&quot; stroke-width=&quot;2.5&quot; marker-end=&quot;url(#war1)&quot;/&gt;
  &lt;line x1=&quot;538&quot; y1=&quot;115&quot; x2=&quot;262&quot; y2=&quot;115&quot; stroke=&quot;#16a34a&quot; stroke-width=&quot;2.5&quot; marker-end=&quot;url(#war2)&quot;/&gt;
  &lt;text x=&quot;400&quot; y=&quot;82&quot; font-size=&quot;10.5&quot; fill=&quot;#b91c1c&quot; text-anchor=&quot;middle&quot;&gt;더 교묘한 공격 →&lt;/text&gt;
  &lt;text x=&quot;400&quot; y=&quot;135&quot; font-size=&quot;10.5&quot; fill=&quot;#166534&quot; text-anchor=&quot;middle&quot;&gt;← 더 똑똑한 탐지&lt;/text&gt;
  &lt;text x=&quot;400&quot; y=&quot;175&quot; font-size=&quot;11.5&quot; fill=&quot;#334155&quot; text-anchor=&quot;middle&quot;&gt;끝없는 &quot;창과 방패&quot;의 군비 경쟁 — 그래서 방어 AI의 지속적 재학습이 필수다.&lt;/text&gt;
  &lt;defs&gt;
    &lt;marker id=&quot;war1&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#dc2626&quot;/&gt;&lt;/marker&gt;
    &lt;marker id=&quot;war2&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#16a34a&quot;/&gt;&lt;/marker&gt;
  &lt;/defs&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 6. AI vs AI — 공격과 방어 모두 AI를 쓰는 군비 경쟁 구도로 접어들었다. &lt;a class=&quot;zoom-btn&quot; href=&quot;#zoom-14-6&quot;&gt;[확대]&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;a class=&quot;zoom-backdrop&quot; href=&quot;#_close&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;
&lt;a class=&quot;zoom-close&quot; href=&quot;#_close&quot; aria-label=&quot;닫기&quot; role=&quot;button&quot;&gt;✕&lt;/a&gt;
&lt;/div&gt;

&lt;h2&gt;11. 용어 설명&lt;/h2&gt;
&lt;dl class=&quot;glossary&quot;&gt;
  &lt;dt&gt;AI / ML (인공지능 / 머신러닝)&lt;/dt&gt;
  &lt;dd&gt;AI는 사람의 지능적 작업을 흉내 내는 기술 전반, ML은 그 하위 분야로 데이터에서 규칙을 스스로 학습하는 방법.&lt;/dd&gt;

  &lt;dt&gt;지도 / 비지도 학습 (Supervised / Unsupervised)&lt;/dt&gt;
  &lt;dd&gt;지도는 정답(라벨)이 있는 데이터로 학습(정상/공격 분류), 비지도는 라벨 없이 &quot;정상다움&quot;만 학습해 이상을 탐지.&lt;/dd&gt;

  &lt;dt&gt;딥러닝 (Deep Learning)&lt;/dt&gt;
  &lt;dd&gt;여러 층의 신경망으로 데이터에서 특징을 스스로 학습하는 ML. CNN·LSTM·오토인코더·GNN 등이 포함된다.&lt;/dd&gt;

  &lt;dt&gt;CNN / LSTM / GNN&lt;/dt&gt;
  &lt;dd&gt;CNN은 공간·격자 패턴, LSTM은 시간 순서(시계열), GNN은 그래프(연결 구조)를 학습하는 신경망.&lt;/dd&gt;

  &lt;dt&gt;오토인코더 (Autoencoder)&lt;/dt&gt;
  &lt;dd&gt;입력을 압축·복원하도록 학습한 신경망. 정상은 잘 복원하고 이상은 복원 오차가 커지는 성질로 탐지한다.&lt;/dd&gt;

  &lt;dt&gt;강화학습 (Reinforcement Learning)&lt;/dt&gt;
  &lt;dd&gt;보상을 통해 최적 행동(정책)을 스스로 학습. DDoS에서는 탐지 후 완화 대응을 적응적으로 최적화하는 데 쓰인다.&lt;/dd&gt;

  &lt;dt&gt;앙상블 / 하이브리드 (Ensemble / Hybrid)&lt;/dt&gt;
  &lt;dd&gt;여러 모델을 결합해 정확도·안정성을 높이는 방식. 예: CNN+LSTM, RandomForest+GradientBoosting.&lt;/dd&gt;

  &lt;dt&gt;Behavioral / Adaptive (행위 기반 / 적응형)&lt;/dt&gt;
  &lt;dd&gt;정상 트래픽의 평소 행위·기준선을 학습해 벗어나면 탐지하는 방식. 상용 제품의 공통 접근.&lt;/dd&gt;

  &lt;dt&gt;데이터셋 (CIC-DDoS2019 등)&lt;/dt&gt;
  &lt;dd&gt;모델 학습·평가에 쓰는 라벨된 트래픽 모음. CIC-DDoS2019가 DDoS 연구의 사실상 표준.&lt;/dd&gt;

  &lt;dt&gt;정확도 · 정밀도 · 재현율 · F1&lt;/dt&gt;
  &lt;dd&gt;분류 성능 지표. F1은 정밀도(precision)와 재현율(recall)의 조화 평균으로 균형을 본다.&lt;/dd&gt;

  &lt;dt&gt;개념 표류 (Concept Drift)&lt;/dt&gt;
  &lt;dd&gt;시간이 지나며 데이터(공격·정상)의 통계가 변해 학습된 모델이 낡아지는 현상.&lt;/dd&gt;

  &lt;dt&gt;적대적 공격 (Adversarial ML)&lt;/dt&gt;
  &lt;dd&gt;공격자가 모델의 판단을 속이도록 입력(트래픽)을 교묘히 조작하는 공격.&lt;/dd&gt;

  &lt;dt&gt;SDN (Software-Defined Networking)&lt;/dt&gt;
  &lt;dd&gt;제어부와 전달부를 분리해 중앙 컨트롤러가 네트워크를 프로그래밍. AI 탐지-자동 완화 연동에 자주 쓰인다.&lt;/dd&gt;

  &lt;dt&gt;연합학습 (Federated Learning)&lt;/dt&gt;
  &lt;dd&gt;원본 데이터를 공유하지 않고 학습된 모델만 모아 통합하는 협력 학습. 프라이버시를 지키며 광역 탐지 가능.&lt;/dd&gt;
&lt;/dl&gt;

&lt;h2&gt;12. 참고 자료(Sources)&lt;/h2&gt;
&lt;ul class=&quot;refs&quot;&gt;
  &lt;li&gt;Survey: Detecting and Mitigating DDoS Attacks with AI (arXiv, 2025) — &lt;a href=&quot;https://arxiv.org/pdf/2503.17867&quot;&gt;https://arxiv.org/pdf/2503.17867&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Radware DDoS(행위 기반+ML) — &lt;a href=&quot;https://www.radware.com/&quot;&gt;https://www.radware.com/&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;NETSCOUT Arbor Adaptive DDoS Protection(AI-enabled 위협 대응) — &lt;a href=&quot;https://www.netscout.com/&quot;&gt;https://www.netscout.com/&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;A10 + Kentik 빅데이터·ML DDoS 방어 — &lt;a href=&quot;https://www.kentik.com/resources/big-data-powered-ddos-protection-with-a10-networks-kentik/&quot;&gt;kentik.com&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Nexusguard Smart Mode(ML 탐지) — &lt;a href=&quot;https://www.nexusguard.com/blog/smart-mode-ddos-attack-detection-using-machine-learning&quot;&gt;nexusguard.com&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;A10 Defend DDoS Mitigator(ML) — &lt;a href=&quot;https://www.a10networks.com/products/a10-defend-mitigator/&quot;&gt;a10networks.com&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;오픈소스 LUCID(경량 CNN) — &lt;a href=&quot;https://github.com/doriguzzi/lucid-ddos&quot;&gt;github.com/doriguzzi/lucid-ddos&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;오픈소스 SDN+ML 탐지·완화 — &lt;a href=&quot;https://github.com/chiragbiradar/DDoS-Attack-Detection-and-Mitigation&quot;&gt;github.com/chiragbiradar/DDoS-Attack-Detection-and-Mitigation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;오픈소스 모델 비교 — &lt;a href=&quot;https://github.com/ReubenJoe/DDoS-Detection&quot;&gt;github.com/ReubenJoe/DDoS-Detection&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;오픈소스 learn2ban — &lt;a href=&quot;https://github.com/equalitie/learn2ban&quot;&gt;github.com/equalitie/learn2ban&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;GitHub 토픽: ddos-detection — &lt;a href=&quot;https://github.com/topics/ddos-detection&quot;&gt;github.com/topics/ddos-detection&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;CNN-BiLSTM(Attention) DDoS 탐지 연구 — &lt;a href=&quot;https://www.sciencedirect.com/science/article/pii/S277250302500026X&quot;&gt;sciencedirect.com&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;P4-SDN Early-Exit NN 협력 탐지(arXiv) — &lt;a href=&quot;https://arxiv.org/pdf/2509.12291&quot;&gt;arxiv.org/pdf/2509.12291&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr style=&quot;margin:2.5em 0; border:none; border-top:1px solid var(--c-line);&quot;&gt;
&lt;p style=&quot;color:#94a3b8; font-size:.86em;&quot;&gt;
본 문서는 학습·방어(defensive) 목적의 조사 자료입니다. 제품·성능·수치는 공개 자료 기준이며 시점에 따라 달라질 수 있으니,
도입·연구 시에는 각 공식 문서와 원 논문을 확인하시기 바랍니다.
&lt;/p&gt;

&lt;/div&gt;
</description>
      <category>Security</category>
      <author>AndrewJ</author>
      <guid isPermaLink="true">https://andrewpage.tistory.com/502</guid>
      <comments>https://andrewpage.tistory.com/502#entry502comment</comments>
      <pubDate>Tue, 4 Aug 2026 16:32:33 +0900</pubDate>
    </item>
    <item>
      <title>Coffee Study: 역사, 종류, 전문 카페, 원유(Green Coffee) 유통</title>
      <link>https://andrewpage.tistory.com/501</link>
      <description>&lt;!-- Tistory HTML 붙여넣기용 - Coffee Study --&gt;
&lt;div style=&quot;max-width:900px;margin:0 auto;font-family:'Noto Sans KR',sans-serif;line-height:1.8;color:#2c2c2c;&quot;&gt;


&lt;!-- ===== 1. 태동 배경 ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#6F4E37;border-left:5px solid #6F4E37;padding-left:12px;&quot;&gt;1. Coffee의 태동 배경(Motive)과 역사&lt;/h2&gt;

&lt;h3 style=&quot;color:#4A3728;&quot;&gt;1.1 기원(Origin): Ethiopia의 Wild Coffee&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Coffee&lt;/strong&gt; 식물(&lt;em&gt;Coffea&lt;/em&gt; 속)의 고향은 &lt;strong&gt;Ethiopia&lt;/strong&gt; 남서부 고원입니다. 학술적으로 &lt;strong&gt;Arabica(아라비카)&lt;/strong&gt; 품종(&lt;em&gt;Coffea arabica&lt;/em&gt;)은 이 지역에서 자생하며, 유전학 연구에 따르면 &lt;em&gt;Coffea eugenioides&lt;/em&gt;와 &lt;em&gt;Coffea canephora&lt;/em&gt;의 교배로 형성된 것으로 추정됩니다.&lt;/p&gt;
&lt;p&gt;전설에 따르면, Goat herder &lt;strong&gt;Kaldi&lt;/strong&gt;가 특정 나무의 열매를 먹은 염소들이 밤에도 잠을 자지 않는 것을 발견했다는 이야기가 전해집니다. Whether legend or not, the core motive was clear: &lt;strong&gt;alertness(각성) and sustained concentration(집중력 유지)&lt;/strong&gt;.&lt;/p&gt;

&lt;figure style=&quot;text-align:center;margin:24px 0;&quot;&gt;
  &lt;img src=&quot;https://upload.wikimedia.org/wikipedia/commons/thumb/f/fe/Bean_belt_%28top_20_coffee_producers_2011%29.svg/500px-Bean_belt_%28top_20_coffee_producers_2011%29.svg.png&quot; alt=&quot;Coffee Belt map — top producer countries&quot; style=&quot;max-width:100%;border:1px solid #ddd;border-radius:8px;&quot; width=&quot;500&quot; height=&quot;221&quot;&gt;
  &lt;figcaption style=&quot;font-size:0.9em;color:#777;margin-top:8px;&quot;&gt;Coffee Belt — equatorial growing zone and top producer countries (Wikimedia Commons: Bean belt map)&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 style=&quot;color:#4A3728;&quot;&gt;1.2 Yemen에서 Beverage로&lt;/h3&gt;
&lt;p&gt;15세기, &lt;strong&gt;Yemen&lt;/strong&gt;에서 Coffee가 체계적으로 재배·가공·음용되기 시작했습니다. &lt;strong&gt;Sufi(수피)&lt;/strong&gt; 수도승들이 밤 기도(Night prayer) 중 각성을 위해 Coffee를 마셨다는 기록이 남아 있습니다. Yemen 항구 &lt;strong&gt;Mocha&lt;/strong&gt;는 Coffee 무역의 초기 Hub였고, &quot;Mocha&quot;라는 Coffee 용어의 유래가 되었습니다.&lt;/p&gt;

&lt;h3 style=&quot;color:#4A3728;&quot;&gt;1.3 Europe과 Coffee House 문화&lt;/h3&gt;
&lt;p&gt;17세기 이후 Coffee는 &lt;strong&gt;Ottoman Empire&lt;/strong&gt;을 거쳐 Europe으로 전파되었습니다. England, France, Austria의 &lt;strong&gt;Coffee House(커피하우스)&lt;/strong&gt;는 정치 토론, 상업 거래, 학술 교류의 공간이 되었습니다. &lt;strong&gt;London Stock Exchange&lt;/strong&gt;의 전신도 Coffee House에서 출발했다는 설이 있습니다.&lt;/p&gt;

&lt;h3 style=&quot;color:#4A3728;&quot;&gt;1.4 역사 Timeline&lt;/h3&gt;
&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;font-size:0.95em;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#6F4E37;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a3e2b;&quot;&gt;시기&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a3e2b;&quot;&gt;사건&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a3e2b;&quot;&gt;의미&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;9~15세기&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Ethiopia → Yemen 재배 확대&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Coffee의 Domestication(재배화)&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#faf6f2;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;1652&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;London 최초 Coffee House&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Commercial Coffee 문화 시작&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;1727&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Brazil Coffee 재배 시작&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Mass production 시대 개막&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#faf6f2;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;1880s&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Espresso machine 발명(Italy)&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Pressure extraction(압력 추출) 시대&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;1970s~&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Specialty Coffee movement&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Origin·Quality 중심 패러다임&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#faf6f2;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;2000s~&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Third Wave Coffee&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Single Origin, Light roast, Direct trade&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;figure style=&quot;text-align:center;margin:24px 0;&quot;&gt;
  &lt;img src=&quot;https://upload.wikimedia.org/wikipedia/commons/4/45/A_small_cup_of_coffee.JPG&quot; alt=&quot;Coffee cup&quot; style=&quot;max-width:100%;border-radius:8px;&quot; width=&quot;1600&quot; height=&quot;1200&quot;&gt;
  &lt;figcaption style=&quot;font-size:0.9em;color:#777;margin-top:8px;&quot;&gt;A cup of Coffee — 수백 년의 역사가 담긴 Beverage (Wikimedia Commons)&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;!-- ===== 2. Coffee 종류 ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#6F4E37;border-left:5px solid #6F4E37;padding-left:12px;&quot;&gt;2. Coffee 종류(Species &amp;amp; Varieties)&lt;/h2&gt;

&lt;h3 style=&quot;color:#4A3728;&quot;&gt;2.1 주요 Species(종)&lt;/h3&gt;
&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#4A3728;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #3d2e22;&quot;&gt;구분&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #3d2e22;&quot;&gt;Arabica&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #3d2e22;&quot;&gt;Robusta&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #3d2e22;&quot;&gt;Liberica&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&quot;padding:8px;border:1px solid #ddd;font-weight:bold;&quot;&gt;학명&lt;/td&gt;
      &lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;em&gt;Coffea arabica&lt;/em&gt;&lt;/td&gt;
      &lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;em&gt;Coffea canephora&lt;/em&gt;&lt;/td&gt;
      &lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;em&gt;Coffea liberica&lt;/em&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr style=&quot;background:#faf6f2;&quot;&gt;
      &lt;td style=&quot;padding:8px;border:1px solid #ddd;font-weight:bold;&quot;&gt;세계 생산 비율&lt;/td&gt;
      &lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;약 60~70%&lt;/td&gt;
      &lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;약 30~40%&lt;/td&gt;
      &lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;1% 미만&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;padding:8px;border:1px solid #ddd;font-weight:bold;&quot;&gt;재배 고도&lt;/td&gt;
      &lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;600~2,000m+&lt;/td&gt;
      &lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;해수면~800m&lt;/td&gt;
      &lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;저고도&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr style=&quot;background:#faf6f2;&quot;&gt;
      &lt;td style=&quot;padding:8px;border:1px solid #ddd;font-weight:bold;&quot;&gt;Caffeine(카페인)&lt;/td&gt;
      &lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;1.0~1.5%&lt;/td&gt;
      &lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;2.0~2.7%&lt;/td&gt;
      &lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;중간&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;padding:8px;border:1px solid #ddd;font-weight:bold;&quot;&gt;Flavor profile&lt;/td&gt;
      &lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Sweet, Fruity, Floral, Complex acidity&lt;/td&gt;
      &lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Bitter, Earthy, Heavy body&lt;/td&gt;
      &lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Smoky, Woody, Floral&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr style=&quot;background:#faf6f2;&quot;&gt;
      &lt;td style=&quot;padding:8px;border:1px solid #ddd;font-weight:bold;&quot;&gt;주요 용도&lt;/td&gt;
      &lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Specialty, Single Origin, Filter&lt;/td&gt;
      &lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Espresso blend, Instant coffee&lt;/td&gt;
      &lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;지역 특화 Beverage&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h3 style=&quot;color:#4A3728;&quot;&gt;2.2 Arabica 주요 Variety(품종)&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Typica(티피카)&lt;/strong&gt; — Arabica의 기본 품종. Clean, Sweet, Balanced.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Bourbon(부르본)&lt;/strong&gt; — Typica 변종. Chocolate, Caramel note.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Geisha/Gesha(게이샤)&lt;/strong&gt; — Ethiopia origin, Panama에서 Specialty Coffee의 Icon으로 부상. Floral, Tea-like.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;SL28, SL34&lt;/strong&gt; — Kenya 연구소 개발. Bright acidity, Berry note.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Caturra, Catuai&lt;/strong&gt; — Brazil, Central/South America 재배. Nutty, Crowd-pleasing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 style=&quot;color:#4A3728;&quot;&gt;2.3 Processing Method(가공 방식)&lt;/h3&gt;
&lt;p&gt;같은 Variety라도 Processing(가공)에 따라 Flavor가 크게 달라집니다.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Washed(워시드/습식)&lt;/strong&gt; — Cherry 껍질·점 mucilage 제거 후 발효·건조. Clean, Bright acidity.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Natural(내추럴/건식)&lt;/strong&gt; — Cherry 통째로 건조. Fruity, Wine-like sweetness.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Honey(허니)&lt;/strong&gt; — Mucilage(과육 점액) 일부 남긴 채 건조. Sweetness와 Body의 균형.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Anaerobic(혐기)&lt;/strong&gt; — 산소 차단 Fermentation(발효). Experimental, Intense flavor.&lt;/li&gt;
&lt;/ul&gt;

&lt;!-- Coffee Value Chain SVG --&gt;
&lt;h3 style=&quot;color:#4A3728;&quot;&gt;2.4 Coffee Value Chain(가치 사슬) Architecture&lt;/h3&gt;
&lt;svg viewBox=&quot;0 0 860 320&quot; style=&quot;width:100%;max-width:860px;display:block;margin:20px auto;background:#faf6f2;border-radius:12px;border:1px solid #e0d5c8;&quot;&gt;
  &lt;defs&gt;
    &lt;marker id=&quot;arrow&quot; markerWidth=&quot;10&quot; markerHeight=&quot;7&quot; refX=&quot;9&quot; refY=&quot;3.5&quot; orient=&quot;auto&quot;&gt;&lt;polygon points=&quot;0 0, 10 3.5, 0 7&quot; fill=&quot;#6F4E37&quot;/&gt;&lt;/marker&gt;
  &lt;/defs&gt;
  &lt;text x=&quot;430&quot; y=&quot;28&quot; text-anchor=&quot;middle&quot; font-size=&quot;16&quot; font-weight=&quot;bold&quot; fill=&quot;#4A3728&quot;&gt;Coffee Supply Chain — Farm to Cup&lt;/text&gt;
  &lt;!-- boxes --&gt;
  &lt;rect x=&quot;20&quot; y=&quot;60&quot; width=&quot;120&quot; height=&quot;50&quot; rx=&quot;8&quot; fill=&quot;#8B6914&quot; stroke=&quot;#6F4E37&quot;/&gt;
  &lt;text x=&quot;80&quot; y=&quot;90&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;12&quot;&gt;Farm(농장)&lt;/text&gt;
  &lt;rect x=&quot;170&quot; y=&quot;60&quot; width=&quot;120&quot; height=&quot;50&quot; rx=&quot;8&quot; fill=&quot;#A0522D&quot; stroke=&quot;#6F4E37&quot;/&gt;
  &lt;text x=&quot;230&quot; y=&quot;85&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot;&gt;Processing&lt;/text&gt;
  &lt;text x=&quot;230&quot; y=&quot;100&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;(가공·건조)&lt;/text&gt;
  &lt;rect x=&quot;320&quot; y=&quot;60&quot; width=&quot;120&quot; height=&quot;50&quot; rx=&quot;8&quot; fill=&quot;#6F4E37&quot; stroke=&quot;#4A3728&quot;/&gt;
  &lt;text x=&quot;380&quot; y=&quot;85&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot;&gt;Green Coffee&lt;/text&gt;
  &lt;text x=&quot;380&quot; y=&quot;100&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;Trading(원유 거래)&lt;/text&gt;
  &lt;rect x=&quot;470&quot; y=&quot;60&quot; width=&quot;120&quot; height=&quot;50&quot; rx=&quot;8&quot; fill=&quot;#5D4037&quot; stroke=&quot;#4A3728&quot;/&gt;
  &lt;text x=&quot;530&quot; y=&quot;85&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot;&gt;Roasting&lt;/text&gt;
  &lt;text x=&quot;530&quot; y=&quot;100&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;(로스팅)&lt;/text&gt;
  &lt;rect x=&quot;620&quot; y=&quot;60&quot; width=&quot;120&quot; height=&quot;50&quot; rx=&quot;8&quot; fill=&quot;#4A3728&quot; stroke=&quot;#3d2e22&quot;/&gt;
  &lt;text x=&quot;680&quot; y=&quot;85&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot;&gt;Brewing&lt;/text&gt;
  &lt;text x=&quot;680&quot; y=&quot;100&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;10&quot;&gt;(추출)&lt;/text&gt;
  &lt;rect x=&quot;740&quot; y=&quot;60&quot; width=&quot;100&quot; height=&quot;50&quot; rx=&quot;8&quot; fill=&quot;#3E2723&quot; stroke=&quot;#2c1a12&quot;/&gt;
  &lt;text x=&quot;790&quot; y=&quot;90&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;12&quot;&gt;Cup(컵)&lt;/text&gt;
  &lt;!-- arrows --&gt;
  &lt;line x1=&quot;140&quot; y1=&quot;85&quot; x2=&quot;168&quot; y2=&quot;85&quot; stroke=&quot;#6F4E37&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#arrow)&quot;/&gt;
  &lt;line x1=&quot;290&quot; y1=&quot;85&quot; x2=&quot;318&quot; y2=&quot;85&quot; stroke=&quot;#6F4E37&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#arrow)&quot;/&gt;
  &lt;line x1=&quot;440&quot; y1=&quot;85&quot; x2=&quot;468&quot; y2=&quot;85&quot; stroke=&quot;#6F4E37&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#arrow)&quot;/&gt;
  &lt;line x1=&quot;590&quot; y1=&quot;85&quot; x2=&quot;618&quot; y2=&quot;85&quot; stroke=&quot;#6F4E37&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#arrow)&quot;/&gt;
  &lt;line x1=&quot;740&quot; y1=&quot;85&quot; x2=&quot;738&quot; y2=&quot;85&quot; stroke=&quot;#6F4E37&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#arrow)&quot;/&gt;
  &lt;!-- detail boxes --&gt;
  &lt;rect x=&quot;40&quot; y=&quot;160&quot; width=&quot;780&quot; height=&quot;130&quot; rx=&quot;10&quot; fill=&quot;#fff&quot; stroke=&quot;#d4c4b0&quot;/&gt;
  &lt;text x=&quot;430&quot; y=&quot;185&quot; text-anchor=&quot;middle&quot; font-size=&quot;13&quot; font-weight=&quot;bold&quot; fill=&quot;#4A3728&quot;&gt;각 단계 Detail&lt;/text&gt;
  &lt;text x=&quot;60&quot; y=&quot;210&quot; font-size=&quot;11&quot; fill=&quot;#555&quot;&gt;Farm: Smallholder(소농) / Estate(대농장) / Cooperative(조합)&lt;/text&gt;
  &lt;text x=&quot;60&quot; y=&quot;230&quot; font-size=&quot;11&quot; fill=&quot;#555&quot;&gt;Trading: NKG, Sucafina, LDC 등 Global merchant + Korea Importer(수입업체)&lt;/text&gt;
  &lt;text x=&quot;60&quot; y=&quot;250&quot; font-size=&quot;11&quot; fill=&quot;#555&quot;&gt;Roasting: Light(산미 강조) → Medium → Dark(쓴맛·Body 강조), SCA 80+ = Specialty grade&lt;/text&gt;
  &lt;text x=&quot;60&quot; y=&quot;270&quot; font-size=&quot;11&quot; fill=&quot;#555&quot;&gt;Brewing: Pour-over(V60), Espresso, AeroPress, Cold brew 등 Extraction method에 따라 Flavor 변화&lt;/text&gt;
&lt;/svg&gt;

&lt;figure style=&quot;text-align:center;margin:24px 0;&quot;&gt;
  &lt;img src=&quot;https://upload.wikimedia.org/wikipedia/commons/c/c5/Roasted_coffee_beans.jpg&quot; alt=&quot;Roasted coffee beans&quot; style=&quot;max-width:100%;border-radius:8px;&quot; width=&quot;1600&quot; height=&quot;1200&quot;&gt;
  &lt;figcaption style=&quot;font-size:0.9em;color:#777;margin-top:8px;&quot;&gt;Roasted Coffee beans — Green Coffee(생두)를 Roasting(로스팅)한 결과물 (Wikimedia Commons)&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;!-- ===== 3. Korea Coffee 전문 카페 ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#6F4E37;border-left:5px solid #6F4E37;padding-left:12px;&quot;&gt;3. Korea Coffee 전문 카페(Specialty Roastery)&lt;/h2&gt;

&lt;p&gt;아래 목록은 &lt;strong&gt;대중 Franchise(프랜차이즈)&lt;/strong&gt;나 &lt;strong&gt;Luxury brand cafe&lt;/strong&gt;가 아닌, Coffee 전문가·Roaster·Barista가 찾는 &lt;strong&gt;Specialty Coffee Roastery(스페셜티 커피 로스터리)&lt;/strong&gt;입니다. 선정 기준: 자체 Roasting, Single Origin/Specialty grade 원두, Cupping(커핑) culture, Industry recognition(블루리본, Coffee Expo 등).&lt;/p&gt;

&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;font-size:0.93em;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#6F4E37;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a3e2b;&quot;&gt;카페명&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a3e2b;&quot;&gt;위치&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a3e2b;&quot;&gt;특징&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;프릳츠커피(Fritz Coffee)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Seoul, Mapo-gu&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;한옥 Roastery. Balanced medium roast. Specialty scene의 Classic.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#faf6f2;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;커피리브레(Coffee Libre)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Seoul, Mapo-gu&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;생두 Import부터 Roasting까지 Vertical integration. Light roast, Fruity note.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;모모스커피(Momos Coffee)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Busan, Busanjin-gu&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;2019 WBC(World Barista Championship) 우승 Barista 운영. Competition-grade extraction.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#faf6f2;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;빈브라더스(Bean Brothers)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Seoul, Mapo-gu&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;B2B Wholesale, Subscription. Consistent quality control.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;테일러커피(Tailor Coffee)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Seoul, Yongsan-gu&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Cold brew Specialist. Dark roast for immersion brewing.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#faf6f2;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;센터커피(Center Coffee)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Seoul, Jongno-gu&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;생두 Sourcing부터 일관된 Cup quality. Drip coffee의 Benchmark.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;앤트러사이트(Anthracite)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Seoul, Yongsan / Hannam&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Industrial space + Specialty roasting. Design-forward.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#faf6f2;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;나무사이로(Namusairo)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Seoul, Jongno-gu&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Single Origin drip Specialist. Minimalist approach.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;테라로사(Terarosa)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Gangwon-do (HQ) + Seoul&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Domestic roasting Pioneer. Wide origin portfolio.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#faf6f2;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;오라운트(Oround)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Gyeonggi, Gwangju&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;SCA 80+ Specialty. B2B(Google, WeWork 납품). Order-based roasting.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;크로마이트커피(Chromite Coffee)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Incheon, Yeonsu-gu&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;2025 Roasters Club Blue Ribbon. Experimental roast profile.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#faf6f2;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;호커스포커스로스터스(Hocus Pocus Roasters)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Gyeonggi, Pyeongtaek&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;2025 Blue Ribbon. Creative blend &amp;amp; Single origin.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;이미커피(Café IMI)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Seoul, Mapo-gu&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;2025 Blue Ribbon. Precision brewing.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#faf6f2;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;영앤도터스(Young &amp;amp; Daughters)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Seoul, Mapo-gu&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;2025 Blue Ribbon. Nordic-inspired light roast.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;폰트커피(Pont Coffee)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Seoul, Yongsan-gu&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;2025 Blue Ribbon. Clean, Transparent flavor.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#faf6f2;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;시그니쳐 로스터스(Signature Roasters)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Gyeonggi, Anyang&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;2025 Blue Ribbon. Profile roasting Expertise.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;블랙업커피(Blackup Coffee)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Busan, Busanjin-gu&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;2025 Blue Ribbon. Busan Specialty scene 대표.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#faf6f2;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;먼스커피(Month Coffee)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Busan, Busanjin-gu&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;2025 Blue Ribbon. Seasonal Single origin.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;히떼로스터리(Hytte Roastery)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Busan, Gangseo-gu&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;2025 Blue Ribbon. Scandinavian-style Roastery.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#faf6f2;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;MTSPACE COFFEE&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Incheon&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Australia Normcore 출신 Barista. Weekly fresh roast.&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p style=&quot;font-size:0.92em;color:#777;&quot;&gt;&lt;em&gt;Tip: Roasting 후 3~10일(Degassing period)이 Flavor peak. Origin info와 Cupping note가 Menu에 명시된 곳을 선택하세요.&lt;/em&gt;&lt;/p&gt;

&lt;!-- ===== 4. 원유 유통 ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#6F4E37;border-left:5px solid #6F4E37;padding-left:12px;&quot;&gt;4. Coffee 원유(Green Coffee) 유통 기업&lt;/h2&gt;

&lt;h3 style=&quot;color:#4A3728;&quot;&gt;4.1 Global Green Coffee Trading House&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Green Coffee(생두, 원유)&lt;/strong&gt;는 Roasting 전 상태의 Coffee cherry seed입니다. Global market은 소수의 Trading house(상선)가 Volume(물량)을 지배하는 &lt;strong&gt;Oligopoly(과점)&lt;/strong&gt; 구조입니다.&lt;/p&gt;

&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#4A3728;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #3d2e22;&quot;&gt;기업&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #3d2e22;&quot;&gt;본사&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #3d2e22;&quot;&gt;역할·강점&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Neumann Kaffee Gruppe(NKG)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Hamburg, Germany&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;28개국 40+ 계열사. Export, Milling, Import, Farm management, Logistics, Financing. 2023 Nordic Approach(Specialty) 인수.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#faf6f2;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Volcafe(ED&amp;amp;F Man)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Switzerland&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Global top-tier merchant. Brazil, Vietnam, Colombia 등 Origin network.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Louis Dreyfus Company(LDC)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Netherlands&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;30년+ Coffee business. 12개 Origin country, Global production 85% 커버. Top 5 merchant.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#faf6f2;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Sucafina&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Geneva, Switzerland&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;150년+ 역사. Specialty + Commercial. Sustainable Harvest 인수로 North America Specialty 강화.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;ECOM Agroindustrial&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Switzerland&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Farm to roaster Integration. Brazil Guaxupé 등 Origin infrastructure.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#faf6f2;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Olam Food Ingredients(ofi)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Singapore&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Agri-business Giant. Sustainability, Traceability focus.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;Mercon Coffee Group&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Netherlands&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Central America, Brazil origin Specialist.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#faf6f2;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;InterAmerican Coffee&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;United States&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Specialty-focused Importer. Mid-size roaster Target.&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h3 style=&quot;color:#4A3728;&quot;&gt;4.2 Korea Green Coffee Importer &amp;amp; Distributor&lt;/h3&gt;
&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#6F4E37;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a3e2b;&quot;&gt;기업&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #5a3e2b;&quot;&gt;특징&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;더드립(The Drip)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;29년+ Green coffee business. Global supply chain, OEM roasting.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#faf6f2;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;코페아(COFFEA)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;연 600톤 Import. 30+ Farm direct trade. COE(Cup of Excellence) lot 취급.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;제이엠커피그룹(JM Coffee Group)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Africa, Central/South America direct Import. Q-Grader quality control.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#faf6f2;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;맥널티인터내셔널(McNulty International)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;맥널티(McNulty) 자회사. Domestic green coffee market Leader. 160+ SKU.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;동서식품(Dongsuh Foods)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Korea Green coffee Import 1위(약 40%). Kanu 등 자체 Brand + B2B supply.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#faf6f2;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;엠아이커피(MI Coffee)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Major importer. Franchise, Roastery supply.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;지에스씨인터내셔날(GSC International)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Green coffee Import &amp;amp; Distribution.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#faf6f2;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;블레스빈(Bless Bean)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Specialty + Commercial green bean supply.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;&lt;strong&gt;NKG Korea&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Neumann Kaffee Gruppe Korea branch. Global network 기반 Supply.&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;!-- Import Flow SVG --&gt;
&lt;h3 style=&quot;color:#4A3728;&quot;&gt;4.3 Korea Green Coffee Import 절차&lt;/h3&gt;
&lt;svg viewBox=&quot;0 0 800 200&quot; style=&quot;width:100%;max-width:800px;display:block;margin:20px auto;background:#f5f0eb;border-radius:12px;border:1px solid #e0d5c8;&quot;&gt;
  &lt;defs&gt;&lt;marker id=&quot;arr2&quot; markerWidth=&quot;10&quot; markerHeight=&quot;7&quot; refX=&quot;9&quot; refY=&quot;3.5&quot; orient=&quot;auto&quot;&gt;&lt;polygon points=&quot;0 0, 10 3.5, 0 7&quot; fill=&quot;#6F4E37&quot;/&gt;&lt;/marker&gt;&lt;/defs&gt;
  &lt;rect x=&quot;10&quot; y=&quot;70&quot; width=&quot;110&quot; height=&quot;45&quot; rx=&quot;6&quot; fill=&quot;#8B6914&quot;/&gt;&lt;text x=&quot;65&quot; y=&quot;98&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot;&gt;Origin Farm&lt;/text&gt;
  &lt;rect x=&quot;140&quot; y=&quot;70&quot; width=&quot;110&quot; height=&quot;45&quot; rx=&quot;6&quot; fill=&quot;#A0522D&quot;/&gt;&lt;text x=&quot;195&quot; y=&quot;98&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot;&gt;Export/Trader&lt;/text&gt;
  &lt;rect x=&quot;270&quot; y=&quot;70&quot; width=&quot;110&quot; height=&quot;45&quot; rx=&quot;6&quot; fill=&quot;#6F4E37&quot;/&gt;&lt;text x=&quot;325&quot; y=&quot;98&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot;&gt;Shipping&lt;/text&gt;
  &lt;rect x=&quot;400&quot; y=&quot;70&quot; width=&quot;110&quot; height=&quot;45&quot; rx=&quot;6&quot; fill=&quot;#5D4037&quot;/&gt;&lt;text x=&quot;455&quot; y=&quot;98&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot;&gt;Quarantine(검역)&lt;/text&gt;
  &lt;rect x=&quot;530&quot; y=&quot;70&quot; width=&quot;110&quot; height=&quot;45&quot; rx=&quot;6&quot; fill=&quot;#4A3728&quot;/&gt;&lt;text x=&quot;585&quot; y=&quot;98&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot;&gt;Customs(통관)&lt;/text&gt;
  &lt;rect x=&quot;660&quot; y=&quot;70&quot; width=&quot;120&quot; height=&quot;45&quot; rx=&quot;6&quot; fill=&quot;#3E2723&quot;/&gt;&lt;text x=&quot;720&quot; y=&quot;98&quot; text-anchor=&quot;middle&quot; fill=&quot;#fff&quot; font-size=&quot;11&quot;&gt;Roastery Supply&lt;/text&gt;
  &lt;line x1=&quot;120&quot; y1=&quot;92&quot; x2=&quot;138&quot; y2=&quot;92&quot; stroke=&quot;#6F4E37&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#arr2)&quot;/&gt;
  &lt;line x1=&quot;250&quot; y1=&quot;92&quot; x2=&quot;268&quot; y2=&quot;92&quot; stroke=&quot;#6F4E37&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#arr2)&quot;/&gt;
  &lt;line x1=&quot;380&quot; y1=&quot;92&quot; x2=&quot;398&quot; y2=&quot;92&quot; stroke=&quot;#6F4E37&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#arr2)&quot;/&gt;
  &lt;line x1=&quot;510&quot; y1=&quot;92&quot; x2=&quot;528&quot; y2=&quot;92&quot; stroke=&quot;#6F4E37&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#arr2)&quot;/&gt;
  &lt;line x1=&quot;640&quot; y1=&quot;92&quot; x2=&quot;658&quot; y2=&quot;92&quot; stroke=&quot;#6F4E37&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#arr2)&quot;/&gt;
  &lt;text x=&quot;400&quot; y=&quot;160&quot; text-anchor=&quot;middle&quot; font-size=&quot;11&quot; fill=&quot;#666&quot;&gt;2024~ Green coffee VAT(부가가치세) 면제 → Import cost 일부 절감 (Roaster margin에 영향)&lt;/text&gt;
&lt;/svg&gt;

&lt;!-- ===== 5. 시장 ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:40px;color:#6F4E37;border-left:5px solid #6F4E37;padding-left:12px;&quot;&gt;5. 시장 상황과 미래 성장성&lt;/h2&gt;

&lt;h3 style=&quot;color:#4A3728;&quot;&gt;5.1 Global Market&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;Global coffee market size: 약 &lt;strong&gt;$500B+&lt;/strong&gt; (Roasted + Out-of-home 포함, 2025 기준 추정).&lt;/li&gt;
  &lt;li&gt;Green coffee market: Climate change, Supply chain disruption으로 Price volatility(가격 변동성) 확대. 2024~2025 Vietnam Robusta supply crisis가 Global benchmark price 28년 최고치 기록.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Specialty Coffee&lt;/strong&gt; segment: CAGR(Compound Annual Growth Rate, 연평균 성장률) 8~10%+ — Premiumization(고급화) trend.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 style=&quot;color:#4A3728;&quot;&gt;5.2 Korea Market&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;1인당 Coffee consumption: OECD(Organization for Economic Co-operation and Development, 경제협력개발기구) 상위권. Cafe density(카페 밀도) 세계 최고 수준.&lt;/li&gt;
  &lt;li&gt;Franchise(프랜차이즈) → Specialty roastery로 Consumer taste evolution.&lt;/li&gt;
  &lt;li&gt;Home cafe, Subscription, Office B2B가 Post-COVID growth driver.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 style=&quot;color:#4A3728;&quot;&gt;5.3 선도 기업&lt;/h3&gt;
&lt;div style=&quot;overflow-x:auto;&quot;&gt;
&lt;table style=&quot;width:100%;border-collapse:collapse;margin:16px 0;&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;background:#4A3728;color:#fff;&quot;&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #3d2e22;&quot;&gt;Category&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #3d2e22;&quot;&gt;기업&lt;/th&gt;
      &lt;th style=&quot;padding:10px;border:1px solid #3d2e22;&quot;&gt;Position&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Global Roaster&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Nestlé, JDE Peet's, Starbucks&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Volume, Brand, Retail dominance&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#faf6f2;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Specialty Pioneer&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Blue Bottle, Intelligentsia, Stumptown&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Third wave culture, Direct trade&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Green Coffee Trading&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;NKG, Sucafina, LDC, Volcafe&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Supply chain Control, Origin access&lt;/td&gt;&lt;/tr&gt;
    &lt;tr style=&quot;background:#faf6f2;&quot;&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Equipment/Tech&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;La Marzocco, Mahlkönig, Breville&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Espresso machine, Grinder innovation&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Korea Specialty&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Momos, Coffee Libre, Fritz, Terarosa&lt;/td&gt;&lt;td style=&quot;padding:8px;border:1px solid #ddd;&quot;&gt;Barista talent, Roasting craftsmanship&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h3 style=&quot;color:#4A3728;&quot;&gt;5.4 Future Outlook&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Climate resilience(기후 적응)&lt;/strong&gt;: Rust-resistant variety, Shade-grown farming R&amp;amp;D (Nestlé Star 4, Starbucks innovation farm).&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Traceability(추적 가능성)&lt;/strong&gt;: Blockchain, NKG Verified 등 Origin tracking.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Fine Robusta&lt;/strong&gt;: Specialty-grade Robusta가 New category로 부상.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Automation&lt;/strong&gt;: AI Roasting profile, Smart grinder — Consistency vs. Craftsmanship tension.&lt;/li&gt;
&lt;/ul&gt;

&lt;!-- ===== 용어 설명 ===== --&gt;
&lt;h2 style=&quot;font-size:1.5em;margin-top:50px;color:#6F4E37;border-left:5px solid #6F4E37;padding-left:12px;&quot;&gt;용어 설명(Glossary)&lt;/h2&gt;

&lt;div style=&quot;background:#faf6f2;padding:20px;border-radius:10px;border:1px solid #e0d5c8;&quot;&gt;

&lt;p&gt;&lt;strong&gt;SCA(Specialty Coffee Association, 스페셜티 커피 협회)&lt;/strong&gt;&lt;br&gt;
Specialty coffee Industry의 Global standard-setting Organization. Cupping protocol, Q-Grader certification, 100-point scoring system을 제공. 80점 이상이 Specialty grade.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cupping(커핑)&lt;/strong&gt;&lt;br&gt;
Coffee quality를 Standardized protocol로 Evaluation(평가)하는 Sensory test. Fragrance, Flavor, Aftertaste, Acidity, Body, Balance, Uniformity, Clean cup, Sweetness, Overall을 10항목으로 Score.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q-Grader&lt;/strong&gt;&lt;br&gt;
SCA 인증 Coffee quality Evaluator. Green coffee defect, Cup quality, Sensory calibration 능력을 Exam으로 검증.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Single Origin(싱글 오리진)&lt;/strong&gt;&lt;br&gt;
특정 Country, Region, Farm, Lot에서 수확한 Coffee. Terroir(풍토)와 Processing의 Individuality(개별성)를 Taste할 수 있음.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Direct Trade(다이렉트 트레이드)&lt;/strong&gt;&lt;br&gt;
Roaster가 Farm/Cooperative와 Middleman 없이 직접 Contract. Farmer에게 Premium price 지급, Traceability 확보.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Degassing(디개싱)&lt;/strong&gt;&lt;br&gt;
Roasting 후 Coffee bean 내부 CO₂(Carbon dioxide, 이산화탄소) 방출 과정. 3~14일간 진행. 이 기간 이후 Extraction flavor가 Stabilize.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Maillard Reaction(메이라드 반응)&lt;/strong&gt;&lt;br&gt;
Roasting 중 Amino acid와 Sugar가 고온에서 반응하여 Brown color, Aroma compound 생성. Coffee flavor complexity의 핵심 Chemistry.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First Wave / Second Wave / Third Wave&lt;/strong&gt;&lt;br&gt;
First: Mass market instant, Folgers era. Second: Starbucks, Espresso culture, Experience. Third: Origin transparency, Light roast, Artisan approach.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;COE(Cup of Excellence)&lt;/strong&gt;&lt;br&gt;
Origin country별 Top lot Auction program. Highest quality microlot discovery platform. Winning lot은 kg당 수천~수만 USD에 거래.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ICE(Intercontinental Exchange) Futures&lt;/strong&gt;&lt;br&gt;
London, New York Coffee futures market. Global benchmark price discovery mechanism. Robusta(LRC), Arabica(KC) contract.&lt;/p&gt;

&lt;/div&gt;

&lt;p style=&quot;margin-top:30px;font-size:0.85em;color:#999;text-align:center;&quot;&gt;— Coffee Study Document · Tistory HTML paste ready —&lt;/p&gt;

&lt;/div&gt;</description>
      <author>AndrewJ</author>
      <guid isPermaLink="true">https://andrewpage.tistory.com/501</guid>
      <comments>https://andrewpage.tistory.com/501#entry501comment</comments>
      <pubDate>Tue, 4 Aug 2026 16:06:35 +0900</pubDate>
    </item>
    <item>
      <title>흐름 기반 트래픽 탐지 심층 분석 &amp;mdash; NetFlow / sFlow / IPFIX</title>
      <link>https://andrewpage.tistory.com/500</link>
      <description>&lt;div class=&quot;sdoc&quot;&gt;
&lt;style&gt;
.sdoc{
  --c-text:#1f2933; --c-sub:#52606d; --c-line:#e4e7eb;
  --c-primary:#2563eb; --c-primary-d:#1e40af; --c-accent:#db2777;
  --c-bg-soft:#f5f7fa; --c-bg-blue:#eff4ff; --c-bg-warn:#fff7ed;
  --c-bg-danger:#fef2f2; --c-bg-ok:#f0fdf4;
  color:var(--c-text);
  font-family:-apple-system,BlinkMacSystemFont,&quot;Segoe UI&quot;,&quot;Apple SD Gothic Neo&quot;,&quot;Malgun Gothic&quot;,sans-serif;
  line-height:1.75; font-size:16px; word-break:keep-all; max-width:920px; margin:0 auto;
}
.sdoc *{box-sizing:border-box;}
.sdoc h1{font-size:2em; line-height:1.3; margin:.2em 0 .6em; letter-spacing:-.02em;}
.sdoc h2{font-size:1.5em; margin:2em 0 .7em; padding-bottom:.3em; border-bottom:3px solid var(--c-primary); letter-spacing:-.02em;}
.sdoc h3{font-size:1.2em; margin:1.6em 0 .5em; color:var(--c-primary-d);}
.sdoc p{margin:.7em 0;}
.sdoc ul,.sdoc ol{margin:.6em 0; padding-left:1.4em;}
.sdoc li{margin:.35em 0;}
.sdoc code{background:var(--c-bg-soft); padding:.1em .4em; border-radius:4px; font-size:.9em;
  font-family:&quot;SFMono-Regular&quot;,Consolas,&quot;Liberation Mono&quot;,Menlo,monospace; color:var(--c-accent);}
.sdoc pre{background:#0f172a; color:#e2e8f0; padding:1em 1.2em; border-radius:8px; overflow-x:auto;
  font-size:.86em; line-height:1.6;}
.sdoc pre code{background:none; color:inherit; padding:0;}
/* 코드 블록: 줄무늬(zebra) 방지 — 모든 줄을 검은 배경+밝은 글씨로 강제 고정 */
.sdoc pre, .sdoc pre *{background:#0f172a !important; color:#e2e8f0 !important;}
.sdoc a{color:var(--c-primary); }

.sdoc .lead{font-size:1.1em; color:var(--c-sub); border-left:4px solid var(--c-primary);
  padding:.6em 1em; background:var(--c-bg-blue); border-radius:0 8px 8px 0;}

.sdoc .callout{border-radius:10px; padding:1em 1.2em; margin:1.2em 0; border:1px solid var(--c-line);}
.sdoc .callout.info{background:var(--c-bg-blue); border-color:#bfdbfe;}
.sdoc .callout.warn{background:var(--c-bg-warn); border-color:#fed7aa;}
.sdoc .callout.danger{background:var(--c-bg-danger); border-color:#fecaca;}
.sdoc .callout.ok{background:var(--c-bg-ok); border-color:#bbf7d0;}
.sdoc .callout .tag{font-weight:700; display:block; margin-bottom:.3em;}

.sdoc table{border-collapse:collapse; width:100%; margin:1.2em 0; font-size:.94em; overflow:hidden;
  border-radius:8px;}
.sdoc th,.sdoc td{border:1px solid var(--c-line); padding:.6em .8em; text-align:left; vertical-align:top;}
.sdoc thead th{background:var(--c-primary); color:#fff; border-color:var(--c-primary);}
.sdoc tbody tr:nth-child(even){background:var(--c-bg-soft);}

.sdoc figure{margin:1.6em 0; text-align:center;}
.sdoc figure svg{max-width:100%; height:auto;}
.sdoc figcaption{font-size:.88em; color:var(--c-sub); margin-top:.6em;}

.sdoc .fig-wrap{overflow-x:auto; border:1px solid var(--c-line); border-radius:10px; background:#fff; padding:14px;}

.sdoc .toc{background:var(--c-bg-soft); border:1px solid var(--c-line); border-radius:10px; padding:1em 1.4em;}
.sdoc .toc strong{display:block; margin-bottom:.4em; font-size:1.05em;}
.sdoc .toc ol{margin:.3em 0;}

.sdoc .glossary dt{font-weight:700; color:var(--c-primary-d); margin-top:.9em;}
.sdoc .glossary dd{margin:.2em 0 .2em 0; color:var(--c-sub);}

.sdoc .pill{display:inline-block; background:var(--c-primary); color:#fff; font-size:.75em;
  padding:.15em .6em; border-radius:999px; vertical-align:middle; margin-left:.3em;}
&lt;/style&gt;

&lt;h1&gt;흐름(Flow) 기반 트래픽 탐지 완전 분석 — NetFlow · sFlow · IPFIX&lt;/h1&gt;

&lt;p class=&quot;lead&quot;&gt;
Tbps급 백본에서 모든 패킷을 하나하나 뜯어보는 것은 불가능에 가깝습니다. 그래서 등장한 것이
&lt;strong&gt;흐름(Flow) 기반 모니터링&lt;/strong&gt;입니다. 라우터·스위치가 트래픽을 &quot;흐름&quot; 단위로 요약해 내보내면,
수집기가 이를 모아 이상 징후와 DDoS를 탐지합니다. 이 문서는 그 3대 기술인
&lt;strong&gt;NetFlow, sFlow, IPFIX&lt;/strong&gt;의 구조·동작·차이, 그리고 실제 탐지에 어떻게 쓰이는지를
그림과 함께 아주 자세히 정리합니다.
&lt;/p&gt;

&lt;div class=&quot;callout info&quot;&gt;
  &lt;span class=&quot;tag&quot;&gt;이 문서의 위치&lt;/span&gt;
  이 글은 &quot;DDoS 탐지 방법 총정리&quot;의 &lt;strong&gt;9장 흐름 기반 탐지&lt;/strong&gt;를 독립시켜 깊게 파고든 심화편입니다.
  통계·엔트로피·머신러닝 같은 탐지 &quot;기법&quot;이 실제로 &lt;strong&gt;어떤 데이터(=흐름) 위에서&lt;/strong&gt; 돌아가는지를 이해하는 것이 목표입니다.
&lt;/div&gt;

&lt;div class=&quot;toc&quot;&gt;
  &lt;strong&gt;목차&lt;/strong&gt;
  &lt;ol&gt;
    &lt;li&gt;흐름(Flow)이란 무엇인가 — 5-tuple&lt;/li&gt;
    &lt;li&gt;왜 &quot;흐름&quot; 기반인가 — 패킷 전수검사와의 비교&lt;/li&gt;
    &lt;li&gt;전체 아키텍처 — Exporter · Collector · Analyzer&lt;/li&gt;
    &lt;li&gt;흐름의 일생 — Flow Cache와 타임아웃&lt;/li&gt;
    &lt;li&gt;NetFlow — 역사, 버전, 동작 원리&lt;/li&gt;
    &lt;li&gt;NetFlow v9 템플릿 메커니즘&lt;/li&gt;
    &lt;li&gt;IPFIX — 국제 표준, 메시지 구조, Information Element&lt;/li&gt;
    &lt;li&gt;sFlow — 샘플링 기반의 전혀 다른 접근&lt;/li&gt;
    &lt;li&gt;샘플링(Sampling)의 이해와 통계적 복원&lt;/li&gt;
    &lt;li&gt;세 기술 총정리 비교&lt;/li&gt;
    &lt;li&gt;흐름 데이터로 DDoS·이상 탐지하기&lt;/li&gt;
    &lt;li&gt;실무 수집·분석 스택 (도구)&lt;/li&gt;
    &lt;li&gt;배포·운영 시 고려사항&lt;/li&gt;
    &lt;li&gt;기술 진화 타임라인&lt;/li&gt;
    &lt;li&gt;장점과 한계&lt;/li&gt;
    &lt;li&gt;용어 설명&lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;

&lt;h2&gt;1. 흐름(Flow)이란 무엇인가 — 5-tuple&lt;/h2&gt;
&lt;p&gt;
&lt;strong&gt;흐름(Flow)&lt;/strong&gt;은 &lt;em&gt;&quot;같은 성질을 공유하는 패킷들의 묶음&quot;&lt;/em&gt;입니다. 전통적으로 다음
&lt;strong&gt;5가지 키(5-tuple)&lt;/strong&gt;가 모두 같은 패킷들을 하나의 흐름으로 봅니다.
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;출발지 IP(Internet Protocol) 주소&lt;/li&gt;
  &lt;li&gt;목적지 IP 주소&lt;/li&gt;
  &lt;li&gt;출발지 포트(Port)&lt;/li&gt;
  &lt;li&gt;목적지 포트&lt;/li&gt;
  &lt;li&gt;프로토콜(Protocol: TCP, UDP 등)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
여기에 입력 인터페이스, 서비스 등급(ToS) 등을 더해 흐름을 정의하기도 합니다. 핵심은,
수천 개의 패킷을 &lt;strong&gt;&quot;이 출발지에서 저 목적지로 몇 개의 패킷·몇 바이트가 오갔다&quot;&lt;/strong&gt;는
&lt;strong&gt;한 줄의 요약 레코드&lt;/strong&gt;로 압축한다는 점입니다.
&lt;/p&gt;

&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 820 300&quot; role=&quot;img&quot; aria-label=&quot;여러 패킷이 5-tuple 기준으로 하나의 흐름 레코드로 요약되는 개념&quot;&gt;
  &lt;text x=&quot;130&quot; y=&quot;28&quot; font-size=&quot;13&quot; font-weight=&quot;700&quot; fill=&quot;#334155&quot; text-anchor=&quot;middle&quot;&gt;개별 패킷들 (수천 개)&lt;/text&gt;
  &lt;!-- packets group A --&gt;
  &lt;g fill=&quot;#93c5fd&quot; stroke=&quot;#2563eb&quot;&gt;
    &lt;rect x=&quot;30&quot; y=&quot;45&quot; width=&quot;60&quot; height=&quot;26&quot; rx=&quot;4&quot;/&gt;&lt;rect x=&quot;30&quot; y=&quot;78&quot; width=&quot;60&quot; height=&quot;26&quot; rx=&quot;4&quot;/&gt;
    &lt;rect x=&quot;30&quot; y=&quot;111&quot; width=&quot;60&quot; height=&quot;26&quot; rx=&quot;4&quot;/&gt;&lt;rect x=&quot;30&quot; y=&quot;144&quot; width=&quot;60&quot; height=&quot;26&quot; rx=&quot;4&quot;/&gt;
  &lt;/g&gt;
  &lt;text x=&quot;60&quot; y=&quot;63&quot; font-size=&quot;9&quot; fill=&quot;#1e3a8a&quot; text-anchor=&quot;middle&quot;&gt;A→B&lt;/text&gt;
  &lt;text x=&quot;60&quot; y=&quot;96&quot; font-size=&quot;9&quot; fill=&quot;#1e3a8a&quot; text-anchor=&quot;middle&quot;&gt;A→B&lt;/text&gt;
  &lt;text x=&quot;60&quot; y=&quot;129&quot; font-size=&quot;9&quot; fill=&quot;#1e3a8a&quot; text-anchor=&quot;middle&quot;&gt;A→B&lt;/text&gt;
  &lt;text x=&quot;60&quot; y=&quot;162&quot; font-size=&quot;9&quot; fill=&quot;#1e3a8a&quot; text-anchor=&quot;middle&quot;&gt;A→B&lt;/text&gt;
  &lt;!-- packets group B --&gt;
  &lt;g fill=&quot;#fca5a5&quot; stroke=&quot;#dc2626&quot;&gt;
    &lt;rect x=&quot;110&quot; y=&quot;61&quot; width=&quot;60&quot; height=&quot;26&quot; rx=&quot;4&quot;/&gt;&lt;rect x=&quot;110&quot; y=&quot;94&quot; width=&quot;60&quot; height=&quot;26&quot; rx=&quot;4&quot;/&gt;
    &lt;rect x=&quot;110&quot; y=&quot;127&quot; width=&quot;60&quot; height=&quot;26&quot; rx=&quot;4&quot;/&gt;
  &lt;/g&gt;
  &lt;text x=&quot;140&quot; y=&quot;79&quot; font-size=&quot;9&quot; fill=&quot;#7f1d1d&quot; text-anchor=&quot;middle&quot;&gt;C→D&lt;/text&gt;
  &lt;text x=&quot;140&quot; y=&quot;112&quot; font-size=&quot;9&quot; fill=&quot;#7f1d1d&quot; text-anchor=&quot;middle&quot;&gt;C→D&lt;/text&gt;
  &lt;text x=&quot;140&quot; y=&quot;145&quot; font-size=&quot;9&quot; fill=&quot;#7f1d1d&quot; text-anchor=&quot;middle&quot;&gt;C→D&lt;/text&gt;

  &lt;!-- classifier --&gt;
  &lt;line x1=&quot;180&quot; y1=&quot;110&quot; x2=&quot;270&quot; y2=&quot;110&quot; stroke=&quot;#334155&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#f1arr)&quot;/&gt;
  &lt;rect x=&quot;272&quot; y=&quot;80&quot; width=&quot;150&quot; height=&quot;60&quot; rx=&quot;8&quot; fill=&quot;#eff4ff&quot; stroke=&quot;#2563eb&quot;/&gt;
  &lt;text x=&quot;347&quot; y=&quot;105&quot; font-size=&quot;12&quot; fill=&quot;#1e40af&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;5-tuple로 분류&lt;/text&gt;
  &lt;text x=&quot;347&quot; y=&quot;124&quot; font-size=&quot;10&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;같은 키 = 같은 흐름&lt;/text&gt;

  &lt;line x1=&quot;422&quot; y1=&quot;110&quot; x2=&quot;500&quot; y2=&quot;110&quot; stroke=&quot;#334155&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#f1arr)&quot;/&gt;

  &lt;!-- flow records --&gt;
  &lt;text x=&quot;650&quot; y=&quot;28&quot; font-size=&quot;13&quot; font-weight=&quot;700&quot; fill=&quot;#334155&quot; text-anchor=&quot;middle&quot;&gt;요약된 흐름 레코드&lt;/text&gt;
  &lt;rect x=&quot;505&quot; y=&quot;55&quot; width=&quot;295&quot; height=&quot;48&quot; rx=&quot;6&quot; fill=&quot;#dbeafe&quot; stroke=&quot;#2563eb&quot;/&gt;
  &lt;text x=&quot;515&quot; y=&quot;74&quot; font-size=&quot;10.5&quot; fill=&quot;#1e3a8a&quot;&gt;흐름1: A→B, TCP/443, 4 pkts, 5,800 bytes&lt;/text&gt;
  &lt;text x=&quot;515&quot; y=&quot;92&quot; font-size=&quot;10.5&quot; fill=&quot;#1e3a8a&quot;&gt;시작 09:00:01 · 종료 09:00:04&lt;/text&gt;
  &lt;rect x=&quot;505&quot; y=&quot;120&quot; width=&quot;295&quot; height=&quot;48&quot; rx=&quot;6&quot; fill=&quot;#fee2e2&quot; stroke=&quot;#dc2626&quot;/&gt;
  &lt;text x=&quot;515&quot; y=&quot;139&quot; font-size=&quot;10.5&quot; fill=&quot;#7f1d1d&quot;&gt;흐름2: C→D, UDP/53, 3 pkts, 420 bytes&lt;/text&gt;
  &lt;text x=&quot;515&quot; y=&quot;157&quot; font-size=&quot;10.5&quot; fill=&quot;#7f1d1d&quot;&gt;시작 09:00:02 · 종료 09:00:03&lt;/text&gt;

  &lt;text x=&quot;410&quot; y=&quot;215&quot; font-size=&quot;11.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;패킷 &quot;내용(payload)&quot;은 보지 않고, &quot;누가·누구에게·얼마나&quot; 통신했는지의 메타데이터만 남긴다.&lt;/text&gt;
  &lt;text x=&quot;410&quot; y=&quot;238&quot; font-size=&quot;11.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;→ 저장·전송량이 극적으로 줄어 대규모 네트워크에서도 실시간 분석이 가능해진다.&lt;/text&gt;

  &lt;defs&gt;&lt;marker id=&quot;f1arr&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#334155&quot;/&gt;&lt;/marker&gt;&lt;/defs&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 1. 5-tuple로 패킷을 묶어 &quot;한 줄의 흐름 레코드&quot;로 요약한다. 이것이 흐름 기반 모니터링의 출발점이다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;h2&gt;2. 왜 &quot;흐름&quot; 기반인가 — 패킷 전수검사와의 비교&lt;/h2&gt;
&lt;p&gt;
트래픽을 보는 방법은 크게 두 가지입니다. 패킷의 내용까지 전부 뜯어보는
&lt;strong&gt;심층 패킷 검사(DPI, Deep Packet Inspection)&lt;/strong&gt;와, 메타데이터만 요약하는 &lt;strong&gt;흐름 기반&lt;/strong&gt;입니다.
&lt;/p&gt;

&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 820 260&quot; role=&quot;img&quot; aria-label=&quot;DPI 방식과 흐름 기반 방식 비교&quot;&gt;
  &lt;!-- DPI --&gt;
  &lt;rect x=&quot;20&quot; y=&quot;30&quot; width=&quot;380&quot; height=&quot;200&quot; rx=&quot;12&quot; fill=&quot;#fef2f2&quot; stroke=&quot;#fecaca&quot;/&gt;
  &lt;text x=&quot;210&quot; y=&quot;58&quot; font-size=&quot;14&quot; font-weight=&quot;700&quot; fill=&quot;#b91c1c&quot; text-anchor=&quot;middle&quot;&gt;심층 패킷 검사 (DPI)&lt;/text&gt;
  &lt;rect x=&quot;45&quot; y=&quot;80&quot; width=&quot;330&quot; height=&quot;34&quot; rx=&quot;6&quot; fill=&quot;#fff&quot; stroke=&quot;#fca5a5&quot;/&gt;
  &lt;text x=&quot;55&quot; y=&quot;102&quot; font-size=&quot;11&quot; fill=&quot;#7f1d1d&quot;&gt;모든 패킷의 payload까지 전부 검사&lt;/text&gt;
  &lt;rect x=&quot;45&quot; y=&quot;122&quot; width=&quot;330&quot; height=&quot;34&quot; rx=&quot;6&quot; fill=&quot;#fff&quot; stroke=&quot;#fca5a5&quot;/&gt;
  &lt;text x=&quot;55&quot; y=&quot;144&quot; font-size=&quot;11&quot; fill=&quot;#7f1d1d&quot;&gt;✓ 매우 정밀 (내용·시그니처 탐지)&lt;/text&gt;
  &lt;rect x=&quot;45&quot; y=&quot;164&quot; width=&quot;330&quot; height=&quot;46&quot; rx=&quot;6&quot; fill=&quot;#fff&quot; stroke=&quot;#fca5a5&quot;/&gt;
  &lt;text x=&quot;55&quot; y=&quot;184&quot; font-size=&quot;11&quot; fill=&quot;#7f1d1d&quot;&gt;✗ 막대한 연산·비용, 확장 어려움&lt;/text&gt;
  &lt;text x=&quot;55&quot; y=&quot;201&quot; font-size=&quot;11&quot; fill=&quot;#7f1d1d&quot;&gt;✗ 암호화 트래픽엔 무력, 프라이버시 부담&lt;/text&gt;

  &lt;!-- Flow --&gt;
  &lt;rect x=&quot;420&quot; y=&quot;30&quot; width=&quot;380&quot; height=&quot;200&quot; rx=&quot;12&quot; fill=&quot;#f0fdf4&quot; stroke=&quot;#bbf7d0&quot;/&gt;
  &lt;text x=&quot;610&quot; y=&quot;58&quot; font-size=&quot;14&quot; font-weight=&quot;700&quot; fill=&quot;#166534&quot; text-anchor=&quot;middle&quot;&gt;흐름 기반 (Flow-based)&lt;/text&gt;
  &lt;rect x=&quot;445&quot; y=&quot;80&quot; width=&quot;330&quot; height=&quot;34&quot; rx=&quot;6&quot; fill=&quot;#fff&quot; stroke=&quot;#86efac&quot;/&gt;
  &lt;text x=&quot;455&quot; y=&quot;102&quot; font-size=&quot;11&quot; fill=&quot;#14532d&quot;&gt;메타데이터(누가·얼마나)만 요약&lt;/text&gt;
  &lt;rect x=&quot;445&quot; y=&quot;122&quot; width=&quot;330&quot; height=&quot;34&quot; rx=&quot;6&quot; fill=&quot;#fff&quot; stroke=&quot;#86efac&quot;/&gt;
  &lt;text x=&quot;455&quot; y=&quot;144&quot; font-size=&quot;11&quot; fill=&quot;#14532d&quot;&gt;✓ 가볍고 확장성 우수 (Tbps 백본 OK)&lt;/text&gt;
  &lt;rect x=&quot;445&quot; y=&quot;164&quot; width=&quot;330&quot; height=&quot;46&quot; rx=&quot;6&quot; fill=&quot;#fff&quot; stroke=&quot;#86efac&quot;/&gt;
  &lt;text x=&quot;455&quot; y=&quot;184&quot; font-size=&quot;11&quot; fill=&quot;#14532d&quot;&gt;✓ 암호화 여부와 무관, 프라이버시 부담 적음&lt;/text&gt;
  &lt;text x=&quot;455&quot; y=&quot;201&quot; font-size=&quot;11&quot; fill=&quot;#14532d&quot;&gt;△ 내용은 못 봄 (payload 미검사)&lt;/text&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 2. DPI vs 흐름 기반. 흐름 기반은 &quot;정밀함&quot;을 조금 포기하는 대신 &quot;규모&quot;를 얻는다. DDoS처럼 대량 트래픽 탐지에 최적.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;div class=&quot;callout ok&quot;&gt;
  &lt;span class=&quot;tag&quot;&gt;흐름 기반이 DDoS 탐지에 유리한 이유&lt;/span&gt;
  DDoS는 &quot;내용&quot;이 아니라 &quot;규모와 분포&quot;의 문제입니다. 즉 payload를 안 봐도, &lt;strong&gt;얼마나 많은 흐름이·어디서·어디로&lt;/strong&gt;
  몰리는지만 알면 충분히 탐지됩니다. 그래서 흐름 데이터는 DDoS 탐지의 이상적인 재료입니다.
&lt;/div&gt;

&lt;h2&gt;3. 전체 아키텍처 — Exporter · Collector · Analyzer&lt;/h2&gt;
&lt;p&gt;
흐름 기반 시스템은 언제나 세 가지 역할로 구성됩니다.
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Exporter(익스포터)&lt;/strong&gt; — 라우터·스위치·방화벽 등. 트래픽을 관찰해 흐름 레코드를 만들어 내보냄&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Collector(수집기)&lt;/strong&gt; — 여러 익스포터가 보낸 흐름 레코드를 받아 저장&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Analyzer(분석기)&lt;/strong&gt; — 수집된 데이터를 분석·시각화하고 이상을 탐지&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 840 300&quot; role=&quot;img&quot; aria-label=&quot;Exporter Collector Analyzer 아키텍처&quot;&gt;
  &lt;!-- exporters --&gt;
  &lt;text x=&quot;110&quot; y=&quot;28&quot; font-size=&quot;13&quot; font-weight=&quot;700&quot; fill=&quot;#0e7490&quot; text-anchor=&quot;middle&quot;&gt;① Exporter&lt;/text&gt;
  &lt;g&gt;
    &lt;rect x=&quot;40&quot; y=&quot;45&quot; width=&quot;140&quot; height=&quot;42&quot; rx=&quot;8&quot; fill=&quot;#0e7490&quot;/&gt;&lt;text x=&quot;110&quot; y=&quot;71&quot; font-size=&quot;11&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot;&gt;코어 라우터&lt;/text&gt;
    &lt;rect x=&quot;40&quot; y=&quot;100&quot; width=&quot;140&quot; height=&quot;42&quot; rx=&quot;8&quot; fill=&quot;#0e7490&quot;/&gt;&lt;text x=&quot;110&quot; y=&quot;126&quot; font-size=&quot;11&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot;&gt;엣지 스위치&lt;/text&gt;
    &lt;rect x=&quot;40&quot; y=&quot;155&quot; width=&quot;140&quot; height=&quot;42&quot; rx=&quot;8&quot; fill=&quot;#0e7490&quot;/&gt;&lt;text x=&quot;110&quot; y=&quot;181&quot; font-size=&quot;11&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot;&gt;방화벽&lt;/text&gt;
  &lt;/g&gt;
  &lt;text x=&quot;110&quot; y=&quot;222&quot; font-size=&quot;10&quot; fill=&quot;#155e75&quot; text-anchor=&quot;middle&quot;&gt;흐름 레코드 생성&lt;/text&gt;

  &lt;!-- arrows to collector --&gt;
  &lt;g stroke=&quot;#94a3b8&quot; stroke-width=&quot;2.5&quot; fill=&quot;none&quot;&gt;
    &lt;line x1=&quot;180&quot; y1=&quot;66&quot; x2=&quot;320&quot; y2=&quot;115&quot; marker-end=&quot;url(#f3a)&quot;/&gt;
    &lt;line x1=&quot;180&quot; y1=&quot;121&quot; x2=&quot;320&quot; y2=&quot;125&quot; marker-end=&quot;url(#f3a)&quot;/&gt;
    &lt;line x1=&quot;180&quot; y1=&quot;176&quot; x2=&quot;320&quot; y2=&quot;135&quot; marker-end=&quot;url(#f3a)&quot;/&gt;
  &lt;/g&gt;
  &lt;text x=&quot;250&quot; y=&quot;95&quot; font-size=&quot;9.5&quot; fill=&quot;#64748b&quot;&gt;UDP/SCTP&lt;/text&gt;

  &lt;!-- collector --&gt;
  &lt;text x=&quot;400&quot; y=&quot;28&quot; font-size=&quot;13&quot; font-weight=&quot;700&quot; fill=&quot;#1e40af&quot; text-anchor=&quot;middle&quot;&gt;② Collector&lt;/text&gt;
  &lt;rect x=&quot;322&quot; y=&quot;90&quot; width=&quot;160&quot; height=&quot;80&quot; rx=&quot;10&quot; fill=&quot;#2563eb&quot;/&gt;
  &lt;text x=&quot;402&quot; y=&quot;122&quot; font-size=&quot;12&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;흐름 수집기&lt;/text&gt;
  &lt;text x=&quot;402&quot; y=&quot;142&quot; font-size=&quot;10&quot; fill=&quot;#dbeafe&quot; text-anchor=&quot;middle&quot;&gt;수신·정규화·저장&lt;/text&gt;
  &lt;text x=&quot;402&quot; y=&quot;158&quot; font-size=&quot;9.5&quot; fill=&quot;#bfdbfe&quot; text-anchor=&quot;middle&quot;&gt;nfcapd, goflow2 ...&lt;/text&gt;

  &lt;line x1=&quot;482&quot; y1=&quot;130&quot; x2=&quot;560&quot; y2=&quot;130&quot; stroke=&quot;#94a3b8&quot; stroke-width=&quot;2.5&quot; marker-end=&quot;url(#f3a)&quot;/&gt;

  &lt;!-- analyzer --&gt;
  &lt;text x=&quot;680&quot; y=&quot;28&quot; font-size=&quot;13&quot; font-weight=&quot;700&quot; fill=&quot;#6d28d9&quot; text-anchor=&quot;middle&quot;&gt;③ Analyzer&lt;/text&gt;
  &lt;rect x=&quot;562&quot; y=&quot;80&quot; width=&quot;250&quot; height=&quot;100&quot; rx=&quot;10&quot; fill=&quot;#7c3aed&quot;/&gt;
  &lt;text x=&quot;687&quot; y=&quot;110&quot; font-size=&quot;12&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;분석 · 탐지 · 시각화&lt;/text&gt;
  &lt;text x=&quot;687&quot; y=&quot;130&quot; font-size=&quot;10&quot; fill=&quot;#ede9fe&quot; text-anchor=&quot;middle&quot;&gt;baseline · 엔트로피 · Top-N&lt;/text&gt;
  &lt;text x=&quot;687&quot; y=&quot;147&quot; font-size=&quot;10&quot; fill=&quot;#ede9fe&quot; text-anchor=&quot;middle&quot;&gt;이상 탐지 · 대시보드 · 경보&lt;/text&gt;
  &lt;text x=&quot;687&quot; y=&quot;166&quot; font-size=&quot;9.5&quot; fill=&quot;#ddd6fe&quot; text-anchor=&quot;middle&quot;&gt;ntopng, Kentik, Arbor Sightline ...&lt;/text&gt;

  &lt;text x=&quot;420&quot; y=&quot;270&quot; font-size=&quot;11.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;Collector와 Analyzer는 한 제품에 통합되기도 한다. 이 파이프라인 위에서 앞 문서의 &quot;통계·엔트로피·머신러닝&quot; 탐지가 작동한다.&lt;/text&gt;
  &lt;defs&gt;&lt;marker id=&quot;f3a&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#94a3b8&quot;/&gt;&lt;/marker&gt;&lt;/defs&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 3. 흐름 기반 모니터링의 3역할. 장비(Exporter)가 내보내고, 수집기(Collector)가 모으고, 분석기(Analyzer)가 탐지한다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;h2&gt;4. 흐름의 일생 — Flow Cache와 타임아웃&lt;/h2&gt;
&lt;p&gt;
NetFlow·IPFIX 같은 &lt;strong&gt;상태 기반(stateful)&lt;/strong&gt; 기술은 익스포터 내부에 &lt;strong&gt;Flow Cache(흐름 캐시)&lt;/strong&gt;라는
메모리 테이블을 둡니다. 패킷이 들어올 때마다 5-tuple로 캐시를 조회해, 기존 흐름이면 카운터를 더하고
새 흐름이면 항목을 새로 만듭니다. 그리고 특정 조건이 되면 그 흐름을 캐시에서 꺼내(export) 수집기로 보냅니다.
&lt;/p&gt;

&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 840 320&quot; role=&quot;img&quot; aria-label=&quot;Flow Cache와 export 조건 흐름도&quot;&gt;
  &lt;!-- packet in --&gt;
  &lt;rect x=&quot;30&quot; y=&quot;30&quot; width=&quot;120&quot; height=&quot;40&quot; rx=&quot;8&quot; fill=&quot;#93c5fd&quot; stroke=&quot;#2563eb&quot;/&gt;
  &lt;text x=&quot;90&quot; y=&quot;55&quot; font-size=&quot;11&quot; fill=&quot;#1e3a8a&quot; text-anchor=&quot;middle&quot;&gt;패킷 도착&lt;/text&gt;
  &lt;line x1=&quot;90&quot; y1=&quot;70&quot; x2=&quot;90&quot; y2=&quot;100&quot; stroke=&quot;#334155&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#f4a)&quot;/&gt;

  &lt;!-- lookup --&gt;
  &lt;polygon points=&quot;90,100 210,140 90,180 -30,140&quot; fill=&quot;#eff4ff&quot; stroke=&quot;#2563eb&quot;/&gt;
  &lt;text x=&quot;90&quot; y=&quot;136&quot; font-size=&quot;10.5&quot; fill=&quot;#1e40af&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;캐시에 이미&lt;/text&gt;
  &lt;text x=&quot;90&quot; y=&quot;152&quot; font-size=&quot;10.5&quot; fill=&quot;#1e40af&quot; text-anchor=&quot;middle&quot;&gt;있는 흐름인가?&lt;/text&gt;

  &lt;!-- yes --&gt;
  &lt;line x1=&quot;210&quot; y1=&quot;140&quot; x2=&quot;290&quot; y2=&quot;140&quot; stroke=&quot;#16a34a&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#f4g)&quot;/&gt;
  &lt;text x=&quot;245&quot; y=&quot;132&quot; font-size=&quot;10&quot; fill=&quot;#166534&quot;&gt;예&lt;/text&gt;
  &lt;rect x=&quot;292&quot; y=&quot;118&quot; width=&quot;150&quot; height=&quot;44&quot; rx=&quot;8&quot; fill=&quot;#dcfce7&quot; stroke=&quot;#16a34a&quot;/&gt;
  &lt;text x=&quot;367&quot; y=&quot;138&quot; font-size=&quot;10.5&quot; fill=&quot;#14532d&quot; text-anchor=&quot;middle&quot;&gt;카운터 갱신&lt;/text&gt;
  &lt;text x=&quot;367&quot; y=&quot;154&quot; font-size=&quot;10.5&quot; fill=&quot;#14532d&quot; text-anchor=&quot;middle&quot;&gt;(패킷/바이트 +)&lt;/text&gt;

  &lt;!-- no --&gt;
  &lt;line x1=&quot;90&quot; y1=&quot;180&quot; x2=&quot;90&quot; y2=&quot;210&quot; stroke=&quot;#dc2626&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#f4r)&quot;/&gt;
  &lt;text x=&quot;100&quot; y=&quot;200&quot; font-size=&quot;10&quot; fill=&quot;#b91c1c&quot;&gt;아니오&lt;/text&gt;
  &lt;rect x=&quot;20&quot; y=&quot;212&quot; width=&quot;140&quot; height=&quot;44&quot; rx=&quot;8&quot; fill=&quot;#fee2e2&quot; stroke=&quot;#dc2626&quot;/&gt;
  &lt;text x=&quot;90&quot; y=&quot;232&quot; font-size=&quot;10.5&quot; fill=&quot;#7f1d1d&quot; text-anchor=&quot;middle&quot;&gt;캐시에 새 흐름&lt;/text&gt;
  &lt;text x=&quot;90&quot; y=&quot;248&quot; font-size=&quot;10.5&quot; fill=&quot;#7f1d1d&quot; text-anchor=&quot;middle&quot;&gt;항목 생성&lt;/text&gt;

  &lt;!-- export conditions box --&gt;
  &lt;rect x=&quot;500&quot; y=&quot;40&quot; width=&quot;320&quot; height=&quot;240&quot; rx=&quot;12&quot; fill=&quot;#fff7ed&quot; stroke=&quot;#fed7aa&quot;/&gt;
  &lt;text x=&quot;660&quot; y=&quot;66&quot; font-size=&quot;13&quot; font-weight=&quot;700&quot; fill=&quot;#b45309&quot; text-anchor=&quot;middle&quot;&gt;언제 export(내보내기) 하나?&lt;/text&gt;

  &lt;rect x=&quot;520&quot; y=&quot;82&quot; width=&quot;280&quot; height=&quot;42&quot; rx=&quot;6&quot; fill=&quot;#fff&quot; stroke=&quot;#fdba74&quot;/&gt;
  &lt;text x=&quot;532&quot; y=&quot;100&quot; font-size=&quot;10.5&quot; fill=&quot;#7c2d12&quot; font-weight=&quot;700&quot;&gt;① Inactive Timeout (기본 15초)&lt;/text&gt;
  &lt;text x=&quot;532&quot; y=&quot;116&quot; font-size=&quot;10&quot; fill=&quot;#9a3412&quot;&gt;흐름이 잠잠해지면 (더는 패킷 없음)&lt;/text&gt;

  &lt;rect x=&quot;520&quot; y=&quot;132&quot; width=&quot;280&quot; height=&quot;42&quot; rx=&quot;6&quot; fill=&quot;#fff&quot; stroke=&quot;#fdba74&quot;/&gt;
  &lt;text x=&quot;532&quot; y=&quot;150&quot; font-size=&quot;10.5&quot; fill=&quot;#7c2d12&quot; font-weight=&quot;700&quot;&gt;② Active Timeout (기본 30분)&lt;/text&gt;
  &lt;text x=&quot;532&quot; y=&quot;166&quot; font-size=&quot;10&quot; fill=&quot;#9a3412&quot;&gt;긴 흐름은 주기적으로 강제 내보내기&lt;/text&gt;

  &lt;rect x=&quot;520&quot; y=&quot;182&quot; width=&quot;280&quot; height=&quot;42&quot; rx=&quot;6&quot; fill=&quot;#fff&quot; stroke=&quot;#fdba74&quot;/&gt;
  &lt;text x=&quot;532&quot; y=&quot;200&quot; font-size=&quot;10.5&quot; fill=&quot;#7c2d12&quot; font-weight=&quot;700&quot;&gt;③ TCP FIN / RST&lt;/text&gt;
  &lt;text x=&quot;532&quot; y=&quot;216&quot; font-size=&quot;10&quot; fill=&quot;#9a3412&quot;&gt;연결 종료 신호를 보면 즉시&lt;/text&gt;

  &lt;rect x=&quot;520&quot; y=&quot;232&quot; width=&quot;280&quot; height=&quot;36&quot; rx=&quot;6&quot; fill=&quot;#fff&quot; stroke=&quot;#fdba74&quot;/&gt;
  &lt;text x=&quot;532&quot; y=&quot;254&quot; font-size=&quot;10.5&quot; fill=&quot;#7c2d12&quot; font-weight=&quot;700&quot;&gt;④ 캐시가 가득 찰 때&lt;/text&gt;

  &lt;!-- arrow from cache to export --&gt;
  &lt;line x1=&quot;442&quot; y1=&quot;140&quot; x2=&quot;498&quot; y2=&quot;140&quot; stroke=&quot;#94a3b8&quot; stroke-width=&quot;2&quot; stroke-dasharray=&quot;4 3&quot; marker-end=&quot;url(#f4a)&quot;/&gt;
  &lt;line x1=&quot;160&quot; y1=&quot;234&quot; x2=&quot;360&quot; y2=&quot;234&quot; stroke=&quot;#94a3b8&quot; stroke-width=&quot;2&quot; stroke-dasharray=&quot;4 3&quot;/&gt;
  &lt;line x1=&quot;360&quot; y1=&quot;234&quot; x2=&quot;360&quot; y2=&quot;164&quot; stroke=&quot;#94a3b8&quot; stroke-width=&quot;2&quot; stroke-dasharray=&quot;4 3&quot; marker-end=&quot;url(#f4a)&quot;/&gt;

  &lt;text x=&quot;367&quot; y=&quot;300&quot; font-size=&quot;11&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;타임아웃 값이 탐지 &quot;지연&quot;과 캐시 &quot;부하&quot;를 좌우한다 — 짧으면 빠르지만 레코드가 많아진다.&lt;/text&gt;
  &lt;defs&gt;
    &lt;marker id=&quot;f4a&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#334155&quot;/&gt;&lt;/marker&gt;
    &lt;marker id=&quot;f4g&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#16a34a&quot;/&gt;&lt;/marker&gt;
    &lt;marker id=&quot;f4r&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#dc2626&quot;/&gt;&lt;/marker&gt;
  &lt;/defs&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 4. 흐름의 일생 — 캐시에서 누적되다가 4가지 조건 중 하나가 되면 수집기로 내보내진다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;div class=&quot;callout warn&quot;&gt;
  &lt;span class=&quot;tag&quot;&gt;DDoS 탐지에서 중요한 함정&lt;/span&gt;
  Active Timeout이 30분이면, 공격이 시작돼도 최대 30분 뒤에야 그 흐름이 export될 수 있습니다.
  그래서 실시간 DDoS 탐지 환경에서는 &lt;strong&gt;Active Timeout을 60초 등으로 짧게&lt;/strong&gt; 설정해
  탐지 지연을 줄이는 것이 일반적입니다.
&lt;/div&gt;

&lt;h2&gt;5. NetFlow — 역사, 버전, 동작 원리&lt;/h2&gt;
&lt;p&gt;
&lt;strong&gt;NetFlow&lt;/strong&gt;는 1996년 &lt;strong&gt;Cisco&lt;/strong&gt;가 개발한 흐름 기반 모니터링 기술로, 사실상 이 분야의
원조이자 대명사입니다. 처음엔 라우팅 가속용 캐시 기술이었지만, 그 캐시 데이터가 트래픽 분석에
유용하다는 점이 알려지며 모니터링·보안의 표준 도구가 되었습니다.
&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;&lt;tr&gt;&lt;th&gt;버전&lt;/th&gt;&lt;th&gt;특징&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;v1&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;최초 버전. 기본적인 흐름 export&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;v5&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;가장 널리 쓰인 &lt;strong&gt;고정 포맷(fixed format)&lt;/strong&gt;. 필드가 고정돼 단순·빠르지만 IPv6·MPLS 등 확장 불가. 흐름 레코드는 48바이트 고정&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;v9&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;템플릿(Template) 기반&lt;/strong&gt;으로 진화. 어떤 필드를 담을지 유연하게 정의 가능. IPv6, VLAN, MPLS 지원 (RFC 3954)&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Flexible NetFlow&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;사용자가 흐름 키·필드를 자유롭게 정의하는 확장&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;IPFIX&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;NetFlow v9를 바탕으로 IETF가 표준화한 국제 규격 (7장 참고)&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;div class=&quot;callout info&quot;&gt;
  &lt;span class=&quot;tag&quot;&gt;기본 포트&lt;/span&gt;
  NetFlow는 보통 &lt;strong&gt;UDP 2055&lt;/strong&gt;번(장비·설정에 따라 9995, 9996 등도 사용)으로 수집기에 전송합니다.
  UDP를 쓰기 때문에 &lt;strong&gt;전송 중 유실 가능성&lt;/strong&gt;이 있다는 점이 특징입니다.
&lt;/div&gt;

&lt;h2&gt;6. NetFlow v9 템플릿 메커니즘&lt;/h2&gt;
&lt;p&gt;
v5의 고정 포맷은 &quot;정해진 필드만&quot; 보낼 수 있었습니다. v9는 이를 &lt;strong&gt;템플릿(Template)&lt;/strong&gt;으로 해결했습니다.
익스포터가 먼저 &lt;em&gt;&quot;앞으로 보낼 데이터는 이런 필드로 구성된다&quot;&lt;/em&gt;는 &lt;strong&gt;템플릿 레코드&lt;/strong&gt;를 보내고,
이후 그 형식에 맞춘 &lt;strong&gt;데이터 레코드&lt;/strong&gt;를 보냅니다. 수집기는 템플릿을 먼저 받아 두었다가,
데이터 레코드를 그 틀에 맞춰 해석합니다.
&lt;/p&gt;

&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 820 300&quot; role=&quot;img&quot; aria-label=&quot;NetFlow v9 템플릿과 데이터 레코드 관계&quot;&gt;
  &lt;!-- exporter --&gt;
  &lt;rect x=&quot;30&quot; y=&quot;120&quot; width=&quot;120&quot; height=&quot;60&quot; rx=&quot;8&quot; fill=&quot;#0e7490&quot;/&gt;
  &lt;text x=&quot;90&quot; y=&quot;146&quot; font-size=&quot;11&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;Exporter&lt;/text&gt;
  &lt;text x=&quot;90&quot; y=&quot;164&quot; font-size=&quot;10&quot; fill=&quot;#cffafe&quot; text-anchor=&quot;middle&quot;&gt;라우터&lt;/text&gt;

  &lt;!-- template packet --&gt;
  &lt;rect x=&quot;220&quot; y=&quot;35&quot; width=&quot;330&quot; height=&quot;70&quot; rx=&quot;8&quot; fill=&quot;#f5f3ff&quot; stroke=&quot;#7c3aed&quot;/&gt;
  &lt;text x=&quot;235&quot; y=&quot;56&quot; font-size=&quot;11.5&quot; fill=&quot;#6d28d9&quot; font-weight=&quot;700&quot;&gt;① 템플릿 레코드 (설계도)&lt;/text&gt;
  &lt;text x=&quot;235&quot; y=&quot;76&quot; font-size=&quot;10&quot; fill=&quot;#5b21b6&quot;&gt;&quot;필드 = [출발지IP][목적지IP][포트][바이트]&quot;&lt;/text&gt;
  &lt;text x=&quot;235&quot; y=&quot;93&quot; font-size=&quot;10&quot; fill=&quot;#5b21b6&quot;&gt;Template ID = 256, 필드 순서/길이 정의&lt;/text&gt;

  &lt;!-- data packet --&gt;
  &lt;rect x=&quot;220&quot; y=&quot;150&quot; width=&quot;330&quot; height=&quot;110&quot; rx=&quot;8&quot; fill=&quot;#eff4ff&quot; stroke=&quot;#2563eb&quot;/&gt;
  &lt;text x=&quot;235&quot; y=&quot;171&quot; font-size=&quot;11.5&quot; fill=&quot;#1e40af&quot; font-weight=&quot;700&quot;&gt;② 데이터 레코드 (실제 값)&lt;/text&gt;
  &lt;text x=&quot;235&quot; y=&quot;191&quot; font-size=&quot;10&quot; fill=&quot;#1e3a8a&quot;&gt;[10.0.0.1][10.0.0.9][443][5800]&lt;/text&gt;
  &lt;text x=&quot;235&quot; y=&quot;208&quot; font-size=&quot;10&quot; fill=&quot;#1e3a8a&quot;&gt;[10.0.0.2][10.0.0.9][443][7100]&lt;/text&gt;
  &lt;text x=&quot;235&quot; y=&quot;225&quot; font-size=&quot;10&quot; fill=&quot;#1e3a8a&quot;&gt;[10.0.0.3][10.0.0.9][443][6300]&lt;/text&gt;
  &lt;text x=&quot;235&quot; y=&quot;247&quot; font-size=&quot;9.5&quot; fill=&quot;#475569&quot;&gt;→ Template ID 256을 참조해 해석&lt;/text&gt;

  &lt;line x1=&quot;150&quot; y1=&quot;140&quot; x2=&quot;216&quot; y2=&quot;80&quot; stroke=&quot;#7c3aed&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#f6p)&quot;/&gt;
  &lt;line x1=&quot;150&quot; y1=&quot;160&quot; x2=&quot;216&quot; y2=&quot;200&quot; stroke=&quot;#2563eb&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#f6b)&quot;/&gt;

  &lt;!-- collector --&gt;
  &lt;rect x=&quot;620&quot; y=&quot;120&quot; width=&quot;150&quot; height=&quot;60&quot; rx=&quot;8&quot; fill=&quot;#2563eb&quot;/&gt;
  &lt;text x=&quot;695&quot; y=&quot;146&quot; font-size=&quot;11&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;Collector&lt;/text&gt;
  &lt;text x=&quot;695&quot; y=&quot;164&quot; font-size=&quot;9.5&quot; fill=&quot;#dbeafe&quot; text-anchor=&quot;middle&quot;&gt;템플릿 저장 후 데이터 해석&lt;/text&gt;
  &lt;line x1=&quot;550&quot; y1=&quot;70&quot; x2=&quot;618&quot; y2=&quot;130&quot; stroke=&quot;#7c3aed&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#f6p)&quot;/&gt;
  &lt;line x1=&quot;550&quot; y1=&quot;200&quot; x2=&quot;618&quot; y2=&quot;165&quot; stroke=&quot;#2563eb&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#f6b)&quot;/&gt;

  &lt;text x=&quot;410&quot; y=&quot;285&quot; font-size=&quot;11&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;템플릿을 먼저 못 받으면 데이터를 해석할 수 없다 → 익스포터는 템플릿을 주기적으로 재전송한다.&lt;/text&gt;
  &lt;defs&gt;
    &lt;marker id=&quot;f6p&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#7c3aed&quot;/&gt;&lt;/marker&gt;
    &lt;marker id=&quot;f6b&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#2563eb&quot;/&gt;&lt;/marker&gt;
  &lt;/defs&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 5. NetFlow v9 템플릿 방식 — &quot;설계도(템플릿)&quot;를 먼저 보내고 &quot;실제 값(데이터)&quot;을 보낸다. 유연성의 핵심.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;h2&gt;7. IPFIX — 국제 표준, 메시지 구조, Information Element&lt;/h2&gt;
&lt;p&gt;
&lt;strong&gt;IPFIX(Internet Protocol Flow Information Export)&lt;/strong&gt;는 NetFlow v9를 바탕으로
&lt;strong&gt;IETF가 만든 벤더 중립 국제 표준&lt;/strong&gt;입니다(RFC 7011, RFC 7012 등). 그래서 &quot;표준 NetFlow&quot;라고도 불립니다.
Cisco뿐 아니라 Juniper, Palo Alto, F5, 그리고 Open vSwitch까지 폭넓게 지원합니다.
버전 번호 필드 값이 &lt;code&gt;10 (0x000a)&lt;/code&gt;인데, 이는 &quot;NetFlow v9의 다음 세대&quot;라는 의미를 담고 있습니다.
&lt;/p&gt;

&lt;h3&gt;메시지 구조 — Set과 Record&lt;/h3&gt;
&lt;p&gt;IPFIX 메시지는 &lt;strong&gt;메시지 헤더&lt;/strong&gt; 뒤에 여러 개의 &lt;strong&gt;Set&lt;/strong&gt;이 붙는 구조입니다. Set에는 세 종류가 있습니다.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Template Set&lt;/strong&gt; — 데이터의 형식을 정의하는 템플릿 레코드들&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Options Template Set&lt;/strong&gt; — 메타 정보(예: 샘플링 비율)를 위한 특수 템플릿&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Data Set&lt;/strong&gt; — 실제 흐름 값(데이터 레코드)들&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 800 300&quot; role=&quot;img&quot; aria-label=&quot;IPFIX 메시지 구조&quot;&gt;
  &lt;text x=&quot;400&quot; y=&quot;26&quot; font-size=&quot;13&quot; font-weight=&quot;700&quot; fill=&quot;#1e40af&quot; text-anchor=&quot;middle&quot;&gt;IPFIX 메시지 구조&lt;/text&gt;
  &lt;!-- message header --&gt;
  &lt;rect x=&quot;60&quot; y=&quot;40&quot; width=&quot;680&quot; height=&quot;44&quot; rx=&quot;6&quot; fill=&quot;#1e40af&quot;/&gt;
  &lt;text x=&quot;400&quot; y=&quot;62&quot; font-size=&quot;11.5&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;메시지 헤더&lt;/text&gt;
  &lt;text x=&quot;400&quot; y=&quot;78&quot; font-size=&quot;9.5&quot; fill=&quot;#bfdbfe&quot; text-anchor=&quot;middle&quot;&gt;버전=10 · 길이 · 내보낸 시각 · 시퀀스 번호 · Observation Domain ID&lt;/text&gt;

  &lt;!-- set1 template --&gt;
  &lt;rect x=&quot;60&quot; y=&quot;98&quot; width=&quot;215&quot; height=&quot;150&quot; rx=&quot;8&quot; fill=&quot;#f5f3ff&quot; stroke=&quot;#7c3aed&quot;/&gt;
  &lt;text x=&quot;167&quot; y=&quot;120&quot; font-size=&quot;11&quot; fill=&quot;#6d28d9&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;Template Set&lt;/text&gt;
  &lt;rect x=&quot;78&quot; y=&quot;132&quot; width=&quot;180&quot; height=&quot;48&quot; rx=&quot;5&quot; fill=&quot;#fff&quot; stroke=&quot;#c4b5fd&quot;/&gt;
  &lt;text x=&quot;168&quot; y=&quot;152&quot; font-size=&quot;9.5&quot; fill=&quot;#5b21b6&quot; text-anchor=&quot;middle&quot;&gt;템플릿 레코드&lt;/text&gt;
  &lt;text x=&quot;168&quot; y=&quot;168&quot; font-size=&quot;9&quot; fill=&quot;#7c3aed&quot; text-anchor=&quot;middle&quot;&gt;ID=256, 필드 정의&lt;/text&gt;
  &lt;text x=&quot;168&quot; y=&quot;205&quot; font-size=&quot;9.5&quot; fill=&quot;#5b21b6&quot; text-anchor=&quot;middle&quot;&gt;&quot;이런 필드로 올 거야&quot;&lt;/text&gt;
  &lt;text x=&quot;168&quot; y=&quot;222&quot; font-size=&quot;9.5&quot; fill=&quot;#5b21b6&quot; text-anchor=&quot;middle&quot;&gt;= 데이터의 설계도&lt;/text&gt;

  &lt;!-- set2 options --&gt;
  &lt;rect x=&quot;288&quot; y=&quot;98&quot; width=&quot;200&quot; height=&quot;150&quot; rx=&quot;8&quot; fill=&quot;#fff7ed&quot; stroke=&quot;#f59e0b&quot;/&gt;
  &lt;text x=&quot;388&quot; y=&quot;120&quot; font-size=&quot;11&quot; fill=&quot;#b45309&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;Options Template Set&lt;/text&gt;
  &lt;rect x=&quot;304&quot; y=&quot;132&quot; width=&quot;168&quot; height=&quot;48&quot; rx=&quot;5&quot; fill=&quot;#fff&quot; stroke=&quot;#fdba74&quot;/&gt;
  &lt;text x=&quot;388&quot; y=&quot;152&quot; font-size=&quot;9.5&quot; fill=&quot;#7c2d12&quot; text-anchor=&quot;middle&quot;&gt;옵션 템플릿&lt;/text&gt;
  &lt;text x=&quot;388&quot; y=&quot;168&quot; font-size=&quot;9&quot; fill=&quot;#b45309&quot; text-anchor=&quot;middle&quot;&gt;샘플링 비율 등&lt;/text&gt;
  &lt;text x=&quot;388&quot; y=&quot;210&quot; font-size=&quot;9.5&quot; fill=&quot;#7c2d12&quot; text-anchor=&quot;middle&quot;&gt;메타 정보 전달용&lt;/text&gt;

  &lt;!-- set3 data --&gt;
  &lt;rect x=&quot;501&quot; y=&quot;98&quot; width=&quot;239&quot; height=&quot;150&quot; rx=&quot;8&quot; fill=&quot;#eff4ff&quot; stroke=&quot;#2563eb&quot;/&gt;
  &lt;text x=&quot;620&quot; y=&quot;120&quot; font-size=&quot;11&quot; fill=&quot;#1e40af&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;Data Set&lt;/text&gt;
  &lt;rect x=&quot;517&quot; y=&quot;132&quot; width=&quot;207&quot; height=&quot;30&quot; rx=&quot;5&quot; fill=&quot;#fff&quot; stroke=&quot;#93c5fd&quot;/&gt;
  &lt;text x=&quot;620&quot; y=&quot;152&quot; font-size=&quot;9.5&quot; fill=&quot;#1e3a8a&quot; text-anchor=&quot;middle&quot;&gt;데이터 레코드 1 (실제 흐름 값)&lt;/text&gt;
  &lt;rect x=&quot;517&quot; y=&quot;167&quot; width=&quot;207&quot; height=&quot;30&quot; rx=&quot;5&quot; fill=&quot;#fff&quot; stroke=&quot;#93c5fd&quot;/&gt;
  &lt;text x=&quot;620&quot; y=&quot;187&quot; font-size=&quot;9.5&quot; fill=&quot;#1e3a8a&quot; text-anchor=&quot;middle&quot;&gt;데이터 레코드 2&lt;/text&gt;
  &lt;rect x=&quot;517&quot; y=&quot;202&quot; width=&quot;207&quot; height=&quot;30&quot; rx=&quot;5&quot; fill=&quot;#fff&quot; stroke=&quot;#93c5fd&quot;/&gt;
  &lt;text x=&quot;620&quot; y=&quot;222&quot; font-size=&quot;9.5&quot; fill=&quot;#1e3a8a&quot; text-anchor=&quot;middle&quot;&gt;데이터 레코드 3 …&lt;/text&gt;

  &lt;text x=&quot;400&quot; y=&quot;278&quot; font-size=&quot;11&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;데이터 레코드는 자기 형식을 담지 않는다 — 반드시 앞서 받은 &quot;템플릿 ID&quot;를 참조해 해석된다.&lt;/text&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 6. IPFIX 메시지 구조 — 헤더 + 여러 Set(Template / Options Template / Data). NetFlow v9의 개념을 표준화·확장했다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;h3&gt;Information Element (정보 요소)&lt;/h3&gt;
&lt;p&gt;
IPFIX의 각 필드는 &lt;strong&gt;Information Element(IE, 정보 요소)&lt;/strong&gt;라는 표준화된 항목으로 정의됩니다.
예를 들어 &lt;code&gt;sourceIPv4Address&lt;/code&gt;, &lt;code&gt;destinationTransportPort&lt;/code&gt;, &lt;code&gt;octetDeltaCount&lt;/code&gt;(바이트 수) 등이며,
이 목록은 &lt;strong&gt;IANA(Internet Assigned Numbers Authority)&lt;/strong&gt;가 공식 관리합니다.
IE 식별자의 첫 비트는 &lt;strong&gt;&quot;IANA 표준&quot;인지 &quot;기업 고유(enterprise-specific) 확장&quot;인지&lt;/strong&gt;를 나타내,
표준 필드와 벤더 확장 필드를 함께 쓸 수 있습니다. 또한 IPFIX는 &lt;strong&gt;가변 길이(variable-length)&lt;/strong&gt; 필드를
지원해 URL, 호스트명 같은 임의 길이 데이터도 담을 수 있습니다.
&lt;/p&gt;

&lt;div class=&quot;callout info&quot;&gt;
  &lt;span class=&quot;tag&quot;&gt;IPFIX 전송(transport)&lt;/span&gt;
  IPFIX는 표준적으로 &lt;strong&gt;SCTP(Stream Control Transmission Protocol)&lt;/strong&gt;를 권장(신뢰성·혼잡제어)하며,
  &lt;strong&gt;TCP&lt;/strong&gt;와 &lt;strong&gt;UDP&lt;/strong&gt;도 허용합니다. 기본 포트는 &lt;strong&gt;4739&lt;/strong&gt;(UDP/TCP), 보안 전송은 4740입니다.
  현실에서는 여전히 UDP가 많이 쓰입니다.
&lt;/div&gt;

&lt;h2&gt;8. sFlow — 샘플링 기반의 전혀 다른 접근&lt;/h2&gt;
&lt;p&gt;
&lt;strong&gt;sFlow(sampled Flow)&lt;/strong&gt;는 InMon이 개발한 기술로, 이름은 비슷하지만 NetFlow와
&lt;strong&gt;철학이 완전히 다릅니다&lt;/strong&gt;. NetFlow가 &quot;모든 패킷을 캐시에 누적해 흐름을 재구성&quot;한다면,
sFlow는 &lt;strong&gt;흐름 캐시를 만들지 않습니다(stateless)&lt;/strong&gt;. 대신 두 가지를 합니다.
&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;패킷 샘플링&lt;/strong&gt; — &lt;code&gt;N개 중 1개&lt;/code&gt; 비율로 패킷을 무작위로 뽑아, 그 패킷의 앞부분(헤더)을 그대로 수집기로 보냄&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;카운터 폴링(Counter Polling)&lt;/strong&gt; — 인터페이스의 통계 카운터(총 바이트·패킷 등)를 주기적으로 그대로 보냄&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
이 방식은 &lt;strong&gt;스위치 하드웨어(ASIC)에서 곧바로&lt;/strong&gt; 처리할 수 있어 대용량·고속 스위치에 부담이 거의 없습니다.
그래서 데이터센터의 수많은 고속 스위치 모니터링에 특히 인기가 많습니다.
&lt;/p&gt;

&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 820 300&quot; role=&quot;img&quot; aria-label=&quot;sFlow 샘플링과 카운터 폴링 구조&quot;&gt;
  &lt;!-- switch --&gt;
  &lt;rect x=&quot;40&quot; y=&quot;90&quot; width=&quot;150&quot; height=&quot;110&quot; rx=&quot;10&quot; fill=&quot;#0e7490&quot;/&gt;
  &lt;text x=&quot;115&quot; y=&quot;118&quot; font-size=&quot;12&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;스위치 ASIC&lt;/text&gt;
  &lt;text x=&quot;115&quot; y=&quot;138&quot; font-size=&quot;9.5&quot; fill=&quot;#cffafe&quot; text-anchor=&quot;middle&quot;&gt;(하드웨어 직접 처리)&lt;/text&gt;
  &lt;text x=&quot;115&quot; y=&quot;165&quot; font-size=&quot;9.5&quot; fill=&quot;#cffafe&quot; text-anchor=&quot;middle&quot;&gt;흐름 캐시 없음&lt;/text&gt;
  &lt;text x=&quot;115&quot; y=&quot;181&quot; font-size=&quot;9.5&quot; fill=&quot;#cffafe&quot; text-anchor=&quot;middle&quot;&gt;= stateless&lt;/text&gt;

  &lt;!-- packets passing --&gt;
  &lt;g fill=&quot;#cbd5e1&quot;&gt;
    &lt;rect x=&quot;15&quot; y=&quot;55&quot; width=&quot;18&quot; height=&quot;12&quot; rx=&quot;2&quot;/&gt;&lt;rect x=&quot;45&quot; y=&quot;55&quot; width=&quot;18&quot; height=&quot;12&quot; rx=&quot;2&quot;/&gt;
    &lt;rect x=&quot;75&quot; y=&quot;55&quot; width=&quot;18&quot; height=&quot;12&quot; rx=&quot;2&quot;/&gt;&lt;rect x=&quot;105&quot; y=&quot;55&quot; width=&quot;18&quot; height=&quot;12&quot; rx=&quot;2&quot;/&gt;
    &lt;rect x=&quot;135&quot; y=&quot;55&quot; width=&quot;18&quot; height=&quot;12&quot; rx=&quot;2&quot;/&gt;&lt;rect x=&quot;165&quot; y=&quot;55&quot; width=&quot;18&quot; height=&quot;12&quot; rx=&quot;2&quot;/&gt;
  &lt;/g&gt;
  &lt;rect x=&quot;75&quot; y=&quot;55&quot; width=&quot;18&quot; height=&quot;12&quot; rx=&quot;2&quot; fill=&quot;#dc2626&quot;/&gt;
  &lt;text x=&quot;300&quot; y=&quot;52&quot; font-size=&quot;10&quot; fill=&quot;#b91c1c&quot;&gt;← N개 중 1개(빨강)만 무작위로 뽑음&lt;/text&gt;

  &lt;!-- sampling arrow --&gt;
  &lt;line x1=&quot;190&quot; y1=&quot;120&quot; x2=&quot;300&quot; y2=&quot;90&quot; stroke=&quot;#dc2626&quot; stroke-width=&quot;2.5&quot; marker-end=&quot;url(#f8r)&quot;/&gt;
  &lt;rect x=&quot;302&quot; y=&quot;66&quot; width=&quot;230&quot; height=&quot;52&quot; rx=&quot;8&quot; fill=&quot;#fee2e2&quot; stroke=&quot;#dc2626&quot;/&gt;
  &lt;text x=&quot;417&quot; y=&quot;87&quot; font-size=&quot;10.5&quot; fill=&quot;#7f1d1d&quot; font-weight=&quot;700&quot;&gt;① 패킷 샘플 (헤더 원본)&lt;/text&gt;
  &lt;text x=&quot;417&quot; y=&quot;105&quot; font-size=&quot;9.5&quot; fill=&quot;#991b1b&quot;&gt;뽑힌 패킷의 앞부분을 그대로 전송&lt;/text&gt;

  &lt;!-- counter arrow --&gt;
  &lt;line x1=&quot;190&quot; y1=&quot;170&quot; x2=&quot;300&quot; y2=&quot;200&quot; stroke=&quot;#2563eb&quot; stroke-width=&quot;2.5&quot; marker-end=&quot;url(#f8b)&quot;/&gt;
  &lt;rect x=&quot;302&quot; y=&quot;176&quot; width=&quot;230&quot; height=&quot;52&quot; rx=&quot;8&quot; fill=&quot;#eff4ff&quot; stroke=&quot;#2563eb&quot;/&gt;
  &lt;text x=&quot;417&quot; y=&quot;197&quot; font-size=&quot;10.5&quot; fill=&quot;#1e40af&quot; font-weight=&quot;700&quot;&gt;② 카운터 폴링 (주기적)&lt;/text&gt;
  &lt;text x=&quot;417&quot; y=&quot;215&quot; font-size=&quot;9.5&quot; fill=&quot;#1e3a8a&quot;&gt;인터페이스 총 바이트·패킷 통계&lt;/text&gt;

  &lt;!-- collector --&gt;
  &lt;line x1=&quot;532&quot; y1=&quot;120&quot; x2=&quot;600&quot; y2=&quot;150&quot; stroke=&quot;#94a3b8&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#f8a)&quot;/&gt;
  &lt;line x1=&quot;532&quot; y1=&quot;200&quot; x2=&quot;600&quot; y2=&quot;160&quot; stroke=&quot;#94a3b8&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#f8a)&quot;/&gt;
  &lt;rect x=&quot;602&quot; y=&quot;120&quot; width=&quot;180&quot; height=&quot;70&quot; rx=&quot;10&quot; fill=&quot;#2563eb&quot;/&gt;
  &lt;text x=&quot;692&quot; y=&quot;150&quot; font-size=&quot;11&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;sFlow Collector&lt;/text&gt;
  &lt;text x=&quot;692&quot; y=&quot;170&quot; font-size=&quot;9.5&quot; fill=&quot;#dbeafe&quot; text-anchor=&quot;middle&quot;&gt;샘플로 전체를 통계 추정&lt;/text&gt;

  &lt;text x=&quot;410&quot; y=&quot;270&quot; font-size=&quot;11&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;캐시가 없어 초고속·저부하 · 대신 &quot;샘플&quot;이라 작은 흐름은 놓칠 수 있고 결과는 &quot;통계적 추정치&quot;다.&lt;/text&gt;
  &lt;defs&gt;
    &lt;marker id=&quot;f8r&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#dc2626&quot;/&gt;&lt;/marker&gt;
    &lt;marker id=&quot;f8b&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#2563eb&quot;/&gt;&lt;/marker&gt;
    &lt;marker id=&quot;f8a&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#94a3b8&quot;/&gt;&lt;/marker&gt;
  &lt;/defs&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 7. sFlow — 흐름 캐시 없이 &quot;패킷 샘플 + 카운터&quot;를 그대로 내보낸다. 기본 포트는 UDP 6343.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;h2&gt;9. 샘플링(Sampling)의 이해와 통계적 복원&lt;/h2&gt;
&lt;p&gt;
sFlow(그리고 고속 환경의 Sampled NetFlow)는 모든 패킷을 보지 않고 &lt;strong&gt;N개 중 1개&lt;/strong&gt;만 봅니다.
&quot;그러면 부정확하지 않나?&quot;라는 의문이 자연스럽지만, 통계의 힘으로 &lt;strong&gt;전체를 추정&lt;/strong&gt;합니다.
예를 들어 &lt;code&gt;1/1000&lt;/code&gt; 샘플링에서 어떤 흐름의 샘플이 50개 잡혔다면, 실제로는 대략 &lt;code&gt;50 × 1000 = 50,000&lt;/code&gt;개
패킷이 있었다고 &lt;strong&gt;배율로 복원(scale-up)&lt;/strong&gt;합니다.
&lt;/p&gt;

&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 800 250&quot; role=&quot;img&quot; aria-label=&quot;1-in-N 샘플링과 배율 복원&quot;&gt;
  &lt;text x=&quot;120&quot; y=&quot;30&quot; font-size=&quot;12&quot; font-weight=&quot;700&quot; fill=&quot;#334155&quot; text-anchor=&quot;middle&quot;&gt;실제 트래픽 (전체)&lt;/text&gt;
  &lt;g fill=&quot;#cbd5e1&quot;&gt;
    &lt;rect x=&quot;30&quot; y=&quot;45&quot; width=&quot;14&quot; height=&quot;14&quot;/&gt;&lt;rect x=&quot;50&quot; y=&quot;45&quot; width=&quot;14&quot; height=&quot;14&quot;/&gt;&lt;rect x=&quot;70&quot; y=&quot;45&quot; width=&quot;14&quot; height=&quot;14&quot;/&gt;
    &lt;rect x=&quot;90&quot; y=&quot;45&quot; width=&quot;14&quot; height=&quot;14&quot;/&gt;&lt;rect x=&quot;110&quot; y=&quot;45&quot; width=&quot;14&quot; height=&quot;14&quot;/&gt;&lt;rect x=&quot;130&quot; y=&quot;45&quot; width=&quot;14&quot; height=&quot;14&quot;/&gt;
    &lt;rect x=&quot;150&quot; y=&quot;45&quot; width=&quot;14&quot; height=&quot;14&quot;/&gt;&lt;rect x=&quot;170&quot; y=&quot;45&quot; width=&quot;14&quot; height=&quot;14&quot;/&gt;&lt;rect x=&quot;190&quot; y=&quot;45&quot; width=&quot;14&quot; height=&quot;14&quot;/&gt;
    &lt;rect x=&quot;30&quot; y=&quot;65&quot; width=&quot;14&quot; height=&quot;14&quot;/&gt;&lt;rect x=&quot;50&quot; y=&quot;65&quot; width=&quot;14&quot; height=&quot;14&quot;/&gt;&lt;rect x=&quot;70&quot; y=&quot;65&quot; width=&quot;14&quot; height=&quot;14&quot;/&gt;
    &lt;rect x=&quot;90&quot; y=&quot;65&quot; width=&quot;14&quot; height=&quot;14&quot;/&gt;&lt;rect x=&quot;110&quot; y=&quot;65&quot; width=&quot;14&quot; height=&quot;14&quot;/&gt;&lt;rect x=&quot;130&quot; y=&quot;65&quot; width=&quot;14&quot; height=&quot;14&quot;/&gt;
    &lt;rect x=&quot;150&quot; y=&quot;65&quot; width=&quot;14&quot; height=&quot;14&quot;/&gt;&lt;rect x=&quot;170&quot; y=&quot;65&quot; width=&quot;14&quot; height=&quot;14&quot;/&gt;&lt;rect x=&quot;190&quot; y=&quot;65&quot; width=&quot;14&quot; height=&quot;14&quot;/&gt;
  &lt;/g&gt;
  &lt;rect x=&quot;70&quot; y=&quot;45&quot; width=&quot;14&quot; height=&quot;14&quot; fill=&quot;#dc2626&quot;/&gt;
  &lt;rect x=&quot;150&quot; y=&quot;65&quot; width=&quot;14&quot; height=&quot;14&quot; fill=&quot;#dc2626&quot;/&gt;

  &lt;line x1=&quot;230&quot; y1=&quot;65&quot; x2=&quot;320&quot; y2=&quot;65&quot; stroke=&quot;#334155&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#f9a)&quot;/&gt;
  &lt;text x=&quot;275&quot; y=&quot;55&quot; font-size=&quot;10&quot; fill=&quot;#475569&quot;&gt;1/N 추출&lt;/text&gt;

  &lt;text x=&quot;430&quot; y=&quot;30&quot; font-size=&quot;12&quot; font-weight=&quot;700&quot; fill=&quot;#b91c1c&quot; text-anchor=&quot;middle&quot;&gt;뽑힌 샘플&lt;/text&gt;
  &lt;g fill=&quot;#dc2626&quot;&gt;
    &lt;rect x=&quot;360&quot; y=&quot;52&quot; width=&quot;16&quot; height=&quot;16&quot;/&gt;&lt;rect x=&quot;390&quot; y=&quot;52&quot; width=&quot;16&quot; height=&quot;16&quot;/&gt;
  &lt;/g&gt;
  &lt;text x=&quot;430&quot; y=&quot;95&quot; font-size=&quot;11&quot; fill=&quot;#7f1d1d&quot;&gt;샘플 2개 확인&lt;/text&gt;

  &lt;line x1=&quot;470&quot; y1=&quot;62&quot; x2=&quot;560&quot; y2=&quot;62&quot; stroke=&quot;#334155&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#f9a)&quot;/&gt;
  &lt;text x=&quot;515&quot; y=&quot;52&quot; font-size=&quot;10&quot; fill=&quot;#475569&quot;&gt;× N (배율)&lt;/text&gt;

  &lt;rect x=&quot;565&quot; y=&quot;40&quot; width=&quot;210&quot; height=&quot;50&quot; rx=&quot;8&quot; fill=&quot;#dcfce7&quot; stroke=&quot;#16a34a&quot;/&gt;
  &lt;text x=&quot;670&quot; y=&quot;61&quot; font-size=&quot;11&quot; fill=&quot;#14532d&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;전체 추정: 2 × N&lt;/text&gt;
  &lt;text x=&quot;670&quot; y=&quot;79&quot; font-size=&quot;9.5&quot; fill=&quot;#166534&quot; text-anchor=&quot;middle&quot;&gt;통계적으로 복원한 실제 규모&lt;/text&gt;

  &lt;text x=&quot;400&quot; y=&quot;150&quot; font-size=&quot;11.5&quot; fill=&quot;#334155&quot; text-anchor=&quot;middle&quot;&gt;▶ 샘플링 비율이 높을수록(예 1/100) 정확하지만 부하가 커지고, 낮을수록(예 1/10000) 가볍지만 오차가 커진다.&lt;/text&gt;
  &lt;text x=&quot;400&quot; y=&quot;175&quot; font-size=&quot;11.5&quot; fill=&quot;#b91c1c&quot; text-anchor=&quot;middle&quot;&gt;▶ 문제점: 크고 굵은 흐름(elephant)은 잘 잡지만, 작고 짧은 흐름(mice)은 통째로 놓칠 수 있다.&lt;/text&gt;
  &lt;text x=&quot;400&quot; y=&quot;205&quot; font-size=&quot;11.5&quot; fill=&quot;#166534&quot; text-anchor=&quot;middle&quot;&gt;▶ 다행히 DDoS는 &quot;크고 많은&quot; 트래픽이라, 샘플링으로도 충분히 잘 탐지된다.&lt;/text&gt;
  &lt;defs&gt;&lt;marker id=&quot;f9a&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#334155&quot;/&gt;&lt;/marker&gt;&lt;/defs&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 8. 샘플링과 배율 복원 — 일부만 보고 전체를 추정한다. DDoS 같은 대량 트래픽 탐지에는 샘플링이 잘 맞는다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;h2&gt;10. 세 기술 총정리 비교&lt;/h2&gt;

&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 820 220&quot; role=&quot;img&quot; aria-label=&quot;NetFlow IPFIX와 sFlow의 근본 차이&quot;&gt;
  &lt;!-- left stateful --&gt;
  &lt;rect x=&quot;20&quot; y=&quot;30&quot; width=&quot;380&quot; height=&quot;160&quot; rx=&quot;12&quot; fill=&quot;#eff4ff&quot; stroke=&quot;#93c5fd&quot;/&gt;
  &lt;text x=&quot;210&quot; y=&quot;56&quot; font-size=&quot;13&quot; font-weight=&quot;700&quot; fill=&quot;#1e40af&quot; text-anchor=&quot;middle&quot;&gt;NetFlow / IPFIX (상태 기반)&lt;/text&gt;
  &lt;text x=&quot;210&quot; y=&quot;82&quot; font-size=&quot;11&quot; fill=&quot;#1e3a8a&quot; text-anchor=&quot;middle&quot;&gt;모든 패킷 → 흐름 캐시에 누적&lt;/text&gt;
  &lt;text x=&quot;210&quot; y=&quot;104&quot; font-size=&quot;11&quot; fill=&quot;#1e3a8a&quot; text-anchor=&quot;middle&quot;&gt;→ 완성된 &quot;흐름 요약&quot;을 export&lt;/text&gt;
  &lt;text x=&quot;210&quot; y=&quot;132&quot; font-size=&quot;10.5&quot; fill=&quot;#166534&quot; text-anchor=&quot;middle&quot;&gt;✓ 정확한 흐름 통계&lt;/text&gt;
  &lt;text x=&quot;210&quot; y=&quot;152&quot; font-size=&quot;10.5&quot; fill=&quot;#b91c1c&quot; text-anchor=&quot;middle&quot;&gt;✗ 캐시 유지에 자원 필요&lt;/text&gt;
  &lt;text x=&quot;210&quot; y=&quot;172&quot; font-size=&quot;10.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;라우터 중심&lt;/text&gt;

  &lt;!-- right stateless --&gt;
  &lt;rect x=&quot;420&quot; y=&quot;30&quot; width=&quot;380&quot; height=&quot;160&quot; rx=&quot;12&quot; fill=&quot;#ecfeff&quot; stroke=&quot;#67e8f9&quot;/&gt;
  &lt;text x=&quot;610&quot; y=&quot;56&quot; font-size=&quot;13&quot; font-weight=&quot;700&quot; fill=&quot;#0e7490&quot; text-anchor=&quot;middle&quot;&gt;sFlow (무상태·샘플링)&lt;/text&gt;
  &lt;text x=&quot;610&quot; y=&quot;82&quot; font-size=&quot;11&quot; fill=&quot;#155e75&quot; text-anchor=&quot;middle&quot;&gt;N개 중 1개 패킷 샘플 + 카운터&lt;/text&gt;
  &lt;text x=&quot;610&quot; y=&quot;104&quot; font-size=&quot;11&quot; fill=&quot;#155e75&quot; text-anchor=&quot;middle&quot;&gt;→ 원본 샘플을 그대로 export&lt;/text&gt;
  &lt;text x=&quot;610&quot; y=&quot;132&quot; font-size=&quot;10.5&quot; fill=&quot;#166534&quot; text-anchor=&quot;middle&quot;&gt;✓ 초고속·저부하 (ASIC)&lt;/text&gt;
  &lt;text x=&quot;610&quot; y=&quot;152&quot; font-size=&quot;10.5&quot; fill=&quot;#b91c1c&quot; text-anchor=&quot;middle&quot;&gt;✗ 통계적 추정, 작은 흐름 누락&lt;/text&gt;
  &lt;text x=&quot;610&quot; y=&quot;172&quot; font-size=&quot;10.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;스위치 중심&lt;/text&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 9. 근본 차이 — NetFlow/IPFIX는 &quot;완성된 흐름을 정확히&quot;, sFlow는 &quot;샘플을 빠르게&quot;. 목적에 따라 선택한다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;&lt;th&gt;항목&lt;/th&gt;&lt;th&gt;NetFlow&lt;/th&gt;&lt;th&gt;IPFIX&lt;/th&gt;&lt;th&gt;sFlow&lt;/th&gt;&lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td&gt;개발/표준&lt;/td&gt;&lt;td&gt;Cisco 독자&lt;/td&gt;&lt;td&gt;IETF 표준(RFC 7011)&lt;/td&gt;&lt;td&gt;InMon → 산업 표준&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;동작 방식&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;상태 기반 흐름 캐시 (패킷 누적 → 요약)&lt;/td&gt;&lt;td&gt;무상태 패킷 샘플링 + 카운터&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;정확도&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;높음 (모든 패킷 반영)&lt;/td&gt;&lt;td&gt;통계적 추정 (샘플)&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;장비 부하&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;상대적으로 높음 (캐시 유지)&lt;/td&gt;&lt;td&gt;매우 낮음 (하드웨어)&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;확장성/필드&lt;/td&gt;&lt;td&gt;v9부터 템플릿&lt;/td&gt;&lt;td&gt;템플릿 + IANA IE + 가변길이 (최고)&lt;/td&gt;&lt;td&gt;고정적(샘플 헤더 위주)&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;실시간성&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;타임아웃에 의존 (지연 가능)&lt;/td&gt;&lt;td&gt;샘플 즉시 전송 (빠름)&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;기본 포트&lt;/td&gt;&lt;td&gt;UDP 2055(관례)&lt;/td&gt;&lt;td&gt;UDP/TCP 4739 (SCTP 권장)&lt;/td&gt;&lt;td&gt;UDP 6343&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;주 사용처&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;통신사 백본, 라우터, 보안 분석&lt;/td&gt;&lt;td&gt;데이터센터 고속 스위치&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2&gt;11. 흐름 데이터로 DDoS·이상 탐지하기&lt;/h2&gt;
&lt;p&gt;
이제 핵심입니다. 수집된 흐름 데이터를 가지고 &lt;strong&gt;어떻게 공격을 찾아내는가&lt;/strong&gt;? 앞선 &quot;DDoS 탐지 방법&quot; 문서의
기법들이 바로 이 흐름 데이터 위에서 작동합니다.
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Top-N 분석&lt;/strong&gt; — 트래픽 상위 출발지·목적지·포트를 뽑아, 한 대상으로 몰리는 이상을 포착&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;임계치/기준선(Baseline)&lt;/strong&gt; — 흐름 수·bps·pps가 평소 대비 급증하는지 감시&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;엔트로피 분석&lt;/strong&gt; — 출발지/목적지 IP 분포의 쏠림(엔트로피 급변)을 탐지&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;비율 지표&lt;/strong&gt; — SYN/ACK 비율, 흐름당 평균 패킷 수(공격 흐름은 대개 짧고 작음) 등&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;머신러닝&lt;/strong&gt; — 흐름에서 특징(feature)을 추출해 정상/공격 분류&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 840 250&quot; role=&quot;img&quot; aria-label=&quot;흐름 데이터 기반 DDoS 탐지-대응 워크플로우&quot;&gt;
  &lt;rect x=&quot;20&quot; y=&quot;95&quot; width=&quot;120&quot; height=&quot;60&quot; rx=&quot;8&quot; fill=&quot;#0e7490&quot;/&gt;
  &lt;text x=&quot;80&quot; y=&quot;120&quot; font-size=&quot;10.5&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;흐름 export&lt;/text&gt;
  &lt;text x=&quot;80&quot; y=&quot;138&quot; font-size=&quot;9&quot; fill=&quot;#cffafe&quot; text-anchor=&quot;middle&quot;&gt;라우터/스위치&lt;/text&gt;

  &lt;line x1=&quot;140&quot; y1=&quot;125&quot; x2=&quot;185&quot; y2=&quot;125&quot; stroke=&quot;#334155&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#f11a)&quot;/&gt;

  &lt;rect x=&quot;187&quot; y=&quot;95&quot; width=&quot;120&quot; height=&quot;60&quot; rx=&quot;8&quot; fill=&quot;#2563eb&quot;/&gt;
  &lt;text x=&quot;247&quot; y=&quot;120&quot; font-size=&quot;10.5&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;수집·집계&lt;/text&gt;
  &lt;text x=&quot;247&quot; y=&quot;138&quot; font-size=&quot;9&quot; fill=&quot;#dbeafe&quot; text-anchor=&quot;middle&quot;&gt;Collector&lt;/text&gt;

  &lt;line x1=&quot;307&quot; y1=&quot;125&quot; x2=&quot;352&quot; y2=&quot;125&quot; stroke=&quot;#334155&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#f11a)&quot;/&gt;

  &lt;rect x=&quot;354&quot; y=&quot;80&quot; width=&quot;150&quot; height=&quot;90&quot; rx=&quot;8&quot; fill=&quot;#7c3aed&quot;/&gt;
  &lt;text x=&quot;429&quot; y=&quot;104&quot; font-size=&quot;10.5&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;이상 분석&lt;/text&gt;
  &lt;text x=&quot;429&quot; y=&quot;122&quot; font-size=&quot;9&quot; fill=&quot;#ede9fe&quot; text-anchor=&quot;middle&quot;&gt;Top-N · baseline&lt;/text&gt;
  &lt;text x=&quot;429&quot; y=&quot;137&quot; font-size=&quot;9&quot; fill=&quot;#ede9fe&quot; text-anchor=&quot;middle&quot;&gt;엔트로피 · ML&lt;/text&gt;
  &lt;text x=&quot;429&quot; y=&quot;155&quot; font-size=&quot;9&quot; fill=&quot;#ddd6fe&quot; text-anchor=&quot;middle&quot;&gt;공격 여부 판정&lt;/text&gt;

  &lt;line x1=&quot;504&quot; y1=&quot;125&quot; x2=&quot;549&quot; y2=&quot;125&quot; stroke=&quot;#dc2626&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#f11r)&quot;/&gt;

  &lt;rect x=&quot;551&quot; y=&quot;80&quot; width=&quot;130&quot; height=&quot;90&quot; rx=&quot;8&quot; fill=&quot;#dc2626&quot;/&gt;
  &lt;text x=&quot;616&quot; y=&quot;104&quot; font-size=&quot;10.5&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;경보 발령&lt;/text&gt;
  &lt;text x=&quot;616&quot; y=&quot;122&quot; font-size=&quot;9&quot; fill=&quot;#fee2e2&quot; text-anchor=&quot;middle&quot;&gt;알림·티켓&lt;/text&gt;
  &lt;text x=&quot;616&quot; y=&quot;139&quot; font-size=&quot;9&quot; fill=&quot;#fee2e2&quot; text-anchor=&quot;middle&quot;&gt;공격 IP 식별&lt;/text&gt;

  &lt;line x1=&quot;681&quot; y1=&quot;125&quot; x2=&quot;726&quot; y2=&quot;125&quot; stroke=&quot;#16a34a&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#f11g)&quot;/&gt;

  &lt;rect x=&quot;728&quot; y=&quot;80&quot; width=&quot;100&quot; height=&quot;90&quot; rx=&quot;8&quot; fill=&quot;#16a34a&quot;/&gt;
  &lt;text x=&quot;778&quot; y=&quot;108&quot; font-size=&quot;10.5&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;대응&lt;/text&gt;
  &lt;text x=&quot;778&quot; y=&quot;126&quot; font-size=&quot;9&quot; fill=&quot;#dcfce7&quot; text-anchor=&quot;middle&quot;&gt;BGP 우회&lt;/text&gt;
  &lt;text x=&quot;778&quot; y=&quot;141&quot; font-size=&quot;9&quot; fill=&quot;#dcfce7&quot; text-anchor=&quot;middle&quot;&gt;Scrubbing&lt;/text&gt;
  &lt;text x=&quot;778&quot; y=&quot;156&quot; font-size=&quot;9&quot; fill=&quot;#dcfce7&quot; text-anchor=&quot;middle&quot;&gt;Rate Limit&lt;/text&gt;

  &lt;text x=&quot;420&quot; y=&quot;210&quot; font-size=&quot;11.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;흐름 기반 탐지는 특히 대응(BGP FlowSpec, RTBH, Scrubbing 우회)과 잘 연결되어 &quot;탐지→완화&quot; 자동화를 이룬다.&lt;/text&gt;
  &lt;defs&gt;
    &lt;marker id=&quot;f11a&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#334155&quot;/&gt;&lt;/marker&gt;
    &lt;marker id=&quot;f11r&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#dc2626&quot;/&gt;&lt;/marker&gt;
    &lt;marker id=&quot;f11g&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#16a34a&quot;/&gt;&lt;/marker&gt;
  &lt;/defs&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 10. 흐름 기반 DDoS 탐지-대응 워크플로우. 탐지 결과가 곧바로 완화(BGP FlowSpec, RTBH, Scrubbing)로 이어진다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;div class=&quot;callout info&quot;&gt;
  &lt;span class=&quot;tag&quot;&gt;대응까지 — BGP FlowSpec · RTBH&lt;/span&gt;
  흐름 기반 탐지의 강점은 대응 연계입니다. &lt;strong&gt;RTBH(Remote Triggered Black Hole)&lt;/strong&gt;는 공격 대상 IP로 향하는
  트래픽을 통째로 버리는 방식이고, &lt;strong&gt;BGP FlowSpec&lt;/strong&gt;은 더 정교하게 &quot;특정 조건의 트래픽만&quot; 필터링하도록
  네트워크 전체에 규칙을 뿌립니다. 통신사급 방어의 핵심 도구입니다.
&lt;/div&gt;

&lt;h2&gt;12. 실무 수집·분석 스택 (도구)&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;&lt;tr&gt;&lt;th&gt;분류&lt;/th&gt;&lt;th&gt;도구&lt;/th&gt;&lt;th&gt;설명&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td&gt;오픈소스 수집기&lt;/td&gt;&lt;td&gt;&lt;strong&gt;nfdump / nfcapd&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;NetFlow/IPFIX/sFlow를 파일로 수집·조회하는 고전적 표준 도구&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;오픈소스 분석·시각화&lt;/td&gt;&lt;td&gt;&lt;strong&gt;ntopng&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;실시간 트래픽 시각화·모니터링. 흐름 기반 분석에 널리 사용&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;오픈소스 DDoS 탐지&lt;/td&gt;&lt;td&gt;&lt;strong&gt;FastNetMon&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;흐름(및 미러링) 기반 실시간 DDoS 탐지. 통신사·호스팅사에서 인기&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;오픈소스 파이프라인&lt;/td&gt;&lt;td&gt;&lt;strong&gt;GoFlow2 · pmacct&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;흐름을 받아 Kafka·데이터베이스로 흘려보내는 수집 파이프라인&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;상용(통신사급)&lt;/td&gt;&lt;td&gt;&lt;strong&gt;NETSCOUT Arbor Sightline&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;흐름 기반 광역 탐지의 대표 상용 솔루션. ATLAS 위협 인텔리전스 결합&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;상용(클라우드)&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Kentik&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;클라우드 네이티브 흐름 분석·관측 플랫폼&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;시각화&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Grafana · Elastic(ELK)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;흐름 데이터를 대시보드로 시각화·경보&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;참고로, Open vSwitch(OVS) 같은 가상 스위치도 IPFIX·sFlow·NetFlow export를 지원합니다. 예시 설정은 다음과 같습니다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Open vSwitch에서 sFlow 설정 예시 (수집기 IP 10.0.0.100, 512개 중 1개 샘플링)
ovs-vsctl -- --id=@s create sflow \
  agent=eth0 target=\&quot;10.0.0.100:6343\&quot; sampling=512 polling=10 \
  -- set bridge br0 sflow=@s

# nfdump로 수집된 NetFlow 조회 예시 (특정 목적지로의 상위 흐름)
nfdump -R /var/flows -s dstip/bytes -n 10 'dst ip 10.0.0.9'&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;13. 배포·운영 시 고려사항&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;샘플링 비율&lt;/strong&gt; — 낮추면 부하는 줄지만 정확도·작은 공격 탐지력이 떨어진다. 링크 속도에 맞춰 조정.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;타임아웃 조정&lt;/strong&gt; — DDoS 실시간 탐지를 위해 Active Timeout을 짧게(예 60초) 설정.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;데이터 양 관리&lt;/strong&gt; — 흐름 레코드도 대규모 네트워크에선 방대하다. 저장 기간·집계 정책 필요.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;UDP 유실&lt;/strong&gt; — 대부분 UDP 전송이라 혼잡 시 레코드가 유실될 수 있음. 중요 환경은 SCTP/TCP 고려.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;시간 동기화(NTP)&lt;/strong&gt; — 여러 익스포터의 시각이 어긋나면 상관분석이 틀어진다.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;보안&lt;/strong&gt; — 흐름 데이터 자체가 네트워크 구조를 드러내므로 수집 경로 보호가 필요.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;14. 기술 진화 타임라인&lt;/h2&gt;
&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 840 200&quot; role=&quot;img&quot; aria-label=&quot;흐름 기술 진화 타임라인&quot;&gt;
  &lt;line x1=&quot;40&quot; y1=&quot;100&quot; x2=&quot;800&quot; y2=&quot;100&quot; stroke=&quot;#cbd5e1&quot; stroke-width=&quot;4&quot;/&gt;
  &lt;g font-size=&quot;10.5&quot; fill=&quot;#334155&quot;&gt;
    &lt;circle cx=&quot;90&quot; cy=&quot;100&quot; r=&quot;8&quot; fill=&quot;#0e7490&quot;/&gt;&lt;text x=&quot;90&quot; y=&quot;75&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;1996&lt;/text&gt;&lt;text x=&quot;90&quot; y=&quot;130&quot; text-anchor=&quot;middle&quot;&gt;NetFlow v1&lt;/text&gt;
    &lt;circle cx=&quot;230&quot; cy=&quot;100&quot; r=&quot;8&quot; fill=&quot;#0e7490&quot;/&gt;&lt;text x=&quot;230&quot; y=&quot;75&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;~2000&lt;/text&gt;&lt;text x=&quot;230&quot; y=&quot;130&quot; text-anchor=&quot;middle&quot;&gt;NetFlow v5&lt;/text&gt;
    &lt;circle cx=&quot;370&quot; cy=&quot;100&quot; r=&quot;8&quot; fill=&quot;#0891b2&quot;/&gt;&lt;text x=&quot;370&quot; y=&quot;75&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;2001&lt;/text&gt;&lt;text x=&quot;370&quot; y=&quot;130&quot; text-anchor=&quot;middle&quot;&gt;sFlow (InMon)&lt;/text&gt;
    &lt;circle cx=&quot;510&quot; cy=&quot;100&quot; r=&quot;8&quot; fill=&quot;#0e7490&quot;/&gt;&lt;text x=&quot;510&quot; y=&quot;75&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;2004&lt;/text&gt;&lt;text x=&quot;510&quot; y=&quot;130&quot; text-anchor=&quot;middle&quot;&gt;NetFlow v9&lt;/text&gt;
    &lt;circle cx=&quot;650&quot; cy=&quot;100&quot; r=&quot;8&quot; fill=&quot;#7c3aed&quot;/&gt;&lt;text x=&quot;650&quot; y=&quot;75&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;2008~13&lt;/text&gt;&lt;text x=&quot;650&quot; y=&quot;130&quot; text-anchor=&quot;middle&quot;&gt;IPFIX 표준화&lt;/text&gt;
    &lt;circle cx=&quot;770&quot; cy=&quot;100&quot; r=&quot;8&quot; fill=&quot;#dc2626&quot;/&gt;&lt;text x=&quot;770&quot; y=&quot;75&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;현재&lt;/text&gt;&lt;text x=&quot;770&quot; y=&quot;130&quot; text-anchor=&quot;middle&quot;&gt;클라우드·ML 결합&lt;/text&gt;
  &lt;/g&gt;
  &lt;text x=&quot;420&quot; y=&quot;175&quot; font-size=&quot;11&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;고정 포맷(v5) → 템플릿(v9) → 국제표준(IPFIX)으로, 그리고 샘플링(sFlow)이 병행 발전했다.&lt;/text&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 11. 흐름 기술의 진화 — NetFlow 계열의 유연화와 sFlow의 병행, 그리고 클라우드·머신러닝 결합으로.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;h2&gt;15. 장점과 한계&lt;/h2&gt;
&lt;div class=&quot;callout ok&quot;&gt;
  &lt;span class=&quot;tag&quot;&gt;장점&lt;/span&gt;
  &lt;ul style=&quot;margin:.3em 0;&quot;&gt;
    &lt;li&gt;대규모(Tbps) 네트워크에서도 &lt;strong&gt;가볍고 확장성 있게&lt;/strong&gt; 광역 탐지 가능&lt;/li&gt;
    &lt;li&gt;암호화 트래픽과 무관하게 동작(메타데이터만 봄), 프라이버시 부담이 적음&lt;/li&gt;
    &lt;li&gt;대부분의 라우터·스위치가 &lt;strong&gt;기본 지원&lt;/strong&gt; — 별도 고가 장비 없이 시작 가능&lt;/li&gt;
    &lt;li&gt;DDoS 같은 &lt;strong&gt;대량·분포 이상&lt;/strong&gt; 탐지에 특히 강함, 대응(FlowSpec/RTBH) 연계 우수&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;callout warn&quot;&gt;
  &lt;span class=&quot;tag&quot;&gt;한계&lt;/span&gt;
  &lt;ul style=&quot;margin:.3em 0;&quot;&gt;
    &lt;li&gt;패킷 내용(payload)은 못 보므로, 내용 기반 정밀 탐지는 DPI가 필요&lt;/li&gt;
    &lt;li&gt;샘플링·타임아웃으로 인한 &lt;strong&gt;지연·오차&lt;/strong&gt;가 존재 (작은/짧은 흐름 누락 가능)&lt;/li&gt;
    &lt;li&gt;UDP 전송 시 레코드 유실 가능&lt;/li&gt;
    &lt;li&gt;정교하게 정상 트래픽을 흉내 내는 &lt;strong&gt;저용량 L7 공격&lt;/strong&gt;은 흐름만으로 잡기 어려움&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;h2&gt;16. 용어 설명&lt;/h2&gt;
&lt;dl class=&quot;glossary&quot;&gt;
  &lt;dt&gt;Flow (흐름)&lt;/dt&gt;
  &lt;dd&gt;같은 5-tuple(출발지/목적지 IP·포트, 프로토콜)을 공유하는 패킷들의 묶음. 트래픽 요약의 기본 단위.&lt;/dd&gt;

  &lt;dt&gt;5-tuple&lt;/dt&gt;
  &lt;dd&gt;흐름을 정의하는 다섯 가지 키: 출발지 IP, 목적지 IP, 출발지 포트, 목적지 포트, 프로토콜.&lt;/dd&gt;

  &lt;dt&gt;Exporter / Collector / Analyzer&lt;/dt&gt;
  &lt;dd&gt;흐름을 생성해 보내는 장비 / 받아 저장하는 서버 / 분석·탐지·시각화하는 시스템. 흐름 시스템의 3역할.&lt;/dd&gt;

  &lt;dt&gt;Flow Cache (흐름 캐시)&lt;/dt&gt;
  &lt;dd&gt;익스포터가 진행 중인 흐름의 카운터를 누적해 두는 메모리 테이블. NetFlow/IPFIX 같은 상태 기반 방식의 핵심.&lt;/dd&gt;

  &lt;dt&gt;Active / Inactive Timeout&lt;/dt&gt;
  &lt;dd&gt;흐름을 내보내는 조건. Active는 &quot;긴 흐름을 주기적으로 강제 export&quot;(기본 30분), Inactive는 &quot;잠잠해진 흐름을 export&quot;(기본 15초).&lt;/dd&gt;

  &lt;dt&gt;NetFlow&lt;/dt&gt;
  &lt;dd&gt;Cisco가 만든 흐름 기반 모니터링 기술. v5(고정 포맷), v9(템플릿 기반)가 대표적.&lt;/dd&gt;

  &lt;dt&gt;Template (템플릿)&lt;/dt&gt;
  &lt;dd&gt;NetFlow v9·IPFIX에서 &quot;데이터 레코드가 어떤 필드로 구성되는지&quot;를 정의하는 설계도. 데이터 해석의 기준.&lt;/dd&gt;

  &lt;dt&gt;IPFIX (Internet Protocol Flow Information Export)&lt;/dt&gt;
  &lt;dd&gt;NetFlow v9를 바탕으로 IETF가 표준화한 벤더 중립 흐름 export 프로토콜(RFC 7011). 버전 값은 10.&lt;/dd&gt;

  &lt;dt&gt;Information Element (IE, 정보 요소)&lt;/dt&gt;
  &lt;dd&gt;IPFIX에서 각 필드를 정의하는 표준 항목(예: sourceIPv4Address). IANA가 공식 목록을 관리하며, 기업 고유 확장도 가능.&lt;/dd&gt;

  &lt;dt&gt;Set (Template / Options Template / Data)&lt;/dt&gt;
  &lt;dd&gt;IPFIX 메시지를 이루는 묶음. 형식을 정의하는 Template Set, 메타정보용 Options Template Set, 실제 값인 Data Set.&lt;/dd&gt;

  &lt;dt&gt;SCTP (Stream Control Transmission Protocol)&lt;/dt&gt;
  &lt;dd&gt;신뢰성·혼잡제어를 갖춘 전송 프로토콜. IPFIX가 표준적으로 권장하는 전송 방식(UDP·TCP도 허용).&lt;/dd&gt;

  &lt;dt&gt;sFlow (sampled Flow)&lt;/dt&gt;
  &lt;dd&gt;InMon이 만든 무상태 샘플링 기반 모니터링. 흐름 캐시 없이 &quot;N개 중 1개 패킷 샘플 + 인터페이스 카운터&quot;를 내보낸다.&lt;/dd&gt;

  &lt;dt&gt;Sampling (샘플링) / Scale-up (배율 복원)&lt;/dt&gt;
  &lt;dd&gt;일부 패킷만 뽑아 관찰하고, 샘플 수에 비율(N)을 곱해 전체 규모를 추정하는 기법.&lt;/dd&gt;

  &lt;dt&gt;Counter Polling (카운터 폴링)&lt;/dt&gt;
  &lt;dd&gt;sFlow에서 인터페이스의 누적 통계 카운터를 주기적으로 그대로 수집기에 보내는 것.&lt;/dd&gt;

  &lt;dt&gt;Elephant / Mice Flow&lt;/dt&gt;
  &lt;dd&gt;크고 오래가는 흐름(elephant)과 작고 짧은 흐름(mice). 샘플링은 elephant는 잘 잡지만 mice는 놓치기 쉽다.&lt;/dd&gt;

  &lt;dt&gt;DPI (Deep Packet Inspection, 심층 패킷 검사)&lt;/dt&gt;
  &lt;dd&gt;패킷의 내용(payload)까지 검사하는 정밀 분석. 흐름 기반과 상반되는 접근으로, 정밀하지만 무겁다.&lt;/dd&gt;

  &lt;dt&gt;BGP FlowSpec / RTBH (Remote Triggered Black Hole)&lt;/dt&gt;
  &lt;dd&gt;흐름 기반 탐지 후 대응 수단. FlowSpec은 조건부 정밀 필터링 규칙을 네트워크에 배포, RTBH는 공격 대상 트래픽을 통째로 폐기.&lt;/dd&gt;

  &lt;dt&gt;Observation Domain&lt;/dt&gt;
  &lt;dd&gt;IPFIX에서 흐름이 관측된 범위를 식별하는 값. 어느 지점의 데이터인지 구분하는 데 쓰인다.&lt;/dd&gt;
&lt;/dl&gt;

&lt;hr style=&quot;margin:2.5em 0; border:none; border-top:1px solid var(--c-line);&quot;&gt;
&lt;p style=&quot;color:#94a3b8; font-size:.86em;&quot;&gt;
본 문서는 학습·방어(defensive) 목적의 개념 정리입니다. &quot;DDoS 탐지 방법 총정리&quot;의 흐름 기반 탐지 장을 심화한 글로,
통계·엔트로피·머신러닝 탐지 기법과 함께 보면 이해가 깊어집니다.
&lt;/p&gt;

&lt;/div&gt;</description>
      <category>Security</category>
      <author>AndrewJ</author>
      <guid isPermaLink="true">https://andrewpage.tistory.com/500</guid>
      <comments>https://andrewpage.tistory.com/500#entry500comment</comments>
      <pubDate>Mon, 3 Aug 2026 16:45:58 +0900</pubDate>
    </item>
    <item>
      <title>커피에 진심인 사람의 Cafe List (카페 목록)</title>
      <link>https://andrewpage.tistory.com/499</link>
      <description>&lt;blockquote data-ke-style=&quot;style3&quot;&gt;수정일: 2026년 8월 3일&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;보노보노 (성남시 판교역 근처)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://naver.me/FY3yDT5g&quot;&gt;https://naver.me/FY3yDT5g&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;시그니처로스터스 (안양시 평촌 학원가 근처)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://naver.me/IFEmni5B&quot;&gt;https://naver.me/IFEmni5B&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;엘그레 에스프레소 바 OMELAS (인천시 연수구 송도동)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://naver.me/F6lTmjhG&quot;&gt;https://naver.me/F6lTmjhG&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;토니커피하우스 (인천시 동인천역 근처)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://naver.me/5xjp6EUv&quot;&gt;https://naver.me/5xjp6EUv&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;나무사이로 석운 (성남시 석운동)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://naver.me/F5D1CKvD&quot;&gt;https://naver.me/F5D1CKvD&lt;/a&gt; &amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;커피 리브레 연남점 (서울시 마포구 연남동,&amp;nbsp; 연세대학교, 2호선 홍대입구역)&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://naver.me/GbDR28kh&quot;&gt;https://naver.me/GbDR28kh&lt;/a&gt; &amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;아래 리스팅된 카페는 풍경이 좋거나 인테리어, 데코레이션 등 외적으로 특색을 가진 카페들.&amp;nbsp;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;카페 폭포 (서울 서대문구 홍은동)&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://naver.me/FQVGsqsH&quot;&gt;https://naver.me/FQVGsqsH&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Life</category>
      <category>cafe</category>
      <category>카페</category>
      <author>AndrewJ</author>
      <guid isPermaLink="true">https://andrewpage.tistory.com/499</guid>
      <comments>https://andrewpage.tistory.com/499#entry499comment</comments>
      <pubDate>Mon, 3 Aug 2026 13:58:58 +0900</pubDate>
    </item>
    <item>
      <title>DDoS 공격 탐지 방법 총정리</title>
      <link>https://andrewpage.tistory.com/498</link>
      <description>&lt;div class=&quot;sdoc&quot;&gt;
&lt;style&gt;
.sdoc{
  --c-text:#1f2933; --c-sub:#52606d; --c-line:#e4e7eb;
  --c-primary:#2563eb; --c-primary-d:#1e40af; --c-accent:#db2777;
  --c-bg-soft:#f5f7fa; --c-bg-blue:#eff4ff; --c-bg-warn:#fff7ed;
  --c-bg-danger:#fef2f2; --c-bg-ok:#f0fdf4;
  color:var(--c-text);
  font-family:-apple-system,BlinkMacSystemFont,&quot;Segoe UI&quot;,&quot;Apple SD Gothic Neo&quot;,&quot;Malgun Gothic&quot;,sans-serif;
  line-height:1.75; font-size:16px; word-break:keep-all; max-width:920px; margin:0 auto;
}
.sdoc *{box-sizing:border-box;}
.sdoc h1{font-size:2em; line-height:1.3; margin:.2em 0 .6em; letter-spacing:-.02em;}
.sdoc h2{font-size:1.5em; margin:2em 0 .7em; padding-bottom:.3em; border-bottom:3px solid var(--c-primary); letter-spacing:-.02em;}
.sdoc h3{font-size:1.2em; margin:1.6em 0 .5em; color:var(--c-primary-d);}
.sdoc p{margin:.7em 0;}
.sdoc ul,.sdoc ol{margin:.6em 0; padding-left:1.4em;}
.sdoc li{margin:.35em 0;}
.sdoc code{background:var(--c-bg-soft); padding:.1em .4em; border-radius:4px; font-size:.9em;
  font-family:&quot;SFMono-Regular&quot;,Consolas,&quot;Liberation Mono&quot;,Menlo,monospace; color:var(--c-accent);}
.sdoc pre{background:#0f172a; color:#e2e8f0; padding:1em 1.2em; border-radius:8px; overflow-x:auto;
  font-size:.86em; line-height:1.6;}
.sdoc pre code{background:none; color:inherit; padding:0;}
.sdoc a{color:var(--c-primary); }

.sdoc .lead{font-size:1.1em; color:var(--c-sub); border-left:4px solid var(--c-primary);
  padding:.6em 1em; background:var(--c-bg-blue); border-radius:0 8px 8px 0;}

.sdoc .callout{border-radius:10px; padding:1em 1.2em; margin:1.2em 0; border:1px solid var(--c-line);}
.sdoc .callout.info{background:var(--c-bg-blue); border-color:#bfdbfe;}
.sdoc .callout.warn{background:var(--c-bg-warn); border-color:#fed7aa;}
.sdoc .callout.danger{background:var(--c-bg-danger); border-color:#fecaca;}
.sdoc .callout.ok{background:var(--c-bg-ok); border-color:#bbf7d0;}
.sdoc .callout .tag{font-weight:700; display:block; margin-bottom:.3em;}

.sdoc table{border-collapse:collapse; width:100%; margin:1.2em 0; font-size:.94em; overflow:hidden;
  border-radius:8px;}
.sdoc th,.sdoc td{border:1px solid var(--c-line); padding:.6em .8em; text-align:left; vertical-align:top;}
.sdoc thead th{background:var(--c-primary); color:#fff; border-color:var(--c-primary);}
.sdoc tbody tr:nth-child(even){background:var(--c-bg-soft);}

.sdoc figure{margin:1.6em 0; text-align:center;}
.sdoc figure svg{max-width:100%; height:auto;}
.sdoc figcaption{font-size:.88em; color:var(--c-sub); margin-top:.6em;}

.sdoc .fig-wrap{overflow-x:auto; border:1px solid var(--c-line); border-radius:10px; background:#fff; padding:14px;}

.sdoc .toc{background:var(--c-bg-soft); border:1px solid var(--c-line); border-radius:10px; padding:1em 1.4em;}
.sdoc .toc strong{display:block; margin-bottom:.4em; font-size:1.05em;}
.sdoc .toc ol{margin:.3em 0;}

.sdoc .glossary dt{font-weight:700; color:var(--c-primary-d); margin-top:.9em;}
.sdoc .glossary dd{margin:.2em 0 .2em 0; color:var(--c-sub);}

.sdoc .pill{display:inline-block; background:var(--c-primary); color:#fff; font-size:.75em;
  padding:.15em .6em; border-radius:999px; vertical-align:middle; margin-left:.3em;}
.sdoc .era{display:inline-block; font-size:.72em; font-weight:700; padding:.18em .7em; border-radius:999px; color:#fff; vertical-align:middle; margin-left:.4em;}
.sdoc .era.e1{background:#0891b2;} .sdoc .era.e2{background:#7c3aed;} .sdoc .era.e3{background:#dc2626;}
&lt;/style&gt;

&lt;h1&gt;DDoS 공격 탐지 방법 총정리 — 고전 기법부터 최신 AI 기반까지&lt;/h1&gt;

&lt;p class=&quot;lead&quot;&gt;
DDoS(Distributed Denial of Service, 분산 서비스 거부) 방어의 출발점은 언제나 &lt;strong&gt;&quot;탐지(detection)&quot;&lt;/strong&gt;입니다.
공격을 정확히, 그리고 빨리 알아채야 막을 수 있기 때문입니다. 이 문서는 가장 오래되고 널리 알려진
시그니처·임계치 방식부터, 통계·엔트로피, 머신러닝·딥러닝, 그리고 GNN·SDN·eBPF·연합학습 같은
최신 기법까지 &lt;strong&gt;DDoS 탐지 기술의 전체 지형도&lt;/strong&gt;를 그림과 함께 정리합니다.
&lt;/p&gt;

&lt;div class=&quot;toc&quot;&gt;
  &lt;strong&gt;목차&lt;/strong&gt;
  &lt;ol&gt;
    &lt;li&gt;DDoS 탐지는 왜 어려운가&lt;/li&gt;
    &lt;li&gt;탐지의 큰 그림 — 어디서, 무엇을, 어떻게&lt;/li&gt;
    &lt;li&gt;탐지 기술의 진화 타임라인&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;1세대&lt;/b&gt; 시그니처 기반 (Signature-based)&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;1세대&lt;/b&gt; 임계치 / 속도 기반 (Threshold / Rate-based)&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;1세대&lt;/b&gt; 통계적 이상 탐지 (Statistical Anomaly)&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;1세대&lt;/b&gt; 엔트로피 기반 (Entropy-based)&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;1세대&lt;/b&gt; 변화점 탐지 (Change-point: CUSUM / EWMA)&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;1세대&lt;/b&gt; 흐름 기반 (Flow-based: NetFlow / sFlow / IPFIX)&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;2세대&lt;/b&gt; 지도 학습 머신러닝 (Supervised ML)&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;2세대&lt;/b&gt; 비지도 이상 탐지 (Unsupervised / Autoencoder)&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;2세대&lt;/b&gt; 딥러닝 (CNN / LSTM)&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;3세대&lt;/b&gt; 그래프 신경망 (GNN)&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;3세대&lt;/b&gt; SDN 기반 탐지&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;3세대&lt;/b&gt; eBPF / XDP / In-band Network Telemetry&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;3세대&lt;/b&gt; 연합 학습 (Federated Learning)&lt;/li&gt;
    &lt;li&gt;혼합·앙상블 + 위협 인텔리전스&lt;/li&gt;
    &lt;li&gt;탐지 방법 총정리 비교표&lt;/li&gt;
    &lt;li&gt;실무 적용 관점&lt;/li&gt;
    &lt;li&gt;선도 기업 / 대표 솔루션&lt;/li&gt;
    &lt;li&gt;용어 설명&lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;

&lt;h2&gt;1. DDoS 탐지는 왜 어려운가&lt;/h2&gt;

&lt;p&gt;
DDoS 탐지의 근본 난제는 &lt;strong&gt;&quot;공격 트래픽이 정상 트래픽과 닮았다&quot;&lt;/strong&gt;는 점입니다.
특히 애플리케이션 계층(L7) 공격은 실제 사용자의 요청과 거의 구별되지 않습니다.
게다가 대형 이벤트(할인 행사, 티켓 예매)로 인한 &lt;strong&gt;정상적인 트래픽 급증(Flash Crowd)&lt;/strong&gt;과
공격을 혼동하면 &lt;strong&gt;오탐(False Positive)&lt;/strong&gt;이 발생해 정상 사용자를 차단하게 됩니다.
&lt;/p&gt;

&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 820 300&quot; role=&quot;img&quot; aria-label=&quot;정상 급증과 공격 트래픽이 겹치는 탐지 난제&quot;&gt;
  &lt;!-- axes --&gt;
  &lt;line x1=&quot;60&quot; y1=&quot;250&quot; x2=&quot;780&quot; y2=&quot;250&quot; stroke=&quot;#94a3b8&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;line x1=&quot;60&quot; y1=&quot;40&quot; x2=&quot;60&quot; y2=&quot;250&quot; stroke=&quot;#94a3b8&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;text x=&quot;40&quot; y=&quot;45&quot; font-size=&quot;12&quot; fill=&quot;#64748b&quot;&gt;트래픽&lt;/text&gt;
  &lt;text x=&quot;700&quot; y=&quot;270&quot; font-size=&quot;12&quot; fill=&quot;#64748b&quot;&gt;시간 →&lt;/text&gt;

  &lt;!-- normal baseline --&gt;
  &lt;path d=&quot;M60,220 C160,215 220,210 300,214 C360,217 420,208 500,212 C580,215 660,210 780,213&quot; fill=&quot;none&quot; stroke=&quot;#16a34a&quot; stroke-width=&quot;2.5&quot;/&gt;
  &lt;text x=&quot;120&quot; y=&quot;205&quot; font-size=&quot;12&quot; fill=&quot;#16a34a&quot; font-weight=&quot;700&quot;&gt;평상시(정상 baseline)&lt;/text&gt;

  &lt;!-- flash crowd --&gt;
  &lt;path d=&quot;M300,214 C330,150 360,120 390,120 C420,120 445,160 480,205 C490,210 495,211 500,212&quot; fill=&quot;none&quot; stroke=&quot;#2563eb&quot; stroke-width=&quot;2.5&quot; stroke-dasharray=&quot;5 3&quot;/&gt;
  &lt;text x=&quot;330&quot; y=&quot;110&quot; font-size=&quot;12&quot; fill=&quot;#2563eb&quot; font-weight=&quot;700&quot;&gt;정상 급증(Flash Crowd)&lt;/text&gt;

  &lt;!-- attack spike --&gt;
  &lt;path d=&quot;M560,213 C575,120 585,70 600,60 C615,55 625,55 640,58 L640,250 L560,250 Z&quot; fill=&quot;#fecaca&quot; stroke=&quot;#dc2626&quot; stroke-width=&quot;2.5&quot;/&gt;
  &lt;text x=&quot;600&quot; y=&quot;48&quot; font-size=&quot;12&quot; fill=&quot;#dc2626&quot; font-weight=&quot;700&quot; text-anchor=&quot;middle&quot;&gt;공격 급증(Attack)&lt;/text&gt;

  &lt;text x=&quot;420&quot; y=&quot;292&quot; font-size=&quot;12.5&quot; fill=&quot;#334155&quot; text-anchor=&quot;middle&quot;&gt;핵심 질문: 이 급증이 &quot;고객&quot;인가 &quot;공격&quot;인가? — 잘못 판단하면 오탐 또는 미탐&lt;/text&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 1. 정상 급증과 공격의 모양이 비슷해, 탐지는 곧 &quot;구별의 문제&quot;가 된다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;따라서 좋은 탐지 기법은 다음 세 가지를 동시에 잘해야 합니다.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;정확도&lt;/strong&gt; — 공격은 놓치지 않고(높은 Recall), 정상은 오탐하지 않기(낮은 False Positive)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;속도&lt;/strong&gt; — 초 단위, 이상적으로는 밀리초 단위의 실시간 탐지&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;확장성&lt;/strong&gt; — 수백 Gbps ~ 수 Tbps 트래픽을 실시간으로 처리&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;2. 탐지의 큰 그림 — 어디서, 무엇을, 어떻게&lt;/h2&gt;

&lt;h3&gt;어디서 탐지하는가 (탐지 위치)&lt;/h3&gt;
&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 840 260&quot; role=&quot;img&quot; aria-label=&quot;DDoS 탐지가 이루어지는 위치들&quot;&gt;
  &lt;!-- attackers --&gt;
  &lt;g fill=&quot;#ef4444&quot;&gt;
    &lt;circle cx=&quot;50&quot; cy=&quot;70&quot; r=&quot;14&quot;/&gt;&lt;circle cx=&quot;50&quot; cy=&quot;120&quot; r=&quot;14&quot;/&gt;&lt;circle cx=&quot;50&quot; cy=&quot;170&quot; r=&quot;14&quot;/&gt;
  &lt;/g&gt;
  &lt;text x=&quot;50&quot; y=&quot;205&quot; font-size=&quot;11&quot; text-anchor=&quot;middle&quot; fill=&quot;#b91c1c&quot;&gt;공격 봇들&lt;/text&gt;

  &lt;!-- source-based --&gt;
  &lt;rect x=&quot;110&quot; y=&quot;95&quot; width=&quot;90&quot; height=&quot;50&quot; rx=&quot;8&quot; fill=&quot;#0891b2&quot;/&gt;
  &lt;text x=&quot;155&quot; y=&quot;116&quot; font-size=&quot;11&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;① 발신지&lt;/text&gt;
  &lt;text x=&quot;155&quot; y=&quot;132&quot; font-size=&quot;10&quot; fill=&quot;#e0f2fe&quot; text-anchor=&quot;middle&quot;&gt;Source 기반&lt;/text&gt;

  &lt;!-- ISP / backbone --&gt;
  &lt;rect x=&quot;270&quot; y=&quot;95&quot; width=&quot;110&quot; height=&quot;50&quot; rx=&quot;8&quot; fill=&quot;#0e7490&quot;/&gt;
  &lt;text x=&quot;325&quot; y=&quot;116&quot; font-size=&quot;11&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;② ISP·백본&lt;/text&gt;
  &lt;text x=&quot;325&quot; y=&quot;132&quot; font-size=&quot;10&quot; fill=&quot;#cffafe&quot; text-anchor=&quot;middle&quot;&gt;통신사 경로&lt;/text&gt;

  &lt;!-- cloud scrubbing --&gt;
  &lt;rect x=&quot;450&quot; y=&quot;95&quot; width=&quot;120&quot; height=&quot;50&quot; rx=&quot;8&quot; fill=&quot;#2563eb&quot;/&gt;
  &lt;text x=&quot;510&quot; y=&quot;116&quot; font-size=&quot;11&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;③ 클라우드&lt;/text&gt;
  &lt;text x=&quot;510&quot; y=&quot;132&quot; font-size=&quot;10&quot; fill=&quot;#dbeafe&quot; text-anchor=&quot;middle&quot;&gt;Scrubbing 센터&lt;/text&gt;

  &lt;!-- near target --&gt;
  &lt;rect x=&quot;640&quot; y=&quot;95&quot; width=&quot;110&quot; height=&quot;50&quot; rx=&quot;8&quot; fill=&quot;#7c3aed&quot;/&gt;
  &lt;text x=&quot;695&quot; y=&quot;116&quot; font-size=&quot;11&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;④ 목적지&lt;/text&gt;
  &lt;text x=&quot;695&quot; y=&quot;132&quot; font-size=&quot;10&quot; fill=&quot;#ede9fe&quot; text-anchor=&quot;middle&quot;&gt;Target 인접&lt;/text&gt;

  &lt;!-- server --&gt;
  &lt;rect x=&quot;775&quot; y=&quot;98&quot; width=&quot;50&quot; height=&quot;44&quot; rx=&quot;6&quot; fill=&quot;#fff&quot; stroke=&quot;#334155&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;text x=&quot;800&quot; y=&quot;124&quot; font-size=&quot;10&quot; fill=&quot;#334155&quot; text-anchor=&quot;middle&quot;&gt;서버&lt;/text&gt;

  &lt;!-- flow arrows --&gt;
  &lt;g stroke=&quot;#94a3b8&quot; stroke-width=&quot;2&quot; fill=&quot;none&quot;&gt;
    &lt;line x1=&quot;64&quot; y1=&quot;120&quot; x2=&quot;108&quot; y2=&quot;120&quot; marker-end=&quot;url(#dloc)&quot;/&gt;
    &lt;line x1=&quot;200&quot; y1=&quot;120&quot; x2=&quot;268&quot; y2=&quot;120&quot; marker-end=&quot;url(#dloc)&quot;/&gt;
    &lt;line x1=&quot;380&quot; y1=&quot;120&quot; x2=&quot;448&quot; y2=&quot;120&quot; marker-end=&quot;url(#dloc)&quot;/&gt;
    &lt;line x1=&quot;570&quot; y1=&quot;120&quot; x2=&quot;638&quot; y2=&quot;120&quot; marker-end=&quot;url(#dloc)&quot;/&gt;
    &lt;line x1=&quot;750&quot; y1=&quot;120&quot; x2=&quot;773&quot; y2=&quot;120&quot; marker-end=&quot;url(#dloc)&quot;/&gt;
  &lt;/g&gt;
  &lt;text x=&quot;420&quot; y=&quot;235&quot; font-size=&quot;11.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;목적지에 가까울수록 &quot;무엇을 지키는지&quot; 잘 알지만, 이미 트래픽이 몰린 뒤라 늦다. 발신지·백본에 가까울수록 빨리 넓게 막지만, 공격 판단이 어렵다.&lt;/text&gt;

  &lt;defs&gt;&lt;marker id=&quot;dloc&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#94a3b8&quot;/&gt;&lt;/marker&gt;&lt;/defs&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 2. 탐지 위치별 특성 — 위치마다 장단점이 다르며, 현대 방어는 여러 위치를 조합한다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;h3&gt;무엇을 보는가 (탐지 지표 / Feature)&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;양적 지표&lt;/strong&gt; — 초당 비트/패킷/요청 수(bps/pps/rps), 연결 수, 대역폭&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;분포 지표&lt;/strong&gt; — 출발지 IP·포트 분포, 국가 분포, 패킷 크기 분포&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;프로토콜 지표&lt;/strong&gt; — TCP 플래그 비율(SYN/ACK), 반쯤 열린 연결 비율, 프로토콜 비율&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;행위 지표&lt;/strong&gt; — 요청 간격, User-Agent, URL 접근 패턴, 세션 지속 시간&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;어떻게 판단하는가 (탐지 평가지표)&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;&lt;tr&gt;&lt;th&gt;지표&lt;/th&gt;&lt;th&gt;의미&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;True Positive Rate (Recall / 탐지율)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;실제 공격을 공격이라고 맞힌 비율. 높을수록 놓치지 않음&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;False Positive Rate (오탐률)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;정상을 공격이라 잘못 판단한 비율. 낮아야 함&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Precision (정밀도)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;공격이라 판단한 것 중 실제 공격 비율&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;F1 Score&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;정밀도와 탐지율의 조화 평균 — 균형 지표&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Detection Latency (탐지 지연)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;공격 시작부터 탐지까지 걸린 시간. 짧을수록 좋음&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2&gt;3. 탐지 기술의 진화 타임라인&lt;/h2&gt;
&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 860 220&quot; role=&quot;img&quot; aria-label=&quot;DDoS 탐지 기술 발전 타임라인&quot;&gt;
  &lt;line x1=&quot;40&quot; y1=&quot;110&quot; x2=&quot;820&quot; y2=&quot;110&quot; stroke=&quot;#cbd5e1&quot; stroke-width=&quot;4&quot;/&gt;

  &lt;!-- era1 --&gt;
  &lt;rect x=&quot;50&quot; y=&quot;70&quot; width=&quot;250&quot; height=&quot;80&quot; rx=&quot;10&quot; fill=&quot;#ecfeff&quot; stroke=&quot;#0891b2&quot; stroke-width=&quot;1.5&quot;/&gt;
  &lt;text x=&quot;175&quot; y=&quot;92&quot; font-size=&quot;13&quot; font-weight=&quot;700&quot; fill=&quot;#0e7490&quot; text-anchor=&quot;middle&quot;&gt;1세대 · 규칙/통계&lt;/text&gt;
  &lt;text x=&quot;175&quot; y=&quot;112&quot; font-size=&quot;10.5&quot; fill=&quot;#155e75&quot; text-anchor=&quot;middle&quot;&gt;시그니처 · 임계치 · 통계&lt;/text&gt;
  &lt;text x=&quot;175&quot; y=&quot;128&quot; font-size=&quot;10.5&quot; fill=&quot;#155e75&quot; text-anchor=&quot;middle&quot;&gt;엔트로피 · 변화점 · Flow&lt;/text&gt;
  &lt;text x=&quot;175&quot; y=&quot;145&quot; font-size=&quot;10&quot; fill=&quot;#64748b&quot; text-anchor=&quot;middle&quot;&gt;1990s ~ 2000s&lt;/text&gt;

  &lt;!-- era2 --&gt;
  &lt;rect x=&quot;315&quot; y=&quot;70&quot; width=&quot;230&quot; height=&quot;80&quot; rx=&quot;10&quot; fill=&quot;#f5f3ff&quot; stroke=&quot;#7c3aed&quot; stroke-width=&quot;1.5&quot;/&gt;
  &lt;text x=&quot;430&quot; y=&quot;92&quot; font-size=&quot;13&quot; font-weight=&quot;700&quot; fill=&quot;#6d28d9&quot; text-anchor=&quot;middle&quot;&gt;2세대 · 머신러닝&lt;/text&gt;
  &lt;text x=&quot;430&quot; y=&quot;112&quot; font-size=&quot;10.5&quot; fill=&quot;#5b21b6&quot; text-anchor=&quot;middle&quot;&gt;지도학습 · 군집 · 오토인코더&lt;/text&gt;
  &lt;text x=&quot;430&quot; y=&quot;128&quot; font-size=&quot;10.5&quot; fill=&quot;#5b21b6&quot; text-anchor=&quot;middle&quot;&gt;CNN · LSTM 딥러닝&lt;/text&gt;
  &lt;text x=&quot;430&quot; y=&quot;145&quot; font-size=&quot;10&quot; fill=&quot;#64748b&quot; text-anchor=&quot;middle&quot;&gt;2010s&lt;/text&gt;

  &lt;!-- era3 --&gt;
  &lt;rect x=&quot;560&quot; y=&quot;70&quot; width=&quot;260&quot; height=&quot;80&quot; rx=&quot;10&quot; fill=&quot;#fef2f2&quot; stroke=&quot;#dc2626&quot; stroke-width=&quot;1.5&quot;/&gt;
  &lt;text x=&quot;690&quot; y=&quot;92&quot; font-size=&quot;13&quot; font-weight=&quot;700&quot; fill=&quot;#b91c1c&quot; text-anchor=&quot;middle&quot;&gt;3세대 · 지능·인프라 융합&lt;/text&gt;
  &lt;text x=&quot;690&quot; y=&quot;112&quot; font-size=&quot;10.5&quot; fill=&quot;#991b1b&quot; text-anchor=&quot;middle&quot;&gt;GNN · SDN · eBPF/XDP&lt;/text&gt;
  &lt;text x=&quot;690&quot; y=&quot;128&quot; font-size=&quot;10.5&quot; fill=&quot;#991b1b&quot; text-anchor=&quot;middle&quot;&gt;In-Network Telemetry · 연합학습&lt;/text&gt;
  &lt;text x=&quot;690&quot; y=&quot;145&quot; font-size=&quot;10&quot; fill=&quot;#64748b&quot; text-anchor=&quot;middle&quot;&gt;2020s ~&lt;/text&gt;

  &lt;polygon points=&quot;300,110 320,102 320,118&quot; fill=&quot;#94a3b8&quot;/&gt;
  &lt;polygon points=&quot;545,110 565,102 565,118&quot; fill=&quot;#94a3b8&quot;/&gt;
  &lt;text x=&quot;430&quot; y=&quot;185&quot; font-size=&quot;11&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;뒤 세대가 앞 세대를 &quot;대체&quot;하기보다 &quot;겹겹이 쌓아&quot; 함께 쓰인다.&lt;/text&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 3. DDoS 탐지 기술의 3세대 발전 흐름. 실무에서는 여러 세대를 계층적으로 결합한다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;h2&gt;4. 시그니처 기반 &lt;span class=&quot;era e1&quot;&gt;1세대&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;
가장 오래된 방식입니다. &lt;strong&gt;이미 알려진 공격의 특징(signature)&lt;/strong&gt;을 규칙으로 만들어 두고,
들어오는 패킷이 그 패턴과 일치하면 공격으로 판단합니다. 안티바이러스가 악성코드 서명을 찾는 것과 같은 원리이며,
Snort, Suricata 같은 침입탐지시스템(IDS, Intrusion Detection System)이 대표적입니다.
&lt;/p&gt;
&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 780 200&quot; role=&quot;img&quot; aria-label=&quot;시그니처 기반 탐지 개념&quot;&gt;
  &lt;rect x=&quot;30&quot; y=&quot;70&quot; width=&quot;120&quot; height=&quot;60&quot; rx=&quot;8&quot; fill=&quot;#e2e8f0&quot;/&gt;
  &lt;text x=&quot;90&quot; y=&quot;95&quot; font-size=&quot;12&quot; text-anchor=&quot;middle&quot; fill=&quot;#334155&quot; font-weight=&quot;700&quot;&gt;들어오는&lt;/text&gt;
  &lt;text x=&quot;90&quot; y=&quot;113&quot; font-size=&quot;12&quot; text-anchor=&quot;middle&quot; fill=&quot;#334155&quot; font-weight=&quot;700&quot;&gt;패킷&lt;/text&gt;

  &lt;line x1=&quot;150&quot; y1=&quot;100&quot; x2=&quot;215&quot; y2=&quot;100&quot; stroke=&quot;#334155&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#sig1)&quot;/&gt;

  &lt;rect x=&quot;220&quot; y=&quot;55&quot; width=&quot;180&quot; height=&quot;90&quot; rx=&quot;8&quot; fill=&quot;#eff4ff&quot; stroke=&quot;#2563eb&quot; stroke-width=&quot;1.5&quot;/&gt;
  &lt;text x=&quot;310&quot; y=&quot;80&quot; font-size=&quot;12&quot; text-anchor=&quot;middle&quot; fill=&quot;#1e40af&quot; font-weight=&quot;700&quot;&gt;시그니처 DB 대조&lt;/text&gt;
  &lt;text x=&quot;310&quot; y=&quot;102&quot; font-size=&quot;10.5&quot; text-anchor=&quot;middle&quot; fill=&quot;#475569&quot;&gt;&quot;SYN 플래그 + 특정 크기&quot;&lt;/text&gt;
  &lt;text x=&quot;310&quot; y=&quot;118&quot; font-size=&quot;10.5&quot; text-anchor=&quot;middle&quot; fill=&quot;#475569&quot;&gt;&quot;동일 페이로드 반복&quot; ...&lt;/text&gt;

  &lt;line x1=&quot;400&quot; y1=&quot;85&quot; x2=&quot;470&quot; y2=&quot;70&quot; stroke=&quot;#dc2626&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#sigR)&quot;/&gt;
  &lt;line x1=&quot;400&quot; y1=&quot;115&quot; x2=&quot;470&quot; y2=&quot;130&quot; stroke=&quot;#16a34a&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#sigG)&quot;/&gt;

  &lt;rect x=&quot;475&quot; y=&quot;48&quot; width=&quot;140&quot; height=&quot;46&quot; rx=&quot;8&quot; fill=&quot;#fee2e2&quot; stroke=&quot;#dc2626&quot;/&gt;
  &lt;text x=&quot;545&quot; y=&quot;76&quot; font-size=&quot;12&quot; text-anchor=&quot;middle&quot; fill=&quot;#b91c1c&quot; font-weight=&quot;700&quot;&gt;일치 → 공격 차단&lt;/text&gt;
  &lt;rect x=&quot;475&quot; y=&quot;110&quot; width=&quot;140&quot; height=&quot;46&quot; rx=&quot;8&quot; fill=&quot;#dcfce7&quot; stroke=&quot;#16a34a&quot;/&gt;
  &lt;text x=&quot;545&quot; y=&quot;138&quot; font-size=&quot;12&quot; text-anchor=&quot;middle&quot; fill=&quot;#166534&quot; font-weight=&quot;700&quot;&gt;불일치 → 통과&lt;/text&gt;

  &lt;text x=&quot;545&quot; y=&quot;185&quot; font-size=&quot;10.5&quot; text-anchor=&quot;middle&quot; fill=&quot;#b91c1c&quot;&gt;약점: DB에 없는 새 공격(zero-day)은 못 잡는다&lt;/text&gt;
  &lt;defs&gt;
    &lt;marker id=&quot;sig1&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#334155&quot;/&gt;&lt;/marker&gt;
    &lt;marker id=&quot;sigR&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#dc2626&quot;/&gt;&lt;/marker&gt;
    &lt;marker id=&quot;sigG&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#16a34a&quot;/&gt;&lt;/marker&gt;
  &lt;/defs&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 4. 시그니처 기반 — 알려진 패턴과 대조. 빠르고 정확하지만 새로운 공격에 취약.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;장점&lt;/strong&gt; 오탐이 적고 빠름, 알려진 공격에 정확. &lt;strong&gt;단점&lt;/strong&gt; 새로운(변형) 공격 탐지 불가, 시그니처를 계속 갱신해야 함.&lt;/p&gt;

&lt;h2&gt;5. 임계치 / 속도 기반 &lt;span class=&quot;era e1&quot;&gt;1세대&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;
&quot;초당 요청이 &lt;code&gt;10,000&lt;/code&gt;건을 넘으면 경보&quot;처럼 &lt;strong&gt;정해진 한계값(threshold)&lt;/strong&gt;을 넘으면
공격으로 보는 가장 단순·직관적인 방법입니다. 라우터·방화벽의 Rate Limiting과도 직결됩니다.
&lt;/p&gt;
&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 780 240&quot; role=&quot;img&quot; aria-label=&quot;임계치 기반 탐지 그래프&quot;&gt;
  &lt;line x1=&quot;60&quot; y1=&quot;200&quot; x2=&quot;740&quot; y2=&quot;200&quot; stroke=&quot;#94a3b8&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;line x1=&quot;60&quot; y1=&quot;30&quot; x2=&quot;60&quot; y2=&quot;200&quot; stroke=&quot;#94a3b8&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;text x=&quot;30&quot; y=&quot;40&quot; font-size=&quot;11&quot; fill=&quot;#64748b&quot;&gt;rps&lt;/text&gt;

  &lt;!-- threshold line --&gt;
  &lt;line x1=&quot;60&quot; y1=&quot;90&quot; x2=&quot;740&quot; y2=&quot;90&quot; stroke=&quot;#dc2626&quot; stroke-width=&quot;2&quot; stroke-dasharray=&quot;6 4&quot;/&gt;
  &lt;text x=&quot;620&quot; y=&quot;83&quot; font-size=&quot;11.5&quot; fill=&quot;#dc2626&quot; font-weight=&quot;700&quot;&gt;임계치(threshold)&lt;/text&gt;

  &lt;!-- traffic --&gt;
  &lt;path d=&quot;M60,175 L140,178 L220,170 L300,172 L360,150 L410,95 L440,55 L470,50 L520,120 L600,168 L740,172&quot;
        fill=&quot;none&quot; stroke=&quot;#2563eb&quot; stroke-width=&quot;2.5&quot;/&gt;
  &lt;!-- exceed region --&gt;
  &lt;rect x=&quot;392&quot; y=&quot;30&quot; width=&quot;96&quot; height=&quot;170&quot; fill=&quot;#fecaca&quot; opacity=&quot;0.4&quot;/&gt;
  &lt;text x=&quot;440&quot; y=&quot;45&quot; font-size=&quot;11&quot; fill=&quot;#b91c1c&quot; font-weight=&quot;700&quot; text-anchor=&quot;middle&quot;&gt;임계치 초과 → 경보&lt;/text&gt;

  &lt;text x=&quot;400&quot; y=&quot;228&quot; font-size=&quot;11&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;약점: 임계치가 낮으면 정상 급증을 오탐, 높으면 저용량 L7 공격을 놓친다(고정값의 딜레마)&lt;/text&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 5. 임계치 기반 — 값을 넘으면 경보. 단순하지만 &quot;임계치 설정&quot;이 늘 딜레마다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;
정적(고정) 임계치의 한계를 보완하기 위해, 요일·시간대별로 기준을 바꾸는 &lt;strong&gt;적응형(adaptive) 임계치&lt;/strong&gt;가 발전했고,
이는 다음의 &quot;통계적 이상 탐지&quot;로 이어집니다.
&lt;/p&gt;

&lt;h2&gt;6. 통계적 이상 탐지 &lt;span class=&quot;era e1&quot;&gt;1세대&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;
평상시 트래픽의 &lt;strong&gt;정상 기준선(baseline)&lt;/strong&gt;을 통계적으로 학습한 뒤, 평균(mean)에서 표준편차(standard deviation)의
몇 배 이상 벗어나면 이상으로 판단합니다. 이동평균(moving average), &lt;code&gt;3-sigma&lt;/code&gt; 규칙 등이 대표적입니다.
&lt;/p&gt;
&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 780 240&quot; role=&quot;img&quot; aria-label=&quot;통계적 기준선과 편차 밴드&quot;&gt;
  &lt;line x1=&quot;60&quot; y1=&quot;200&quot; x2=&quot;740&quot; y2=&quot;200&quot; stroke=&quot;#94a3b8&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;line x1=&quot;60&quot; y1=&quot;30&quot; x2=&quot;60&quot; y2=&quot;200&quot; stroke=&quot;#94a3b8&quot; stroke-width=&quot;2&quot;/&gt;

  &lt;!-- normal band --&gt;
  &lt;rect x=&quot;60&quot; y=&quot;120&quot; width=&quot;680&quot; height=&quot;60&quot; fill=&quot;#dcfce7&quot; opacity=&quot;0.7&quot;/&gt;
  &lt;line x1=&quot;60&quot; y1=&quot;150&quot; x2=&quot;740&quot; y2=&quot;150&quot; stroke=&quot;#16a34a&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;text x=&quot;120&quot; y=&quot;143&quot; font-size=&quot;11&quot; fill=&quot;#166534&quot; font-weight=&quot;700&quot;&gt;평균(baseline)&lt;/text&gt;
  &lt;text x=&quot;620&quot; y=&quot;135&quot; font-size=&quot;10.5&quot; fill=&quot;#166534&quot;&gt;정상 범위(±kσ)&lt;/text&gt;

  &lt;!-- traffic --&gt;
  &lt;path d=&quot;M60,160 L150,155 L240,162 L330,150 L400,145 L450,70 L480,55 L520,140 L620,158 L740,155&quot;
        fill=&quot;none&quot; stroke=&quot;#2563eb&quot; stroke-width=&quot;2.5&quot;/&gt;
  &lt;circle cx=&quot;465&quot; cy=&quot;60&quot; r=&quot;7&quot; fill=&quot;#dc2626&quot;/&gt;
  &lt;text x=&quot;465&quot; y=&quot;45&quot; font-size=&quot;11&quot; fill=&quot;#b91c1c&quot; font-weight=&quot;700&quot; text-anchor=&quot;middle&quot;&gt;밴드 이탈 → 이상&lt;/text&gt;

  &lt;text x=&quot;400&quot; y=&quot;228&quot; font-size=&quot;11&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;기준선을 데이터로 학습하므로 고정 임계치보다 유연하다. 단, 기준선 학습 기간과 계절성 반영이 관건.&lt;/text&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 6. 통계적 이상 탐지 — 정상 밴드(평균 ± k·표준편차)를 벗어나면 이상으로 본다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;h2&gt;7. 엔트로피 기반 &lt;span class=&quot;era e1&quot;&gt;1세대&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;
DDoS 탐지에서 매우 중요한 고전 기법입니다. &lt;strong&gt;엔트로피(entropy)&lt;/strong&gt;는 &quot;무질서·불확실성의 정도&quot;를 수치로 나타냅니다.
정상 트래픽은 출발지 IP가 다양하게 흩어져 있어 엔트로피가 일정 범위를 유지하지만, 공격이 시작되면 이 분포가 급격히 바뀝니다.
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;출발지 IP 엔트로피 급감&lt;/strong&gt; — 소수의 공격 IP가 트래픽을 지배하면 분포가 한쪽으로 쏠려 엔트로피가 떨어진다.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;목적지 IP 엔트로피 급감&lt;/strong&gt; — 한 대상에 트래픽이 집중되면서 목적지 다양성이 줄어든다.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;스푸핑 공격 시 출발지 엔트로피 급증&lt;/strong&gt; — 무작위로 위조된 IP가 쏟아지면 오히려 분포가 지나치게 넓어진다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 800 250&quot; role=&quot;img&quot; aria-label=&quot;엔트로피 기반 탐지: 출발지와 목적지 분포 변화&quot;&gt;
  &lt;!-- left: normal --&gt;
  &lt;text x=&quot;200&quot; y=&quot;30&quot; font-size=&quot;13&quot; font-weight=&quot;700&quot; fill=&quot;#166534&quot; text-anchor=&quot;middle&quot;&gt;정상 — 출발지 다양&lt;/text&gt;
  &lt;g fill=&quot;#16a34a&quot;&gt;
    &lt;circle cx=&quot;90&quot; cy=&quot;70&quot; r=&quot;9&quot;/&gt;&lt;circle cx=&quot;140&quot; cy=&quot;95&quot; r=&quot;9&quot;/&gt;&lt;circle cx=&quot;120&quot; cy=&quot;130&quot; r=&quot;9&quot;/&gt;
    &lt;circle cx=&quot;200&quot; cy=&quot;80&quot; r=&quot;9&quot;/&gt;&lt;circle cx=&quot;250&quot; cy=&quot;120&quot; r=&quot;9&quot;/&gt;&lt;circle cx=&quot;180&quot; cy=&quot;150&quot; r=&quot;9&quot;/&gt;
    &lt;circle cx=&quot;290&quot; cy=&quot;90&quot; r=&quot;9&quot;/&gt;&lt;circle cx=&quot;240&quot; cy=&quot;70&quot; r=&quot;9&quot;/&gt;
  &lt;/g&gt;
  &lt;text x=&quot;200&quot; y=&quot;185&quot; font-size=&quot;12&quot; fill=&quot;#166534&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;엔트로피 높고 안정적&lt;/text&gt;

  &lt;line x1=&quot;400&quot; y1=&quot;50&quot; x2=&quot;400&quot; y2=&quot;200&quot; stroke=&quot;#cbd5e1&quot; stroke-width=&quot;2&quot; stroke-dasharray=&quot;4 4&quot;/&gt;

  &lt;!-- right: attack --&gt;
  &lt;text x=&quot;600&quot; y=&quot;30&quot; font-size=&quot;13&quot; font-weight=&quot;700&quot; fill=&quot;#b91c1c&quot; text-anchor=&quot;middle&quot;&gt;공격 — 소수 IP 집중&lt;/text&gt;
  &lt;g fill=&quot;#dc2626&quot;&gt;
    &lt;circle cx=&quot;560&quot; cy=&quot;70&quot; r=&quot;16&quot;/&gt;&lt;circle cx=&quot;620&quot; cy=&quot;130&quot; r=&quot;16&quot;/&gt;&lt;circle cx=&quot;600&quot; cy=&quot;95&quot; r=&quot;15&quot;/&gt;
  &lt;/g&gt;
  &lt;circle cx=&quot;670&quot; cy=&quot;150&quot; r=&quot;6&quot; fill=&quot;#16a34a&quot;/&gt;
  &lt;text x=&quot;600&quot; y=&quot;185&quot; font-size=&quot;12&quot; fill=&quot;#b91c1c&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;출발지 엔트로피 급감 → 경보&lt;/text&gt;

  &lt;text x=&quot;400&quot; y=&quot;235&quot; font-size=&quot;11&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;엔트로피는 &quot;얼마나 많이&quot;가 아니라 &quot;얼마나 고르게 분포하는가&quot;를 보므로, 규모가 작은 공격도 분포 왜곡으로 잡아낼 수 있다.&lt;/text&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 7. 엔트로피 기반 — 트래픽의 분포(다양성) 변화를 포착한다. 규모가 아닌 &quot;쏠림&quot;을 본다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class=&quot;callout info&quot;&gt;
  &lt;span class=&quot;tag&quot;&gt;왜 엔트로피가 강력한가&lt;/span&gt;
  단순 트래픽 양(bps/pps)만 보면 저용량 공격을 놓치기 쉽습니다. 하지만 엔트로피는 &lt;strong&gt;분포의 왜곡&lt;/strong&gt;을
  포착하기 때문에, 트래픽 총량이 크게 늘지 않아도 &quot;소수가 지배하는&quot; 이상 상태를 감지할 수 있습니다.
&lt;/div&gt;

&lt;h2&gt;8. 변화점 탐지 (CUSUM / EWMA) &lt;span class=&quot;era e1&quot;&gt;1세대&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;
&lt;strong&gt;변화점 탐지(Change-point Detection)&lt;/strong&gt;는 시계열 데이터에서 통계적 성질이 &quot;갑자기 바뀌는 순간&quot;을 수학적으로
포착합니다. 대표 알고리즘은 &lt;strong&gt;CUSUM(Cumulative Sum, 누적합)&lt;/strong&gt;과
&lt;strong&gt;EWMA(Exponentially Weighted Moving Average, 지수가중이동평균)&lt;/strong&gt;입니다.
CUSUM은 평균에서 벗어난 편차를 계속 누적하다가, 누적값이 한계를 넘으면 &quot;변화가 일어났다&quot;고 판단합니다.
&lt;/p&gt;
&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 780 230&quot; role=&quot;img&quot; aria-label=&quot;CUSUM 누적합 변화점 탐지&quot;&gt;
  &lt;line x1=&quot;60&quot; y1=&quot;190&quot; x2=&quot;740&quot; y2=&quot;190&quot; stroke=&quot;#94a3b8&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;line x1=&quot;60&quot; y1=&quot;30&quot; x2=&quot;60&quot; y2=&quot;190&quot; stroke=&quot;#94a3b8&quot; stroke-width=&quot;2&quot;/&gt;
  &lt;text x=&quot;30&quot; y=&quot;40&quot; font-size=&quot;11&quot; fill=&quot;#64748b&quot;&gt;누적합&lt;/text&gt;

  &lt;line x1=&quot;60&quot; y1=&quot;80&quot; x2=&quot;740&quot; y2=&quot;80&quot; stroke=&quot;#dc2626&quot; stroke-width=&quot;2&quot; stroke-dasharray=&quot;6 4&quot;/&gt;
  &lt;text x=&quot;610&quot; y=&quot;73&quot; font-size=&quot;11&quot; fill=&quot;#dc2626&quot; font-weight=&quot;700&quot;&gt;경보 한계(threshold)&lt;/text&gt;

  &lt;!-- flat then rising --&gt;
  &lt;path d=&quot;M60,178 L160,176 L260,179 L360,177 L410,172 L450,150 L490,120 L520,95 L545,78 L580,55 L640,40 L720,35&quot;
        fill=&quot;none&quot; stroke=&quot;#2563eb&quot; stroke-width=&quot;2.5&quot;/&gt;
  &lt;line x1=&quot;410&quot; y1=&quot;30&quot; x2=&quot;410&quot; y2=&quot;190&quot; stroke=&quot;#f59e0b&quot; stroke-width=&quot;1.5&quot; stroke-dasharray=&quot;3 3&quot;/&gt;
  &lt;text x=&quot;410&quot; y=&quot;210&quot; font-size=&quot;10.5&quot; fill=&quot;#b45309&quot; text-anchor=&quot;middle&quot;&gt;공격 시작(변화점)&lt;/text&gt;
  &lt;circle cx=&quot;545&quot; cy=&quot;78&quot; r=&quot;7&quot; fill=&quot;#dc2626&quot;/&gt;
  &lt;text x=&quot;560&quot; y=&quot;70&quot; font-size=&quot;10.5&quot; fill=&quot;#b91c1c&quot; font-weight=&quot;700&quot;&gt;한계 돌파 → 탐지&lt;/text&gt;

  &lt;text x=&quot;400&quot; y=&quot;225&quot; font-size=&quot;10.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;평소엔 누적합이 0 근처를 맴돌다가, 변화가 생기면 누적값이 빠르게 상승해 빠른 탐지가 가능하다.&lt;/text&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 8. CUSUM — 작은 편차를 누적해 변화의 순간을 빠르게 포착. 급작스런 공격 개시에 강하다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;h2&gt;9. 흐름 기반 탐지 (NetFlow / sFlow / IPFIX) &lt;span class=&quot;era e1&quot;&gt;1세대&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;
대규모 네트워크에서는 모든 패킷을 일일이 검사할 수 없습니다. 그래서 라우터·스위치가 트래픽을
&lt;strong&gt;&quot;흐름(flow)&quot; 단위로 요약&lt;/strong&gt;해 수집기로 보내고, 이 요약 데이터를 분석합니다. 하나의 흐름은
&quot;같은 출발지·목적지 IP/포트/프로토콜&quot;을 공유하는 패킷 묶음입니다.
&lt;strong&gt;NetFlow&lt;/strong&gt;(Cisco), &lt;strong&gt;sFlow&lt;/strong&gt;(샘플링 기반), &lt;strong&gt;IPFIX&lt;/strong&gt;(표준)가 대표 기술입니다.
&lt;/p&gt;
&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 800 230&quot; role=&quot;img&quot; aria-label=&quot;Flow 기반 탐지 수집 구조&quot;&gt;
  &lt;!-- routers --&gt;
  &lt;g&gt;
    &lt;rect x=&quot;40&quot; y=&quot;50&quot; width=&quot;90&quot; height=&quot;40&quot; rx=&quot;6&quot; fill=&quot;#0e7490&quot;/&gt;&lt;text x=&quot;85&quot; y=&quot;75&quot; font-size=&quot;11&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot;&gt;라우터 A&lt;/text&gt;
    &lt;rect x=&quot;40&quot; y=&quot;105&quot; width=&quot;90&quot; height=&quot;40&quot; rx=&quot;6&quot; fill=&quot;#0e7490&quot;/&gt;&lt;text x=&quot;85&quot; y=&quot;130&quot; font-size=&quot;11&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot;&gt;스위치 B&lt;/text&gt;
    &lt;rect x=&quot;40&quot; y=&quot;160&quot; width=&quot;90&quot; height=&quot;40&quot; rx=&quot;6&quot; fill=&quot;#0e7490&quot;/&gt;&lt;text x=&quot;85&quot; y=&quot;185&quot; font-size=&quot;11&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot;&gt;라우터 C&lt;/text&gt;
  &lt;/g&gt;
  &lt;!-- collector --&gt;
  &lt;rect x=&quot;300&quot; y=&quot;95&quot; width=&quot;150&quot; height=&quot;60&quot; rx=&quot;8&quot; fill=&quot;#2563eb&quot;/&gt;
  &lt;text x=&quot;375&quot; y=&quot;120&quot; font-size=&quot;12&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;Flow 수집기&lt;/text&gt;
  &lt;text x=&quot;375&quot; y=&quot;138&quot; font-size=&quot;10&quot; fill=&quot;#dbeafe&quot; text-anchor=&quot;middle&quot;&gt;(Collector)&lt;/text&gt;
  &lt;!-- analyzer --&gt;
  &lt;rect x=&quot;560&quot; y=&quot;95&quot; width=&quot;180&quot; height=&quot;60&quot; rx=&quot;8&quot; fill=&quot;#7c3aed&quot;/&gt;
  &lt;text x=&quot;650&quot; y=&quot;118&quot; font-size=&quot;12&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;이상 분석 엔진&lt;/text&gt;
  &lt;text x=&quot;650&quot; y=&quot;136&quot; font-size=&quot;10&quot; fill=&quot;#ede9fe&quot; text-anchor=&quot;middle&quot;&gt;통계·엔트로피·ML 적용&lt;/text&gt;

  &lt;g stroke=&quot;#94a3b8&quot; stroke-width=&quot;2&quot; fill=&quot;none&quot;&gt;
    &lt;line x1=&quot;130&quot; y1=&quot;70&quot; x2=&quot;298&quot; y2=&quot;115&quot; marker-end=&quot;url(#fl)&quot;/&gt;
    &lt;line x1=&quot;130&quot; y1=&quot;125&quot; x2=&quot;298&quot; y2=&quot;125&quot; marker-end=&quot;url(#fl)&quot;/&gt;
    &lt;line x1=&quot;130&quot; y1=&quot;180&quot; x2=&quot;298&quot; y2=&quot;135&quot; marker-end=&quot;url(#fl)&quot;/&gt;
    &lt;line x1=&quot;450&quot; y1=&quot;125&quot; x2=&quot;558&quot; y2=&quot;125&quot; marker-end=&quot;url(#fl)&quot;/&gt;
  &lt;/g&gt;
  &lt;text x=&quot;215&quot; y=&quot;40&quot; font-size=&quot;10.5&quot; fill=&quot;#475569&quot;&gt;flow 레코드 전송&lt;/text&gt;
  &lt;text x=&quot;400&quot; y=&quot;210&quot; font-size=&quot;11&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;패킷 전량이 아닌 &quot;요약 흐름&quot;만 보내므로, Tbps급 백본에서도 실시간 광역 탐지가 가능하다. (통신사·Arbor 계열의 핵심 방식)&lt;/text&gt;
  &lt;defs&gt;&lt;marker id=&quot;fl&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#94a3b8&quot;/&gt;&lt;/marker&gt;&lt;/defs&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 9. 흐름 기반 탐지 — 장비가 요약한 flow를 모아 분석. 대규모 네트워크 광역 탐지의 표준.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;div class=&quot;callout info&quot;&gt;
  &lt;span class=&quot;tag&quot;&gt;이 분야의 대표 이름 — Arbor(NETSCOUT Arbor)&lt;/span&gt;
  흐름 기반 탐지 하면 빠지지 않는 이름이 &lt;strong&gt;Arbor Networks&lt;/strong&gt;입니다. 2000년경 미국 미시간대학교 연구에서 출발해
  &lt;strong&gt;통신사(ISP)급 DDoS 탐지의 원조&lt;/strong&gt;로 자리 잡았고, 2015년 &lt;strong&gt;NETSCOUT&lt;/strong&gt;에 인수되어 지금은 &quot;NETSCOUT Arbor&quot;로 불립니다.
  &lt;ul style=&quot;margin-top:.5em;&quot;&gt;
    &lt;li&gt;&lt;strong&gt;Sightline&lt;/strong&gt;(구 Peakflow) — 통신사 백본의 &lt;strong&gt;NetFlow/sFlow/IPFIX&lt;/strong&gt; 흐름을 분석해 초대형 트래픽 이상을 광역으로 탐지. 바로 이 챕터에서 설명한 방식의 대표 상용 솔루션입니다.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;TMS / AED(Arbor Edge Defense)&lt;/strong&gt; — 탐지된 공격 트래픽을 실제로 정화·차단하는 완화 장비.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;ATLAS&lt;/strong&gt; — 전 세계 통신사와 제휴해 인터넷 트래픽 상당 부분을 관측하는 글로벌 위협 인텔리전스. 연례 DDoS 위협 보고서(WISR)로도 유명합니다.&lt;/li&gt;
  &lt;/ul&gt;
  즉 Arbor는 &lt;strong&gt;&quot;흐름 기반 광역 탐지 + 대규모 완화 + 위협 인텔리전스&quot;&lt;/strong&gt;를 한데 묶어 통신사·대기업에 오래 공급해 온 대표 브랜드입니다.
&lt;/div&gt;

&lt;h2&gt;10. 지도 학습 머신러닝 &lt;span class=&quot;era e2&quot;&gt;2세대&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;
2010년대부터 &lt;strong&gt;머신러닝(Machine Learning)&lt;/strong&gt;이 본격 도입됩니다. 지도 학습(supervised learning)은
&quot;정상&quot;과 &quot;공격&quot;으로 &lt;strong&gt;이미 라벨이 붙은 데이터&lt;/strong&gt;로 모델을 훈련시켜, 새 트래픽을 분류하게 합니다.
흐름에서 여러 특징(feature)을 뽑아 입력으로 씁니다.
&lt;/p&gt;
&lt;p&gt;대표 알고리즘: &lt;strong&gt;Decision Tree(의사결정나무), Random Forest(랜덤 포레스트), SVM(Support Vector Machine, 서포트 벡터 머신), K-NN, Naive Bayes, XGBoost&lt;/strong&gt; 등.&lt;/p&gt;
&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 820 210&quot; role=&quot;img&quot; aria-label=&quot;머신러닝 기반 탐지 파이프라인&quot;&gt;
  &lt;rect x=&quot;20&quot; y=&quot;80&quot; width=&quot;130&quot; height=&quot;55&quot; rx=&quot;8&quot; fill=&quot;#e2e8f0&quot;/&gt;
  &lt;text x=&quot;85&quot; y=&quot;102&quot; font-size=&quot;11&quot; text-anchor=&quot;middle&quot; fill=&quot;#334155&quot; font-weight=&quot;700&quot;&gt;트래픽 / Flow&lt;/text&gt;
  &lt;text x=&quot;85&quot; y=&quot;120&quot; font-size=&quot;10&quot; text-anchor=&quot;middle&quot; fill=&quot;#475569&quot;&gt;원시 데이터&lt;/text&gt;

  &lt;line x1=&quot;150&quot; y1=&quot;107&quot; x2=&quot;205&quot; y2=&quot;107&quot; stroke=&quot;#334155&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#ml1)&quot;/&gt;

  &lt;rect x=&quot;210&quot; y=&quot;80&quot; width=&quot;140&quot; height=&quot;55&quot; rx=&quot;8&quot; fill=&quot;#eff4ff&quot; stroke=&quot;#2563eb&quot;/&gt;
  &lt;text x=&quot;280&quot; y=&quot;102&quot; font-size=&quot;11&quot; text-anchor=&quot;middle&quot; fill=&quot;#1e40af&quot; font-weight=&quot;700&quot;&gt;특징 추출&lt;/text&gt;
  &lt;text x=&quot;280&quot; y=&quot;120&quot; font-size=&quot;10&quot; text-anchor=&quot;middle&quot; fill=&quot;#475569&quot;&gt;pps, 엔트로피, 플래그비율…&lt;/text&gt;

  &lt;line x1=&quot;350&quot; y1=&quot;107&quot; x2=&quot;405&quot; y2=&quot;107&quot; stroke=&quot;#334155&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#ml1)&quot;/&gt;

  &lt;rect x=&quot;410&quot; y=&quot;80&quot; width=&quot;140&quot; height=&quot;55&quot; rx=&quot;8&quot; fill=&quot;#f5f3ff&quot; stroke=&quot;#7c3aed&quot;/&gt;
  &lt;text x=&quot;480&quot; y=&quot;102&quot; font-size=&quot;11&quot; text-anchor=&quot;middle&quot; fill=&quot;#6d28d9&quot; font-weight=&quot;700&quot;&gt;학습된 모델&lt;/text&gt;
  &lt;text x=&quot;480&quot; y=&quot;120&quot; font-size=&quot;10&quot; text-anchor=&quot;middle&quot; fill=&quot;#475569&quot;&gt;RandomForest / SVM…&lt;/text&gt;

  &lt;line x1=&quot;550&quot; y1=&quot;95&quot; x2=&quot;620&quot; y2=&quot;78&quot; stroke=&quot;#dc2626&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#mlR)&quot;/&gt;
  &lt;line x1=&quot;550&quot; y1=&quot;120&quot; x2=&quot;620&quot; y2=&quot;140&quot; stroke=&quot;#16a34a&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#mlG)&quot;/&gt;
  &lt;rect x=&quot;625&quot; y=&quot;55&quot; width=&quot;150&quot; height=&quot;42&quot; rx=&quot;8&quot; fill=&quot;#fee2e2&quot; stroke=&quot;#dc2626&quot;/&gt;
  &lt;text x=&quot;700&quot; y=&quot;81&quot; font-size=&quot;11&quot; text-anchor=&quot;middle&quot; fill=&quot;#b91c1c&quot; font-weight=&quot;700&quot;&gt;공격(Attack)&lt;/text&gt;
  &lt;rect x=&quot;625&quot; y=&quot;120&quot; width=&quot;150&quot; height=&quot;42&quot; rx=&quot;8&quot; fill=&quot;#dcfce7&quot; stroke=&quot;#16a34a&quot;/&gt;
  &lt;text x=&quot;700&quot; y=&quot;146&quot; font-size=&quot;11&quot; text-anchor=&quot;middle&quot; fill=&quot;#166534&quot; font-weight=&quot;700&quot;&gt;정상(Benign)&lt;/text&gt;

  &lt;text x=&quot;400&quot; y=&quot;195&quot; font-size=&quot;10.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;장점: 알려지지 않은 변형도 특징으로 분류 가능 · 단점: 좋은 라벨 데이터가 대량으로 필요, 새 공격 유형엔 재학습 필요&lt;/text&gt;
  &lt;defs&gt;
    &lt;marker id=&quot;ml1&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#334155&quot;/&gt;&lt;/marker&gt;
    &lt;marker id=&quot;mlR&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#dc2626&quot;/&gt;&lt;/marker&gt;
    &lt;marker id=&quot;mlG&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#16a34a&quot;/&gt;&lt;/marker&gt;
  &lt;/defs&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 10. 지도 학습 파이프라인 — 특징 추출 → 학습 모델 → 정상/공격 분류. (CIC-IDS, NSL-KDD 등 공개 데이터셋 활용)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;h2&gt;11. 비지도 이상 탐지 (Unsupervised / Autoencoder) &lt;span class=&quot;era e2&quot;&gt;2세대&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;
실제 공격 데이터는 구하기 어렵고, 새로운 공격은 라벨이 없습니다. &lt;strong&gt;비지도 학습(unsupervised)&lt;/strong&gt;은
라벨 없이 &lt;strong&gt;&quot;정상만 학습&quot;&lt;/strong&gt;한 뒤, 정상에서 벗어난 것을 이상(anomaly)으로 봅니다.
군집화(K-means, DBSCAN), &lt;strong&gt;Isolation Forest&lt;/strong&gt;, &lt;strong&gt;One-Class SVM&lt;/strong&gt;,
그리고 &lt;strong&gt;오토인코더(Autoencoder)&lt;/strong&gt;가 대표적입니다.
&lt;/p&gt;
&lt;p&gt;
오토인코더는 입력을 압축했다가 다시 복원하도록 학습한 신경망입니다. 정상 트래픽은 잘 복원하지만,
공격처럼 낯선 입력은 복원이 서툴러 &lt;strong&gt;복원 오차(reconstruction error)&lt;/strong&gt;가 커집니다. 이 오차가 크면 이상으로 판단합니다.
&lt;/p&gt;
&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 800 240&quot; role=&quot;img&quot; aria-label=&quot;오토인코더 복원 오차 기반 이상 탐지&quot;&gt;
  &lt;!-- encoder-decoder shape --&gt;
  &lt;polygon points=&quot;80,60 80,180 160,150 160,90&quot; fill=&quot;#dbeafe&quot; stroke=&quot;#2563eb&quot;/&gt;
  &lt;text x=&quot;120&quot; y=&quot;125&quot; font-size=&quot;10&quot; text-anchor=&quot;middle&quot; fill=&quot;#1e40af&quot;&gt;Encoder&lt;/text&gt;
  &lt;rect x=&quot;160&quot; y=&quot;100&quot; width=&quot;40&quot; height=&quot;40&quot; fill=&quot;#93c5fd&quot; stroke=&quot;#2563eb&quot;/&gt;
  &lt;text x=&quot;180&quot; y=&quot;124&quot; font-size=&quot;9&quot; text-anchor=&quot;middle&quot; fill=&quot;#1e3a8a&quot;&gt;압축&lt;/text&gt;
  &lt;polygon points=&quot;200,90 200,150 280,180 280,60&quot; fill=&quot;#dbeafe&quot; stroke=&quot;#2563eb&quot;/&gt;
  &lt;text x=&quot;240&quot; y=&quot;125&quot; font-size=&quot;10&quot; text-anchor=&quot;middle&quot; fill=&quot;#1e40af&quot;&gt;Decoder&lt;/text&gt;

  &lt;text x=&quot;60&quot; y=&quot;50&quot; font-size=&quot;10&quot; fill=&quot;#475569&quot;&gt;입력&lt;/text&gt;
  &lt;text x=&quot;300&quot; y=&quot;50&quot; font-size=&quot;10&quot; fill=&quot;#475569&quot;&gt;복원 출력&lt;/text&gt;

  &lt;!-- normal --&gt;
  &lt;line x1=&quot;320&quot; y1=&quot;90&quot; x2=&quot;420&quot; y2=&quot;90&quot; stroke=&quot;#16a34a&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#ae1)&quot;/&gt;
  &lt;rect x=&quot;425&quot; y=&quot;68&quot; width=&quot;180&quot; height=&quot;44&quot; rx=&quot;8&quot; fill=&quot;#dcfce7&quot; stroke=&quot;#16a34a&quot;/&gt;
  &lt;text x=&quot;515&quot; y=&quot;88&quot; font-size=&quot;11&quot; text-anchor=&quot;middle&quot; fill=&quot;#166534&quot; font-weight=&quot;700&quot;&gt;정상: 복원 오차 작음&lt;/text&gt;
  &lt;text x=&quot;515&quot; y=&quot;104&quot; font-size=&quot;10&quot; text-anchor=&quot;middle&quot; fill=&quot;#166534&quot;&gt;→ 정상 판정&lt;/text&gt;

  &lt;!-- attack --&gt;
  &lt;line x1=&quot;320&quot; y1=&quot;160&quot; x2=&quot;420&quot; y2=&quot;160&quot; stroke=&quot;#dc2626&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#ae2)&quot;/&gt;
  &lt;rect x=&quot;425&quot; y=&quot;140&quot; width=&quot;180&quot; height=&quot;44&quot; rx=&quot;8&quot; fill=&quot;#fee2e2&quot; stroke=&quot;#dc2626&quot;/&gt;
  &lt;text x=&quot;515&quot; y=&quot;160&quot; font-size=&quot;11&quot; text-anchor=&quot;middle&quot; fill=&quot;#b91c1c&quot; font-weight=&quot;700&quot;&gt;공격: 복원 오차 큼&lt;/text&gt;
  &lt;text x=&quot;515&quot; y=&quot;176&quot; font-size=&quot;10&quot; text-anchor=&quot;middle&quot; fill=&quot;#b91c1c&quot;&gt;→ 이상 판정&lt;/text&gt;

  &lt;text x=&quot;400&quot; y=&quot;222&quot; font-size=&quot;10.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;공격 데이터 없이 &quot;정상&quot;만으로 학습 가능 → 새로운(zero-day) 공격 탐지에 유리하다.&lt;/text&gt;
  &lt;defs&gt;
    &lt;marker id=&quot;ae1&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#16a34a&quot;/&gt;&lt;/marker&gt;
    &lt;marker id=&quot;ae2&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#dc2626&quot;/&gt;&lt;/marker&gt;
  &lt;/defs&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 11. 오토인코더 — 정상만 학습 후 &quot;복원이 서툰&quot; 입력을 이상으로 탐지. 미지의 공격에 강하다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;h2&gt;12. 딥러닝 (CNN / LSTM) &lt;span class=&quot;era e2&quot;&gt;2세대&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;
딥러닝은 사람이 일일이 특징을 설계하지 않아도 &lt;strong&gt;데이터에서 특징을 스스로 학습&lt;/strong&gt;합니다.
DDoS 탐지에서 두 구조가 특히 많이 쓰입니다.
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;CNN(Convolutional Neural Network, 합성곱 신경망)&lt;/strong&gt; — 트래픽을 이미지·행렬 형태로 바꿔 공간적 패턴을 학습.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;RNN 계열 · LSTM(Long Short-Term Memory)&lt;/strong&gt; — 트래픽은 시간 순서가 있는 &lt;strong&gt;시계열(time series)&lt;/strong&gt;이므로,
  시간에 따른 변화 패턴을 기억하며 학습. 공격의 &quot;시간적 리듬&quot;을 포착하는 데 강력.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 800 210&quot; role=&quot;img&quot; aria-label=&quot;LSTM 시계열 기반 DDoS 탐지&quot;&gt;
  &lt;text x=&quot;60&quot; y=&quot;40&quot; font-size=&quot;11&quot; fill=&quot;#475569&quot;&gt;시간에 따른 트래픽 (t1 → t5)&lt;/text&gt;
  &lt;g&gt;
    &lt;rect x=&quot;50&quot; y=&quot;55&quot; width=&quot;60&quot; height=&quot;45&quot; rx=&quot;6&quot; fill=&quot;#ede9fe&quot; stroke=&quot;#7c3aed&quot;/&gt;&lt;text x=&quot;80&quot; y=&quot;82&quot; font-size=&quot;10&quot; text-anchor=&quot;middle&quot; fill=&quot;#6d28d9&quot;&gt;t1&lt;/text&gt;
    &lt;rect x=&quot;140&quot; y=&quot;55&quot; width=&quot;60&quot; height=&quot;45&quot; rx=&quot;6&quot; fill=&quot;#ede9fe&quot; stroke=&quot;#7c3aed&quot;/&gt;&lt;text x=&quot;170&quot; y=&quot;82&quot; font-size=&quot;10&quot; text-anchor=&quot;middle&quot; fill=&quot;#6d28d9&quot;&gt;t2&lt;/text&gt;
    &lt;rect x=&quot;230&quot; y=&quot;55&quot; width=&quot;60&quot; height=&quot;45&quot; rx=&quot;6&quot; fill=&quot;#ede9fe&quot; stroke=&quot;#7c3aed&quot;/&gt;&lt;text x=&quot;260&quot; y=&quot;82&quot; font-size=&quot;10&quot; text-anchor=&quot;middle&quot; fill=&quot;#6d28d9&quot;&gt;t3&lt;/text&gt;
    &lt;rect x=&quot;320&quot; y=&quot;55&quot; width=&quot;60&quot; height=&quot;45&quot; rx=&quot;6&quot; fill=&quot;#ede9fe&quot; stroke=&quot;#7c3aed&quot;/&gt;&lt;text x=&quot;350&quot; y=&quot;82&quot; font-size=&quot;10&quot; text-anchor=&quot;middle&quot; fill=&quot;#6d28d9&quot;&gt;t4&lt;/text&gt;
    &lt;rect x=&quot;410&quot; y=&quot;55&quot; width=&quot;60&quot; height=&quot;45&quot; rx=&quot;6&quot; fill=&quot;#ede9fe&quot; stroke=&quot;#7c3aed&quot;/&gt;&lt;text x=&quot;440&quot; y=&quot;82&quot; font-size=&quot;10&quot; text-anchor=&quot;middle&quot; fill=&quot;#6d28d9&quot;&gt;t5&lt;/text&gt;
  &lt;/g&gt;
  &lt;g stroke=&quot;#7c3aed&quot; stroke-width=&quot;2&quot; fill=&quot;none&quot;&gt;
    &lt;line x1=&quot;110&quot; y1=&quot;77&quot; x2=&quot;138&quot; y2=&quot;77&quot; marker-end=&quot;url(#ls)&quot;/&gt;
    &lt;line x1=&quot;200&quot; y1=&quot;77&quot; x2=&quot;228&quot; y2=&quot;77&quot; marker-end=&quot;url(#ls)&quot;/&gt;
    &lt;line x1=&quot;290&quot; y1=&quot;77&quot; x2=&quot;318&quot; y2=&quot;77&quot; marker-end=&quot;url(#ls)&quot;/&gt;
    &lt;line x1=&quot;380&quot; y1=&quot;77&quot; x2=&quot;408&quot; y2=&quot;77&quot; marker-end=&quot;url(#ls)&quot;/&gt;
  &lt;/g&gt;
  &lt;text x=&quot;260&quot; y=&quot;125&quot; font-size=&quot;10&quot; fill=&quot;#6d28d9&quot; text-anchor=&quot;middle&quot;&gt;LSTM이 과거 상태를 기억하며 순차 처리&lt;/text&gt;

  &lt;line x1=&quot;470&quot; y1=&quot;77&quot; x2=&quot;560&quot; y2=&quot;77&quot; stroke=&quot;#334155&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#ls2)&quot;/&gt;
  &lt;rect x=&quot;565&quot; y=&quot;52&quot; width=&quot;200&quot; height=&quot;52&quot; rx=&quot;8&quot; fill=&quot;#f5f3ff&quot; stroke=&quot;#7c3aed&quot;/&gt;
  &lt;text x=&quot;665&quot; y=&quot;75&quot; font-size=&quot;11&quot; text-anchor=&quot;middle&quot; fill=&quot;#6d28d9&quot; font-weight=&quot;700&quot;&gt;시간 패턴 판정&lt;/text&gt;
  &lt;text x=&quot;665&quot; y=&quot;92&quot; font-size=&quot;10&quot; text-anchor=&quot;middle&quot; fill=&quot;#475569&quot;&gt;정상 리듬 vs 공격 리듬&lt;/text&gt;

  &lt;text x=&quot;400&quot; y=&quot;180&quot; font-size=&quot;10.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;장점: 높은 정확도, 자동 특징 학습, 복잡한 L7 공격에 강함 · 단점: 많은 연산·데이터·튜닝 필요, 해석이 어려움(블랙박스)&lt;/text&gt;
  &lt;defs&gt;
    &lt;marker id=&quot;ls&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#7c3aed&quot;/&gt;&lt;/marker&gt;
    &lt;marker id=&quot;ls2&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#334155&quot;/&gt;&lt;/marker&gt;
  &lt;/defs&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 12. LSTM 기반 — 트래픽의 시간적 흐름을 학습해 공격의 리듬을 포착한다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;h2&gt;13. 그래프 신경망 (GNN) &lt;span class=&quot;era e3&quot;&gt;3세대&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;
최신 연구에서 각광받는 방식입니다. 네트워크 통신을 &lt;strong&gt;그래프(graph)&lt;/strong&gt;로 표현합니다 —
호스트는 &lt;em&gt;노드(node)&lt;/em&gt;, 그들 사이 통신은 &lt;em&gt;엣지(edge)&lt;/em&gt;가 됩니다.
&lt;strong&gt;GNN(Graph Neural Network, 그래프 신경망)&lt;/strong&gt;은 이 연결 구조 자체를 학습하기 때문에,
&quot;수많은 봇이 하나의 대상으로 모여드는&quot; DDoS 특유의 &lt;strong&gt;통신 구조(topology) 패턴&lt;/strong&gt;을 효과적으로 포착합니다.
개별 흐름만 봐서는 정상처럼 보여도, &quot;관계의 그림&quot;을 보면 공격이 드러납니다.
&lt;/p&gt;
&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 800 260&quot; role=&quot;img&quot; aria-label=&quot;그래프 신경망 기반 DDoS 탐지&quot;&gt;
  &lt;!-- normal graph --&gt;
  &lt;text x=&quot;185&quot; y=&quot;30&quot; font-size=&quot;12&quot; font-weight=&quot;700&quot; fill=&quot;#166534&quot; text-anchor=&quot;middle&quot;&gt;정상 통신 그래프&lt;/text&gt;
  &lt;g stroke=&quot;#86efac&quot; stroke-width=&quot;1.5&quot;&gt;
    &lt;line x1=&quot;90&quot; y1=&quot;80&quot; x2=&quot;180&quot; y2=&quot;120&quot;/&gt;&lt;line x1=&quot;180&quot; y1=&quot;120&quot; x2=&quot;270&quot; y2=&quot;90&quot;/&gt;
    &lt;line x1=&quot;120&quot; y1=&quot;170&quot; x2=&quot;180&quot; y2=&quot;120&quot;/&gt;&lt;line x1=&quot;270&quot; y1=&quot;90&quot; x2=&quot;290&quot; y2=&quot;160&quot;/&gt;
    &lt;line x1=&quot;90&quot; y1=&quot;80&quot; x2=&quot;120&quot; y2=&quot;170&quot;/&gt;
  &lt;/g&gt;
  &lt;g fill=&quot;#16a34a&quot;&gt;
    &lt;circle cx=&quot;90&quot; cy=&quot;80&quot; r=&quot;11&quot;/&gt;&lt;circle cx=&quot;180&quot; cy=&quot;120&quot; r=&quot;11&quot;/&gt;&lt;circle cx=&quot;270&quot; cy=&quot;90&quot; r=&quot;11&quot;/&gt;
    &lt;circle cx=&quot;120&quot; cy=&quot;170&quot; r=&quot;11&quot;/&gt;&lt;circle cx=&quot;290&quot; cy=&quot;160&quot; r=&quot;11&quot;/&gt;
  &lt;/g&gt;
  &lt;text x=&quot;185&quot; y=&quot;215&quot; font-size=&quot;10.5&quot; fill=&quot;#166534&quot; text-anchor=&quot;middle&quot;&gt;고르게 분산된 연결&lt;/text&gt;

  &lt;line x1=&quot;400&quot; y1=&quot;50&quot; x2=&quot;400&quot; y2=&quot;220&quot; stroke=&quot;#cbd5e1&quot; stroke-width=&quot;2&quot; stroke-dasharray=&quot;4 4&quot;/&gt;

  &lt;!-- attack graph: many-to-one star --&gt;
  &lt;text x=&quot;600&quot; y=&quot;30&quot; font-size=&quot;12&quot; font-weight=&quot;700&quot; fill=&quot;#b91c1c&quot; text-anchor=&quot;middle&quot;&gt;공격 통신 그래프&lt;/text&gt;
  &lt;g stroke=&quot;#fca5a5&quot; stroke-width=&quot;1.5&quot;&gt;
    &lt;line x1=&quot;500&quot; y1=&quot;70&quot; x2=&quot;600&quot; y2=&quot;130&quot;/&gt;&lt;line x1=&quot;540&quot; y1=&quot;60&quot; x2=&quot;600&quot; y2=&quot;130&quot;/&gt;
    &lt;line x1=&quot;500&quot; y1=&quot;130&quot; x2=&quot;600&quot; y2=&quot;130&quot;/&gt;&lt;line x1=&quot;500&quot; y1=&quot;190&quot; x2=&quot;600&quot; y2=&quot;130&quot;/&gt;
    &lt;line x1=&quot;540&quot; y1=&quot;200&quot; x2=&quot;600&quot; y2=&quot;130&quot;/&gt;&lt;line x1=&quot;690&quot; y1=&quot;70&quot; x2=&quot;600&quot; y2=&quot;130&quot;/&gt;
    &lt;line x1=&quot;700&quot; y1=&quot;140&quot; x2=&quot;600&quot; y2=&quot;130&quot;/&gt;&lt;line x1=&quot;690&quot; y1=&quot;195&quot; x2=&quot;600&quot; y2=&quot;130&quot;/&gt;
  &lt;/g&gt;
  &lt;g fill=&quot;#ef4444&quot;&gt;
    &lt;circle cx=&quot;500&quot; cy=&quot;70&quot; r=&quot;8&quot;/&gt;&lt;circle cx=&quot;540&quot; cy=&quot;60&quot; r=&quot;8&quot;/&gt;&lt;circle cx=&quot;500&quot; cy=&quot;130&quot; r=&quot;8&quot;/&gt;
    &lt;circle cx=&quot;500&quot; cy=&quot;190&quot; r=&quot;8&quot;/&gt;&lt;circle cx=&quot;540&quot; cy=&quot;200&quot; r=&quot;8&quot;/&gt;&lt;circle cx=&quot;690&quot; cy=&quot;70&quot; r=&quot;8&quot;/&gt;
    &lt;circle cx=&quot;700&quot; cy=&quot;140&quot; r=&quot;8&quot;/&gt;&lt;circle cx=&quot;690&quot; cy=&quot;195&quot; r=&quot;8&quot;/&gt;
  &lt;/g&gt;
  &lt;circle cx=&quot;600&quot; cy=&quot;130&quot; r=&quot;15&quot; fill=&quot;#b91c1c&quot;/&gt;
  &lt;text x=&quot;600&quot; y=&quot;134&quot; font-size=&quot;9&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot;&gt;타깃&lt;/text&gt;
  &lt;text x=&quot;600&quot; y=&quot;230&quot; font-size=&quot;10.5&quot; fill=&quot;#b91c1c&quot; text-anchor=&quot;middle&quot;&gt;다수 → 하나로 쏠리는 별(star) 구조&lt;/text&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 13. GNN 기반 — 통신을 그래프로 보면 &quot;많은 봇이 한 대상으로 몰리는&quot; 구조가 드러난다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;h2&gt;14. SDN 기반 탐지 &lt;span class=&quot;era e3&quot;&gt;3세대&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;
&lt;strong&gt;SDN(Software-Defined Networking, 소프트웨어 정의 네트워킹)&lt;/strong&gt;은 네트워크의 제어부(control plane)와
전달부(data plane)를 분리하고, 중앙 컨트롤러가 스위치(예: Open vSwitch)를 프로그래밍합니다.
컨트롤러는 스위치로부터 &lt;strong&gt;flow 통계를 실시간 수집&lt;/strong&gt;해 이상을 탐지하고, 탐지 즉시
&lt;strong&gt;흐름 규칙(flow rule)을 내려 곧바로 차단·우회&lt;/strong&gt;할 수 있습니다. 즉 탐지와 대응이 하나의 루프로 묶입니다.
&lt;/p&gt;
&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 800 260&quot; role=&quot;img&quot; aria-label=&quot;SDN 컨트롤러 기반 탐지-대응 루프&quot;&gt;
  &lt;!-- controller --&gt;
  &lt;rect x=&quot;300&quot; y=&quot;30&quot; width=&quot;200&quot; height=&quot;55&quot; rx=&quot;10&quot; fill=&quot;#2563eb&quot;/&gt;
  &lt;text x=&quot;400&quot; y=&quot;54&quot; font-size=&quot;13&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;SDN 컨트롤러&lt;/text&gt;
  &lt;text x=&quot;400&quot; y=&quot;72&quot; font-size=&quot;10&quot; fill=&quot;#dbeafe&quot; text-anchor=&quot;middle&quot;&gt;탐지 로직(통계/엔트로피/ML)&lt;/text&gt;

  &lt;!-- switches --&gt;
  &lt;g&gt;
    &lt;rect x=&quot;120&quot; y=&quot;160&quot; width=&quot;120&quot; height=&quot;45&quot; rx=&quot;8&quot; fill=&quot;#0e7490&quot;/&gt;&lt;text x=&quot;180&quot; y=&quot;187&quot; font-size=&quot;11&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot;&gt;OVS 스위치 1&lt;/text&gt;
    &lt;rect x=&quot;340&quot; y=&quot;160&quot; width=&quot;120&quot; height=&quot;45&quot; rx=&quot;8&quot; fill=&quot;#0e7490&quot;/&gt;&lt;text x=&quot;400&quot; y=&quot;187&quot; font-size=&quot;11&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot;&gt;OVS 스위치 2&lt;/text&gt;
    &lt;rect x=&quot;560&quot; y=&quot;160&quot; width=&quot;120&quot; height=&quot;45&quot; rx=&quot;8&quot; fill=&quot;#0e7490&quot;/&gt;&lt;text x=&quot;620&quot; y=&quot;187&quot; font-size=&quot;11&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot;&gt;OVS 스위치 3&lt;/text&gt;
  &lt;/g&gt;

  &lt;!-- stats up (green), rules down (red) --&gt;
  &lt;g&gt;
    &lt;line x1=&quot;180&quot; y1=&quot;160&quot; x2=&quot;330&quot; y2=&quot;88&quot; stroke=&quot;#16a34a&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#sdnG)&quot;/&gt;
    &lt;line x1=&quot;620&quot; y1=&quot;160&quot; x2=&quot;470&quot; y2=&quot;88&quot; stroke=&quot;#16a34a&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#sdnG)&quot;/&gt;
    &lt;line x1=&quot;360&quot; y1=&quot;88&quot; x2=&quot;210&quot; y2=&quot;158&quot; stroke=&quot;#dc2626&quot; stroke-width=&quot;2&quot; stroke-dasharray=&quot;5 3&quot; marker-end=&quot;url(#sdnR)&quot;/&gt;
    &lt;line x1=&quot;440&quot; y1=&quot;88&quot; x2=&quot;590&quot; y2=&quot;158&quot; stroke=&quot;#dc2626&quot; stroke-width=&quot;2&quot; stroke-dasharray=&quot;5 3&quot; marker-end=&quot;url(#sdnR)&quot;/&gt;
  &lt;/g&gt;
  &lt;text x=&quot;230&quot; y=&quot;118&quot; font-size=&quot;10&quot; fill=&quot;#166534&quot;&gt;① flow 통계 수집 ↑&lt;/text&gt;
  &lt;text x=&quot;500&quot; y=&quot;118&quot; font-size=&quot;10&quot; fill=&quot;#b91c1c&quot;&gt;② 차단 규칙 하달 ↓&lt;/text&gt;

  &lt;text x=&quot;400&quot; y=&quot;240&quot; font-size=&quot;11&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;중앙에서 전체 흐름을 조망하며 탐지 → 즉시 규칙으로 대응. &quot;탐지-대응 자동 루프&quot;가 SDN의 강점.&lt;/text&gt;
  &lt;defs&gt;
    &lt;marker id=&quot;sdnG&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#16a34a&quot;/&gt;&lt;/marker&gt;
    &lt;marker id=&quot;sdnR&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#dc2626&quot;/&gt;&lt;/marker&gt;
  &lt;/defs&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 14. SDN 기반 — 컨트롤러가 flow 통계로 탐지하고 즉시 규칙을 내려 대응까지 자동화한다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;h2&gt;15. eBPF / XDP / In-band Network Telemetry &lt;span class=&quot;era e3&quot;&gt;3세대&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;
가장 최근의 흐름은 &lt;strong&gt;탐지·차단을 네트워크의 가장 앞단, 그것도 초고속으로&lt;/strong&gt; 옮기는 것입니다.
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;XDP(eXpress Data Path) · eBPF(extended Berkeley Packet Filter)&lt;/strong&gt; — 리눅스 커널의 네트워크 드라이버
  최전선에서 패킷을 검사·판단·폐기합니다. 사용자 공간까지 올라오기 전에 처리하므로
  &lt;strong&gt;회선 속도(line-rate)로 수천만 pps&lt;/strong&gt;를 걸러낼 수 있습니다. (Cloudflare, Meta 등이 실전 활용)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;P4 · In-band Network Telemetry(INT)&lt;/strong&gt; — 프로그래머블 스위치가 패킷을 지나보내면서
  실시간 원격측정 정보를 심어, &lt;strong&gt;데이터 평면 자체에서 탐지&lt;/strong&gt;합니다. 컨트롤러까지 올라가는 지연을 없앱니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 800 220&quot; role=&quot;img&quot; aria-label=&quot;XDP eBPF 커널 최전선 탐지 위치 비교&quot;&gt;
  &lt;!-- packet in --&gt;
  &lt;rect x=&quot;20&quot; y=&quot;90&quot; width=&quot;80&quot; height=&quot;44&quot; rx=&quot;6&quot; fill=&quot;#ef4444&quot;/&gt;&lt;text x=&quot;60&quot; y=&quot;117&quot; font-size=&quot;11&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot;&gt;패킷&lt;/text&gt;
  &lt;line x1=&quot;100&quot; y1=&quot;112&quot; x2=&quot;150&quot; y2=&quot;112&quot; stroke=&quot;#334155&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#xd)&quot;/&gt;

  &lt;!-- NIC / XDP --&gt;
  &lt;rect x=&quot;152&quot; y=&quot;80&quot; width=&quot;130&quot; height=&quot;64&quot; rx=&quot;8&quot; fill=&quot;#dc2626&quot;/&gt;
  &lt;text x=&quot;217&quot; y=&quot;105&quot; font-size=&quot;12&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;XDP / eBPF&lt;/text&gt;
  &lt;text x=&quot;217&quot; y=&quot;123&quot; font-size=&quot;10&quot; fill=&quot;#fee2e2&quot; text-anchor=&quot;middle&quot;&gt;드라이버 최전선&lt;/text&gt;
  &lt;text x=&quot;217&quot; y=&quot;165&quot; font-size=&quot;10&quot; fill=&quot;#b91c1c&quot; text-anchor=&quot;middle&quot;&gt;여기서 즉시 폐기(초고속)&lt;/text&gt;

  &lt;line x1=&quot;282&quot; y1=&quot;112&quot; x2=&quot;332&quot; y2=&quot;112&quot; stroke=&quot;#94a3b8&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#xd)&quot;/&gt;

  &lt;!-- kernel stack --&gt;
  &lt;rect x=&quot;334&quot; y=&quot;80&quot; width=&quot;150&quot; height=&quot;64&quot; rx=&quot;8&quot; fill=&quot;#94a3b8&quot;/&gt;
  &lt;text x=&quot;409&quot; y=&quot;108&quot; font-size=&quot;11&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot;&gt;커널 네트워크 스택&lt;/text&gt;
  &lt;text x=&quot;409&quot; y=&quot;125&quot; font-size=&quot;9.5&quot; fill=&quot;#f1f5f9&quot; text-anchor=&quot;middle&quot;&gt;(전통적 방화벽 위치)&lt;/text&gt;

  &lt;line x1=&quot;484&quot; y1=&quot;112&quot; x2=&quot;534&quot; y2=&quot;112&quot; stroke=&quot;#94a3b8&quot; stroke-width=&quot;2&quot; marker-end=&quot;url(#xd)&quot;/&gt;

  &lt;!-- userspace --&gt;
  &lt;rect x=&quot;536&quot; y=&quot;80&quot; width=&quot;150&quot; height=&quot;64&quot; rx=&quot;8&quot; fill=&quot;#cbd5e1&quot;/&gt;
  &lt;text x=&quot;611&quot; y=&quot;108&quot; font-size=&quot;11&quot; fill=&quot;#334155&quot; text-anchor=&quot;middle&quot;&gt;사용자 공간 앱&lt;/text&gt;
  &lt;text x=&quot;611&quot; y=&quot;125&quot; font-size=&quot;9.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;(가장 느린 지점)&lt;/text&gt;

  &lt;text x=&quot;400&quot; y=&quot;200&quot; font-size=&quot;10.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;공격 패킷이 시스템 깊숙이 들어오기 전, 커널 최전선(XDP)에서 걸러내 CPU 자원 소모 없이 대량 차단한다.&lt;/text&gt;
  &lt;defs&gt;&lt;marker id=&quot;xd&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#334155&quot;/&gt;&lt;/marker&gt;&lt;/defs&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 15. XDP/eBPF — 커널 최전선에서 회선 속도로 걸러내 초대형 공격도 저비용으로 흡수한다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;h2&gt;16. 연합 학습 (Federated Learning) &lt;span class=&quot;era e3&quot;&gt;3세대&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;
DDoS는 본질적으로 &lt;strong&gt;분산 공격&lt;/strong&gt;이므로, 여러 기관·엣지가 &lt;strong&gt;협력해서 탐지&lt;/strong&gt;하면 훨씬 강력합니다.
그러나 각자의 트래픽 원본을 공유하는 것은 프라이버시·보안상 위험합니다.
&lt;strong&gt;연합 학습(Federated Learning)&lt;/strong&gt;은 &lt;strong&gt;원본 데이터는 각자 보관한 채, 학습된 모델의 결과(파라미터)만
중앙에 모아 합치는&lt;/strong&gt; 방식입니다. 데이터를 옮기지 않고도 여러 곳의 지식을 하나의 강한 모델로 통합합니다.
IoT·엣지 환경, 여러 지사·통신사 협력 탐지에 특히 적합합니다.
&lt;/p&gt;
&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 800 240&quot; role=&quot;img&quot; aria-label=&quot;연합 학습 기반 협력 탐지&quot;&gt;
  &lt;!-- central --&gt;
  &lt;rect x=&quot;320&quot; y=&quot;30&quot; width=&quot;160&quot; height=&quot;50&quot; rx=&quot;10&quot; fill=&quot;#2563eb&quot;/&gt;
  &lt;text x=&quot;400&quot; y=&quot;52&quot; font-size=&quot;12&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;중앙 집계 서버&lt;/text&gt;
  &lt;text x=&quot;400&quot; y=&quot;69&quot; font-size=&quot;9.5&quot; fill=&quot;#dbeafe&quot; text-anchor=&quot;middle&quot;&gt;모델만 합침(데이터 X)&lt;/text&gt;

  &lt;!-- edges --&gt;
  &lt;g&gt;
    &lt;rect x=&quot;60&quot; y=&quot;160&quot; width=&quot;130&quot; height=&quot;50&quot; rx=&quot;8&quot; fill=&quot;#7c3aed&quot;/&gt;&lt;text x=&quot;125&quot; y=&quot;182&quot; font-size=&quot;10.5&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot;&gt;엣지 A(로컬 학습)&lt;/text&gt;&lt;text x=&quot;125&quot; y=&quot;198&quot; font-size=&quot;9&quot; fill=&quot;#ede9fe&quot; text-anchor=&quot;middle&quot;&gt;데이터는 그대로&lt;/text&gt;
    &lt;rect x=&quot;335&quot; y=&quot;160&quot; width=&quot;130&quot; height=&quot;50&quot; rx=&quot;8&quot; fill=&quot;#7c3aed&quot;/&gt;&lt;text x=&quot;400&quot; y=&quot;182&quot; font-size=&quot;10.5&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot;&gt;엣지 B(로컬 학습)&lt;/text&gt;&lt;text x=&quot;400&quot; y=&quot;198&quot; font-size=&quot;9&quot; fill=&quot;#ede9fe&quot; text-anchor=&quot;middle&quot;&gt;데이터는 그대로&lt;/text&gt;
    &lt;rect x=&quot;610&quot; y=&quot;160&quot; width=&quot;130&quot; height=&quot;50&quot; rx=&quot;8&quot; fill=&quot;#7c3aed&quot;/&gt;&lt;text x=&quot;675&quot; y=&quot;182&quot; font-size=&quot;10.5&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot;&gt;엣지 C(로컬 학습)&lt;/text&gt;&lt;text x=&quot;675&quot; y=&quot;198&quot; font-size=&quot;9&quot; fill=&quot;#ede9fe&quot; text-anchor=&quot;middle&quot;&gt;데이터는 그대로&lt;/text&gt;
  &lt;/g&gt;

  &lt;g stroke=&quot;#16a34a&quot; stroke-width=&quot;2&quot; fill=&quot;none&quot;&gt;
    &lt;line x1=&quot;125&quot; y1=&quot;160&quot; x2=&quot;345&quot; y2=&quot;82&quot; marker-end=&quot;url(#fed)&quot;/&gt;
    &lt;line x1=&quot;400&quot; y1=&quot;160&quot; x2=&quot;400&quot; y2=&quot;84&quot; marker-end=&quot;url(#fed)&quot;/&gt;
    &lt;line x1=&quot;675&quot; y1=&quot;160&quot; x2=&quot;455&quot; y2=&quot;82&quot; marker-end=&quot;url(#fed)&quot;/&gt;
  &lt;/g&gt;
  &lt;text x=&quot;235&quot; y=&quot;118&quot; font-size=&quot;9.5&quot; fill=&quot;#166534&quot;&gt;모델 파라미터만 ↑&lt;/text&gt;

  &lt;text x=&quot;400&quot; y=&quot;232&quot; font-size=&quot;10.5&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;프라이버시를 지키면서 여러 곳의 공격 지식을 통합 → 넓은 시야의 협력 탐지가 가능하다.&lt;/text&gt;
  &lt;defs&gt;&lt;marker id=&quot;fed&quot; markerWidth=&quot;9&quot; markerHeight=&quot;9&quot; refX=&quot;7&quot; refY=&quot;3&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M0,0 L7,3 L0,6 Z&quot; fill=&quot;#16a34a&quot;/&gt;&lt;/marker&gt;&lt;/defs&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 16. 연합 학습 — 데이터는 남기고 모델만 모아, 프라이버시를 지키며 협력 탐지한다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;h2&gt;17. 혼합·앙상블 + 위협 인텔리전스&lt;/h2&gt;
&lt;p&gt;
현실의 상용 솔루션은 한 가지 방법만 쓰지 않습니다. &lt;strong&gt;여러 기법을 계층적으로 결합&lt;/strong&gt;합니다.
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;1차 필터&lt;/strong&gt; — 시그니처·임계치·엔트로피로 빠르고 값싸게 명백한 공격을 걸러냄&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2차 판정&lt;/strong&gt; — 애매한 트래픽은 머신러닝·딥러닝 모델로 정밀 분류&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;앙상블(Ensemble)&lt;/strong&gt; — 여러 모델의 판단을 투표/평균해 오탐을 줄이고 정확도를 높임&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;위협 인텔리전스(Threat Intelligence)&lt;/strong&gt; — 이미 알려진 악성 IP·봇넷 평판(reputation) 정보를 결합&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;탐지 → 대응 연계&lt;/strong&gt; — 탐지 결과를 Scrubbing Center, WAF, Rate Limiter로 자동 전달&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;callout ok&quot;&gt;
  &lt;span class=&quot;tag&quot;&gt;핵심 통찰&lt;/span&gt;
  &quot;최신 = 최고&quot;가 아닙니다. &lt;strong&gt;값싸고 빠른 고전 기법으로 대부분을 거르고, 비싸고 정밀한 AI를 애매한 소수에 집중&lt;/strong&gt;하는
  &lt;em&gt;계층 방어&lt;/em&gt;가 가장 실용적입니다. 속도·비용·정확도의 균형이 실무의 핵심입니다.
&lt;/div&gt;

&lt;h2&gt;18. 탐지 방법 총정리 비교표&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;&lt;th&gt;방법&lt;/th&gt;&lt;th&gt;세대&lt;/th&gt;&lt;th&gt;핵심 원리&lt;/th&gt;&lt;th&gt;강점&lt;/th&gt;&lt;th&gt;약점&lt;/th&gt;&lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td&gt;시그니처 기반&lt;/td&gt;&lt;td&gt;1세대&lt;/td&gt;&lt;td&gt;알려진 패턴 대조&lt;/td&gt;&lt;td&gt;빠름·정확·저오탐&lt;/td&gt;&lt;td&gt;새 공격(zero-day) 불가&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;임계치/속도&lt;/td&gt;&lt;td&gt;1세대&lt;/td&gt;&lt;td&gt;한계값 초과 감지&lt;/td&gt;&lt;td&gt;매우 단순·경량&lt;/td&gt;&lt;td&gt;임계치 설정 딜레마, 오탐&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;통계적 이상&lt;/td&gt;&lt;td&gt;1세대&lt;/td&gt;&lt;td&gt;기준선 대비 편차&lt;/td&gt;&lt;td&gt;유연·적응적&lt;/td&gt;&lt;td&gt;기준선 학습·계절성 필요&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;엔트로피&lt;/td&gt;&lt;td&gt;1세대&lt;/td&gt;&lt;td&gt;분포 왜곡 포착&lt;/td&gt;&lt;td&gt;저용량 공격도 탐지&lt;/td&gt;&lt;td&gt;임계값·정상 변동에 민감&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;변화점(CUSUM/EWMA)&lt;/td&gt;&lt;td&gt;1세대&lt;/td&gt;&lt;td&gt;급변 순간 포착&lt;/td&gt;&lt;td&gt;빠른 개시 탐지&lt;/td&gt;&lt;td&gt;서서히 커지는 공격에 둔함&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;흐름 기반(NetFlow 등)&lt;/td&gt;&lt;td&gt;1세대&lt;/td&gt;&lt;td&gt;flow 요약 분석&lt;/td&gt;&lt;td&gt;대규모 광역 실시간&lt;/td&gt;&lt;td&gt;샘플링 손실, 정밀도 한계&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;지도 학습 ML&lt;/td&gt;&lt;td&gt;2세대&lt;/td&gt;&lt;td&gt;라벨 데이터 분류&lt;/td&gt;&lt;td&gt;변형 공격 분류 가능&lt;/td&gt;&lt;td&gt;대량 라벨·재학습 필요&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;비지도/오토인코더&lt;/td&gt;&lt;td&gt;2세대&lt;/td&gt;&lt;td&gt;정상 이탈 탐지&lt;/td&gt;&lt;td&gt;미지 공격에 강함&lt;/td&gt;&lt;td&gt;오탐 가능·임계 조정&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;딥러닝(CNN/LSTM)&lt;/td&gt;&lt;td&gt;2세대&lt;/td&gt;&lt;td&gt;자동 특징·시계열 학습&lt;/td&gt;&lt;td&gt;높은 정확도·L7 강함&lt;/td&gt;&lt;td&gt;고비용·블랙박스&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;그래프 신경망(GNN)&lt;/td&gt;&lt;td&gt;3세대&lt;/td&gt;&lt;td&gt;통신 구조 학습&lt;/td&gt;&lt;td&gt;분산·구조적 공격 포착&lt;/td&gt;&lt;td&gt;연구 단계·연산 부담&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;SDN 기반&lt;/td&gt;&lt;td&gt;3세대&lt;/td&gt;&lt;td&gt;중앙 flow 탐지+대응&lt;/td&gt;&lt;td&gt;탐지-대응 자동 루프&lt;/td&gt;&lt;td&gt;컨트롤러 병목·SPOF 우려&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;eBPF/XDP·INT&lt;/td&gt;&lt;td&gt;3세대&lt;/td&gt;&lt;td&gt;커널/데이터평면 최전선&lt;/td&gt;&lt;td&gt;회선속도·초대형 흡수&lt;/td&gt;&lt;td&gt;구현 난도·로직 제약&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;연합 학습&lt;/td&gt;&lt;td&gt;3세대&lt;/td&gt;&lt;td&gt;모델만 협력 통합&lt;/td&gt;&lt;td&gt;프라이버시·광역 협력&lt;/td&gt;&lt;td&gt;통신 비용·모델 오염 위험&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2&gt;19. 실무 적용 관점&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;계층적 방어&lt;/strong&gt; — 저비용 고전 기법(앞단) + 고정밀 AI(뒷단)를 겹겹이 배치.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;탐지 위치 조합&lt;/strong&gt; — 통신사/백본(광역·조기) + 클라우드 Scrubbing + 목적지 인접(정밀)을 함께.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;오탐 관리&lt;/strong&gt; — 정상 이벤트(할인 행사 등)를 사전에 반영해 Flash Crowd 오탐을 줄인다.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;탐지-대응 자동화&lt;/strong&gt; — 탐지만으로는 부족하다. 자동으로 Rate Limit/차단/우회까지 이어져야 한다.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;지속적 재학습&lt;/strong&gt; — 공격은 계속 진화하므로 모델·시그니처·기준선을 주기적으로 갱신한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;callout warn&quot;&gt;
  &lt;span class=&quot;tag&quot;&gt;주의&lt;/span&gt;
  이 문서는 &lt;strong&gt;탐지·방어(defensive) 학습&lt;/strong&gt;을 위한 개념 정리입니다. 실제 공격 수행 방법이 아니라,
  공격을 이해하고 막기 위한 내용만 다룹니다.
&lt;/div&gt;

&lt;h2&gt;20. 선도 기업 / 대표 솔루션&lt;/h2&gt;
&lt;p&gt;
DDoS 탐지 시장은 &lt;strong&gt;&quot;어디서, 어떤 방식으로 탐지하느냐&quot;&lt;/strong&gt;에 따라 주력 기업이 갈립니다.
아래 그림은 대표 기업을 &lt;strong&gt;탐지 위치&lt;/strong&gt;와 &lt;strong&gt;제공 형태&lt;/strong&gt;로 나눠 정리한 것입니다.
&lt;/p&gt;

&lt;div class=&quot;fig-wrap&quot;&gt;
&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 840 320&quot; role=&quot;img&quot; aria-label=&quot;DDoS 탐지 선도 기업 포지셔닝&quot;&gt;
  &lt;!-- columns header --&gt;
  &lt;rect x=&quot;20&quot; y=&quot;20&quot; width=&quot;255&quot; height=&quot;40&quot; rx=&quot;8&quot; fill=&quot;#0e7490&quot;/&gt;
  &lt;text x=&quot;147&quot; y=&quot;45&quot; font-size=&quot;13&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;통신사·백본 (흐름 기반)&lt;/text&gt;
  &lt;rect x=&quot;290&quot; y=&quot;20&quot; width=&quot;255&quot; height=&quot;40&quot; rx=&quot;8&quot; fill=&quot;#2563eb&quot;/&gt;
  &lt;text x=&quot;417&quot; y=&quot;45&quot; font-size=&quot;13&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;클라우드 (Scrubbing)&lt;/text&gt;
  &lt;rect x=&quot;560&quot; y=&quot;20&quot; width=&quot;260&quot; height=&quot;40&quot; rx=&quot;8&quot; fill=&quot;#7c3aed&quot;/&gt;
  &lt;text x=&quot;690&quot; y=&quot;45&quot; font-size=&quot;13&quot; fill=&quot;#fff&quot; text-anchor=&quot;middle&quot; font-weight=&quot;700&quot;&gt;온프레미스·기술/오픈소스&lt;/text&gt;

  &lt;!-- col1 items --&gt;
  &lt;g font-size=&quot;11.5&quot; fill=&quot;#0f172a&quot;&gt;
    &lt;rect x=&quot;30&quot; y=&quot;75&quot; width=&quot;235&quot; height=&quot;30&quot; rx=&quot;6&quot; fill=&quot;#ecfeff&quot; stroke=&quot;#67e8f9&quot;/&gt;&lt;text x=&quot;42&quot; y=&quot;95&quot;&gt;NETSCOUT Arbor — Sightline / ATLAS&lt;/text&gt;
    &lt;rect x=&quot;30&quot; y=&quot;112&quot; width=&quot;235&quot; height=&quot;30&quot; rx=&quot;6&quot; fill=&quot;#ecfeff&quot; stroke=&quot;#67e8f9&quot;/&gt;&lt;text x=&quot;42&quot; y=&quot;132&quot;&gt;통신사 자체 방어 (KT·SKB 등)&lt;/text&gt;
    &lt;rect x=&quot;30&quot; y=&quot;149&quot; width=&quot;235&quot; height=&quot;30&quot; rx=&quot;6&quot; fill=&quot;#ecfeff&quot; stroke=&quot;#67e8f9&quot;/&gt;&lt;text x=&quot;42&quot; y=&quot;169&quot;&gt;Kentik — flow 분석·관측&lt;/text&gt;
  &lt;/g&gt;

  &lt;!-- col2 items --&gt;
  &lt;g font-size=&quot;11.5&quot; fill=&quot;#0f172a&quot;&gt;
    &lt;rect x=&quot;300&quot; y=&quot;75&quot; width=&quot;235&quot; height=&quot;30&quot; rx=&quot;6&quot; fill=&quot;#eff4ff&quot; stroke=&quot;#93c5fd&quot;/&gt;&lt;text x=&quot;312&quot; y=&quot;95&quot;&gt;Cloudflare — Anycast·L7·자동완화&lt;/text&gt;
    &lt;rect x=&quot;300&quot; y=&quot;112&quot; width=&quot;235&quot; height=&quot;30&quot; rx=&quot;6&quot; fill=&quot;#eff4ff&quot; stroke=&quot;#93c5fd&quot;/&gt;&lt;text x=&quot;312&quot; y=&quot;132&quot;&gt;Akamai (Prolexic) — 초대형 방어&lt;/text&gt;
    &lt;rect x=&quot;300&quot; y=&quot;149&quot; width=&quot;235&quot; height=&quot;30&quot; rx=&quot;6&quot; fill=&quot;#eff4ff&quot; stroke=&quot;#93c5fd&quot;/&gt;&lt;text x=&quot;312&quot; y=&quot;169&quot;&gt;AWS Shield · Google Cloud Armor&lt;/text&gt;
    &lt;rect x=&quot;300&quot; y=&quot;186&quot; width=&quot;235&quot; height=&quot;30&quot; rx=&quot;6&quot; fill=&quot;#eff4ff&quot; stroke=&quot;#93c5fd&quot;/&gt;&lt;text x=&quot;312&quot; y=&quot;206&quot;&gt;Imperva · Radware Cloud&lt;/text&gt;
  &lt;/g&gt;

  &lt;!-- col3 items --&gt;
  &lt;g font-size=&quot;11.5&quot; fill=&quot;#0f172a&quot;&gt;
    &lt;rect x=&quot;570&quot; y=&quot;75&quot; width=&quot;240&quot; height=&quot;30&quot; rx=&quot;6&quot; fill=&quot;#f5f3ff&quot; stroke=&quot;#c4b5fd&quot;/&gt;&lt;text x=&quot;582&quot; y=&quot;95&quot;&gt;Radware DefensePro · A10 TPS&lt;/text&gt;
    &lt;rect x=&quot;570&quot; y=&quot;112&quot; width=&quot;240&quot; height=&quot;30&quot; rx=&quot;6&quot; fill=&quot;#f5f3ff&quot; stroke=&quot;#c4b5fd&quot;/&gt;&lt;text x=&quot;582&quot; y=&quot;132&quot;&gt;F5 · Fortinet FortiDDoS&lt;/text&gt;
    &lt;rect x=&quot;570&quot; y=&quot;149&quot; width=&quot;240&quot; height=&quot;30&quot; rx=&quot;6&quot; fill=&quot;#f5f3ff&quot; stroke=&quot;#c4b5fd&quot;/&gt;&lt;text x=&quot;582&quot; y=&quot;169&quot;&gt;Snort · Suricata (IDS·시그니처)&lt;/text&gt;
    &lt;rect x=&quot;570&quot; y=&quot;186&quot; width=&quot;240&quot; height=&quot;30&quot; rx=&quot;6&quot; fill=&quot;#f5f3ff&quot; stroke=&quot;#c4b5fd&quot;/&gt;&lt;text x=&quot;582&quot; y=&quot;206&quot;&gt;FastNetMon · Wanguard (flow)&lt;/text&gt;
    &lt;rect x=&quot;570&quot; y=&quot;223&quot; width=&quot;240&quot; height=&quot;30&quot; rx=&quot;6&quot; fill=&quot;#f5f3ff&quot; stroke=&quot;#c4b5fd&quot;/&gt;&lt;text x=&quot;582&quot; y=&quot;243&quot;&gt;eBPF/XDP 자체 개발 (Cloudflare·Meta)&lt;/text&gt;
  &lt;/g&gt;

  &lt;text x=&quot;420&quot; y=&quot;295&quot; font-size=&quot;11&quot; fill=&quot;#475569&quot; text-anchor=&quot;middle&quot;&gt;현실의 대형 서비스는 한 곳에 의존하지 않고 여러 계층·여러 기업의 솔루션을 겹쳐 쓴다.&lt;/text&gt;
&lt;/svg&gt;
&lt;figcaption&gt;그림 17. DDoS 탐지 선도 기업 포지셔닝 — 탐지 위치와 제공 형태별 대표 이름.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;h3&gt;① 통신사·백본 흐름 기반 탐지의 강자&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;&lt;tr&gt;&lt;th&gt;기업 / 솔루션&lt;/th&gt;&lt;th&gt;탐지 방식과 강점&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;NETSCOUT Arbor&lt;/strong&gt;&lt;br&gt;(Sightline · TMS/AED · ATLAS)&lt;/td&gt;&lt;td&gt;통신사급 &lt;strong&gt;흐름(NetFlow/sFlow/IPFIX) 기반 광역 탐지&lt;/strong&gt;의 원조. 전 세계 통신사 제휴 관측망 ATLAS로 위협 인텔리전스까지 결합. 이 분야의 사실상 대명사.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Kentik&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;클라우드 네이티브 &lt;strong&gt;flow 분석·네트워크 관측&lt;/strong&gt; 플랫폼. 트래픽 이상·DDoS 탐지에 활용.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;통신사 자체 방어&lt;/strong&gt;&lt;br&gt;(국내 KT·SK브로드밴드·LG유플러스 등)&lt;/td&gt;&lt;td&gt;백본에 자체 탐지·정화(Scrubbing) 인프라를 구축해 가입 기업에 DDoS 방어 서비스를 제공.&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3&gt;② 클라우드 기반 탐지·완화의 강자&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;&lt;tr&gt;&lt;th&gt;기업 / 솔루션&lt;/th&gt;&lt;th&gt;탐지 방식과 강점&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Cloudflare&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;거대한 &lt;strong&gt;Anycast 네트워크&lt;/strong&gt; 전역에서 트래픽을 관측·학습해 &lt;strong&gt;자동으로 탐지·완화&lt;/strong&gt;. L7 공격·봇 탐지에 강하고, 내부적으로 &lt;strong&gt;eBPF/XDP&lt;/strong&gt;를 활용해 회선 속도로 걸러냄.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Akamai&lt;/strong&gt; (Prolexic)&lt;/td&gt;&lt;td&gt;세계 최대급 CDN과 오랜 Scrubbing 운영 경험. &lt;strong&gt;초대형(Tbps급) 공격&lt;/strong&gt; 탐지·방어 실적 다수.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Amazon Web Services&lt;/strong&gt; (Shield)&lt;/td&gt;&lt;td&gt;AWS 백본 규모의 관측을 바탕으로 상시 탐지. Shield Advanced로 대형 공격 대응.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Google Cloud&lt;/strong&gt; (Cloud Armor)&lt;/td&gt;&lt;td&gt;구글 백본과 &lt;strong&gt;머신러닝 기반 적응형 방어(Adaptive Protection)&lt;/strong&gt;를 결합.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Imperva · Radware Cloud&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;클라우드 Scrubbing과 WAF를 결합한 통합 탐지·방어 서비스.&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3&gt;③ 온프레미스 장비 · 기술/오픈소스&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;&lt;tr&gt;&lt;th&gt;기업 / 도구&lt;/th&gt;&lt;th&gt;탐지 방식과 강점&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Radware&lt;/strong&gt; (DefensePro)&lt;/td&gt;&lt;td&gt;실시간 &lt;strong&gt;행위 기반(behavioral) 탐지&lt;/strong&gt; 어플라이언스. 시그니처 없이도 이상 트래픽을 탐지하는 데 강점.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;A10 Networks&lt;/strong&gt; (Thunder TPS)&lt;/td&gt;&lt;td&gt;고성능 온프레미스 &lt;strong&gt;완화(mitigation)&lt;/strong&gt; 장비. 대용량 처리에 특화.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;F5 · Fortinet&lt;/strong&gt; (FortiDDoS)&lt;/td&gt;&lt;td&gt;애플리케이션 트래픽 관리·방화벽과 결합된 탐지·방어 장비.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Snort · Suricata&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;대표 오픈소스 침입탐지시스템(IDS). &lt;strong&gt;시그니처 기반&lt;/strong&gt; 탐지의 표준. Suricata는 멀티스레드·고성능.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;FastNetMon · Wanguard&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;흐름(flow) 기반&lt;/strong&gt; DDoS 탐지 도구. FastNetMon은 오픈소스 버전으로 널리 쓰이며 통신사·호스팅사에서 인기.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;strong&gt;Cloudflare · Meta 등 자체 개발&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;초대형 서비스 기업이 &lt;strong&gt;eBPF/XDP&lt;/strong&gt;로 커널 최전선 탐지·차단을 직접 구현해 운영(예: Cloudflare의 L4Drop·Gatebot 계열, Meta의 XDP 기반 방어).&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;div class=&quot;callout ok&quot;&gt;
  &lt;span class=&quot;tag&quot;&gt;시장 흐름 한 줄 요약&lt;/span&gt;
  탐지 시장의 무게중심은 &lt;strong&gt;온프레미스 장비 → 클라우드 상시 탐지&lt;/strong&gt;로 이동했고,
  최근에는 &lt;strong&gt;머신러닝·eBPF/XDP를 내재화한 대형 클라우드 사업자&lt;/strong&gt;(Cloudflare·Akamai·구글·AWS)의 영향력이 커지고 있습니다.
  다만 통신사 백본의 &lt;strong&gt;흐름 기반 광역 탐지(NETSCOUT Arbor 계열)&lt;/strong&gt;는 여전히 대체하기 어려운 핵심 축입니다.
&lt;/div&gt;

&lt;h2&gt;21. 용어 설명&lt;/h2&gt;
&lt;dl class=&quot;glossary&quot;&gt;
  &lt;dt&gt;False Positive / False Negative (오탐 / 미탐)&lt;/dt&gt;
  &lt;dd&gt;오탐은 정상을 공격으로 잘못 판단하는 것, 미탐은 공격을 정상으로 놓치는 것. 탐지 품질의 핵심 균형.&lt;/dd&gt;

  &lt;dt&gt;Baseline (기준선)&lt;/dt&gt;
  &lt;dd&gt;평상시 정상 트래픽의 통계적 정상 범위. 이상 탐지의 비교 기준이 된다.&lt;/dd&gt;

  &lt;dt&gt;Entropy (엔트로피)&lt;/dt&gt;
  &lt;dd&gt;데이터 분포의 무질서·불확실성 정도를 수치화한 값. DDoS 탐지에서는 IP·포트 분포의 쏠림을 감지하는 데 쓰인다.&lt;/dd&gt;

  &lt;dt&gt;CUSUM / EWMA&lt;/dt&gt;
  &lt;dd&gt;시계열의 변화점을 찾는 통계 기법. CUSUM은 누적합, EWMA는 최근 값에 가중치를 둔 이동평균으로 급변을 포착한다.&lt;/dd&gt;

  &lt;dt&gt;NetFlow / sFlow / IPFIX&lt;/dt&gt;
  &lt;dd&gt;트래픽을 &quot;흐름(flow)&quot; 단위로 요약해 수집하는 기술. 대규모 네트워크의 광역 실시간 분석에 쓰인다. IPFIX는 표준 규격.&lt;/dd&gt;

  &lt;dt&gt;Flow (흐름)&lt;/dt&gt;
  &lt;dd&gt;같은 출발지/목적지 IP·포트·프로토콜을 공유하는 패킷들의 묶음. 트래픽 요약의 기본 단위.&lt;/dd&gt;

  &lt;dt&gt;Supervised / Unsupervised Learning (지도 / 비지도 학습)&lt;/dt&gt;
  &lt;dd&gt;지도 학습은 정답(라벨)이 있는 데이터로 훈련. 비지도 학습은 라벨 없이 데이터 구조·정상 패턴만으로 학습.&lt;/dd&gt;

  &lt;dt&gt;Autoencoder (오토인코더)&lt;/dt&gt;
  &lt;dd&gt;입력을 압축했다 복원하도록 학습한 신경망. 정상을 잘 복원하고 이상은 복원 오차가 커지는 성질로 이상을 탐지한다.&lt;/dd&gt;

  &lt;dt&gt;Isolation Forest / One-Class SVM&lt;/dt&gt;
  &lt;dd&gt;대표적 비지도 이상 탐지 알고리즘. 정상에서 &quot;얼마나 쉽게 분리되는가&quot;, &quot;정상 경계를 벗어나는가&quot;로 이상을 판별한다.&lt;/dd&gt;

  &lt;dt&gt;CNN / LSTM&lt;/dt&gt;
  &lt;dd&gt;CNN은 공간·격자 패턴을 학습하는 신경망, LSTM은 시간 순서(시계열)를 기억하며 학습하는 순환 신경망.&lt;/dd&gt;

  &lt;dt&gt;GNN (Graph Neural Network, 그래프 신경망)&lt;/dt&gt;
  &lt;dd&gt;노드와 엣지로 이루어진 그래프 구조 자체를 학습하는 신경망. 통신 관계(topology) 기반 공격 탐지에 강하다.&lt;/dd&gt;

  &lt;dt&gt;SDN (Software-Defined Networking)&lt;/dt&gt;
  &lt;dd&gt;네트워크의 제어부와 전달부를 분리해 중앙 컨트롤러가 스위치를 프로그래밍하는 구조. 탐지와 대응을 자동 연계할 수 있다.&lt;/dd&gt;

  &lt;dt&gt;eBPF / XDP&lt;/dt&gt;
  &lt;dd&gt;리눅스 커널에서 안전하게 프로그램을 실행하는 기술(eBPF)과, 네트워크 드라이버 최전선에서 패킷을 초고속 처리하는 경로(XDP). 회선 속도 차단에 쓰인다.&lt;/dd&gt;

  &lt;dt&gt;In-band Network Telemetry (INT)&lt;/dt&gt;
  &lt;dd&gt;패킷이 네트워크를 지나가며 실시간 측정 정보를 스스로 실어 나르게 하는 기술. 데이터 평면에서의 즉시 탐지를 돕는다.&lt;/dd&gt;

  &lt;dt&gt;Federated Learning (연합 학습)&lt;/dt&gt;
  &lt;dd&gt;원본 데이터를 공유하지 않고 각자 학습한 모델만 중앙에서 합치는 협력 학습 방식. 프라이버시를 지키며 광역 탐지가 가능하다.&lt;/dd&gt;

  &lt;dt&gt;Ensemble (앙상블)&lt;/dt&gt;
  &lt;dd&gt;여러 모델의 예측을 투표·평균 등으로 결합해 단일 모델보다 높은 정확도·안정성을 얻는 기법.&lt;/dd&gt;

  &lt;dt&gt;Threat Intelligence (위협 인텔리전스)&lt;/dt&gt;
  &lt;dd&gt;알려진 악성 IP·도메인·봇넷 등에 대한 평판·위협 정보. 탐지의 보조 근거로 결합한다.&lt;/dd&gt;

  &lt;dt&gt;Flash Crowd&lt;/dt&gt;
  &lt;dd&gt;이벤트 등으로 인한 정상적인 트래픽 급증. 공격과 혼동되기 쉬워 오탐의 주요 원인이 된다.&lt;/dd&gt;
&lt;/dl&gt;

&lt;hr style=&quot;margin:2.5em 0; border:none; border-top:1px solid var(--c-line);&quot;&gt;
&lt;p style=&quot;color:#94a3b8; font-size:.86em;&quot;&gt;
본 문서는 학습·방어 목적의 개념 정리입니다. DDoS의 기본 개념·유형은 별도의 &quot;DoS·DDoS 정리&quot; 문서와 함께 보면 이해가 깊어집니다.
&lt;/p&gt;

&lt;/div&gt;</description>
      <category>Security</category>
      <author>AndrewJ</author>
      <guid isPermaLink="true">https://andrewpage.tistory.com/498</guid>
      <comments>https://andrewpage.tistory.com/498#entry498comment</comments>
      <pubDate>Mon, 3 Aug 2026 08:53:41 +0900</pubDate>
    </item>
    <item>
      <title>2026년에 보유하면 좋을 만한 ETF 및 개별 주식 종목 리스트</title>
      <link>https://andrewpage.tistory.com/497</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;수정일: 2026년 8월 1일&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;주식 종목을 선정할&amp;nbsp;때&amp;nbsp;아래의&amp;nbsp;조건을&amp;nbsp;만족하는&amp;nbsp;종목만&amp;nbsp;추려냈음.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;1 거래 단위 가격이 적은 금액(100,000원 이하)로 매주 분할 매수하기 편리한 종목.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;이유: 월급으로 5~10주씩 꾸준하게 매수하기 위함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1일 평균 거래 금액이 다른 ETF 종목보다 월등하게 큰 ETF 종목.&lt;/b&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;이유: ETF 특성상 거래 규모가 커야 가격 괴리율(%)가 크지 않음.&lt;br /&gt;&lt;b&gt;ETF 종목간 Correlation 값이 작은 것을 골랐음.&lt;/b&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;단, &quot;KODEX 200&quot;과 &quot;TIGER 반도체TOP10&quot;은 Correlation 값이 거의 1.0에 가까운 경우이지만 예외적으로 보유 종목으로 선택.&lt;br /&gt;&amp;nbsp; &amp;nbsp;왜냐하면 &quot;KODEX 200&quot;은 한국주식시장을 대표하는 지수를 추종하고 있고&lt;br /&gt;&amp;nbsp; &amp;nbsp;&quot;TIGER 반도체TOP10&quot;은 ETF 종목 중에서 월등하게 거래량이 많고 한국의 대표 산업을 따르는 지수이기 때문.&lt;br /&gt;&amp;nbsp; &amp;nbsp;그리고 &quot;TIGER 반도체10&quot;을 구성하는 삼성전자, SK하이닉스의 PER, PBR 등 투자지표가 현재 기준으로 가격 대비 좋은 수치임.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;국내 ETF 종목&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;KODEX 200&lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;TIGER 반도체TOP10 (적극 매수 추천)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;KODEX AI반도체핵심장비 (적극 매수 추천)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;KODEX 코스닥150 (적극 매수 추천)&lt;/span&gt;&lt;br /&gt;TIGER&amp;nbsp;소프트웨어&lt;br /&gt;KODEX&amp;nbsp;2차전지산업&lt;br /&gt;KODEX&amp;nbsp;자동차&lt;br /&gt;KODEX&amp;nbsp;철강&lt;br /&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;TIGER 200 중공업 (당분간 매수 보류)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;SOL 조선TOP3플러스 &lt;span style=&quot;text-align: start;&quot;&gt;(당분간 매수 보류)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;HANARO&amp;nbsp;Fn&amp;nbsp;K-TOP&amp;amp;미디어&lt;br /&gt;TIGER&amp;nbsp;의료기기&lt;br /&gt;KODEX&amp;nbsp;바이오&lt;br /&gt;TIGER&amp;nbsp;화장품&lt;br /&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;KODEX&amp;nbsp;증권&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp;(당분간 매수 보류)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;KDOEX&amp;nbsp;은행&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp;(당분간 매수 보류)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;PLUS&amp;nbsp;K방산&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp;(당분간 매수 보류)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;KODEX&amp;nbsp;한국부동산리츠인프라&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;해외 ETF 종목&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;TIGER&amp;nbsp;미국필라델피아반도체나스닥&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;KODEX&amp;nbsp;미국빅테크10(H)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;TIGER&amp;nbsp;미국테크TOP10&amp;nbsp;INDXX&lt;/span&gt;&lt;br /&gt;KIWOOM&amp;nbsp;미국양자컴퓨팅&lt;br /&gt;TIGER&amp;nbsp;미국우주테크&lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;TIGER&amp;nbsp;미국나스닥바이오&lt;/span&gt;&lt;br /&gt;TIGER&amp;nbsp;미국배당다우존스&lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;TIGER&amp;nbsp;미국S&amp;amp;P500&lt;/span&gt;&lt;br /&gt;TIGER&amp;nbsp;차이나항셍테크&lt;br /&gt;TIGER&amp;nbsp;차이나전기차SOLACTIVE&lt;br /&gt;TIGER&amp;nbsp;일본니케이225&lt;br /&gt;TIGER&amp;nbsp;인도니프티50&lt;br /&gt;TIGER&amp;nbsp;라틴35&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;원자재 ETF 종목&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;KODEX&amp;nbsp;WTI원유선물(H)&lt;br /&gt;ACE&amp;nbsp;KRX금현물&lt;br /&gt;KODEX&amp;nbsp;은선물(H)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;개별 기업 종목&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;삼성전자&lt;br /&gt;SK하이닉스&lt;/p&gt;</description>
      <category>Life</category>
      <author>AndrewJ</author>
      <guid isPermaLink="true">https://andrewpage.tistory.com/497</guid>
      <comments>https://andrewpage.tistory.com/497#entry497comment</comments>
      <pubDate>Fri, 31 Jul 2026 15:00:45 +0900</pubDate>
    </item>
  </channel>
</rss>