CIDR 이란?

CIDR(Classless Inter-Domain Routing)으로 말 그대로 클래스 없는 도메인 간 라우팅 기법이다.

클래스가 있는 도메인 라우팅은 CIDR 이전 기법이다.
CIDR을 이해하려면 CIDR 이전에 ip routing을 어떻게 해왔는지를 같이 공부하면 좋다.

IP address와 network & host

IP address는 32-bit number로 이루어져 있다.

  • 10 진수 기준 0.0.0.0 부터 255.255.255.255 까지

TCP/IP WAN에서 효율적인 네트워크 관리를 위해 router는 host의 exact location을 알지 못한다.
router는 host의 network 만을 아는데, 이 network 까지 data packet을 보내면 network가 host의 exact location까지 전달된다.

그래서 IP의 앞 부분 일부를 network field로 나머지 뒷 부분을 host field로 나누어서 사용한다.


이제부턴 IP address의 사용 역사라고 볼 수 있다.

1. Class 도입 이전

class가 도입되기 이전에는 위에서 언급하는 network field로 8-bit를 사용했다.
이 말은, 256(\(2^8\))개의 network field만이 존재한다는 뜻이고, 각 network은 \(2^{24}\)개의 host를 가질 수 있다는 의미이다.

이 형식은 LAN도 보급되기 이전의 초기 인터넷인 ARPANET(미국국방부에서 만든) 에서 사용되던 방식이었다.

문제점: 250 여개의 network field만 사용할 수 있는 방식은 금방 network 주소가 고갈되었고 새로운 방식이 필요하게 되었다.

2. Classful network

그게 바로 Classful network인데, class로 나누어 network field를 관리하는 방식이다.

A~E의 5가지 class가 존재한다.
이 중 D, E의 경우 존재하지만 예약 & 연구 목적으로 실제 end user가 사용하는 값은 아니다.

Class Leading bits size of network field size of host field start address end address subnet mask
A 0 8 24 0.0.0.0 127.255.255.255 255.0.0.0
B 10 16 16 128.0.0.0 191.255.255.255 255.255.0.0
C 110 24 8 192.0.0.0 223.255.255.255 255.255.255.0

위 표가 Classful network의 내용이다.

Class A의 경우 network field로 8-bit를 사용한다.
이 중 첫 bit는 0으로 시작해서 address는 0.0.0.0부터 127.255.255.255까지가 가능하다.
그렇다면 Class A에서 \(2^7\)개의 network가 사용될 수 있고 각 network는 \(2^{24}\)개의 host를 가질 수 있다는 의미이다.

  • start address와 end address를 잘보면 class 마다 사용하는 address가 다른 걸 확인할 수 있는데 이 주소만 가지고 class를 판별할 수 있다는 의미이다.
  • 0.0.0.0 이나 127.0.0.0 등과 같은 특수한 주소들은 예약되어 사용할 수 없다.

유사하게 B, C로 갈수록 더 많은 network를 가질 수 있으면서 각 network가 가질 수 있는 host의 개수는 줄어든다.

subnet mask

subnet mask는 host가 local subnet에 있는지, remote network에 있는지 확인하기 위해 TCP/IP에서 사용된다.
subnet mask를 통해 network field와 host field를 구분할 수 있다.

  • network IP의 부분은 1로, host IP의 부분은 0으로 표기한다.

subnet mask는 위 표에서 설명되어 있어서 예를 들면 쉽게 이해할 수 있을 것 같다.

예시

192.168.123.132 라는 IP가 있다.

network IP가 192.168.123.0 이고, host IP가 0.0.0.132 라면, subnet은 255.255.255.0 이 된다.
network IP가 192.168.0.0 이고, host IP가 0.0.123.132 라면, subnet은 255.255.0.0 이 된다.

문제점:
Class C의 경우 약 250(\(2^8\))개의 host를 가질 수 있는데 대부분의 경우 Class C는 너무 작았다.
Class B의 경우 host는 비교적 넉넉하나, network 개수가 약 16000(\(2^{14}\))개로 인터넷이 발전하며 network가 부족해지는 문제가 발생했다.

3. CIDR

클래스 없는 도메인 간 라우팅 기법으로 위 문제를 해결하기 위해 1993년 도입되기 시작한 최신의 IP 주소 할당 방법이다.
CIDR는 IP의 field를 Classful에 비해 더 유연하게 나눌 수 있게 한다.

CIDR block

CIDR은 A.B.C.D/E 와 같은 방식으로 표기한다.

  • A.B.C.D는 IP 주소이다.
  • /E는 0~32까지의 숫자이다.
  • IP의 첫 bit부터 E bit 만큼 일치하면 CIDR block의 일부라고 한다.

예시

10.10.1.32/27 라고 표기한다면 27-bit까지 일치하는 IP를 포함하는 것이다.

cidr1

예시

208.130.29.33 라는 웹 서버를 호출하는 경우,

  1. 208.128.0.0/11를 갖는 MCI에 routing 되고,
  2. 208.130.28.0/22를 갖는 sub-network에서 routing 되고,
  3. 208.130.29.0/24에서 routing 되어
  4. 208.130.29.33/32인 www.freesoft.org로 routing 된다.

cidr2

장점:

  • 부족한 IPv4 주소를 효율적으로 사용할 수 있게 한다
  • routing table의 크기가 커지는 문제를 해결해서 router의 부담을 줄인다

reference

https://ko.wikipedia.org/wiki/사이더_(네트워킹)
https://namu.wiki/w/CIDR https://ko.wikipedia.org/wiki/네트워크_클래스
https://docs.microsoft.com/en-us/troubleshoot/windows-client/networking/tcpip-addressing-and-subnetting