모든 이야기

192.0.2.34/24를 읽는 법: IP 주소와 서브넷

IP 주소는 네트워크에서 패킷의 출발지와 목적지를 나타내는 논리 주소다. 보통 장치 자체의 영구 이름보다는 네트워크 인터페이스와 그 위치에 연결된다. 한 장치가 여러 인터페이스와 여러 IP 주소를 가질 수 있고, 같은 장치의 주소도 연결한 네트워크에 따라 달라질 수 있다.

IPv4 주소의 앞 24비트와 뒤 8비트를 나누고 같은 서브넷의 두 호스트와 게이트웨이를 표시한 그림

프리픽스 길이는 주소를 네트워크 부분과 나머지 부분으로 나누는 기준이다.

슬래시 뒤 숫자가 나누는 경계

IPv4 주소는 32비트다. 192.0.2.34/24에서 /24는 앞의 24비트를 네트워크 프리픽스로 사용한다는 뜻이다. 주소와 255.255.255.0 마스크를 비트 AND 하면 192.0.2.0이 나온다. 192.0.2.99도 같은 /24에서는 동일한 네트워크 프리픽스를 갖는다. 이 예의 주소 대역은 문서 설명용으로 예약된 범위다.

/24는 남은 8비트가 총 256가지 값을 가질 수 있다는 의미다. 일반적인 IPv4 서브넷에서는 네트워크 주소와 브로드캐스트 주소를 호스트에 배정하지 않아 흔히 254개를 계산한다. 하지만 /31 지점 간 링크와 /32 단일 호스트 경로 같은 예외가 있으므로 모든 프리픽스에 무조건 2를 빼는 공식은 맞지 않는다.

서브넷 마스크는 주소의 네트워크 부분을 판단하는 규칙이다. 목적지가 자신이 직접 연결된 서브넷에 있으면 링크 계층에서 그 이웃에게 전달할 수 있다. 다른 네트워크라면 보통 라우팅 테이블이 정한 다음 홉으로 보낸다. 주소가 비슷해 보이는 것과 실제로 같은 서브넷인 것은 구분해야 한다.

주소를 묶으면 경로도 묶인다

CIDR 표기는 고정된 옛 클래스 경계 대신 다양한 길이의 프리픽스를 사용한다. 라우터는 192.0.2.0/24 같은 하나의 경로로 여러 주소를 함께 표현할 수 있다. 인접한 주소 범위를 올바르게 묶으면 경로 테이블이 작아지지만, 묶음 안의 일부 목적지가 다른 곳에 있으면 더 구체적인 경로나 설계 변경이 필요하다.

IPv6는 128비트 주소를 사용한다. 큰 주소 공간이 있다는 이유로 모든 주소를 평면적인 목록처럼 처리하는 것은 아니다. 프리픽스와 계층적인 할당은 IPv6에서도 라우팅 규모를 관리하는 중요한 수단이다. IPv4의 브로드캐스트 규칙을 그대로 IPv6에 옮겨 생각해서도 안 된다.

설정을 확인할 때는 IP 주소만 보지 말고 프리픽스 길이, 기본 경로, 실제 인터페이스를 함께 적어야 한다. 잘못된 마스크는 원격 목적지를 로컬 이웃으로 착각하게 만들 수 있고, 중복 주소는 도달성 문제를 일으킨다. 주소는 어디로 가는지 나타내고, 프리픽스는 그 목적지를 어떤 규모로 묶어 판단할지 정한다.

프리픽스 길이가 한 비트 길어지면 주소 범위는 절반으로 줄어든다. 예를 들어 192.0.2.0/24를 /25 둘로 나누면 첫 범위는 192.0.2.0부터 192.0.2.127까지, 둘째는 192.0.2.128부터 192.0.2.255까지다. 같은 첫 세 자리 숫자를 가졌어도 /25 경계의 양쪽은 다른 서브넷이 될 수 있다. 네트워크 범위를 계산할 때는 십진수의 모양보다 비트 경계를 기준으로 해야 한다. 사설 주소도 주소 계산 방식 자체는 같다. 다만 전역 인터넷에서 직접 라우팅되는 범위와 내부에서만 사용하는 범위의 정책이 다르고, 외부 연결에는 주소 변환 같은 별도 구성이 필요할 수 있다.

참고 자료