클래스 단위로 네트워크를 분류하다보니 IP를 할당할 때 문제가 생겼다. 좀 더 적절한 단위로 네트워크를 분할하기 위한 필요성이 대두됐고 이러한 이유로 서브넷의 개념이 탄생했다.
서브넷
이란, IP 주소에서 네트워크 영역을 부분적으로 분할해 나눠진 작은 부분 네트워크를 뜻한다. 네트워크를 분할하는 서브네팅(Subnetting)
은 서브넷 마스크(Subnet Mask)
를 통해 이루어진다.
11001101 00000000 00000001 xxxxxxxx
위 IP 주소는 최상위 비트가 11
이므로 C Class 네트워크라고 할 수 있다. 따라서 앞의 24 비트는 네트워크 주소/ 뒤 8 비트는 호스트 주소다. 기본적으로 C Class 네트워크는 기본 서브넷 마스크로 /24를 가지고 있다.
즉, 서브넷 마스크란 네트워크 주소의 비트 수를 명시한 값이다.
여기서 호스트 주소의 갯수는 총 256개다. 하지만 이를 128개씩 가지는 두 개의 네트워크로 분할을 하고 싶다면 서브넷으로 분할하게 된다.
11001101 00000000 00000001 1xxxxxxx
11001101 00000000 00000001 0xxxxxxx
위와 같이 분할하고 싶다면, 네트워크 주소를 나타내는 부분이 25자리가 된다. 이는 C Class 네트워크의 네트워크 주소를 나타내는 비트 수보다 하나가 더 많다. 이렇게 되면 서브넷 마스크는 /25라고 표현할 수 있을 것이다.
같은 방식으로 서브넷 마스크를 변경해 4개의 서브넷으로 만들고 싶다면, 네트워크 주소로 한자리를 더 넘기면 된다.
그렇다면 서브넷 마스크를 이용해 서브넷을 구별해보자. 다음 IP와 서브넷 마스크를 보자.
205.0.1.129 // IP
255.255.255.128 // 서브넷마스크
위의 서브넷 마스크를 이진수로 표현하면 다음과 같다.
11111111 11111111 11111111 10000000
서브넷 마스크를 통해 앞 25비트가 네트워크 주소라는 것을 알 수 있다. 즉 205.0.1.129 라는 IP 주소는 205.0.1.129 ~ 205.0.1.254 의 호스트 범위에 속한다는 것을 알 수 있다.
205.0.1.129/25
참고