[Daily morning study] IP 주소 체계와 서브넷 마스크 (CIDR 표기법)
#daily morning study
IP 주소란
IP(Internet Protocol) 주소는 네트워크 상에서 장치를 식별하는 논리적 주소다. 현재 IPv4와 IPv6 두 가지 버전이 공존한다.
IPv4
32비트로 구성되며, 8비트씩 4개의 옥텟(octet)으로 나눠 10진수로 표기한다.
11000000.10101000.00000001.00000001
↓
192.168.1.1
표현 가능한 주소 수는 2³² = 약 43억 개다. 인터넷이 확장되면서 고갈 문제가 생겼고, 이를 해결하기 위해 NAT와 CIDR 같은 기법이 등장했다.
IPv6
128비트로 구성되며, 16비트씩 8개 그룹을 콜론으로 구분해 16진수로 표기한다.
2001:0db8:85a3:0000:0000:8a2e:0370:7334
표현 가능한 주소 수는 2¹²⁸ = 약 3.4 × 10³⁸개로 사실상 무한하다.
IP 주소 클래스 (Classful 방식)
초기 인터넷에서는 IP 주소를 클래스 단위로 나눴다.
| 클래스 | 첫 번째 옥텟 범위 | 기본 서브넷 마스크 | 용도 |
|---|---|---|---|
| A | 0 ~ 127 | 255.0.0.0 (/8) | 대형 네트워크 |
| B | 128 ~ 191 | 255.255.0.0 (/16) | 중형 네트워크 |
| C | 192 ~ 223 | 255.255.255.0 (/24) | 소형 네트워크 |
| D | 224 ~ 239 | - | 멀티캐스트 |
| E | 240 ~ 255 | - | 예약 (연구용) |
클래스 방식의 문제는 주소 낭비가 심하다는 점이다. 예를 들어 300개의 호스트가 필요한 경우 클래스 B를 할당받으면 65,534개 주소 중 대부분을 쓰지 않게 된다.
서브넷 마스크
서브넷 마스크(subnet mask)는 IP 주소에서 네트워크 부분과 호스트 부분을 구분하는 32비트 값이다.
IP 주소: 192.168.1.100 → 11000000.10101000.00000001.01100100
서브넷 마스크: 255.255.255.0 → 11111111.11111111.11111111.00000000
AND 연산 결과 (네트워크 주소):
192.168.1.0 → 11000000.10101000.00000001.00000000
1인 비트가 네트워크 주소 부분, 0인 비트가 호스트 주소 부분이다.
네트워크 주소와 브로드캐스트 주소
서브넷 내에서 첫 번째 주소는 네트워크 주소, 마지막 주소는 브로드캐스트 주소로 예약되어 있어 실제 호스트에는 할당할 수 없다.
예) 192.168.1.0/24 서브넷
| 구분 | 주소 |
|---|---|
| 네트워크 주소 | 192.168.1.0 |
| 사용 가능한 호스트 | 192.168.1.1 ~ 192.168.1.254 |
| 브로드캐스트 주소 | 192.168.1.255 |
| 사용 가능한 호스트 수 | 254개 (2⁸ - 2) |
CIDR (Classless Inter-Domain Routing)
CIDR은 클래스 방식의 비효율을 해결하기 위해 1993년에 도입된 방식이다. IP 주소 뒤에 슬래시(/)와 프리픽스 길이(prefix length)를 붙여 표기한다.
192.168.1.0/24
↑
네트워크 부분의 비트 수 (프리픽스 길이)
프리픽스 길이가 24라는 의미는 상위 24비트가 네트워크 주소, 나머지 8비트가 호스트 주소라는 뜻이다.
프리픽스 길이별 호스트 수 비교
| CIDR 표기 | 서브넷 마스크 | 호스트 수 | 용도 예시 |
|---|---|---|---|
| /8 | 255.0.0.0 | 16,777,214개 | 대형 ISP |
| /16 | 255.255.0.0 | 65,534개 | 대기업 내부망 |
| /24 | 255.255.255.0 | 254개 | 일반 LAN |
| /28 | 255.255.255.240 | 14개 | 소규모 서브넷 |
| /30 | 255.255.255.252 | 2개 | 포인트-투-포인트 링크 |
| /32 | 255.255.255.255 | 1개 | 단일 호스트 지정 |
서브네팅 (Subnetting)
큰 네트워크를 여러 작은 서브넷으로 나누는 작업이다.
예시: 192.168.1.0/24를 4개의 서브넷으로 분할
/24에서 2비트를 추가로 가져오면 /26이 된다. 2² = 4개의 서브넷 생성 가능.
| 서브넷 | 네트워크 주소 | 사용 가능 호스트 | 브로드캐스트 |
|---|---|---|---|
| 1번 | 192.168.1.0/26 | .1 ~ .62 | 192.168.1.63 |
| 2번 | 192.168.1.64/26 | .65 ~ .126 | 192.168.1.127 |
| 3번 | 192.168.1.128/26 | .129 ~ .190 | 192.168.1.191 |
| 4번 | 192.168.1.192/26 | .193 ~ .254 | 192.168.1.255 |
각 서브넷당 호스트 수: 2⁶ - 2 = 62개
슈퍼네팅 (Supernetting) / 경로 집계
반대로 여러 작은 네트워크를 하나의 큰 네트워크로 합치는 것을 슈퍼네팅이라 한다. 라우팅 테이블 크기를 줄이는 데 활용된다.
192.168.0.0/24
192.168.1.0/24
192.168.2.0/24
192.168.3.0/24
↓ 집계
192.168.0.0/22
/22로 집계하면 4개의 라우팅 항목을 1개로 줄일 수 있다.
사설 IP 주소 (Private IP)
인터넷에서 직접 라우팅되지 않는 주소 범위다. 조직 내부 네트워크에서 자유롭게 사용할 수 있다.
| 클래스 | 사설 주소 범위 | CIDR |
|---|---|---|
| A | 10.0.0.0 ~ 10.255.255.255 | 10.0.0.0/8 |
| B | 172.16.0.0 ~ 172.31.255.255 | 172.16.0.0/12 |
| C | 192.168.0.0 ~ 192.168.255.255 | 192.168.0.0/16 |
인터넷과 통신하려면 NAT(Network Address Translation)를 통해 공인 IP로 변환해야 한다.
특수 목적 IP 주소
| 주소 | 용도 |
|---|---|
| 0.0.0.0/0 | 기본 경로 (모든 목적지) |
| 127.0.0.1 | 루프백 (loopback), localhost |
| 169.254.0.0/16 | APIPA (DHCP 실패 시 자동 할당) |
| 255.255.255.255 | 제한 브로드캐스트 |
| 224.0.0.0/4 | 멀티캐스트 |
실용적인 계산 방법
서브넷 관련 계산에서 자주 쓰는 공식 정리:
- 호스트 수 = 2^(32 - 프리픽스 길이) - 2
- 서브넷 수 = 2^(추가로 빌린 비트 수)
- 블록 크기 = 256 - 서브넷 마스크의 변화하는 옥텟 값
예) /26 → 서브넷 마스크 넷째 옥텟 = 192 → 블록 크기 = 256 - 192 = 64
서브넷은 0, 64, 128, 192로 시작한다.
AWS VPC에서의 CIDR 활용
클라우드 환경에서도 CIDR은 핵심 개념이다.
VPC: 10.0.0.0/16 (65,534개 IP)
├── Public Subnet: 10.0.1.0/24 (254개 IP)
├── Private Subnet: 10.0.2.0/24 (254개 IP)
└── DB Subnet: 10.0.3.0/24 (254개 IP)
AWS는 각 서브넷에서 5개의 IP를 예약한다 (첫 4개 + 마지막 1개). /24 서브넷의 실제 사용 가능 IP는 251개다.
정리
- IP 주소는 네트워크에서 장치를 식별하는 논리 주소다 (IPv4: 32비트, IPv6: 128비트)
- 서브넷 마스크는 IP 주소에서 네트워크/호스트 영역을 구분한다
- CIDR은 클래스 방식의 낭비를 해결한 가변 길이 서브넷 표기법이다
- 서브네팅으로 네트워크를 분할하고, 슈퍼네팅으로 경로를 집계한다
- 사설 IP 범위(10.x.x.x, 172.16~31.x.x, 192.168.x.x)는 내부망에서 자유롭게 사용 가능하다