CIDR이란 Classless Inter-Domain Routing
CIDR이란 Classless Inter-Domain Routing의 줄임말로 클래스 없는 도메인간 라우팅 기법이라는 뜻입니다.
클래스가 없다는 뜻은 네트워크 구분을 아래와 같이 Class로 하지 않는다는 것입니다.
Class는 사이더가 나오기 전 사용했던 네트워크 구분 체계입니다.
사이더가 나오면서 Class 체계보다 더 유연하게 IP주소를 여러 네트워크 영역으로 나눌 수 있게 되었습니다.
"CIDR는 기존의 IP 주소 할당 방식이었던 네트워크 클래스 방법을 대체한 방식입니다.
CIDR는 IP Address의 영역을 나눌 때 기존방식보다 유연하게 자신이 원하는 Network Address와 Host Address를 나눌 수 있습니다."
CIDR이란 결국 IP Address Class보다 더욱 많아진 IP Address의 요구를 충족시키기 위해서 나왔다고 생각하면 됩니다.
Network Address: 그룹 (네트워크를 식별하기 위한 것)
Host Address: 개인 (네트워크의 호스트 컴퓨터를 식별하기 위한 것)
A Class
0 ~ 127로 Network Address가 시작되며 Host Address는 2^24개를 가질 수 있습니다.
단, 0.0.0.0의 경우는 자체 네트워크를 의미해서 제외되며 127.0.0.0 ~ 127.255.255.255는 루프백 ip address (자기 자신을 가리키기 위한 목적으로 쓰기 위해 예약된 IP 주소입니다. 로컬 호스트의 주소라고 생각하면 됩니다.)로 사용하기 때문에 사용할 수 없습니다.
0.0.0.0 = 00000000.00000000.00000000.00000000 ~ 127.255.255.255 = 01111111.11111111.11111111.11111111
B Class
128.0 ~ 191.255 Network Address가 시작되며 Host Address는 2^16개를 가질 수 있습니다.
128.0.0.0 = 10000000.00000000.00000000.00000000 ~ 191.255.255.255 = 10111111.11111111.11111111.11111111
C Class
192.0.0 ~ 223.255.255로 Network Address가 시작되며 Host Address는 총 2^8개를 가질 수 있습니다.
192.0.0.0 = 11000000.00000000.00000000.00000000 ~ 223.255.255.255 = 11011111.11111111.11111111.11111111
Inter-Domain 체계
사이더는 위 Intra-Domain과 같이 각 네트워크 대역을 구분 짓고 Inter-Domain과 같이 구분된 네트워크간 통신을 위한 주소 체계라고 이해하면 됩니다.
사이더 표기법
192.168.10.0/24을 예로 들면 IP주소 뒤에 붙는 숫자는 비트 단위이며 0 ~ 32까지 표현이 가능하며 IP를 표현하는 방식은 옥텟이라는 단위로 나누게 됩니다.
하나의 옥텟은 8비트로 이루어져 있으며 일반적으로 사용하는 IPv4 주소는 4개의 옥텟으로 이루어져 있습니다. 따라서 사이더는 0 ~ 32까지 총 32비트까지 사용 가능합니다.
만약 "IP주소/24"라면 앞에서부터 24비트 이후에 오는 4번째 옥텟을 전부 사용할 수 있다는 표현입니다.
하나의 옥텟은 8비트로 2의 8승인 256개이기 때문에, 143.7.65.203/24일때 143.7.65.0 ~ 143.7.65.255까지 사용이 가능합니다. 이렇게 CIDR값이 각 자리의 옥텟 단위를 포함하는 /8, /16, /24, /32일 경우는 계산하기 쉽습니다. 0부터 그자리에 해당하는 255까지 라고 보면 되기 때문입니다. 예시로 143.7.65.203/16 이라면 143.7.0.0 ~ 143.7.255.255가 됩니다.
예를 들어 143.7.65.203/23일 때, 4번째 옥텟(파란색부분) 전체와 노란색 부분 영역의 1비트가 포함됩니다. 3번째 옥텟인 65를 2진수로 표현하면 01000001이 됩니다. 사이더에 의해 마지막 자리 1비트를 0 또는 1을 사용할 수 있게 되면 2의 1승으로 경우를 표현하자면 01000001, 0100000이기 때문에 64, 65가 됩니다. 여기서 64가 3번째 옥텟에서 사용할 수 있는 최소값이 되며 최대값은 65가 됩니다. 나머지 4번째 옥텟은 전체를 사용할 수 있기 때문에 최소값 0, 최대값 255가 됩니다. 따라서 143.7.65.203/23은 143.7.64.0 ~ 143.7.65.255 대역을 사용할 수 있게 됩니다.
143.7.65.203/22를 계산해보자면, 3번째 옥텟에서 2자리 수는 2의 2승이므로 4이며 경우의 수로 나타내자면 01000000, 01000001, 01000010, 01000011로 총 4개를 사용할 수 있습니다. 10진수로 표현하면 최소값인 64부터 65, 66, 최대값인 67입니다. 즉 143.7.65.203/22는 143.7.64.0 ~ 143.7.67.255 입니다.
143.7.65.203/25의 경우도 마찬가지로 4번째 옥텟에서 7자리 수는 2의 7승이므로 128이 됩니다. 경우의 수는 너무 많으므로 생략하겠습니다. 여기서 최소값은 1000000인 128이고, 최대값은 1111111인 255입니다. 따라서 143.7.65.128 ~ 143.7.65.255입니다.
정리하면 걸쳐져 있는 쪽의 옥텟을 기준으로 10진수 값을 2진수로 변경하여 걸쳐 있는 비트수 만큼의 최소값과 최대값을 구하면 됩니다.