[개념 정리/네트워크] IP주소 체계 - 클래스풀 VS 클래스리스
아래 내용은 IPv4를 기반으로 한다.
IP주소는 인터넷 주소로, 네트워크 주소와 호스트 주소, 두 부분으로 이루어진다.
네트워크 주소는 호스트들을 모은 네트워크를 지칭한다.
- 동일한 네트워크 주소 = 로컬 네트워크
- 호스트 주소: 호스트를 구분하기 위한 주소
- 네트워크 호스트(network host): 네트워크에 연결된 컴퓨터 또는 기타 장치
클래스풀 IP주소 체계(Classful IP Addressing)
네트워크 주소를 매기고, 그에 따라 네트워크의 크기를 다르게 구분하여,
클래스를 할당하는 주소체계이다.
구분하는 기준자 (1, 2, 3 옥텟)를 서브넷마스크라고 한다.
Byte 1 | Byte 2 | Byte 3 | Byte 4 | |
Class A | Net ID | Host ID | ||
Class B | Net ID | Host ID | ||
Class C | Net ID | Host ID | ||
Class D | Multicast Address | |||
Class E | Reserved |
이진수 표현했을 때,
첫 번째 옥텟을 기준으로
첫째 자리가 0이면 Class A, 둘째 자리가 0이면 Class B, 셋째 자리가 0이면 Class C이다.
클래스별 Byte 1의 값의 범위는 아래 표와 같다.
(Byte 1) | 10진수 | 2진수 |
Class A | 0 ~ 127 | 00000000 ~ 01111111 |
Class B | 128 ~ 191 | 100000000 ~ 10111111 |
Class C | 192 ~ 223 | 11000000 ~ 11011111 |
Class D | 224~ 239 | 11100000 ~ 11101111 |
Class E | 240 ~ 255 | 11110000 ~ 11111111 |
클래스 A
- 한 네트워크 당 2^24 - 2개의 호스트 ID (약 1600만개)
- 네트워크 주소 범위: 1 ~ 126로 시작
- 원래는 127.255.255.255까지 포함하지만 127.~~는 특수하게 루프백 주소이기 때문에 포함하지 않는다.
- 0.0.0.0도 특수 주소로, 알 수 없는 대상에 달아두는 임시 주소이기에 포함하지 않는다.
클래스 B
- 한 네트워크 당 2^16 - 2개의 호스트 ID (약 6만 5천개)
- 네트워크 주소 범위: 128 ~ 191로 시작
클래스 C
- 한 네트워크 당 2^8 - 2개의 호스트 ID (254개)
- 네트워크 주소 범위: 192 ~ 223로 시작
*HostID 개수 중 2개를 빼는 이유:
맨 앞자리는 네트워크 주소를 지칭하기 위해 남겨두며,
마지막 주소는 브로드캐스팅 주소로 남겨둔다.
클래스풀의 문제점
네트워크의 크기가 작은 경우, 큰 네트워크를 필요로하는 조직은 여러 네트워크를 확보해야 한다.
작은 네트워크가 필요한 조직의 경우, 너무 많은 IP를 가져가므로 IP가 낭비되는 문제점이 있다.
예를 들어, 5000개의 HostID가 필요한 회사에서는
Class C를 이용할 경우 너무 많은 네트워크가 필요하고,
Class B를 이용할 경우 약 6만개의 많은 IP주소가 남게 된다.
클래스리스
클래스풀의 단점을 해결하기 위해 클래스리스가 등장했다.
클래스가 아닌 서브넷마스크를 통해 어디까지가 네트워크 주소와 호스트 주소인지 구분한다.
- 서브네팅: 네트워크를 나눈다는 의미
- 서브넷: 서브네트워크, 쪼개진 네트워크
- 서브넷마스크: 서브네트워크를 위한 비트마스크
현대의 주소 체계는 클래스리스를 사용한다.
서브넷 마스크
이진수, 비트를 이용하여,
네트워크 주소 부분을 1, 호스트 주소 부분을 0으로 설정한 필터가 설정된다.
AND 연산을 적용하여, 1이 true, 0이 flase이므로, 호스트 주소 부분은 모두 0으로 인식된다.
아래는 서브넷 마스크의 사용 예시이다.
IPv4 address | 192.168.50.112 |
subnet mask | 255.255.255.0 |
IPv4 address (binary) | 11000000.10101000.00110010.01110000 |
subnet mask (binary) | 11111111.11111111.11111111.00000000 |
AND 논리 연산 | TTFFFFFF.TFTFTFFF.FFTTFFTF.FFFFFFFF |
Network address | 11000000.10101000.00110010.00000000 |
서브넷 마스크는 클래스풀에서도 사용된다.
왼쪽에서부터 1이 몇개인지에 따라
사용가능한 Host ID의 개수가 정해진다.
C클래스를 기준으로,
255.255.255.0이면 256개, 왼쪽에 1이 추가되면 255.255.255.128로 128개, 하나 더 추가되면 255.255.255.192로 64개, 등의
방식으로 적용된다.
10개의 사무실이 있고, 사무실 당 12개의 장치를 연결해야 하는 경우라면,
한 서브네트워크(서브넷) 당 16개의 네트워크를 확보하여, (왼쪽부터 1의 개수 /28로 표시) 16 - 2 = 14개의 장치를 확보할 수 있다.
참고: inflearn 강의 'CS 지식의 정석 - 큰돌'