본문으로 건너뛰기

서브넷과 CIDR

정보처리기사 목차IP와 전송레슨 171 / 233

목차

서브넷팅(subnetting)은 서브넷 마스크로 네트워크 부분과 호스트 부분의 경계를 옮겨, 네트워크 하나를 더 작은 네트워크 여러 개로 나누는 것입니다. 경계를 /26처럼 앞 비트 수로 적는 꼴을 CIDR 표기라고 합니다.

IP 주소와 IPv6의 클래스는 경계가 8·16·24비트로 굳어 있어 크기가 맞지 않습니다. 장치가 50대인 부서에 C 클래스 하나(254대)를 주면 200개 넘게 남고, 300대면 C 하나로 모자랍니다. 아래 그림은 /24 네트워크의 경계를 2비트 옮겨 넷으로 나누고, 그 가운데 한 서브넷의 주소를 구합니다.

7단계 중 1단계. /24는 앞 24비트가 네트워크 부분이라는 뜻이고, 남은 8비트로 주소 256개를 가립니다.

1서브넷 마스크와 CIDR 표기

서브넷 마스크(subnet mask)는 IP 주소와 같은 32비트로, 네트워크 부분 자리에 1을, 호스트 부분 자리에 0을 둡니다. 1은 앞에서부터 끊기지 않고 이어집니다. CIDR(Classless Inter-Domain Routing) 표기는 1의 개수를 주소 뒤에 /와 함께 적어, 192.168.10.77/26은 앞 26비트가 네트워크 부분이라는 뜻입니다.

CIDR마지막 옥텟서브넷 마스크주소 수
/2400000000255.255.255.0256
/2510000000255.255.255.128128
/2611000000255.255.255.19264
/2711100000255.255.255.22432
/2811110000255.255.255.24016

클래스의 경계도 이 꼴로 적을 수 있습니다. A는 /8(255.0.0.0), B는 /16(255.255.0.0), C는 /24입니다.

2서브넷으로 나누기

호스트 부분에서 n비트를 빌려 경계를 옮기면 서브넷이 2ⁿ개 생깁니다. 남은 호스트 비트가 h개면 서브넷마다 주소가 2ʰ개입니다. 192.168.10.0/24에서 2비트를 빌린 /26은 서브넷 4개로, 마지막 옥텟이 0·64·128·192에서 시작하는 64개씩입니다.

서브넷을 k개 만들려면 2ⁿ이 k 이상이 되는 가장 작은 n을 빌립니다. 경계가 마지막 옥텟 안에 있으면 서브넷 크기는 256에서 마스크의 마지막 옥텟을 빼서도 구합니다(256 − 192 = 64).

3네트워크 주소와 브로드캐스트 주소

주소가 어느 서브넷에 드는지는 주소와 마스크를 비트마다 AND(둘 다 1일 때만 1)해서 구합니다. 호스트 부분이 모두 0이 되는데, 이것이 그 서브넷의 네트워크 주소(network address)입니다.

77    01001101
/26   11000000
AND   01000000 = 64

호스트 부분을 모두 1로 채운 주소는 브로드캐스트 주소(broadcast address)로, 그 서브넷의 모든 장치에게 한꺼번에 보낼 때 씁니다. 192.168.10.77/26이면 네트워크 주소는 192.168.10.64, 브로드캐스트 주소는 64 + 63인 192.168.10.127입니다.

두 주소는 장치에 줄 수 없으므로, 쓸 수 있는 호스트 수는 2ʰ − 2입니다. /26은 2⁶ − 2 = 62개(192.168.10.65~126)입니다. 경계를 한 비트 더 옮긴 /27은 서브넷이 8개로 늘고, 서브넷마다 호스트는 30개로 줄어듭니다.

예제

200.1.1.0/24를 서브넷 5개로 나누고, 넷째 서브넷의 네트워크 주소·브로드캐스트 주소·쓸 수 있는 호스트를 구해 보세요.

차례계산결과
빌릴 비트2² = 4는 모자라고 2³ = 83비트, /27
서브넷 크기2⁵ = 320 · 32 · 64 · 96 …
넷째 서브넷96부터 32개200.1.1.96
브로드캐스트96 + 31200.1.1.127
호스트2⁵ − 2 = 30.97 ~ .126

거꾸로 '서브넷마다 장치 25대'가 조건이어도 답은 같습니다. 2⁴ − 2 = 14는 모자라고 2⁵ − 2 = 30이면 되므로 호스트 비트 5개, 곧 /27입니다. 답을 CIDR로 쓰라면 /27, 마스크로 쓰라면 255.255.255.224입니다.

시험 포인트

  • 필기: 마스크와 CIDR을 서로 바꾸고, 주소 하나로 네트워크 주소·브로드캐스트 주소·호스트 수를 구합니다. 서브넷 수는 2ⁿ, 호스트 수는 2ʰ − 2입니다 — 2를 빼지 않거나, 마스크 값 192를 서브넷 크기로 읽는 실수를 노립니다.
  • 실기: 계산한 답을 문제가 정한 꼴로 씁니다 — CIDR(/26), 마스크(255.255.255.192), 주소. 이름도 씁니다 — 서브넷 마스크(Subnet Mask), CIDR(Classless Inter-Domain Routing), 네트워크 주소(Network Address), 브로드캐스트 주소(Broadcast Address).

확인 문제

1. 192.168.10.64/26 서브넷에 있는 PC에 줄 수 있는 주소를 고르세요.

  • ① 192.168.10.64
  • ② 192.168.10.100
  • ③ 192.168.10.127
  • ④ 192.168.10.130
정답

②입니다. /26은 호스트 비트가 6개라 이 서브넷은 .64부터 .127까지 64개이고, 양 끝을 뺀 .65~.126을 장치에 줄 수 있습니다.

  • ① 호스트 비트가 모두 0인 네트워크 주소입니다.
  • ③ 호스트 비트가 모두 1인 브로드캐스트 주소입니다.
  • ④ .128부터는 다음 서브넷입니다.

2. 다음 (가)~(라)에 맞는 이름을 한글 이름과 영문으로 함께 쓰세요. 약어로 부르는 이름은 약어와 영문 원어를 씁니다. 답을 끝까지 쓴 뒤 정답을 펼치세요.

  • (가) 255.255.255.224처럼 32비트 가운데 앞의 자리들을 1로 채워, 어디까지가 네트워크를 가리키는지 알려 주는 값
  • (나) (가)를 /27처럼 1의 개수로 줄여 주소 뒤에 붙이는 표기
  • (다) 한 서브넷에서 호스트 비트가 모두 0이라, 그 서브넷 자체를 가리키는 주소
  • (라) 한 서브넷에서 호스트 비트가 모두 1이라, 그 안의 장치 모두에게 한꺼번에 보낼 때 쓰는 주소
정답

받는 답: (가) 서브넷 마스크(Subnet Mask) · (나) CIDR(Classless Inter-Domain Routing) · (다) 네트워크 주소(Network Address) · (라) 브로드캐스트 주소(Broadcast Address)

(가)의 실마리는 '앞을 1로 채워 경계를 알린다', (나)는 '1의 개수를 / 뒤에', (다)는 '호스트 비트 모두 0', (라)는 '호스트 비트 모두 1 · 모두에게'입니다.

  • 틀리는 꼴 서브넷팅 — (가)에: 경계를 옮겨 네트워크를 나누는 일의 이름입니다. 경계를 적은 값이 서브넷 마스크입니다.
  • 틀리는 꼴 브로드캐스트 주소 — (다)에: 호스트 비트가 모두 1인 쪽입니다. 모두 0인 쪽이 네트워크 주소입니다.

3. 그림의 주소를 192.168.10.77/27로 바꿨습니다. 네트워크 주소, 브로드캐스트 주소, 쓸 수 있는 호스트 수를 쓰세요. 답을 끝까지 쓴 뒤 정답을 펼치세요.

정답

받는 답: 192.168.10.64 · 192.168.10.95 · 30

/27은 마지막 옥텟이 11100000(224)이라 호스트 비트가 5개입니다. 77 AND 224 = 64라 네트워크 주소는 .64이고, 서브넷 크기가 32라 브로드캐스트 주소는 64 + 31 = 95입니다. 호스트는 2⁵ − 2 = 30개입니다.

  • 틀리는 꼴 192.168.10.127: /26일 때의 브로드캐스트 주소입니다. 경계가 한 비트 옮겨 가면 서브넷이 절반(32개)으로 줄어 끝이 .95가 됩니다.
  • 틀리는 꼴 32: 네트워크 주소와 브로드캐스트 주소를 빼지 않았습니다.

4. 10.1.70.9/18의 네트워크 주소와 브로드캐스트 주소를 구합니다. 경계가 셋째 옥텟 안에 있습니다. 표의 (가)~(다)를 채워 답을 쓰세요. 답을 끝까지 쓴 뒤 정답을 펼치세요.

차례값
마스크255.255.192.0
셋째 옥텟 7001000110
70 AND 192(가)
네트워크 주소10.1.(가).0
셋째 옥텟의 호스트 비트 수(나)
브로드캐스트 주소10.1.(다).255
정답

받는 답: (가) 64 · (나) 6 · (다) 127 — 네트워크 주소 10.1.64.0 · 브로드캐스트 주소 10.1.127.255

/18은 셋째 옥텟에서 앞 2비트까지가 네트워크 부분이라 마스크의 셋째 옥텟이 192입니다. 01000110 AND 11000000 = 01000000 = 64입니다. 셋째 옥텟에 남은 호스트 비트 6개와 넷째 옥텟 8비트를 모두 1로 채우면 64 + 63 = 127과 255가 됩니다.

  • 틀리는 꼴 10.1.70.255: 셋째 옥텟을 그대로 두고 넷째 옥텟만 채웠습니다. 경계가 셋째 옥텟 안에 있으면 셋째 옥텟의 호스트 비트도 1로 채웁니다.
  • 틀리는 꼴 10.1.64.255: 넷째 옥텟만 1로 채웠습니다. 셋째 옥텟에 남은 호스트 비트 6개도 1로 채워야 합니다.

끝까지 내려오면 저절로 표시됩니다. 이 기기에만 저장합니다.

정보처리기사 목차로