포스트

[Network] CIDR이란?

Computer Science / Network

AWS의 VPC를 이해하기 위한 네트워크의 기초, CIDR에 대한 개념 정리

⚠️ 들어가기에 앞서, 해당 게시글의 IP 관련된 계산을 이해하기 위한 참고 링크

서브넷과 서브네팅에 관련한 정보 및 서브네팅 계산법에 대해서는 #서브넷 & 서브넷 마스크란? (feat. 슈퍼네팅) 게시글을 참고

IP 클래스와 주소 구성에 대한 내용은 #IP 클래스에 대한 개념 정리 및 IP 주소의 구성에 대한 개념 정리 게시글을 참고

위의 내용을 어느정도 숙지하는 것이 도움이 된다.

CIDR(Classless Inter-Domain Routing)의 개념

네트워크 설계를 하면서 가장 많이 접하게 될 개념이 CIDR(사이더)이다.

CIDR의 풀네임은 Classless Inter-Domain Routing으로 클래스 없는 도메인 간의 라우팅 기법이라는 뜻을 내포한다.

즉, 도메인 간의 라우팅에 사용되는 인터넷 주소를 원래 IP 주소 클래스 체계를 쓰는 것보다 더욱 능동적으로 할 수 있도록 지정하는 방식 중 하나이다.

언뜻 보면, 우리가 IP 주소 클래스를 배우면서 같이 배우는 것이 서브넷 마스크 그리고 서브네팅인데, 여기서 서브네팅과의 차이가 무엇인지 애매할 때가 있다.

서브네팅 자체가 IP 클래스에 국한되지 않고 더욱더 IP 주소를 쪼개는 방식을 말하는 것ㄴ데 이게 바로 클래스 없는 도메인 간의 라우팅 기법이기 때문이다.

결론적으로 말하면,

\(Subnetting \subset CIDR\)

이런 집합 관계가 형성된다.

서브네팅 뿐만 아니라 서브넷을 합치는 슈퍼네팅 역시 CIDR의 일환이다.

정리하자면, 서브네팅, 슈퍼네팅처럼 IP를 나누고 합치는 기법을 모두 CIDR이라고 이해하면 된다.

서브넷, 서브네팅 및 슈퍼네팅에 대한 내용은 #서브넷 & 서브넷 마스크란? (feat. 슈퍼네팅) 게시글을 참고

CIDR 표기법이란?

image_1

CIDR을 정의하는 설명 중에, “CIDR은 네트워크 정보를 여러 개로 나눠진 Sub-Network들을 모두 나타낼 수 있는 하나의 Network로 통합해서 보여주는 방법이다.“라고 말한다.

위의 정의가 뜻하는 것은 IP와 서브넷 마스크를 다음과 같이 표기한 것이다.

image_2_light image_2_dark

서브네팅에서는 서브넷 마스크를 짧게 적은 Prefix라고 말하지만, 이것이 바로 CIDR이지 CIDR 표기법이다.

그리고 위와 같이 표기하는 이유는 단 한 줄만으로 네트워크 범위를 추측 또는 측정할 수 있기 때문이다.

예를 들면,

현재 회사는 50개의 IP를 쓰는데, 자신의 IP 주소가 192.168.10.70이다.

IP를 다른 번호로 할당받고 싶은데 IP 범위가 어디붜 어디까지 인지 몰라서 어떤 주소 번호로 할당을 요청해야 할지 모르겠다.

현재 회사 IP 할당 범위를 알고 싶다.

위와 같은 요청 사항이 있다면 서브네팅 계산법을 통해 IP 할당 범위를 알 수 있다.

서브네팅 계산법을 통한 답변

192.168.10.70의 대역폭을 봤을 떄, 해당 IP는 C Class(192.0.0.0 ~ 223.255.255.0)에 속한다.

IP 클래스에 대한 자세한 설명은 #IP 클래스에 대한 개념 정리 및 IP 주소의 구성에 대한 개념 정리 게시글을 참고

C Class이면 기본적인 디폴트 서브넷 마스크는 255.255.255.0일 것이다.

디폴트 서브넷 마스크(Default Subnet Mask)란?

IP 주소 클래스 범위에서 서브넷을 나누지 않고 사용하는 경우에 적용되는 서브넷 마스크가 디폴트 서브넷 마스크라고 이해하면 된다.

  • A Class 디폴트 서브넷 마스크
    255.0.0.0
  • B Class 디폴트 서브넷 마스크
    255.255.0.0
  • C Class 디폴트 서브넷 마스크
    255.255.255.0

그렇다면, 네트워크 ID는 192.168.10일 것이며 호스트 ID 부분은 .70 부분일 것이다.

따라서 기본적인 IP 범위는 192.168.10.0 ~ 192.168.0.255일 것이다.

그런데 회사가 사용하는 IP는 50개라고 한다면, 분명 서브네팅을 통해 IP 범위를 더 한정지어서 받았을 것이다.

IP를 50개를 사용하는 회사에 적절하게 분배가 가능한 범위는 C Class의 256개의 범위를 4등분한 64개의 범위이다.

64개는 $2^6$이고, 이는 호스트 ID가 6개의 비트를 사용한다는 뜻이다.

그래서 64씩 나누어 범위를 표현하자면, 최종적으로 아래와 같은 대역으로 나누어진다.

네트워크IP 범위
네트워크 1192.168.10.0 ~ 192.168.10.63
네트워크 2192.168.10.64 ~ 192.168.10.127
네트워크 3192.168.10.128 ~ 192.168.10.191
네트워크 4192.168.10.192 ~ 192.168.10.255

잊지 말아야 할 것이, 각 네트워크의 첫 번째와 마지막 IP는 사용이 불가능하다. (네트워크 주소와 브로드캐스트 주소)

이제 요청 사항에 대한 답변으로,

IP 192.168.10.70 주소로 유추해보자면, 회사는 네트워크 2(192.168.10.64 ~ 192.168.10.127)에 속해 있다.

라고 말할 수 있다.

CIDR을 통한 답변

위와 같이 서브네팅 계산을 통해서 답변을 준다면 너무 길기도 하고, IP 범위 하나를 알려주기 위해 말하고 쓰는 것이 너무 많다.

간단하게 한 줄로 표기해서 알려주기 위해 존재하는 것이 바로 CIDR이다.

회사 IP 범위는 192.168.10.70/26이고, 계산하면 된다.

위와 같이 답변할 수 있게 된다는 뜻이다.

192.168.10.70/20 풀이법

해당 IP 표기법에서는 서브넷 마스크의 1의 개수가 26개인 것을 알 수 있다.

네 번째 옥텟1의 최상위 2개의 비트가 1이고, 나머지 6비트를 호스트 ID로 할당하게 된다.

즉, 호스트 ID 부분이 .1100 0000가 되며 10진법으로 192가 된다.

  • IP
    192.168.10.70
  • 서브넷 마스크
    255.255.255.192

$256 - 192 = 64 - 2(특수목적 \ IP) = 62$이므로 62개의 호스트를 가질 수 있게 된다.

$256 \div 64 = 4$이므로 4개의 서브넷 네트워크를 가진다는 것도 알 수 있다.

그래서 사용할 수 있는 IP의 대역에 대한 정보는 다음과 같이 된다.

네트워크IP 범위
네트워크 1192.168.10.0 ~ 192.168.10.63
네트워크 2192.168.10.64 ~ 192.168.10.127
네트워크 3192.168.10.128 ~ 192.168.10.191
네트워크 4192.168.10.192 ~ 192.168.10.255

단, 각 네트워크의 첫 번째와 마지막 IP는 사용이 불가능하다.

정리하자면, 192.168.10.70/26은 이렇게 분리된 4개의 네트워크와 각 62개의 호스트를 가진 네트워크를 사용한다는 것을 의미하며, 자신이 두 번째 네트워크에 속해있다는 것을 알 수 있다.

CIDR 블럭이란?

어려울 것이 없는게, CIDR 블럭은 서브넷이다.

그냥 AWS 진영에서는 서브넷을 멋스럽게 CIDR 블럭이라고 부른다고 이해하면 된다.

예를 들어, 다음과 같은 192.168.0.0/16 대역망이 있다.

이를 세 개의 네트워크 단위(서브넷)으로 쪼갠 것이다.

image_3 위의 이미지에서의 서브넷1, 2, 3이 바로 CIDR 블럭이다.

CIDR의 또 다른 장점

위에서 언급했듯이, CIDR 표기법을 통해 한 줄로 표기할 수 있다는 장점과 더불어, 또 다른 CIDR의 장점은 바로 /24의 숫자를 필요에 따라 더 쓰거나 적게 사용하여 IP를 적절하게 할당할 수 있다는 것이다.

이것이 바로 서브네팅(더 적게 쓰기)과 슈퍼네팅(더 많이 쓰기)의 개념이다.

즉, 서브넷 마스크를 호스트 ID 방향(오른쪽 👉)으로 움직이면(값 증가 - /25) 서브네팅이고, 네트워크 방향(👈 왼쪽)으로 움직이면(값 감소 - /23) 슈퍼네팅이다.

서브네팅을 추가적으로 더 해야하는 상황일 경우, /24를 증가시켜 /25로 표기해 제공해주면 되고,

반대로 슈퍼네팅을 해야한다면, /24를 감소시켜 /23으로 표기해 제공해주면 끝난다.

이러한 표기법은 사람이나 기계에게 모두 이점으로 작용된다.

서브넷 마스크 표
Bitmask
(서브넷 마스크로 사용된 1의 개수)
Netmask
(255.255.255.X)
네트워크 개수
(서브넷 개수)
호스트 수
/251282개128개
/261924개64개
/272248개32개
/2824016개16개
/2924832개8개
/3025264개4개
/31254128개2개
/32255256개1개

AWS CIDR

AWS VPC를 학습할 때 가장 중요하고 먼저 등장하는 개념이 바로 이 CIDR(Classless Inter-Domain Routing)이다.

AWS가 클라우드라고 해서 다를 것이 없이 그대로 접목시키면 된다.

image_4 AWS VPC에 대한 설명은 AWS EC2 설명 게시글인 #EC2 시작하기 (VPC, Subnet 설정 등…) 게시글을 참고

VPC를 구성할 때 다음 CIDR 값이 있다면, VPC는 16을 서브넷 값으로 하는 IP 주소 범위를 나타내는 것이다.

그리고 각 자원에 줄 수 있는 IP 개수는 $2^16 = 65,536$개인 것을 간단한 CIDR 표기법으로 알려줄 수 있게 된다.

그리고 이 IP 주소는 10.0.*.*이라는 네트워크 주소 안에 포함되어 있다는 것도 한 눈에 알 수 있다.

일반적인 CIDR와 AWS CIDR의 차이점

다만, AWS는 일반적인 서브네팅과는 다른 차이점이 존재한다.

보통이라면 IP 주소 범위의 가장 처음(네트워크 주소, 10.0.0.0)과 끝(브로드캐스트 주소, 10.0.0.255), 2개만 제외하고 나머지는 사용할 수 있는 IP 주소겠지만, AWS에서는 따로 자체 클라우드에서 설정해 사용하고 있는 IP가 있기 때문에 총 5개를 제외해야 한다.

IP 주소사용 용도 
10.0.0.0네트워크 주소 (Network ID) 
10.0.0.1AWS에서 VPC 라우터용으로 예약 (Default Gateway) 
10.0.0.2DNS 서버 주소
DNS 서버의 IP 주소는 기본 VPC 네트워크 범위에 2를 더한 주소이다.
CIDR 블록이 여러 개인 VPC의 경우, DNS 서버의 IP 주소가 기본 CIDR에 위치하게 된다.
 
10.0.0.3AWS에서 앞으로 사용하려고 예약한 주소 
10.0.0.255네트워크 브로드캐스트 주소 

AWS에 192.168.0.0/24에서 총 사용 가능한 호스트 개수는?

1이 24개 있으니 호스트 ID는 8비트, $2^8 = 256$개이며, 그 중에서 처음과 끝을 뺀 254개

위와 같은 답변은 틀린 답변이다.

AWS에서 별도로 사용 중인 IP 주소까지 뺀 값인 $256 - 5 = 251$가 답이다.

같이 보면 좋은 것

CIDR 계산기

  • CIDR.xyz
    CIDR 주소 값을 일일히 손으로 계산하면서 시간을 버리기 보다는 자동으로 계산, 주소 범위를 알려주는 사이트를 이용하는 것도 방법

참고 사이트

Inpa Dev - CIDR (Classless Inter-Domain Routing)

kim.dragon - [네트워크] CIDR이란?(사이더 란?)


  1. 컴퓨팅과 전기 통신에서 8개의 비트가 한데 모인 것을 말하며, “정확하게 8비트”임을 명시해야 하는 경우에 사용하는 용어이다. (Byte와 같은 용어로 취급) ↩︎

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.