IP 주소는 네트워크상의 host를 식별한다. IPv4는 32비트를 쓰며 네 개의 octet(192.168.1.10)으로 표기되어 약 43억 개의 주소를 주는데 — 충분하지 않고, 이것이 NAT와 IPv6를 이끈다. IPv6는 128비트(2001:db8::1)를 쓰며, 사실상 무제한의 공간이다.
표기법은 접미사로 주소를 와 부분으로 나누는데, 여기서 은 앞의 몇 비트가 network를 식별하는지다:
/nn192.168.1.10 / 24
└──────┬─────┘ └┬┘
address prefix length (24 bits = network, 8 bits = host)
/24 → 192.168.1.0 network, 192.168.1.1–254 hosts, 192.168.1.255 broadcast
(256 addresses, 254 usable)
/16 → 192.168.0.0 larger network (65,536 addresses)
subnet은 prefix로 잘라낸 주소 공간의 한 조각이다. 더 짧은 prefix(/16)는 더 많은 host를 가진 더 큰 network를 의미하고; 더 긴 prefix(/28)는 작은 subnet을 의미한다. Subnetting은 조직화와 보안을 위해 네트워크를 분할하게 해준다 — 예를 들어 데이터베이스를 웹 서버와 분리된 사설 /24에 두는 것.
NAT(Network Address Translation)는 많은 장치가 하나의 공인 IPv4 주소를 공유하는 방식이다. 집의 라우터는 사설(private) 주소(인터넷에서 라우팅되지 않는 192.168.x.x, 10.x.x.x 같은 대역)를 나눠주고, 나가는 패킷의 소스 주소/포트를 자신의 단일 공인 IP로 다시 쓰며, 응답을 되돌려 라우팅하기 위해 변환 테이블을 유지한다:
Private LAN NAT router Internet
192.168.1.10:51000 ──▶ translate to 203.0.113.5:40001 ──▶ server
192.168.1.11:51000 ──▶ translate to 203.0.113.5:40002 ──▶ server
(router's table maps public port → private host:port for the return trip)
NAT는 희소한 IPv4 공간을 보존했고(그리고 부수적으로 격리를 더했다) 하지만 직접적인 인바운드 연결을 깨뜨리기도 한다 — 이것이 모든 장치에 충분한 주소를 가진 IPv6가 그 필요성을 없애려는 이유다.
Addressing과 subnet은 클라우드 네트워킹의 기초다: 모든 VPC, subnet, security group, firewall 규칙이 CIDR로 작성되므로, 그것 없이는 클라우드 네트워크를 설계할 수 없다. 면접관은 당신이 /24를 읽고 네트워크 크기와 분할에 대해 추론할 수 있는지 확인한다. NAT는 사설 vs 공인 IP의 일상적 현실과 "아웃바운드는 되는데 인바운드는 안 되는" 이유를 설명하고, IPv4 고갈 이야기는 NAT와 IPv6 양쪽의 이유다 — 현대 인터넷을 빚어낸 압력을 이해하고 있음을 보여준다.
주니어부터 시니어까지 상세한 답변이 포함된 IT 면접 질문 라이브러리.
후원하기