IP Addressing Physics
[Placeholder for technical implementation]
Article
M
Me
hyunyoun's Blog
network-communicationnetworkcommunicationiproutingglobal-interconnectip-addressing-physicsnetwork-layer10 min read
1. Overview
IP 주소 지정 물리학(IP Addressing Physics)은 단순히 4개의 숫자로 이루어진 IP 주소를 넘어, 43억 개의 제한된 자원을 쪼개고(Subnetting) 병합하여(Supernetting) 거대한 라우팅 트리의 뼈대를 세우는 네트워크 계층의 핵심 주소학을 해부합니다.
학습자는 무식하게 IP를 낭비하던 초기 클래스풀(Classful) 방식의 종말을 선언하고, 필요한 만큼만 비트를 잘라 쓰는 **CIDR(Classless Inter-Domain Routing)**과 **VLSM(가변 길이 서브넷 마스크)**의 비트 연산 마법을 뜯어봅니다. 나아가 고갈된 IPv4의 생명줄을 연장하는 NAT/PAT의 한계와, 128비트라는 무한대에 가까운 우주적 주소 공간을 제공하는 IPv6의 혁명적 구조를 장악합니다. 마지막으로 라우팅 테이블의 크기를 극적으로 줄여 인터넷 백본(Backbone) 라우터의 붕괴를 막아내는 **경로 요약(Route Summarization)**의 인프라 스케일링 역량을 확보합니다.
2. Scope & Boundaries
In-Scope
- IPv4 Mathematics: 이진수 변환, Network ID, Host ID, Subnet Mask.
- CIDR & VLSM: 슬래시 표기법(
/24,/26), 서브넷 크기의 가변적 분할. - Route Summarization: 여러 개의 작은 서브넷을 하나의 큰 CIDR 블록으로 묶는 기술(Supernetting).
- IPv6 Evolution: 128비트 주소 체계, SLAAC (Stateless Address Autoconfiguration), IPSec 내장.
Out-of-Scope
- 라우팅 프로토콜 심화: OSPF/BGP가 경로를 교환하는 원리 08-03-03, 08-03-04 영역으로 위임.
- NAT 동작의 전송 계층 연관성: 포트 기반 변환(PAT)의 세션 관리 08-01-02 영역에서 기학습 (본 문서는 주소 공간 자체에 집중).
Boundaries
- Subnetting vs Supernetting: 서브네팅은 회사 안에서 1개의 큰 네트워크 대역(
/24)을 받아와서 인사팀(/26), 개발팀(/26) 등으로 '잘게 쪼개는' 기술입니다. 반면 슈퍼네팅(Route Summarization)은 반대로 수많은 잘게 쪼개진 네트워크 대역들을 하나의 큰 대역(/16)으로 '합쳐서' 외부 라우터에 광고하는 기술입니다. 쪼개는 것은 내부 브로드캐스트 통제를 위해, 합치는 것은 외부 라우팅 테이블 크기를 줄이기 위함이라는 방향성의 차이를 명확히 경계 짓습니다.
3. Counterexample
- 클래스풀(Classful) 낭비의 재앙: 1990년대 초, 어느 대학교가 300대의 컴퓨터를 위해 IP를 신청했습니다. C클래스(254개)는 모자라기 때문에, 어쩔 수 없이 B클래스(65,534개)를 할당받았습니다. 300개를 쓰고 남은 65,000개의 IP는 아무도 쓰지 못하고 영원히 버려졌습니다. CIDR(
/23을 주면 510개 할당 가능)이 없던 시절, IP 주소 공간을 고정된 클래스(A, B, C)로만 나누어 IPv4 고갈을 수십 년이나 앞당긴 원시적 IP 할당의 끔찍한 안티 패턴입니다. - 라우팅 테이블 붕괴: 한 회사가 서울, 대전, 대구, 부산에 각각
/24서브넷을 10개씩(총 40개) 가지고 있습니다. 이 회사의 경계 라우터가 통신사(ISP)에게 이 40개의 라우팅 정보를 하나하나 낱개로 광고합니다. 전 세계의 모든 회사가 이런 식으로 낱개로 광고하자, ISP 백본 라우터의 메모리(RAM)가 꽉 차서 다운되어 버립니다. 40개의/24대역을 묶어서 하나의/18이나/19대역으로 경로 요약(Summarization)을 하지 않아 발생한 글로벌 민폐입니다.
4. Prerequisites
- Network Layer 기초 (Basic): IP 헤더, TTL. (08-01-02 Network Layer)
- 이진수(Binary) 연산 기초 (Basic): 10진수 2진수 변환, 비트 AND 연산. (01-01 Boolean Logic)
5. Learning Map
6. Learning Topics
Basic
Core Topic 01: 32비트의 영토 분할, 서브넷 마스킹 (IPv4 & Subnet Masking)
- Why to Learn: 두 대의 컴퓨터가 통신할 때 "우리는 같은 동네(LAN)인가, 아니면 라우터를 거쳐야 하는 남인가?"를 판단하는 가장 기저의 비트 연산을 통찰하기 위함입니다.
- What to Learn:
- Concepts: IPv4 (32-bit), Dotted Decimal, Network Portion, Host Portion, Subnet Mask (
255.255.255.0), Bitwise AND. - Skills: 주어진 IP와 서브넷 마스크를 이진수로 변환하고 AND 연산을 통해 Network ID(동네 이름)를 기계적으로 추출하기.
- Concepts: IPv4 (32-bit), Dotted Decimal, Network Portion, Host Portion, Subnet Mask (
- How to Learn:
- 1단계: 마스크의 의미: IP 주소는 32자리의 이진수입니다. 이 중 '어디까지가 우리 동네 이름인가?'를 알려주는 게 서브넷 마스크입니다.
255.255.255.0은 이진수로 앞의 24개가1입니다. 즉 "앞에서부터 24자리가 동네 이름(Network ID)이다"라는 뜻입니다. - 2단계: AND 연산: 내 IP(
192.168.1.10)와 마스크를 AND 연산하면192.168.1.0이 나옵니다. 목적지 IP(192.168.1.50)와 마스크를 AND 연산하면 똑같이192.168.1.0이 나옵니다. "아, 동네 이름이 같네! 라우터한테 안 가고 내가 직접 MAC 주소(ARP) 찾아서 던져야지!" 하는 PC의 논리 회로를 해부합니다.
- 1단계: 마스크의 의미: IP 주소는 32자리의 이진수입니다. 이 중 '어디까지가 우리 동네 이름인가?'를 알려주는 게 서브넷 마스크입니다.
- Implement: 파이썬 서브넷 판별기.
ip1 = "10.1.1.5",ip2 = "10.1.2.5",mask = "255.255.0.0". 코드가 이를 32비트 이진수로 변환하고 AND 연산 수행.[Result] Network IDs match (10.1.0.0) -> Direct L2 Communication. 만약mask = "255.255.255.0"으로 주면[Result] Network IDs differ (10.1.1.0 vs 10.1.2.0) -> Send to Default Gateway를 출력하는 논리 회로 모사.
Recommended
Core Topic 02: 비트 가위질, CIDR와 VLSM (CIDR & VLSM)
- Why to Learn: 고정된 크기(254개, 6만 개)로만 IP를 나누던 비효율을 버리고, 슬래시(
/) 뒤의 숫자 하나로 부서의 인원수에 딱 맞게 IP 대역을 재단하여 한 방울의 낭비도 없애기 위함입니다. - What to Learn:
- Concepts: CIDR (Classless Inter-Domain Routing), VLSM (Variable Length Subnet Masking), Subnetting, Slash Notation (
/26,/30). - Skills: 100명이 있는 부서, 30명이 있는 부서, 라우터 간 연결(2개 필요)에 맞추어 하나의
/24대역을 여러 개의 서로 다른 서브넷 마스크 크기로 쪼개기(VLSM 설계).
- Concepts: CIDR (Classless Inter-Domain Routing), VLSM (Variable Length Subnet Masking), Subnetting, Slash Notation (
- How to Learn:
- 1단계: CIDR 표기법:
255.255.255.0이라고 길게 쓰는 대신/24라고 씁니다(마스크 비트 1이 24개)./25로 늘리면 동네 이름이 1비트 길어지므로, 하나의/24동네가 정확히 절반(128개씩) 크기의 두 동네로 쪼개집니다. - 2단계: VLSM (가변 길이):
/24(256개)를 통째로 쪼갭니다. 영업팀은 인원이 많으니 절반(/25, 128개)을 줍니다. 남은 절반을 또 쪼개어 개발팀에/26(64개)을 줍니다. 남은 걸 또 쪼개어 서버팀에/27(32개)을 줍니다. 이렇게 하나의 큰 천을 다양한 크기로 잘라 쓰는 가변 길이 튜닝을 뜯어봅니다.
- 1단계: CIDR 표기법:
- Implement: VLSM 계산기 데모. 입력:
Base IP = 192.168.0.0/24. 필요 인원:Team_A: 100명, Team_B: 50명, Team_C: 10명. 스크립트가Team_A를 위해 가장 알맞은 크기인/25(가용 126개) 할당(192.168.0.0/25),Team_B는/26(가용 62개) 할당(192.168.0.128/26),Team_C는/28(가용 14개) 할당(192.168.0.192/28)하여 남는 버려지는 IP 공간을 최소화하는 알고리즘 렌더링.
Practical
Core Topic 03: 라우터의 뇌 다이어트, 경로 요약 (Route Summarization)
- Why to Learn: 인터넷 백본 라우터에 전 세계 수십억 개의 낱개 IP 대역이 전부 저장되면 라우터가 폭발하므로, 인접한 수백 개의 대역을 묶어서 딱 한 줄로 줄여버리는 최적화 스킬을 쥐기 위함입니다.
- What to Learn:
- Concepts: Route Summarization (Supernetting), Route Aggregation, BGP Routing Table, Memory Optimization.
- Skills:
10.1.0.0/24,10.1.1.0/24,10.1.2.0/24,10.1.3.0/244개의 라우팅 엔트리를 이진수 공통 분모를 찾아10.1.0.0/22한 줄로 요약(Summarize)하기.
- How to Learn:
- 1단계: 거대한 테이블의 병목: 라우팅 테이블이 100만 줄이 되면, 패킷 하나가 들어올 때마다 100만 줄을 뒤져야 하므로 라우터의 CPU와 RAM이 버티질 못합니다.
- 2단계: 경로 요약 (슈퍼네팅): 아시아 지사 라우터가 본사 라우터에게 한국(
/24), 일본(/24), 중국(/24)을 따로따로 알려주지 않고, "그냥 앞자리가10.1.0.0/16인 건 다 아시아로 보내라!"라고 크게 하나로 묶어서(Aggregating) 알려줍니다. 본사 라우터는 테이블이 1줄로 줄어들고 검색(Longest Match) 속도가 극적으로 빨라지는 인프라 스케일링을 뜯어봅니다.
- Implement: 라우트 서머라이제이션(Route Summarization) 컴파일러. 입력 배열:
["192.168.0.0/24", "192.168.1.0/24", "192.168.2.0/24", "192.168.3.0/24"]. 코드가 IP의 3번째 옥텟(0, 1, 2, 3)을 이진수로 변환하고, 4개 주소의 '공통 접두사(Common Prefix)' 비트가 22개임을 계산. 최종적으로[Result] Summarized Route: 192.168.0.0/22를 도출하여 라우팅 테이블 길이를 1/4로 줄이는 데모.
Advanced
Core Topic 04: 무한의 우주 공간, IPv6 혁명 (The IPv6 Revolution)
- Why to Learn: 43억 개의 IPv4 주소가 완전히 바닥난 현대에서, 공유기(NAT)의 꼼수 없이 모든 디바이스에 진짜 공인 IP를 달아주는 차세대 인터넷 주소 체계를 장악하기 위함입니다.
- What to Learn:
- Concepts: IPv6 (128-bit), Hexadecimal Notation (
2001:0db8::1), SLAAC (Stateless Address Autoconfiguration), IPSec Mandatory, Dual Stack. - Skills: IPv6의 연속된 0을 생략하는 축약 규칙(Zero Compression,
::) 해석 및 IPv4와 IPv6가 공존하는 듀얼 스택(Dual Stack) 환경 이해.
- Concepts: IPv6 (128-bit), Hexadecimal Notation (
- How to Learn:
- 1단계: 우주적 스케일 (128비트): 32비트(43억 개)에서 128비트(개)로 커졌습니다. 지구 표면 1제곱미터당 수천 조 개의 IP를 뿌릴 수 있습니다. IP가 남아도니 더 이상 집집마다 공유기(NAT)를 두어 IP를 아껴 쓸 필요가 없어집니다(P2P 통신 부활).
- 2단계: 스스로 주소 짓기 (SLAAC): IPv4에서는 DHCP 서버가 IP를 하나하나 나눠줬습니다. IPv6 환경에서는 라우터가 "여기 대역은
2001:abcd::/64야"라고 방송만 때리면, 내 노트북이 자기 랜카드(MAC 주소)를 적당히 섞어서 남은 64비트를 스스로 만들고 1초 만에 IP 설정을 끝내버리는(SLAAC) 자가 구성 마법을 해부합니다.
- Implement: IPv6 주소 압축기 스크립트. 원본 주소
2001:0db8:0000:0000:0000:ff00:0042:8329를 입력받음. 첫째, 각 블록의 선행 0(Leading Zeros) 제거2001:db8:0:0:0:ff00:42:8329. 둘째, 연속된 0 블록(0:0:0)을::로 단 한 번 압축2001:db8::ff00:42:8329로 최적화하는 포매팅 로직 시각화.
7. Terminology
8. References
Primary
- [P1] CS2023 - Networking and Communication (NC) - Network Layer (Addressing and Subnetting)
- [P5] SFIA - Network Design (NTDS) - IP Addressing Schemes
Secondary
- [Computer Networking: A Top-Down Approach] Kurose & Ross - The Internet Protocol (IPv4, Addressing, IPv6)
- [TCP/IP Illustrated, Volume 1] Kevin R. Fall - IP Addressing (CIDR, Subnetting)
Industry
- [Cisco Networking Academy] - IPv4 Subnetting and VLSM / IPv6 Basics
- [IETF RFC 4632] - Classless Inter-domain Routing (CIDR)
- [IETF RFC 8200] - Internet Protocol, Version 6 (IPv6) Specification
9. Final Checklist
Primary
- 송신 컴퓨터가 목적지 IP 주소와 자신의 Subnet Mask를 비트 AND 연산하여, 패킷을 로컬 스위치로 바로 쏠지(ARP) 아니면 Default Gateway(라우터)로 던질지 결정하는 판단 회로를 설명할 수 있는가?
- 과거 A, B, C 클래스로 고정되어 무수한 IP 낭비를 낳았던 Classful 주소 체계의 한계를 지적하고, 이를 슬래시(
/) 기반의 유연한 비트 할당으로 타파한 CIDR의 패러다임 전환을 증명할 수 있는가?
Secondary
-
192.168.1.0/24네트워크를 100명 규모 1개, 50명 규모 1개, 10명 규모 2개의 서브넷으로 분할(VLSM)할 때, 할당되는 IP 대역과 브로드캐스트 주소, 낭비되는 IP 비율을 계산해 낼 수 있는가? - BGP나 OSPF 라우터가 인접한 대역인
10.1.0.0/24,10.1.1.0/24,10.1.2.0/24,10.1.3.0/244개의 경로를10.1.0.0/22하나로 묶는 경로 요약(Route Summarization)의 비트 공통 분모 추출 원리를 해부할 수 있는가?
Industry
- IPv6 환경에서 클라이언트가 라우터로부터 Prefix 64비트를 방송(Router Advertisement)받은 후, 자신의 MAC 주소를 기반으로 나머지 64비트 Interface ID를 조합해 IP를 자가 구성하는 SLAAC(Stateless) 과정을 논증할 수 있는가?
- 기존 IPv4 전용망에서 IPv6 단말 간 통신을 지원하기 위해, IPv6 패킷을 IPv4 패킷 안에 캡슐화하여 터널을 뚫는 기법과 듀얼 스택(Dual Stack) 장비의 과도기적 운용 아키텍처를 설계할 수 있는가?