CIDR(CIDR:Classless Inter-Domain Routing) 표기법과 네트워크 마스크가 무엇인지, 호스트가 같은 네트워크의 여부를 판단하는 방법에 대해 설명한다.
리눅스 시스템이나 네트워크 장비의 IP 주소는 윈도우 시스템의 입력방법과 다른 경우가 종종 있다. 윈도우 시스템은 IP주소와 서브넷 마스크를 입력해 주는데, 서브넷 마스크를 별도로 입력하지 않는 경우가 많은 것이다.
리눅스 시스템의 IP설정의 예 iface eth0 inet static address 192.0.2.7/24 gateway 192.0.2.254
IP 주소 뒤에 /(슬래시)를 붙이고 이상한 숫자가 적혀 있는 형태의 표기 방법을 사이더 표기법이라고 하며, 리눅스등의 환경에서는 매우 흔하게 사용되는 방법이다. 어떻게 사용하는 건지, 뭔 의미가 있는 건지 함께 알아 보도록 하겠다.
사이더 표기법이란
사이더 (CIDR:Classless Inter-Domain Routing) 표기법이란, 네트워크 마스크에 사용되는 비트의 숫자를 IP주소와 함께 적어주는 방식을 말한다.
서브넷 (네트워크) 마스크
컴퓨터는 통신할 상대방의 IP주소를 보고 나와 같은 네트워크에 속해 있는지 (이를 '같은 브로드캐스트 도메인에 있다' 또는 '네트워크 ID가 같다'라고 표현한다.) 혹은, 나와 다른 네트워크에 속해 있어서 통신하기 위해 게이트웨이를 통과해야 하는지 판단한다. 이때 판단의 기준으로 삼는 것이 서브넷 마스크(Subnet Mask)이다. 네트워크 마스크(Network Mask)라고 부르기도 한다. 본 글에서는 이 둘을 혼용해서 사용한다.
또한 이 글에서는 IPv4 시스템만 언급하고 있으나, IPv6 시스템 역시 동일한 방식으로 동작한다. 단지 비트수가 많아 질 뿐이다.
IPv4 통신에서 IP주소는 총 32개의 비트로 표현 되며, 일반적으로 8개의 비트 단위로 끊어서 255.255.255.255 와 같은 형태로 표현해 준다.
11111111.11111111.11111111.11111111 : 255.255.255.255
만약, 내 IP 주소가 192.168.100.100이고, 네트워크 마스크가 255.255.255.0, 상대방이 IP 주소가 192.168.100.123 이라고 한다면, 각각 아래와 같이 표현할 수 있게 된다.
192.168.100.100 : 11000000 . 10101000 . 01100100 . 01100100 255.255.255.000 : 11111111 . 11111111 . 11111111 . 00000000 192.168.100.123 : 11000000 . 10101000 . 01100100 . 01111011
호스트는, 내 IP와 상대방의 IP에서 네트워크 마스크 비트가 0인 부분을 무시하고 1인 부분만을 비교해 본다. 위의 예에서는 마스크 비트의 1이 24개이다. 즉, 앞의 24개의 비트만 비교할 것이다.
만약 마스크 비트의 부분을 비교 했을 때 서로 동일 하다면, 이 둘은 같은 네트워크에 존재하고 있다고 판단하게 된다. 이것이 컴퓨터가 동일 네트워크의 여부를 판단하는 방법이다.
CIDR
위의 예에서 네트워크 마스크에 사용되는 비트의 숫자는 24개 였다. 여기서 이 24라는 숫자를 IP 주소와 함께 적어 주는 방식이 CIDR 표시법 이다. 예를 들면 이렇게 된다.
IP주소 | SUBNET MASK | CIDR 표기 |
192.168.1.1 | 255.255.255.0 | 192.168.1.1/24 |
172.27.10.1 | 255.255.0.0 | 172.27.10.1/16 |
10.0.0.1 | 255.0.0.0 | 10.0.0.1/8 |
왜 사용하는가
본 필자가 생각하는 가장 큰 이유는 적을 숫자가 적어진다 정도 되겠다. IP주소와 네트워크 마스크를 모두 적는 것 보다는 여러모로 간편하다. (일단 메모장에 적어야 하는 줄이 한 줄 줄어든다!) 물론 여러 기술적인 장점들도 있기는 하다. 하지만 일반적인 서버나 네트워크 엔지니어라고 한다면, 그다지 크게 와닿지 않는 것이 사실이긴 하다.
네트워크 마스크와 마스크 비트
사실 인터넷을 조금만 찾아 보거나, 네트워크 주소 계산기를 쓰거나, 손으로 계산하면 금방 계산할 수 있는 내용이긴 하다. 하지만 귀찮고 시간가고 번거롭다. (물론 몇 번 하다 보면 외워진다.) 서브넷 마스크별로 사용되는 마스크 비트의 수를 정리해 보았다. 사이더 표현을 보고나서 햇갈리거나 할 때 참고 하시라..
MASK BIT | SUBNET MASK | 가능한 IP 수 | 참고 |
0 | 0.0.0.0 | 보통, 모든 IP를 의미 | |
1 | 128.0.0.0 | 2,147,483,648 | |
2 | 192.0.0.0 | 1,073,741,824 | |
3 | 224.0.0.0 | 536,870,912 | |
4 | 240.0.0.0 | 268,435,456 | |
5 | 248.0.0.0 | 134,217,728 | |
6 | 252.0.0.0 | 67,108,864 | |
7 | 254.0.0.0 | 33,554,432 | |
8 | 255.0.0.0 | 16,777,216 | A Class |
9 | 255.128.0.0 | 8,388,608 | |
10 | 255.192.0.0 | 4,194,304 | |
11 | 255.224.0.0 | 2,097,152 | |
12 | 255.240.0.0 | 1,048,576 | |
13 | 255.248.0.0 | 524,288 | |
14 | 255.252.0.0 | 262,144 | |
15 | 255.254.0.0 | 131,072 | |
16 | 255.255.0.0 | 65,536 | B Class |
17 | 255.255.128.0 | 32,768 | |
18 | 255.255.192.0 | 16,384 | |
19 | 255.255.224.0 | 8,192 | |
20 | 255.255.240.0 | 4,096 | |
21 | 255.255.248.0 | 2,048 | |
22 | 255.255.252.0 | 1,024 | |
23 | 255.255.254.0 | 512 | |
24 | 255.255.255.0 | 256 | C Class |
25 | 255.255.255.128 | 128 | |
26 | 255.255.255.192 | 64 | |
27 | 255.255.255.224 | 32 | |
28 | 255.255.255.240 | 16 | |
29 | 255.255.255.248 | 8 | |
30 | 255.255.255.252 | 4 | |
31 | 255.255.255.254 | 2 | |
32 | 255.255.255.255 | 1 | 보통, 단일 IP 주소를 의미 |
마무리
사이다 표기법은 (이상하게 본 필자는 사이더 대신, '씨아이디알' 또는 '사이다'라고 읽는게 습관이 되어버렸다. 다행히 다들 알아 들으시니 고칠 마음은 없다만, 이래서 뭐든 독학은 좋지 않다.) 리눅스 시스템은 물론, IP 네트워크 통신에 대한 기본적인 내용을 함축하고 있다. 어디선가 IP를 받았는데, 서브넷 마스크 대신 /와 숫자가 붙은 IP 주소를 받았다면, 이 글을 기억해 주길 바란다.