정보처리기사 실기에서 IP 주소, 서브넷 마스크, CIDR을 이용하여 다음과 같은 값을 구하는 문제가 출제될 수 있다.
처음에는 복잡해 보이지만 핵심 규칙 몇 개만 알고 있으면 대부분 계산할 수 있다.
IPv4 주소는 다음과 같이 4개의 숫자로 구성된다.
192.168.10.77
.을 기준으로 나누면
192 | 168 | 10 | 77
각각의 칸을 옥텟(Octet) 이라고 한다.
각 옥텟은 8bit이고 총 4개의 옥텟이 존재하므로
8bit × 4 = 32bit
즉,
IPv4 주소의 전체 크기는 32bit이다.
각 옥텟은
0 ~ 255
의 값을 가질 수 있다.
큰 네트워크를 여러 개의 작은 네트워크로 나눈 것이다.
예를 들어 하나의 회사 네트워크를
개발팀
인사팀
회계팀
등으로 나누어 관리할 수 있다.
IP 주소에서
네트워크 부분 | 호스트 부분
을 구분하기 위해 사용하는 값이다.
예를 들어
255.255.255.0
과 같은 형태로 표현한다.
서브넷 마스크를 /숫자 형태로 간단하게 표현하는 방법이다.
예를 들어
192.168.10.77/24
에서
/24
가 CIDR 표기이다.
/24는 IPv4의 32bit 중
네트워크 비트 : 24bit
호스트 비트 : 8bit
를 사용한다는 의미이다.
CIDR에서 / 뒤에 붙는 숫자를 의미한다.
/26
이라면 Prefix는
26
이다.
해당 네트워크에 연결되어 IP 주소를 할당받는 장비를 의미한다.
예를 들면
PC
서버
라우터
프린터
등이 있다.
하나의 네트워크 범위에서 가장 첫 번째 주소이다.
해당 네트워크 자체를 나타내기 때문에 일반적으로 장비에 할당하지 않는다.
하나의 네트워크 범위에서 가장 마지막 주소이다.
해당 네트워크에 속한 모든 장비에 데이터를 전달하기 위해 사용하기 때문에 일반적으로 장비에 할당하지 않는다.
다음 주소가 있다고 하자.
192.168.10.77/26
IPv4는 총
32bit
이다.
여기에서 /26은
네트워크 비트 = 26bit
라는 의미이다.
따라서 호스트 비트는
32 - 26 = 6bit
이다.
즉,
네트워크 : 26bit
호스트 : 6bit
이다.
⭐ 중요
/26 = 호스트 비트가 26개
가 아니다.
반드시
/26 = 네트워크 비트가 26개
로 기억한다.
한 옥텟은 8bit이며 각 비트의 값은 다음과 같다.
128 64 32 16 8 4 2 1
네트워크 부분은 1, 호스트 부분은 0으로 표현한다.
모든 비트가 1이면
11111111
이고,
128 + 64 + 32 + 16 + 8 + 4 + 2 + 1
= 255
가 된다.
따라서
11111111 = 255
이다.
/26은 네트워크 비트를 26개 사용한다.
앞의 3개 옥텟에서
8 + 8 + 8 = 24bit
를 사용한다.
그러면 추가로
26 - 24 = 2bit
가 필요하다.
마지막 옥텟의 앞쪽 2bit를 사용하면
11000000
이다.
각 비트 값을 계산하면
128 + 64 = 192
따라서
/26
= 255.255.255.192
가 된다.
마지막 옥텟의 비트를 하나씩 채우면 다음과 같다.
10000000 = 128
11000000 = 192
11100000 = 224
11110000 = 240
11111000 = 248
11111100 = 252
11111110 = 254
11111111 = 255
즉 마스크 숫자는 다음 순서로 증가한다.
128 → 192 → 224 → 240 → 248 → 252 → 254 → 255
| CIDR | 서브넷 마스크 | 블록 크기 | 전체 주소 | 사용 가능 호스트 |
|---|---|---|---|---|
| /22 | 255.255.252.0 | 4 (3번째 옥텟) | 1024 | 1022 |
| /23 | 255.255.254.0 | 2 (3번째 옥텟) | 512 | 510 |
| /24 | 255.255.255.0 | 256 | 256 | 254 |
| /25 | 255.255.255.128 | 128 | 128 | 126 |
| /26 | 255.255.255.192 | 64 | 64 | 62 |
| /27 | 255.255.255.224 | 32 | 32 | 30 |
| /28 | 255.255.255.240 | 16 | 16 | 14 |
| /29 | 255.255.255.248 | 8 | 8 | 6 |
| /30 | 255.255.255.252 | 4 | 4 | 2 |
⭐ 시험에서 특히 많이 보는 범위
/24 = 255.255.255.0
/25 = 255.255.255.128
/26 = 255.255.255.192
/27 = 255.255.255.224
/28 = 255.255.255.240
/29 = 255.255.255.248
/30 = 255.255.255.252
서브넷 문제에서 가장 중요한 계산이다.
서브넷 마스크에서
255도 아니고 0도 아닌 값
을 찾는다.
그리고
256 - 해당 값
을 계산한다.
이 값이 블록 크기(Block Size) 이다.
예를 들어
255.255.255.192
라면
256 - 192
= 64
따라서 주소가
64개씩
나뉜다.
범위는
0 ~ 63
64 ~ 127
128 ~ 191
192 ~ 255
가 된다.
⭐ 암기
마스크는 왼쪽부터 채우고, 블록 크기는 256에서 뺀다.
예제
192.168.10.77/26
/26
= 255.255.255.192
256 - 192
= 64
0 ~ 63
64 ~ 127
128 ~ 191
192 ~ 255
IP 주소의 마지막 값은
77
이므로
64 ~ 127
범위에 들어간다.
범위의 첫 번째 주소가 네트워크 주소이다.
192.168.10.64
범위의 마지막 주소가 브로드캐스트 주소이다.
192.168.10.127
네트워크 주소와 브로드캐스트 주소는 제외한다.
따라서
192.168.10.65
~
192.168.10.126
이다.
정리하면
| 구분 | 결과 |
|---|---|
| IP | 192.168.10.77/26 |
| 서브넷 마스크 | 255.255.255.192 |
| 네트워크 주소 | 192.168.10.64 |
| 브로드캐스트 주소 | 192.168.10.127 |
| 사용 가능 호스트 | 192.168.10.65 ~ 192.168.10.126 |
| 사용 가능 호스트 수 | 62개 |
호스트 비트가 n개라면 전체 주소 개수는
2^n
이다.
일반적인 IPv4 서브넷 문제에서는
네트워크 주소
브로드캐스트 주소
두 개를 사용할 수 없으므로
사용 가능한 호스트 수 = 2^n - 2
로 계산한다.
IPv4 전체는 32bit이다.
32 - 26 = 6
호스트 비트는 6개이다.
전체 주소는
2^6 = 64
사용 가능한 호스트는
64 - 2
= 62개
32 - 28 = 4
전체 주소
2^4 = 16
사용 가능한 호스트
16 - 2
= 14개
항상 마지막 옥텟을 계산하는 것은 아니다.
예를 들어
255.255.252.0
을 보자.
255도 아니고 0도 아닌 숫자인
252
가 세 번째 옥텟에 있다.
따라서 IP 주소에서도 세 번째 옥텟을 계산해야 한다.
/22
= 255.255.252.0
블록 크기는
256 - 252
= 4
따라서 세 번째 옥텟이
0 ~ 3
4 ~ 7
8 ~ 11
12 ~ 15
...
28 ~ 31
32 ~ 35
36 ~ 39
...
와 같이 4씩 나뉜다.
192.168.35.10/22
세 번째 옥텟은
35
이다.
35가 들어가는 범위는
32 ~ 35
이다.
따라서
네트워크 주소
192.168.32.0
브로드캐스트 주소
192.168.35.255
사용 가능한 호스트는
192.168.32.1
~
192.168.35.254
이다.
/23
= 255.255.254.0
블록 크기는
256 - 254
= 2
따라서 세 번째 옥텟이
0 ~ 1
2 ~ 3
4 ~ 5
6 ~ 7
8 ~ 9
10 ~ 11
12 ~ 13
...
형태로 나뉜다.
192.168.11.20/23
세 번째 옥텟
11
은
10 ~ 11
범위에 들어간다.
따라서 네트워크 주소는
192.168.10.0
이다.
반면
192.168.12.20/23
이라면 12는
12 ~ 13
범위에 들어가므로 네트워크 주소는
192.168.12.0
이다.
예를 들어
192.168.10.200/23
192.168.11.30/23
두 주소가 있다고 하자.
/23은
255.255.254.0
이고 블록 크기는
256 - 254
= 2
이다.
따라서 세 번째 옥텟 범위는
0~1
2~3
4~5
...
10~11
12~13
이다.
첫 번째 IP의 세 번째 옥텟
10
두 번째 IP의 세 번째 옥텟
11
모두
10~11
범위에 속한다.
따라서 두 IP의 네트워크 주소는 모두
192.168.10.0/23
이므로
두 IP는 같은 네트워크에 속한다.
FLSM(Fixed Length Subnet Mask) 은 하나의 네트워크를 동일한 크기의 여러 서브넷으로 나누는 방법이다.
예를 들어
192.168.1.0/24
네트워크를 최소 3개의 동일한 네트워크로 나눈다고 하자.
서브넷은
2개
4개
8개
16개
...
와 같이 2의 거듭제곱 단위로 나눌 수 있다.
따라서 정확하게 3개로 동일하게 나누는 것이 아니라
최소 3개 필요
→ 4개로 분할
한다.
원래
/24
의 전체 주소는
256개
이다.
4개로 나누면
256 / 4
= 64
따라서 각각 64개의 주소를 갖는다.
범위는
| 서브넷 | 주소 범위 | 네트워크 주소 | 브로드캐스트 |
|---|---|---|---|
| 1 | 0~63 | 192.168.1.0 | 192.168.1.63 |
| 2 | 64~127 | 192.168.1.64 | 192.168.1.127 |
| 3 | 128~191 | 192.168.1.128 | 192.168.1.191 |
| 4 | 192~255 | 192.168.1.192 | 192.168.1.255 |
4개의 네트워크를 구분하려면
00
01
10
11
처럼 2bit가 필요하다.
기존 네트워크 비트는
/24
였으므로 2bit를 추가하면
24 + 2
= 26
따라서
/26
이 된다.
즉,
/24를 2개로 분할 → /25
/24를 4개로 분할 → /26
/24를 8개로 분할 → /27
/24를 16개로 분할 → /28
이다.
⭐ 암기
2개 → +1bit
4개 → +2bit
8개 → +3bit
16개 → +4bit
이번에는 반대로
장비 N대를 연결하려면 CIDR이 몇이어야 하는가?
를 구할 수 있다.
예를 들어 장비가
50대
필요하다고 하자.
호스트 비트가 5bit이면
2^5 = 32
32 - 2 = 30
30대밖에 사용할 수 없다.
부족하다.
6bit이면
2^6 = 64
64 - 2 = 62
62대까지 사용할 수 있다.
50대를 수용할 수 있다.
따라서 호스트 비트는
6bit
가 필요하다.
IPv4 전체가 32bit이므로
32 - 6
= 26
따라서 정답은
/26
이다.
6bit의 경우
2^6 - 2
= 62
부족하다.
7bit의 경우
2^7 - 2
= 126
70대를 수용할 수 있다.
따라서
32 - 7
= 25
정답은
/25
이다.
8bit라면
2^8 - 2
= 254
부족하다.
9bit라면
2^9 - 2
= 510
500대를 수용할 수 있다.
따라서
32 - 9
= 23
정답은
/23
이다.
서브넷 문제가 나오면 다음 순서대로 계산하면 된다.
서브넷 마스크에서
255도 아니고 0도 아닌 숫자
가 있는 옥텟을 찾는다.
블록 크기를 계산한다.
256 - 마스크 값
IP 주소의 같은 위치에 있는 옥텟을 확인한다.
해당 숫자가 어느 블록에 포함되는지 찾는다.
예를 들어 블록 크기가 32라면
0~31
32~63
64~95
96~127
128~159
160~191
192~223
224~255
이다.
블록의 첫 번째 주소
= 네트워크 주소
블록의 마지막 주소
= 브로드캐스트 주소
사용 가능한 호스트 범위
네트워크 주소 + 1
~
브로드캐스트 주소 - 1
172.16.8.201/27
/27의 서브넷 마스크는
255.255.255.224
블록 크기
256 - 224
= 32
범위
0~31
32~63
64~95
96~127
128~159
160~191
192~223
224~255
201은
192~223
에 들어간다.
따라서
네트워크 주소
172.16.8.192
브로드캐스트 주소
172.16.8.223
사용 가능 호스트
172.16.8.193
~
172.16.8.222
192.168.50.141/28
/28은
255.255.255.240
블록 크기
256 - 240
= 16
범위
0~15
16~31
32~47
48~63
64~79
80~95
96~111
112~127
128~143
144~159
...
141은
128~143
범위이다.
따라서
네트워크 주소
192.168.50.128
브로드캐스트 주소
192.168.50.143
사용 가능한 호스트
192.168.50.129
~
192.168.50.142
172.20.18.40/21
/21을 서브넷 마스크로 변환하면
255.255.248.0
이다.
왜 248인가?
세 번째 옥텟에서 5bit를 사용하므로
128 + 64 + 32 + 16 + 8
= 248
블록 크기
256 - 248
= 8
세 번째 옥텟의 범위는
0~7
8~15
16~23
24~31
...
IP의 세 번째 옥텟은
18
이므로
16~23
범위에 들어간다.
따라서
네트워크 주소
172.20.16.0
브로드캐스트 주소
172.20.23.255
이다.
192.0.2.8/30
/30은
255.255.255.252
블록 크기
256 - 252
= 4
따라서
8~11
이 하나의 네트워크이다.
8 = 네트워크 주소
9 = 사용 가능
10 = 사용 가능
11 = 브로드캐스트 주소
따라서 장비에 할당 가능한 주소는
192.0.2.9
192.0.2.10
이다.
❌
/26 = 호스트 비트 26개
⭕️
/26 = 네트워크 비트 26개
호스트 비트
= 32 - 26
= 6개
예를 들어
255.255.255.192
라고 해서 블록 크기가 192가 아니다.
256 - 192
= 64
따라서 블록 크기는
64
이다.
예를 들어
192.168.1.64 ~ 192.168.1.127
이라면
192.168.1.64
= 네트워크 주소
192.168.1.127
= 브로드캐스트 주소
이므로 실제 사용 가능한 주소는
192.168.1.65
~
192.168.1.126
이다.
예를 들어
255.255.252.0
에서는 252가 세 번째 옥텟에 있다.
따라서 IP 주소의
세 번째 옥텟
을 계산해야 한다.
동일한 크기의 서브넷은
2
4
8
16
32
...
와 같이 나뉜다.
따라서
최소 3개 필요
→ 4개로 분할
한다.
128
192
224
240
248
252
254
255
/25 → 128
/26 → 192
/27 → 224
/28 → 240
/29 → 248
/30 → 252
/25 → 128
/26 → 64
/27 → 32
/28 → 16
/29 → 8
/30 → 4
즉 /25부터 보면
128 → 64 → 32 → 16 → 8 → 4
계속 절반으로 줄어든다.
/25 → 126
/26 → 62
/27 → 30
/28 → 14
/29 → 6
/30 → 2
32bit
32 - CIDR
2^(호스트 비트)
2^(호스트 비트) - 2
256 - 서브넷 마스크의 기준 옥텟 값
해당 블록의 첫 번째 주소
해당 블록의 마지막 주소
네트워크 주소 + 1
~
브로드캐스트 주소 - 1
서브넷 문제를 보면 가장 먼저
255도 아니고 0도 아닌 마스크 값
을 찾는다.
그다음
256 - 마스크 값
으로 블록 크기를 구한다.
예를 들어
192.168.10.77/26
이라면
/26
→ 255.255.255.192
256 - 192
= 64
따라서 범위는
0~63
64~127 ← 77이 여기 포함
128~191
192~255
결과는
네트워크 주소
→ 192.168.10.64
브로드캐스트 주소
→ 192.168.10.127
사용 가능 호스트
→ 192.168.10.65 ~ 192.168.10.126
사용 가능 호스트 수
→ 62개
이다.
CIDR은 네트워크 비트 수 → 256에서 마스크 값을 빼서 블록 크기 계산 → 블록의 처음은 네트워크 주소, 끝은 브로드캐스트 주소, 가운데가 사용 가능한 호스트 주소!