반응형

오늘은 CIDR에 대해서 설명해보도록 하겠습니다.

 

네트워크 설계를 하면서 가장 많이 접하게 될 개념이 CIDR입니다. 사이더라고 부릅니다.

CIDR의 full name은 Classless Inter-Domain Routing 으로 클래스 없는 도메인간 라우팅 기법이라는 뜻입니다.

 

클래스가 없다는 뜻은 네트워크 구분을 아래와 같이 Class로  하지 않는다는 것입니다. Class는 사이더가 나오기전 사용했던 네트워크 구분 체계 입니다.

사이더가 나오면서 Class 체계보다 더 유연하게 IP주소를 여러 네트워크 영역으로 나눌 수 있게 되었죠

 

참고 하자면 클래스 구분은 아래 그림과 같습니다.

 

 

도메인간 라우팅이라는 뜻은 아래 그림에 Inter-Domain과 형태를 말합니다. 

 

 

 

사이더는 위 Intra-Domain과 같이 각 네트워크 대역을 구분 짓고 Inter-Domain 과 같이 구분된 네트워크간 통신을 위한 주소 체계라고 이해하면 쉬울 것 같네요.

 

 

사이더가 무엇인지 이해돼셨나요? 그러면 표기법 및 계산 방법을 알아야 합니다.

 

혹시 IP뒤에 192.168.10.0/24 이런식으로 "/24"를 보신적이 있으신가요? 바로 이것이 사이더 표기법입니다.

 

 

이 숫자는 비트 단위이며 0~32 까지 표현이 가능합니다. 이 숫자를 이해하기 위해 IP에 대해 간략히 설명드리겠습니다.

 

IP를 표현하는 방식이 옥텟이라는 단위로 나누게 됩니다. 

 

아래 그림과 같이 하나의 옥텟은 8비트로 이루어져 있으며 일반적으로 사용하는 IPv4 주소는 4개의 옥텟으로 이루어져 있습니다.

 

따라서 사이더는 0~32 까지 총 32비트까지 사용가능 합니다. 

 

 

CIDR이 "/24" 라면 아래 그림과 같이 앞에서부터 24비트 이후에 오는 4번째 옥텟(파란색 부분)을 전부 사용할 수 있다는 표현입니다

 

 

하나의 옥텟은 8비트로 2의8승 인 256개 이기 때문에,  143.7.65.203/24 일때 143.7.65.0 ~ 143.7.65.255 까지 사용이 가능한 것이죠.

 

이렇게 CIDR값이 각 자리의 옥텟을 전체를 포함하는 /8, /16, /24, /32 일 경우는 계산하기 쉽습니다. 0부터 그자리에 해당하는 255 까지 라고 보면되기 때문이죠.간단한 예로 143.7.65.203/16 이라면 143.7.0.0 ~ 143.7.255.255 가 되겠죠.

 

 

그런데, 사이더 값이 23일경우 아래와 같이 노란색과 파란색 두개의 옥텟에 걸치게 되므로 바로 계산하기가 애매해 집니다. 이 경우 애매하게 걸친 옥텟을 2진수로 표현하고 최소 값과 최대값을 찾아 내야 합니다.

예를들어 143.7.65.203/23 일때, 4번째 옥텟(파란색 부분) 전체와 3번째 옥텟(노란색 부분)영역의 1비트가 포함됩니다. 

 

 

그럼 애매하게 걸친 3번째 옥텟을 2진수로 표현해 보겠습니다.  65로 01000001 입니다. 

 

사이더에 의해 마지막 자리 1비트를 0 또는 1을 사용할 수 있게 되면 01000000, 01000001 이기 때문에 64, 65가 되겠죠 여기서 64가 3번째 옥텟에서 사용할 수 있는 최소값이 되며 최대값은 65가 됩니다.

나머지 4번째 옥텟(파란색 부분)은 전체를 사용할 수 있기 때문에 최소값 0, 최대값 255이겠죠. 따라서 143.7.65.203/23 는  143.7.64.0 ~ 143.7.65.255 대역을 사용할 수 있는 것입니다.

 

 

그럼 이어서 143.7.65.203/22 를 계산해볼까요  01000000, 01000001 01000010, 01000011 총 4개를 사용할 수 가 있겠죠 10진수로 표현하면 최소값인 64부터, 65, 66, 최대값인 67 입니다. 

 

즉  143.7.65.203/22 는  143.7.64.0 ~ 143.7.67.255 입니다. 이제 좀 수월해졌죠?

 

 

 

그러면 143.7.65.203/25 일 경우는 어떨까요? 4번째 옥텟(파란색 부분)

 

파란색 부분이 애매하게 걸쳐있죠? 그러면 어떻게해야 하죠? 

 

네 2진수로 고쳐서 표현할 수 있는 최소값 최대값을 찾아 내야 합니다. 십진수 203은 2진수로 11001011 입니다. 여기서 최소 값은  10000000 인 128이고, 최대값은 11111111인 255 입니다. 

 

따라서 143.7.65.128 ~ 143.7.65.255 입니다.

 

 

몇가지 예를 들어보니 어렵지 않게 계산 할 수 있으시겠죠?

 

정리하면 애매하게 걸쳐 있는 쪽의 옥텟의 10진수 값을 2진수로 변경하여 걸쳐 있는 비트수 만큼의 최소값과 최대값을 구하면된다 입니다.

 

네트워크를 처음 접할때 IP와 CIDR에 대한 이해는 필수 입니다. 따라서 이해가 안돼시면 꼭꼭 두번 세번 읽어보시고 다른 블로그, 도서 또는 위키를 참고하시어 자기의 것으로 만드시기 바라겠습니다.

 

[참고] CIDR 쉽게 계산하는 방법

https://deeds-not-words.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-CIDR-%EB%B2%94%EC%9C%84-%EC%89%BD%EA%B2%8C-%EA%B3%84%EC%82%B0%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95

 

[네트워크] CIDR 범위 쉽게 계산하는 방법

Intro 오래전에 네트워크 공부를 하면서 CIDR계산이 너무어려웠던 기억이 있습니다. 책이나 구글링을 해봐도 이해하기 쉽게 설명되어 있지 않기도 했고 예시가 다양해서 매번 막혔던것 같습니다.

deeds-not-words.tistory.com

 

[출처] https://kim-dragon.tistory.com/9

 

728x90

'[개발관련] > 네트워크' 카테고리의 다른 글

[네트워크] CIDR 범위 쉽게 계산하는 방법  (0) 2022.03.08

+ Recent posts