IP 주소 체계 (IPv4)
IP(Internet Protocol) 주소는 인터넷에 연결된 모든 기기를 식별하기 위한 고유한 주소다. 현재 가장 널리 쓰이는 IPv4는 192.168.0.1처럼 4개의 숫자가 점으로 구분된 형태를 띤다. 이는 사실 32비트의 이진수를 사람이 읽기 편하게 8비트(1바이트)씩 4개로 쪼개어 10진수로 표현한 것이다.
32비트라면 총 2^32, 즉 약 43억 개의 주소를 만들 수 있다. 예전에는 "이 정도면 전 세계 컴퓨터에 다 나눠 주고도 남겠지?"라고 생각했다. 하지만 스마트폰, 태블릿, 스마트 TV, 심지어 냉장고까지 인터넷에 연결되는 시대가 오면서 43억 개로는 턱없이 부족해졌다.
네트워크 ID와 호스트 ID
IP 주소는 크게 두 부분으로 나뉜다.
- 네트워크 ID: 어떤 네트워크(동네)에 속해 있는지를 나타낸다.
- 호스트 ID: 그 네트워크 안에서 어떤 기기(집)인지를 나타낸다.
마치 전화번호에서 02가 서울을 의미하고, 뒤의 번호가 특정 개인을 의미하는 것과 같은 이치다.
IP 클래스 (Classful Addressing)
초기에는 이 네트워크 ID와 호스트 ID를 나누는 기준을 클래스(Class)라는 개념으로 고정해 두었다. A, B, C, D, E 클래스가 있지만, 우리가 주로 사용하는 것은 A, B, C 클래스다.

|
클래스
|
용도
|
네트워크 ID 크기
|
호스트 ID 크기
|
할당 가능한 호스트 수
|
|
A 클래스
|
대규모 네트워크
|
8비트
|
24비트
|
약 1,677만 개
|
|
B 클래스
|
중규모 네트워크
|
16비트
|
16비트
|
약 6만 5천 개
|
|
C 클래스
|
소규모 네트워크
|
24비트
|
8비트
|
254개
|
왜 호스트 수에서 2개를 뺄까? 호스트 ID가 모두 0인 주소는 네트워크 자체를 의미하고, 모두 1인 주소는 해당 네트워크의 모든 기기에게 데이터를 보내는 브로드캐스트 주소로 예약되어 있기 때문에 실제 기기에는 할당할 수 없다.
서브네팅 (Subnetting)과 서브넷 마스크
클래스 방식은 치명적인 단점이 있었다. 바로 주소 낭비가 심하다는 것이다.
예를 들어, 컴퓨터가 300대 있는 회사가 있다고 치자. C 클래스(254대)로는 부족하니 B 클래스(약 6만 5천 대)를 할당받아야 한다. 그러면 무려 6만 개가 넘는 IP 주소가 그냥 버려지게 된다.
이런 비효율을 해결하기 위해 등장한 구원투수가 바로 서브네팅(Subnetting)이다. 서브네팅은 커다란 네트워크를 더 작은 단위의 네트워크(서브넷)로 쪼개어 쓰는 기술이다.
서브넷 마스크 (Subnet Mask)
네트워크를 쪼갰다면, 어디까지가 네트워크 ID이고 어디서부터가 호스트 ID인지 표시해 줄 기준이 필요하다. 이 역할을 하는 것이 서브넷 마스크다.
서브넷 마스크도 IP 주소처럼 32비트로 이루어져 있는데, 네트워크 ID 부분은 모두 1로, 호스트 ID 부분은 모두 0으로 채운다.
예를 들어 C 클래스의 기본 서브넷 마스크는 255.255.255.0이다. 이진수로 풀면 11111111.11111111.11111111.00000000이 된다. 앞의 24비트가 네트워크를 의미한다는 뜻이다.
255.255.255.128이면 11111111.11111111.11111111.10000000이기 때문에 255.255.255.0~255.255.255.127과 255.255.255.128~255.255.255.255로 나눈다는 뜻이다.
255.255.255.128이면 11111111.11111111.11111111.10000000이기 때문에 255.255.255.0~255.255.255.127과 255.255.255.128~255.255.255.255로 나눈다는 뜻이다.

CIDR (Classless Inter-Domain Routing) 표기법
요즘은 서브넷 마스크를 255.255.255.0처럼 길게 쓰지 않고, IP 주소 뒤에 슬래시(/)를 붙여서 1의 개수를 적는 방식을 많이 쓴다. 이를 CIDR 표기법이라고 한다.
192.168.0.1/24 : 앞의 24비트가 네트워크 ID라는 뜻이다. (서브넷 마스크 255.255.255.0과 동일)
서브네팅을 활용하면 /24 네트워크를 반으로 쪼개어 /25(호스트 126개) 두 개로 나누는 등, 필요한 만큼만 IP를 잘라서 효율적으로 분배할 수 있다.
공인 IP와 사설 IP, 그리고 NAT
서브네팅으로 주소 낭비를 줄였지만, 근본적으로 43억 개라는 IPv4의 한계는 극복할 수 없었다. 그래서 고안해 낸 개념이 바로 사설 IP와 NAT다.

공인 IP (Public IP) vs 사설 IP (Private IP)
- 공인 IP: 전 세계에서 유일한, 인터넷 통신사를 통해 정식으로 할당받은 진짜 주소다. 인터넷 세상 어디서든 찾아갈 수 있다.
- 사설 IP: 우리 집 공유기나 회사 내부 네트워크에서만 쓰는 가짜(내부용) 주소다. 192.168.x.x나 10.x.x.x 같은 주소들이 대표적이다.
사설 IP는 내부에서만 유일하면 되기 때문에, 우리 집 공유기가 192.168.0.2를 쓰고 옆집 공유기도 192.168.0.2를 써도 아무 문제가 없다. 이렇게 하면 전 세계 수십억 대의 기기가 몇 개의 공인 IP만으로도 인터넷을 쓸 수 있게 되어 IP 부족 문제를 획기적으로 해결할 수 있다.
NAT (Network Address Translation)
그렇다면 사설 IP를 쓰는 내 컴퓨터는 어떻게 외부 인터넷과 통신할 수 있을까? 사설 IP는 외부에서 찾아올 수 없는 주소인데 말이다.
이때 공유기(라우터)가 해주는 마법 같은 일이 바로 NAT(네트워크 주소 변환)이다.
- 내 컴퓨터(사설 IP: 192.168.0.2)가 네이버에 접속하려고 요청을 보낸다.
- 이 요청이 공유기를 거칠 때, 공유기는 출발지 주소를 자신의 공인 IP로 싹 바꿔치기해서(번역해서) 네이버로 보낸다. (이때 공유기는 "아, 이 요청은 192.168.0.2가 보낸 거였지" 하고 장부에 적어둔다.)
- 네이버는 요청이 공유기(공인 IP)에서 온 줄 알고 그곳으로 응답을 보낸다.
- 응답을 받은 공유기는 장부를 확인하고, 다시 목적지 주소를 내 컴퓨터의 사설 IP로 바꿔서 전달해 준다.
장부를 NAT 포워딩 테이블(NAT Translation Table)이라고 한다.
이 NAT 기술 덕분에 우리는 집에서 스마트폰, 노트북, 태블릿 등 여러 기기를 동시에 와이파이에 연결해서 인터넷을 마음껏 즐길 수 있는 것이다.
'CS > 네트워크' 카테고리의 다른 글
| 🚀네트워크의 로켓배송 DNS와 CDN (0) | 2026.04.29 |
|---|---|
| OSI 7계층 & TCP/IP 4계층 (0) | 2026.04.29 |
