192.168.1.1, 10.0.0.0/8, 127.0.0.1, 2001:db8::/32. 네트워크 설정·firewall 룰·AWS security group 마다 본다. 그런데 IP 주소는 사실 32-bit 정수 1 개 — 점 3 개는 사람이 읽기 쉽게 분리한 것뿐. 이 가이드는 IP 주소의 비트 구조, CIDR notation, private 범위, NAT, IPv6 등장 이유를 networking jargon 없이 정리한다.
IPv4 = 32-bit 정수 1 개
192.168.1.100
↓
192 . 168 . 1 . 100 ← 사람 친화 표기 (dotted decimal)
↓
11000000.10101000.00000001.01100100 ← 실제 binary
↓
0xC0A80164 ← 같은 값을 hex 로
↓
3,232,235,876 ← 같은 값을 decimal 로4 byte = 32 bit. 각 byte 가 0-255. 점 (.) 은 사람이 읽기 쉽게 분리한 것뿐 — 컴퓨터는 그냥 4 byte 정수.
총 표현 가능한 주소 = 2^32 = 약 43 억. 1981 년 IPv4 표준화 시 "충분" 으로 봤지만 90 년대 인터넷 폭발로 부족 시작.
옛 분류 — 클래스 A/B/C (1981-1993)
초기 IPv4 는 주소를 3 등급으로 분류:
| 클래스 | 첫 비트 | 범위 | 네트워크 수 | 호스트 수 |
|---|---|---|---|---|
| A | 0xxx | 0.0.0.0 - 127.255.255.255 | 128 | 16M 개 |
| B | 10xx | 128.0.0.0 - 191.255.255.255 | 16K | 65K 개 |
| C | 110x | 192.0.0.0 - 223.255.255.255 | 2M | 256 개 |
문제 — 회사가 500 호스트 필요하면? Class C (256) 이 부족, Class B (65K) 가 낭비. 1993 년 CIDR 도입으로 클래스 폐지.
CIDR — Classless Inter-Domain Routing
주소 뒤에 /N 박아 "앞 N bit 가 네트워크" 라고 표시:
192.168.1.0/24
↑
앞 24 bit = network
나머지 8 bit = host
binary:
11000000.10101000.00000001.00000000
└────── network (24 bit) ──┘└host(8)─┘
network: 192.168.1.0
host: 0-255 (실제 사용 가능 1-254, .0 과 .255 는 특수)클래스 폐지 후 유연한 분배 가능:
/16= 호스트 65,534 개 (Class B 동등)/24= 호스트 254 개 (Class C 동등)/26= 호스트 62 개 (custom)/28= 호스트 14 개 (small office)/30= 호스트 2 개 (point-to-point link)/32= 1 개 (single host)
실험 — IP / CIDR 계산기 가 CIDR 입력 시 network address · broadcast · range · subnet mask 자동 계산.
Subnet mask — CIDR 의 옛 표현
같은 정보를 표현하는 두 가지 방식:
/24 (CIDR)
255.255.255.0 (subnet mask)
binary 일치:
11111111.11111111.11111111.00000000
└────── 24 개의 1 ─────┘└── 0 ───┘Subnet mask 가 옛 라우터·Windows 설정에 흔함. CIDR 이 더 간결.
특수 주소 — 외워 둬야 할 4 가지
| 범위 | 이름 | 용도 |
|---|---|---|
127.0.0.0/8 | Loopback | 본인 머신 (보통 127.0.0.1) |
10.0.0.0/8 | Private (Class A) | 1,600 만 주소. 큰 사내·VPC |
172.16.0.0/12 | Private (Class B) | 100 만 주소 |
192.168.0.0/16 | Private (Class C) | 65 K 주소. home router 의 기본 |
169.254.0.0/16 | Link-local | DHCP 실패 시 자동 (Windows APIPA) |
224.0.0.0/4 | Multicast | 그룹 송신 |
0.0.0.0/0 | Any / default | "모든 주소". route table·firewall |
255.255.255.255 | Broadcast | local subnet 의 모든 호스트 |
RFC 1918 (private 범위) — 인터넷 X, LAN 안에서만. 모든 office / home / AWS VPC 가 이 범위 사용.
NAT — IPv4 부족의 우회책
43 억 주소로 부족. 1994 년 NAT (Network Address Translation):
내부 호스트 100 대 (192.168.1.1 ~ 192.168.1.100)
│
│
┌───┴───┐
│ Router │
│ NAT │ ← public IP 1 개 (203.0.113.5)
└───┬───┘
│
Internet
요청 흐름:
1. 192.168.1.50 이 google.com:443 요청
2. Router 가 source IP 를 203.0.113.5 + 임의 port 로 교체
3. Google 응답 도착 (203.0.113.5:port)
4. Router 가 port 으로 누구한테 가는지 추적 → 192.168.1.50 으로 forward결과:
- 여러 내부 호스트가 1 public IP 공유
- 외부에서 내부로 직접 connect X (router 가 port forward 설정 필요)
- peer-to-peer 어려움 (양쪽 다 NAT 뒤)
- VoIP / 게임 등 NAT traversal 기술 필요 (STUN/TURN/ICE)
IPv6 — 128-bit 의 답
IPv4 의 진짜 해결책. 1998 년 표준. 128-bit (2^128 = 약 3.4 × 10^38 주소):
IPv6 표기:
2001:0db8:85a3:0000:0000:8a2e:0370:7334
└──── 8 group × 16-bit ────┘
연속 0 축약 (::):
2001:0db8:85a3::8a2e:0370:7334 ← :: 가 0000:0000 의미
loopback:
::1 ← IPv4 의 127.0.0.1
특수:
::/0 ← any
fe80::/10 ← link-local
fc00::/7 ← private (ULA)
2001:db8::/32 ← documentation 전용IPv6 자체에 NAT 없음 — 주소가 충분해서 모든 디바이스가 globally unique. peer-to-peer 자연.
그러나 도입 느림 — 30+ 년 누적 IPv4 인프라 / 호환성. 현재 dual stack (IPv4 + IPv6 동시) 이 표준.
실용 — CIDR 계산
"192.168.1.50 이 10.0.0.0/8 안에 있나?"
10.0.0.0/8 의 network bit = 앞 8 bit
10.0.0.0 의 첫 byte = 10
192.168.1.50 의 첫 byte = 192
10 ≠ 192 → 안에 X"/24 에 호스트 몇 개?"
/24 = network 24 bit + host 8 bit
host 비트 8 = 2^8 = 256 주소
그러나 사용 가능:
- 0번 (network address) = 예약
- 255번 (broadcast) = 예약
→ 254 개 사용 가능 호스트"두 CIDR 가 겹치나?"
192.168.0.0/16 vs 192.168.1.0/24
/16 의 network = 앞 16 bit = "192.168"
/24 의 network = 앞 24 bit = "192.168.1"
/24 의 첫 16 bit = "192.168" 일치
→ /24 가 /16 의 부분집합 → 겹침IP / CIDR 계산기 가 자동 — CIDR 입력 시 range / 호스트 수 / overlap 즉시 표시.
AWS / GCP / Azure 의 VPC CIDR
클라우드 VPC 는 private 범위 안에서 CIDR 직접 선택:
VPC: 10.0.0.0/16 (총 65K 주소)
├── Subnet A: 10.0.1.0/24 (254 호스트, AZ-1)
├── Subnet B: 10.0.2.0/24 (254 호스트, AZ-2)
└── Subnet C: 10.0.3.0/24 (254 호스트, AZ-3)주의 — VPC 끼리 peering 시 CIDR 겹치면 안 됨. 회사 표준 정해 두면 편리 (예: prod = 10.0/16, staging = 10.1/16).
Security group 의 CIDR 사용
# AWS Security Group rule
Inbound HTTPS from 0.0.0.0/0 ← any source (public 노출)
Inbound SSH from 203.0.113.0/24 ← 회사 office IP 범위만
Inbound 5432 from 10.0.0.0/16 ← VPC 내부 만 (Postgres)firewall 룰의 source / destination 가 CIDR. /32 = 단일 IP, /0 = any.
흔한 함정
1. /24 와 /23 의 호스트 수
/24 = 254 호스트, /23 = 510 호스트 (2 배). 한 bit 차이가 2 배. host 비트 N → 2^N 주소 — 직관 위반.
2. 0.0.0.0/0 의 의미
"default route" 또는 "any source". 모든 IP. firewall 의 0.0.0.0/0 inbound 는 매우 위험 — 명시 의도 시만.
3. CIDR overlap
VPC peering / VPN 양쪽 CIDR 겹치면 라우팅 모호. 첫 설계 시 회사 표준 정해야.
4. IPv4 와 IPv6 mixing
# 다음 둘 다 localhost
127.0.0.1 (IPv4)
::1 (IPv6)
# 서비스 bind 시
0.0.0.0 (IPv4 만)
:: (IPv6 만 — 일부 OS 는 IPv4 도)
[::] (IPv6 명시)Docker / Kubernetes 의 dual-stack 설정에서 자주 혼동.
5. NAT 뒤 client IP 가져오기
load balancer 뒤 service 가 req.connection.remoteAddress 보면 LB 의 IP 만. 실제 client IP 는 X-Forwarded-For 헤더에. spoofing 주의 — trusted proxy 만 신뢰.
참고 자료
- RFC 791 (IPv4) — datatracker
- RFC 1918 (Private addresses) — datatracker
- RFC 4632 (CIDR) — datatracker
- RFC 8200 (IPv6) — datatracker
요약
- IPv4 = 32-bit 정수 1 개. 점은 사람이 읽기 쉽게 분리.
- CIDR
/N= 앞 N bit 가 network. 클래스 (A/B/C) 폐지 후 표준. - Private 범위 — 10/8, 172.16/12, 192.168/16. LAN·VPC·home.
- NAT 가 IPv4 부족 우회 (1994). public IP 1 개 + 내부 다수 호스트.
- IPv6 = 128-bit. 2^128 주소. NAT 불필요. 도입 진행 중.
- AWS / GCP / Azure VPC 가 CIDR 직접 선택. peering 시 overlap 회피.
- Firewall 룰의 source / destination = CIDR.
/32단일,/0any. - 실험 — IP / CIDR 계산기 가 CIDR 입력 → network · broadcast · range · host 수 자동.