왜?라는 관점에 따라 작성한 글입니다.서브넷, 즉 서브 네트워크는 네트워크 내부의 네트워크이다.
서브넷을 이루는 과정을 서브넷팅이라고 한다.
이를 활용하면 네트워크의 개수를 아낄 수 있고, 라우팅에도 이점을 가진다.
왜 위와 같은 방법을 사용해야하는지에 대해 알아보자.
서브넷을 만들어야 하는 이유를 나타내기 전에 클래스라는 개념을 이해해야 한다.
클래스란 하나의 IP주소에서 네트워크 영역과 호스트 영역을 나누는 방법이다.
네트워크 영역 = 한 네트워크를 구성하는 영역
호스트 영역 = 개인 PC
즉, 한 네트워크 안에 여러개의 호스트가 존재한다.

IP주소는 32비트(4바이트)로 이루어지는데 클래스마다 호스트와 네트워크를 구분했다.
A는 1바이트는 네트워크, 3바이트는 호스트
B는 2바이트 네트워크, 2바이트 호스트
C는 3바이트 네트워크, 1바이트 호스트
즉 만약 한 네트워크에 2바이트 이상의 호스트가 네트워크를 사용하면 A 클래스를 써야하고
한 네트워크에 1바이트 미만이라면 C 클래스의 네트워크를 할당해주어야 하는 것이다.
ipv4를 사용하다보니 문제가 발생했다.
그것은 ip주소가 부족해진 것이다. ip는 최대 42억개의 주소를 가질 수 있지만, 인터넷의 확장과 디바이스 수의 증가로 인해 IP 주소가 부족해지는 문제가 발생했다.
이를 해결하는 방법 중 하나가 서브넷팅이다.
질문을 하나 하겠다
Q) C클래스의 (호스트)의 범위는 2 ^ 8 = 256이다. 만약 한 네트워크에서 호스트가 50개만 필요하다고 가정하면 C클래스를 부여한다고 했을 때 206개가 놀게된다.
즉, 위와 같이 클래스별로 할당을 하다보면 낭비되는 호스트가 많다.
즉 네트워크를 필요한 호스트에 맞게 네트워크를 분할(서브넷)하여 주소 낭비를 줄인다.
이외에도 서브넷을 하면 라우팅 이점이 있으나 이는 라우팅 포스팅에서 정리하도록 하겠다.
서브넷 마스크는 IP 주소를 네트워크 부분과 호스트 부분으로 나누는 데 사용되는 32비트 값
서브넷 마스크는 IP 주소와 논리적 AND 연산을 수행하여 주어진 IP 주소가 속한 네트워크를 식별하는 데 사용 -> 1이면 네트워크, 0이면 호스트
실제로 서브넷 마스크를 이용해보자.
C클래스의 192.168.15.72를 서브넷 마스크를 적용하면 아래와 같다

자 만약 (16진수)255.255.255.0 이라는 서브넷 마스크를 이용해 and 연산을 수행하면
위와 같이 어떤 ip주소를 받더라도 네트워크 영역과 호스트 영역을 정확히 구분할 수 있다.
즉 192.168.15.0이 네트워크 주소, 192.168.15.1 ~ 192.168.15.254 까지 호스트주소이다
-> 호스트 주소에서 0은 네트워크 주소, 255는 브로드캐스트 주소라서 사용x
브로드캐스트는 한 네트워크에서 모든 호스트에게 전송할 때 사용함
만약 호스트를 126개만 사용한다면 서브넷 마스크를 255.255.255.128(1비트 추가)로 줘서 하나의 네트워크를 두개의 서브넷으로 쪼개고, 호스트를 절반으로 줄여 네트워크를 절약하는 것이다.
기존의 클래스 방식에서 서브넷팅을 이용해 클래스 방식을 대체한 방법
결국 그동안 이야기 했던 것이다. 클래스 방식은 낭비되니 위와 설명한대로 서브넷팅을 이용해 네트워크를 유연하게 구성한다
CIDR은 IP 주소를 "주소/프리픽스 길이" 형식으로 표기한다. 프리픽스 길이는 서브넷 마스크에서 1로 설정된 비트의 개수를 나타낸다.
예를 들어, "192.168.0.0/24"는 24비트 서브넷 마스크를 가진 IP 주소 범위를 의미함. 이는 기존의 클래스 기반 체계에서 "클래스 C"를 나타내는 범위와 동일.
-> 192.168.0 까지는 네트워크 부분, 이후 0~ 255는 호스트 영역
즉 서브넷 마스크가 255.255.0.0 이라면 /16, 255.255.255.128이라면 /25와 같이 표기한다고 생각하면 된다.
출처 - https://www.cloudflare.com/ko-kr/learning/network-layer/what-is-a-subnet/