반응형

Intro

오래전에 네트워크 공부를 하면서 CIDR계산이 너무어려웠던 기억이 있습니다. 책이나 구글링을 해봐도 이해하기 쉽게 설명되어 있지 않기도 했고 예시가 다양해서 매번 막혔던것 같습니다. 그래서 기억하기 쉽게 정리하여 글을 올렸고 다행히도 많은 분들이 도움을 받았다고 피드백을 주셨습니다.
해당 블로그는 [네트워크] CIDR이란?(사이더 란?) 를 참고하시기 바랍니다.

그런데 여기서 설명드린 계산법으로는 계산하기가 매우 번거롭습니다. 계산 원리를 설명드리기위해 하나하나 풀어서 설명드렸지만 원리를 이해하셨다면 사실 더 쉽게 계산할 수 있는 방법이 있습니다. 물론 CIDR계산기를 사용하면 더 빠르게 계산이 가능합니다만 계산기가 없을때 대응해야하기 때문에 오늘 2진수로 하나하나 변경하지 않아도 쉽게 계산할 수 있는 방법을 알려드리도록 하겠습니다.

몇가지 예시로 설명 드리도록 하겠습니다.

CIDR 쉽게 계산하는 방법 (예시1)

192.168.207.2/22
192(옥텟1).168(옥텟2).207(옥텟3).2(옥텟4)/22(비트)

  1. / 뒤에 숫자를 32로 뺀다. 32-22= 10
  2. (1)번에서 나온 숫자가 8이상인 경우 8보다 작아질때 까지 뺀다. 10-8=2 (뺀 횟수를 기억한다)
  3. (2)번에서 나온 숫자 2를 2의 2승을 한다. 2x2=4 (와일드카드를 구하는 과정임 즉 최대 4개의 IP를 가질 수 있다)
  4. 와일드카드 값인 4는 옥텟 1개가 가질 수 있는 최대 범위 0~255를 64개로 분할한 것을 의미한다
    (0~3, 4~7, 8~11, 12~15.....200~203, 204~207.....252~255 의 범위를 가진다)
  5. (2)번에서 8을 1회 뺏다면 옥텟3의 값인 207을 확인한다. 이 값이 (4)번 와일드카드의 범위 어디에 포함되어있는지 알아내면 끝이다.
    (0회 일경우=옥텟4, 1회 일경우=옥텟3, 2회 일경우=옥텟2, 3회일 경우 = 옥텟1 을 보면됨)
  6. 옥텟3의 값 207이 0보다 256에 더 가깝기 때문에 뒤에서부터 4를 13번 빼주면 256-(-4x13)=204 가 되고 204-207 범위내에 포함되어있다. 옥텟3의 최소값은 204이며 최대값은 207이다. 그 아래 옥텟4의 값의 최소값은 0이며 최대값은 255이다.
  7. 따라서 192.168.204.0 ~ 192.168.207.255

CIDR 쉽게 계산하는 방법 (예시2)

192.168.207.227/25
192(옥텟1).168(옥텟2).207(옥텟3).227(옥텟4)/25(비트)

  1. / 뒤에 숫자를 32로 뺀다. 32-25= 7
  2. (1)번에서 나온 숫자가 8이상인 경우 8보다 작아질때 까지 뺀다. 8이하 이므로 그냥 7 (뺀 횟수를 기억한다)
  3. (2)번에서 나온 숫자 7를 2의 7승을 한다. 2x2x2x2x2x2x2= 128 (와일드카드를 구하는 과정임 즉 최대 128개의 IP를 가질 수 있다)
  4. 와일드카드 값인 128는 옥텟 1개가 가질 수 있는 최대 범위 0~255를 2개로 분할한 것을 의미한다
    (0~127, 128~255 의 범위를 가진다)
  5. (2)번에서 8을 0회 뺏다면 옥텟4의 값인 227을 확인한다. 이 값이 (4)번 와일드카드의 범위 어디에 포함되어있는지 알아내면 끝이다.
    (0회 일경우=옥텟4, 1회 일경우=옥텟3, 2회 일경우=옥텟2, 3회일 경우 = 옥텟1 을 보면됨)
  6. 이 예제는 딱봐도 옥텟4의 값 227이 128~255에 포함된다. 옥텟4은 최소값 0부터 시작하며 최대값은 255이다.
  7. 따라서 192.168.207.128 ~ 192.168.207.255

마지막으로 한번 더 해볼까요?

CIDR 쉽게 계산하는 방법 (예시3)

192.1.207.2/13
92(옥텟1).1(옥텟2).207(옥텟3).2(옥텟4)/22(비트)

  1. / 뒤에 숫자를 32로 뺀다. 32-13= 19
  2. (1)번에서 나온 숫자가 8이상인 경우 8보다 작아질때 까지 뺀다. 19-8=11 ,11-8=3 (뺀 횟수를 기억한다)
  3. (2)번에서 나온 숫자 3을 2의 3승을 한다. 2x2x2= 8 (와일드카드를 구하는 과정임 즉 최대 8개의 IP를 가질 수 있다)
  4. 와일드카드 값인 8은 옥텟 1개가 가질 수 있는 최대 범위 0~255를 32개로 분할한 것을 의미한다
    (0~7, 8~15, 16~23, 24~31...., 240~247, 248~255 의 범위를 가진다)
  5. (2)번에서 8을 2회 뺏다면 옥텟2의 값인 1을 확인한다. 이 값이 (4)번 와일드카드의 범위 어디에 포함되어있는지 알아내면 끝이다.
    (0회 일경우=옥텟4, 1회 일경우=옥텟3, 2회 일경우=옥텟2, 3회일 경우 = 옥텟1 을 보면됨)
  6. 이 예제도 딱봐도 옥텟2의 값인 1이 0~7에 포함된다. 옥텟2는 최소값 0부터 시작하며 최대값은 7이다. 그 아래 옥텟3,옥텟4은 최소값 0부터 시작하며 최대값은 255이다.
  7. 따라서 192.0.0.0 ~ 192.7.255.255

CIDR 계산기

CIDR계산기를 제공하는 사이트는 여러곳이 있고 또 설치형으로 제공해주는 계산기도 있습니다만 저는 항상 즐겨찾기에 이 URL을 넣어두고 다닙니다. 사실 사람이 계산하는 것보다 기계가 더 빠르니까요. 참고 하시기 바랍니다.

https://www.ipaddressguide.com/cidr

 

Free IP address tools for IPv4 and IPv6 | IPAddressGuide

Free IP address tools for ping, traceroute, reverse DNS lookup, CIDR conversion, Netmask conversion, decimal conversion and IP lookup for IPv4 and IPv6

www.ipaddressguide.com

 

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

728x90

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

[네트워크] CIDR이란?(사이더 란?)  (0) 2022.03.08
반응형

오늘은 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