서브넷과 CIDR
IP 주소 하나를 받았을 때 '이 중에서 어디까지가 네트워크 주소냐'를 알아야 라우터가 길을 찾을 수 있습니다. 이 경계를 정하는 두 가지 방법이 서브넷 마스크와 CIDR입니다. 오늘날 두 방법은 함께 쓰이며, 사실상 같은 정보를 다른 형태로 표현한 것입니다.
서브넷 마스크의 작동 원리
서브넷 마스크는 IP 주소와 같은 32비트 숫자입니다. 1이 연속으로 나열되다가 0이 연속으로 나열되는 구조입니다. 1인 자리는 네트워크 부분, 0인 자리는 호스트 부분입니다.
IP 주소 192.168.1.100과 서브넷 마스크 255.255.255.0이 있다고 해봅시다. 두 수를 비트 AND 연산하면 192.168.1.0이 나옵니다. 이것이 이 장치가 속한 네트워크 주소입니다. 라우터는 이 연산으로 패킷이 어느 네트워크로 가야 하는지 판단합니다.
서브넷 마스크가 255.255.0.0이라면 앞의 16비트가 네트워크 부분입니다. 이 경우 192.168.0.0부터 192.168.255.255까지, 약 65,000개 이상의 호스트 주소가 한 네트워크 안에 들어갑니다. 건물이 크면 호수가 많듯이, 네트워크 부분이 짧을수록 한 네트워크가 담을 수 있는 호스트가 늘어납니다.
CIDR 표기법
서브넷 마스크를 매번 255.255.255.0처럼 쓰는 것은 불편합니다. 그래서 등장한 것이 CIDR 표기법입니다. 슬래시 뒤에 1의 개수를 적습니다. 192.168.1.0/24라고 쓰면 앞의 24비트가 네트워크 부분이라는 뜻입니다. 255.255.255.0과 정확히 같은 의미입니다.
CIDR은 Classless Inter-Domain Routing의 줄임말입니다. '클래스 없는'이라는 말이 붙은 이유가 있습니다. 원래 IPv4는 주소를 클래스 A, B, C로 나눠 네트워크 경계를 고정했습니다. 클래스 A는 앞 8비트, B는 앞 16비트, C는 앞 24비트가 네트워크 주소였습니다. 그런데 이 방식은 매우 비효율적이었습니다. 500개 호스트가 필요한 곳에 클래스 B를 할당하면 6만 개가 넘는 주소가 낭비됩니다. CIDR은 이 고정 경계를 없애고, 필요한 만큼 정밀하게 네트워크 크기를 조절할 수 있게 합니다.
프리픽스 길이와 네트워크 크기
CIDR에서 슬래시 뒤 숫자를 프리픽스 길이라고 부릅니다. 이 숫자가 커질수록 네트워크는 작아집니다.
/24이면 호스트 부분이 8비트이므로 2의 8제곱, 256개 주소가 있습니다. 여기서 네트워크 주소와 브로드캐스트 주소를 빼면 254개가 실제 장치에 쓸 수 있습니다. /16이면 호스트 부분이 16비트, 65,536개 주소에서 네트워크·브로드캐스트를 빼면 65,534개가 사용 가능합니다.
작은 사무실이나 가정에서는 /24로 충분합니다. 대학교나 대기업처럼 수천 대의 장치가 있는 환경에서는 /16이나 그보다 작은 프리픽스를 씁니다. 클라우드 환경에서는 /28처럼 아주 작은 서브넷을 필요에 따라 잘게 나눠 씁니다.
이 개념을 실제로 확인해볼 차례입니다. 다음 절에서는 내 컴퓨터의 IP 주소를 직접 확인하고, CIDR로부터 네트워크 범위를 손으로 계산해봅니다.