[네트워크] Class란 ? CIDR 란 ? 차이점 및 개념을 쉽게 이해해보자 (feat.서브넷팅, 슈퍼넷팅)

IP 란 ?

IP는 8비트 씩 4자리로 이루어진 32 자리 이진수로 구성되어 있습니다.

아래 포스팅에 IPv4 와 IPv6에 대해서도 한번 읽어보시는 것을 추천 드립니다.

 

IPv4와 IPv6 란? IPv4와 IPv6의 차이점에 대해 알아보자.

IP란 ? 인터넷에 연결되어 있는 모든 장치들(컴퓨터, 서버 장비, 스마트폰 등)을 식별할 수 있도록 각각의 장비에게 부여되는 고유 주소 IP 는 IPv4 와 IPv6 두 가지로 나뉘며 일반적으로 IPv4를 많이

hstory0208.tistory.com

 

  • 192.168.0.1  

위 IP 주소를 예를 들어 이진수로 표현했을 땐 다음과 같습니다.

  2^7 ( 128 ) 2^6 ( 64 ) 2^5 ( 32 ) 2^4 ( 16 ) 2^3 ( 8 )  2^2 ( 4 )  2^1 ( 2 ) 2^0 ( 1 )
192 1 1 0 0 0 0 0 0
168 1 0 1 0 1 0 0 0
0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 1

여기서 네트워크 주소는 어디까지 이고 호스트 주소는 어디 까지 일 까요 ?


IP Class 

Class의 개념을 알게 되면, IP의 주소에서 어디까지가 네트워크 영역이고 호스트IP 영역인지 알 수 있습니다.

네트워크 영역과 호스트 영역을 왜 알아야 할까요 ?

“IP 주소는 하나의 네트워크안에 IP들은 네트워크 영역은 같아야하고, 호스트 IP는 서로 달라야 통신이 가능하다.” 라는 규칙 때문입니다.

 

Class의 개념을 알게 된다면 아래 주소의 네트워크 주소는 어디까지 이고 호스트 주소는 어디 까지인지 알 수 있습니다.

정답부터 말하자면 192.168.0.1  C 클래스로 192.168.0 까지가 네트워크 영역이고, 1이 호스트 영역입니다.

어떻게 알 수 있었을 까요 ? 이제 자세히 알아봅시다.

 

Class의 종류는 총 5가지가 있습니다.

  • A클래스
  • B클래스
  • C클래스
  • D클래스
  • E클래스

하지만 이중에서 D, E 클래스는 멀티캐스트용, 연구용으로 사용하여

보통 A, B, C 정도만 알고 있으면 충분합니다.

 

각 클래스는 다음 표를 보고 알 수 있으며 클래스를 통해 네트워크와 호스트를 구분할 수 있습니다.

클래스 2진수의 시작 (s : 네트워크, h : 호스트 ) 네트워크 시작과 끝 주소 (개수) 호스트 범위(개수)
A 클래스 0sss ssss.hhhh hhhh.hhhh hhhh.hhhh hhhh 0.0.0.0 ~ 127.255.255.255
( 2^7 - 1 :127 개 )
=> -1 를 한 이유는 127은
네트워크 범위에서 제외된다는 약속 때문
2^24 -2 개

-2 는 네트워크,
브로드캐스트 주소 제외

B 클래스 10ss ssss.ssss ssss.hhhh hhhh.hhhh hhhh 128.0.0.0 ~ 191.255.255.255
( 2^14 개 )
2^16 - 2 개

-2 는 네트워크,
브로드캐스트 주소 제외
C 클래스 110s ssss.ssss ssss.ssss ssss.hhhh hhhh 192.0.0.0 ~ 223.255.255.255
( 2^22개 )
2^8 -2 개 

-2 는 네트워크,
브로드캐스트 주소 제외

 

위 표를 통해 예시로 든 IP 주소 192.168.0.1 192.0.0.0 ~ 223.255.255.255 범위에 있기 때문에 C 클래스 인것을 알 수 있으며, 

네트워크 개수는 2^22개, 호스트 개수는 2^8 -2 개 인것을 알 수 있습니다.


CIDR  (Classless Inter-Domain Routing)

CIDR 는 기존 네트워크 클래스로 나눠 정의하던 IP정보를 Class 없이 유연하게 나눠줄 수 있는 라우팅 기법입니다.

원래는 Class로 A, B, C, D, E 클래스로 나누어서 네트워크를 사용했지만,

클래스로 나누게 되는 경우 IP들은 유연성이 없고 IP의 개수가 많기 때문에 좀 더 유연하게 사용하고자 CIDR라는 개념이 나오게 되었습니다.

 

Class와 CIDR의 차이점

클래스 앞 비트 시작 주소  끝 주소 해당 CIDR 블록
A 클래스 0 0.0.0.0 127.255.255.255 /8
B 클래스 10 128.0.0.0 191.255.255.255 /16
C 클래스 110 192.0.0.0 223.255.255.255 /24

Class와 CIDR를 표현하면 위 표 처럼 표현할 수 있습니다.

 

Class 단위를 이준수로 놓고 보면 앞자리를

A 클래스 : 0000

B 클래스 : 1000

C 클래스 : 1100

이렇게 앞자리 4개의 비트수를 정해서 사용하는 것을 볼 수 있습니다.

이렇게 Class로 고정적으로 사용하던 것을 CIDR를 사용하면 뒤에 서브넷(가변길이), 어디서 끊어 읽어 주어야할지 알려주는 /(슬래시)와 비트수를 함께 붙여 표기하여

단 한줄만으로 네트워크 범위를 알수 있고, 자유롭게 사용할 수 있습니다. 

 

CIDR  표시 방법

만약 192.168.0.1/32 를 2진수로 표현한다면 다음과 같이 표현가능합니다.

1100 0000.1010 1000.0000 0000.0000 0001 

 

여기서 /32의 32는 비트 수를 의미하며 맨 앞 부터 32개 모두 이진수 0과 1중 1로 되어 있다는 것을 의미합니다.

- 2 진수
 1111 1111.1111 1111.1111 1111.1111 1111

- 10진수로 표현
255.255.255.255

 

이것을 AND 연산하면 

AND 연산 : 두 값의 각 자릿수를 비교해, 두 값 모두에 1이 있을 때에만 1을, 나머지 경우에는 0을 계산
1100 0000.1010 1000.0000 0000.0000 0001 
 1111 1111.1111 1111.1111 1111.1111 1111
--------------------------------------------------------
1100 0000.1010 1000.0000 0000.0000 0001

자기 자신 192.168.0.1 만 나오게 되며 총 사용할 수 있는 IP 갯수는 1개가 됩니다. 

 

만약 호스트 IP 갯수를 늘리고 싶다면 ?

CIDR 주소를 /30이라고 가정하고 계산해보겠습니다.

/30 은 맨 앞부터 1이 30개 있다는 뜻으로 똑같이 AND 연산을 해보겠습니다.

1100 0000.1010 1000.0000 0000.0000 0001 
 1111 1111.1111 1111.1111 1111.1111 1100
------------------------------------------------------------
1100 0000.1010 1000.0000 0000.0000 0000

이렇게 되면 총 32 비트중 30을 뺀 00 이 남게되는데

이렇게 되면 총 사용할 수 있는 IP 개수는 ( 2^2 - 2 ) 2개로 늘어나게 됩니다.

 

이와 같이 /24숫자를 필요에따라 더 쓰거나 적게 사용하여 IP를 적절하게 할당하는 방법을

서브넷팅, 슈퍼넷팅 이라고 합니다.

 


서브넷팅과 슈퍼넷팅

서브넷팅과 슈퍼넷팅
- 서브넷팅 ( 네트워크 IP 더 많이 쓰기) :  서브넷 마스크를 호스트ID 방향(오른쪽)으로 움직인다. (값 증가)
- 슈퍼넷팅 ( 호스트 IP 더 많이 쓰기) :  네트워크 방향(왼쪽)으로 움직인다. (값 감소)

서브넷팅의 경우 /N 의 N의 수가 증가함에 따라 네트워크수(서브넷 수)는 2배씩 증가하고 호스트 수는 2배씩 감소합니다.

슈퍼넷팅의 경우 /N 의 N의 수가 감소함에 따라  네트워크수(서브넷 수)는 2배씩 감소하고 호스트 수는 2배씩 증가합니다.

 

서브넷팅 개념과 사용하는 이유 ?

"한 개의 네트워크를 서브넷 마스크를 이용해 여러 개의 서브넷 네트워크로 분할"

왜 한 개의 네트워크를 여러 개로 나누는가 ?
만약 , 일반 가정집에 A 클래스를 부여한다면 다쓰지도 못하고 한참남는 수많은 호스트 IP를 낭비할 것입니다.

이러한 문제로 인해 효율적으로 사용할 수 있도록 한 방법이 서브넷팅 입니다.

 

슈퍼넷팅 개념과 사용하는 이유 ?

"서브넷팅과 반대로 분할된 여러개의 작은 네트워크를 하나의 컨다란 네트워크로 합치는 것"

슈퍼넷팅으로 얻는 효과
슈퍼넷팅을 통해 메모리, CPU 자원 낭비를 막을 수 있는 효과를 얻을 수 있습니다.