Subnet & CIDR

2025-06-13

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-04-16_%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE_6.20.27.png 인터넷에 연결된 장치는 모두 IP 주소를 가지고, 이 주소를 통해 서로를 식별하고 데이터를 주고받는다. 하지만 모든 장치를 단일 네트워크로 구성할 수는 없기 때문에 큰 네트워크를 여러 개의 작은 네트워크(서브넷, subnet)로 나누는 방식이 사용된다.

Subnet은 말 그대로 Sub + Network, 즉 하나의 큰 네트워크를 작은 단위로 나눈 것을 의미한다. 서브넷은 라우터를 거치지 않고도 직접 통신이 가능한 인터페이스들의 집합이다. 예를 들어 같은 스위치나 공유기에 연결된 장비들은 보통 하나의 서브넷에 속해 서로 라우터를 통과하지 않고 직접 데이터를 주고받을 수 있다.

IP 주소는 두 부분으로 구성된다.

  • 네트워크 부분(network/subnet part): 이 주소가 어느 서브넷에 속하는지를 나타낸다. 라우터는 이 정보를 바탕으로 패킷의 전송 경로를 결정한다.
  • 호스트 부분(host part): 해당 서브넷 내에서 각 장치를 구분하는 식별자 역할을 한다.

결과적으로 IP 주소만으로도 어느 네트워크에 있는 어떤 장치인지를 식별할 수 있게 된다. 이후 등장하는 서브넷 마스크나 CIDR 표기법으로 경계를 명확하게 표현할 수 있다.

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-04-16_%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE_6.20.38.png 서브넷을 표현할 때는 일반적으로 CIDR(Classless Inter-Domain Routing) 표기법을 사용한다. 예를 들어 223.1.1.1/24라는 주소에서 /24는 이 주소가 서브넷 마스크 24비트를 사용하고 있다는 의미다.

이 경우, 앞의 24비트가 서브넷(네트워크) 주소로 사용되고 나머지 하위 8비트는 해당 서브넷 내의 호스트 주소로 사용된다. 223.1.1.0/24 서브넷에는 총 256개의 주소(0~255)가 포함되지만, 일반적으로 네트워크 주소(.0)와 브로드캐스트 주소(.255)는 사용할 수 없기 때문에, 실제로는 223.1.1.1부터 223.1.1.254까지가 유효한 호스트 주소가 된다. 이 범위에 속하는 장비들은 모두 같은 서브넷에 속해 있고 서로 라우터 없이 직접 통신할 수 있다.

서브넷은 물리적 연결성과 논리적 경계를 함께 고려해 정의된다. 기본적으로, 각 인터페이스가 라우터 없이 직접 연결될 수 있는 장비들끼리 하나의 서브넷(섬)을 이룬다고 생각하면 된다. 유선이라면 같은 스위치에 연결된 장비들이, 무선이라면 같은 WiFi 액세스 포인트에 연결된 장비들이 보통 같은 서브넷에 속한다. 이러한 방식으로 네트워크를 분리하면 효율적인 트래픽 분산, 보안, 주소 공간 관리 측면에서도 유리하다.

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-04-16_%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE_6.20.47.png IP 주소가 같은 서브넷에 속한다는 것은 라우터를 거치지 않고 직접 통신할 수 있다는 것을 의미한다. 서브넷은 IP 주소의 앞부분을 공유하는 장비들의 집합이고, 앞부분의 길이는 서브넷 마스크로 정의된다. 예를 들어 /24 서브넷 마스크는 IP 주소의 상위 24비트가 서브넷을 식별하는 부분이고, 하위 8비트가 해당 서브넷 내의 호스트를 구분하는 부분이다. 223.1.1.x 형식의 주소들은 모두 223.1.1.0/24 서브넷에 속하게 된다.

아래는 여러 서브넷과, 각각에 포함된 일부 IP 주소들의 예시다.

서브넷 주소 (/24)포함된 IP 주소들
223.1.1.0/24223.1.1.1, 223.1.1.2, 223.1.1.3, 223.1.1.4
223.1.2.0/24223.1.2.1, 223.1.2.2, 223.1.2.6
223.1.3.0/24223.1.3.1, 223.1.3.2, 223.1.3.27
223.1.7.0/24223.1.7.0, 223.1.7.1
223.1.8.0/24223.1.8.0, 223.1.8.1
223.1.9.0/24223.1.9.1, 223.1.9.2

각 서브넷은 223.1.X.0/24 형식으로 구성되어 동일한 X 값을 공유하는 장비들이 같은 서브넷에 속한다. 예를 들어 223.1.3.1223.1.3.27은 모두 223.1.3.0/24 서브넷에 속하므로, 서로 직접 통신할 수 있다. 반면 223.1.3.1223.1.2.2는 서로 다른 서브넷이므로, 라우터를 통해서만 통신할 수 있다.

CIDR

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-04-16_%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE_6.20.54.png 과거의 IP 주소 체계는 Class A, B, C처럼 고정된 블록 단위로 주소를 할당하는 클래스 기반 주소 체계였다.

  • Class A: /8 – 약 16,777,216개의 호스트 주소
  • Class B: /16 – 약 65,536개
  • Class C: /24 – 256개

이 방식은 단순했지만 주소 공간을 매우 비효율적으로 사용하게 되었다. 작은 기업이나 조직도 필요 이상으로 큰 주소 블록을 할당받아야 했고, 전체 IP 주소 공간이 빠르게 고갈되었다.

이러한 문제를 해결하기 위해 등장한 방식이 바로 CIDR(Classless Inter-Domain Routing)이다. CIDR은 주소를 클래스에 구애받지 않고 필요한 만큼의 크기로 유연하게 나눌 수 있는 방식이다.

CIDR 표기법은 아래와 같은 형식을 따른다.

plain
a.b.c.d/x

a.b.c.d는 IP 주소의 시작점, 즉 서브넷(네트워크)의 주소다. /x는 상위 x비트가 네트워크(서브넷) 식별자임을 나타닌다. 나머지 32 - x 비트는 호스트 구분에 사용한다.

예를 들어 192.168.10.0/28은 상위 28비트가 네트워크다. 나머지 4비트를 사용해 최대 16개의 호스트 주소를 지정할 수 있다. 단, 네트워크와 브로드캐스트 주소를 제외하면 실제 사용 가능한 호스트는 14개다.

CIDR 덕분에 IP 주소 공간을 훨씬 더 세밀하게 분할할 수 있게 되었고 네트워크 크기에 맞는 주소를 할당함으로써 주소 낭비를 줄이고 라우팅 효율도 향상시킬 수 있게 되었다.