네트워크 규모나 호스트 개수에 따라 분류하지 않고 전세계 네트워크를 하나처럼 사용하게 된다면 IP주소 관리가 매우 복잡해진다. 그래서 IP 주소를 적절히 분류한 것이 Class이다.



IP 주소를 할당받는 대부분의 사이트가 C 클래스를 받기에는 규모가 큰 경우 B클래스를 할당해주면서 약 16,000개의 B클래스가 급속도로 소진되는 문제가 있음. 호스트가 10,000개인 회사가 B클래스를 배정받았다면 약 5,500개 이상의 IP주소는 버려서 낭비가 심함
이러한 문제를 해결하기 위해 1993년 부터 클래스가 CIDR(Classless Inter-Domain Routing)로 대체되기 시작함. CIDR는 클래스가 없는 도메인간 라우팅 기법으로 IP 주소 영역을 여러 네트워크 영역으로 나눌 때 유연성을 제공한다.
아래와 같이 비트 단위로 네트워크 분할이 가능하므로 좀더 효율적으로 IP 배정이 가능
10.10.10.32/27
------------------------------------
10 .10 .10 .32 /27
00001010.00001010.00001010.001 00000
------------------------------------
└- 네트워트주소(27비트) └- 호스트 주소(5비트): 호스트 개수 = 2^5 (32개)
====================================
* IP주소대역: 10.10.10.32 ~ 10.10.10.63
* 네트워크주소: 10.10.10.32
* 브로드케스팅주소: 10.10.10.63
서브넷 마스크는 IP 프로토콜에서 로컬 네트워크인지 원격 네트워크인지 구분하기 위해 사용함
네트워트 주소 부분의 모든 비트가 1로 설정되어 주어진 IP주소와 AND(&) 연산을 통해 로컬 네트워크 주소와 동일한 네트워크 주소가 나오면 로컬 네트워크로 판단함

출처) https://juner417.github.io/blog/network-101-ip-subnet/