본문 바로가기
Computer Science

[Network] 서브넷 마스크 & 프리픽스 & 네트워크 주소

by daun_up 2026. 4. 16.

IP 주소의 구조

IPv4 주소는 32 비트이다.

192      .  168      .  1        .  65
11000000    10101000    00000001    01000001
← 8비트 → ← 8비트 → ← 8비트 → ← 8비트 →

이 32 비트는 네트워크부 + 호스트부 두 영역으로 나뉜다.

  • 네트워크부: "어느 네트워크인가" → 라우터가 패킷을 어디로 보낼지 결정하는 데에 쓴다.
  • 호스트부: "그 네트워크 안에서 어느 장치인가"

서브넷 마스크 (subnet mask)

서브넷 마스크도 32 비트이다.

  • 앞에서부터 연속된 1 → 네트워크부
  • 나머지 0 → 호스트부
255    .  255    .  255    .  0
11111111  11111111  11111111  00000000
← 네트워크부 24비트 →  ← 호스트부 8비트 →

서브넷 마스크는 네트워크부와 호스트부의 경계를 알려준다. (네트워크 주소 찾기)

서브넷 마스크를 씌운다는 건 이 서브넷 마스크를 IP 주소와 AND 연산 한다는 뜻이다.

192.168.1.65   →  11000000.10101000.00000001.01000001
AND
  255.255.255.0  →  11111111.11111111.11111111.00000000
= 192.168.1.0    →  11000000.10101000.00000001.00000000

호스트부가 전부 0 으로 마스킹되기 때문에 결과는 네트워크 주소다. 

← 무슨 말이냐면 네트워크 주소의 역할은 이 서브넷 전체를 하나의 이름으로 부르는 것이다. 라우터는 개별 호스트를 일일이 알 필요 없이 "192.168.1.0/24로 가는 패킷은 저쪽으로"처럼 서브넷 단위로 경로를 관리한다.

클래스풀(Classful) 주소 체계

클래스 시작 비트 (2진수) 첫 번째 옥텟 범위 (10진수) 기본 서브넷 마스크 용도
A 클래스 0....... 0 ~ 127 255.0.0.0 (/8) 대규모 국가/대기업
B 클래스 10...... 128 ~ 191 255.255.0.0 (/16) 중규모 학교/기업
C 클래스 110..... 192 ~ 223 255.255.255.0 (/24) 소규모 가정/소규모 회사

클래스 이렇게 나누는 이유

A 클래스: "덩치가 큰 네트워크"

  • 구조: [네트워크(8비트)][호스트(24비트)]
  • 특징: 네트워크 수는 128개뿐이지만, 한 네트워크 안에 1,600만 개 이상의 IP를 넣을 수 있다.
  • 비유: '서울시'라는 네트워크 하나에 '천만 시민'이 사는 것

B 클래스: "중간 규모 네트워크"

  • 구조: [네트워크(16비트)][호스트(16비트)]
  • 특징: 네트워크 수도 적당하고, 한 네트워크당 약 65,000개의 IP를 가진다. 

C 클래스: "작고 많은 네트워크"

  • 구조: [네트워크(24비트)][호스트(8비트)]
  • 특징: 네트워크는 수백만 개 만들 수 있지만, 정작 한 네트워크 안에는 254개의 단말기만 연결 가능하다. 공유기 대역

클래스 체계의 한계 요즘에는 이러한 클래스 구분을 엄격하게 지키지 않는다. 낭비 때문이다. 만약 IP 주소가 300개 필요한 회사가 있다면, C 클래스 (/24, 254 개) 는 모자라고 B 클래스 (/16, 65,534 개) 는 너무 많이 남는다. 그래서 등장한게 서브넷팅과 CIDR 이다. 클래스와 상관 없이 필요한 만큼 비트를 잘라서 쓰는 것이다.

Tip: 시험에서 클래스 맞추는 문제 나왔을 때

IP 주소의 맨 앞 숫자(첫 번째 옥텟)을 확인한다.

 

  • 10.x.x.x → A 클래스 (기본 마스크 /8)
  • 172.x.x.x → B 클래스 (기본 마스크 /16)
  • 192.x.x.x → C 클래스 (기본 마스크 /24)

 

서브넷 마스크 외우기

1의 개수 이진수 형태 십진수 값 자주 쓰이는 프리픽스 (C클래스 기준)
1개 10000000 128 /25
2개 11000000 192 /26
3개 11100000 224 /27
4개 11110000 240 /28
5개 11111000 248 /29
6개 11111100 252 /30 (P2P 링크용)

프리픽스 표기

255.255.255.0 (서브넷 마스크) 라고 매번 쓰는 건 번거롭다. 어차피 1 이 앞에서 몇 개 연속인지만 알면 서브넷 마스크의 크기가 결정되기 때문에 그 숫자만 슬래시 뒤에 붙인 게 프리픽스(CIDR) 표기이다.

192.168.1.65/24 ← 앞에서 24비트가 네트워크부

프리픽스 서브넷 마스크 호스트부 판단 부분 호스트부 비트
/8 255.0.0.0   24비트
/16 255.255.0.0   16비트
/24 255.255.255.0   8비트
/26 255.255.255.192 11111111 11000000 6비트
/30 255.255.255.252 11111111 11111100 2비트

네트워크 주소

호스트부 전부 0 이고 해당 서브넷의 첫 주소이다.

192.168.1.0/24 를 기준으로 보면 호스트부 비트를 전부 0으로 하는 것 → 192.168.1.0

브로드캐스트 주소

호스트부 전부 1 이고 해당 서브넷의 마지막 주소이다.

192.168.1.0/24 를 기준으로 보면 호스트부 비트를 전부 1로 하는 것  192.168.1.255

유효 호스트 수

2ʰ − 2 (h = 호스트부 비트 수, -2는 네트워크·브로드캐스트 제외)

192.168.1.0/24 를 기준으로 보면 실제 사용 가능한 호스트는 네트워크 주소와 브로드캐스트 주소 그 사이

 192.168.1.1 ~ 192.168.1.254

IPv4 클래스 별 기본 프리픽스 & 범위

클래스 시작 비트 범위 기본 프리픽스 호스트 수
A 0 0 - 127 /8 16,777,214
B 10 128 - 191 /16 65,534
C 110 192 - 223 /24 254
D 1110 224 - 239 멀티캐스트 -
E 1111 240 - 255 예약 -

클래스 구분하는 문제가 나왔을 때를 위해 각 클래스의 범위 (경계값) 을 외워두면 좋다.

클래스시작 비트범위기본 프리픽스호스트 수

서브넷팅

호스트부의 앞쪽 비트 일부를 떼어내서 서브넷 구분에 사용한다. → 프리픽스를 늘리는 행위

클래스 체계에서는 네트워크/호스트 경계가 고정되어 있다. A 는 /8, B 는 /16, C 는 /24. 하지만 이렇게 사용하면 낭비가 심할 수 있다. 클랫 C 를 받았는데 호스트가 30 개만 필요하다면 254 개 중 224 개를 버리는 셈이다.

기존 /24: [네트워크 24비트][호스트 8비트]
서브넷팅 후 /26: [네트워크 24비트][서브넷 2비트][호스트 6비트]

클래스 C (/24) 에서 2비트를 빌려 /26으로 만들면

  • 서브넷 수: 2² = 4개
  • 서브넷당 호스트 수: 2⁶ − 2 = 62개
서브넷 네트워크 주소 브로드캐스트 사용 범위
1번 192.168.1.0 192.168.1.63 .1 ~ .62
2번 192.168.1.64 192.168.1.127 .65 ~ .126
3번 192.168.1.128 192.168.1.191 .129 ~ .190
4번 192.168.1.192 192.168.1.255 .193 ~ .254

서브넷 주소가 64씩 점프하는 이유는 /26 에서 호스트부가 6비트(=64) 이기 때문이다.

포인트

  • 호스트 수 공식: 2ʰ − 2 
  • 서브넷 수: 클래스 C 에서 /24 -> /26 으로 빌린 비트 수 = 2 → 2² = 4개 서브넷
  • AND 연산으로 네트워크 주소: IP 주소 AND 서브넷 마스크 = 네트워크 주소
  • /30 -> 호스트 2개 (P2P 링크에 자주 사용)
  • B 클래스 판단: 첫 옥텟 128 ~ 191 -> 기본 /16
  • 게이트웨이 주소: 일반적으로 해당 서브넷의 사용 가능한 첫 번째 주소(.1)나 마지막 주소(.254)를 관례적으로 할당
  • /32 주소: 호스트 비트가 0 이다. 딱 하나의 특정 단말기(호스트) 자체를 지칭할 때 사용

핵심 흐름

프리픽스 (CIDR 표기 /24) 는 32 비트 IP 주소에서 앞에서 몇 비트가 네트워크 부분인지 나타낸다.

서브넷팅은 클래스로 고정된 네트워크부를 더 잘게 쪼개기 위해 호스트부 비트 일부를 서브넷 부분으로 빌리는 것이다.

자주 나오는 계산 패턴

클래스 C 주소에서 /26으로 서브넷팅하면, /24에서 2비트를 추가로 빌린 것이므로 서브넷 수는 2² = 4개, 호스트 수는 2⁶ − 2 = 62개가 된다. 네트워크 주소를 구할 때IP주소와 서브넷 마스크를 AND 연산하면 된다. 예를 들어 192.168.1.65 AND 255.255.255.192 = 192.168.1.64가 네트워크 주소이다.