네트워크 클래스와 CIDR

Soonwoo Kwon·2022년 5월 11일
0

바퀴달린 개발자

목록 보기
2/4

IPv4

IPv4는 우리가 흔히 아는 IP 주소의 형이다. 61.211.123.22 형태로 표현한다.
8비트로 구성된 4개의 블럭으로 구성되어 32비트로 주소를 표현하는 체계이다. IPv4로는 총 232=4,294,967,2962^{32}=4,294,967,296개의 주소를 나타낼 수 있다.

오늘날 이정도 크기의 IP 개수는 매우 부족하다. 따라서 IP 부족을 해결하기 위한 다양한 변화가 시도되었고, 오늘 이야기할 네트워크 클래스와 CIDR이 이 변화 중 하나이다.

IPv6

IPv4의 IP 주소 고갈을 해결하기 위해 IPv6가 대안으로 제안되고 있다. 2001:0DB8:0000:0000:0000:0000:1428:57ab 형태로 표현한다.
16비트로 구성된 8개의 블럭으로 구성되어 128비트로 주소를 표현하는 체계이다.
IPv6로는 총 2128=340,282,366,920,938,463,463,374,607,431,768,211,4562^{128}=340,282,366,920,938,463,463,374,607,431,768,211,456개의 천문학적인 수의 주소를 나태낼 수 있다.
현재는 활발하게 사용되고 있지 않지만 휴대폰 및 컴퓨터에 할당되어 적용되고 있다.

네트워크 클래스와 CIDR에 대해서는 IPv6가 아닌 IPv4를 기준으로 이야기해 보려고 한다.

클래스 도입 이전

클래스 도입 이전에는 32비트의 주소 중 8비트는 네트워크 주소로, 나머지 24비트는 호스트 주소로 사용되었다.

61.211.123.22

위와 같이 표현된 주소를 예를 들자면 앞의 8비트 영역인 61은 네트워크 주소를 의미하고 뒤의 영역인 211.123.22는 호스트 주소를 의미한다.

먼저 네트워크 주소와 호스트 주소의 개념을 알아보고 가자.

네트워크 주소

네트워크 주소는 하나의 네트워크의 주소를 의미하는 것이다.
위 IP 주소를 예들 들자면 61.xxx.xxx.xxx로 표현되는 모든 IP 주소는 하나의 네트워크에 속하는 것이다.
하나의 네트워크에 속하는 호스트간의 통신은 라우터를 거치지 않고 내부적으로 통신이 가능하다. 또한 브로드캐스트가 적용되는 영역이다.
브로드캐스트란 같은 네트워크 영역의 모든 호스트들로 이어지는 주소이다.

호스트 주소

호스트 주소는 네트워크 영역 내에서 각 호스트를 구별하기 위한 주소이다.
61.211.123.22와 61.101.111.123 은 같은 네트워크 영역 내에 존재하는 다른 호스트들의 주소이다.

하나의 네트워크 영역에서 가장 작은 주소는 네트워크 주소값에 할당되고, 가장 큰 주소는 브로드캐스트 주소값에 할당된다.
위의 예시에서
61.0.0.0은 네트워크 주솟값이 될 것이고
61.255.255.255는 브로드캐스트 주솟값이 될 것이다.
따라서 이 네트워크 영역에서의 가용 IP의 개수는 22422^{24}-2개 이다.

네트워크 클래스

네트워크 클래스의 도입 이후, 네트워크 영역과 호스트 영역을 표현하기 위한 비트 수를 클래스에 따라 정의하게 되었다.

A클래스는 8비트의 네트워크 영역 24비트의 호스트 영역

B클래스는 16비트의 네트워크 영역 16비트의 호스트 영역

C클래스는 24비트의 네트워크 영역 8비트의 호스트 영역

각 클래스의 시작주소와 끝주소가 정해져 있기 때문에, 클래스 마다의 범위를 잘 알고 있다면 해당 IP가 어떤 클래스에 속하는지 알 수 있다.

예를 들자면 161.211.123.22는 128.0.0.0 에서 191.255.255.255에 속하기 때문에 클래스 B에 속한다는 것을 알 수 있다.
따라서 161.211.0.0은 해당 네트워크 클래스의 주소를 나타내는 값이고,
161.211.0.1 부터 161.211.255.254 까지 총 2(16)22^(16)-2개의 호스트 주소를 나타낼 수 있다.(네트워크 주소, 브로드캐스트 주소를 고려하여)

이렇게 네트워크 클래스를 도입하여 기존 네트워크 표시 방법보다 더 큰 네트워크 영역을 표현할 수 있었다. 하지만 IP 주소의 부족은 계속되었다.
또한 네트워크 클래스 방식의 문제점이 있었는데 대부분 사이트들은 클래스 C에 들어가기에는 너무 커 클래스 B를 할당받았다.
위의 표에서 볼 수 있듯이 클래스 B의 네트워크 수는 16,384개 밖에 되지 않는다.
네트워크 클래스 방식은 결국 1993년 부터 CIDR에게 대체된다.

CIDR(Classless Inter-Domain Routing)

CIDR은 클래스가 없는 도메인간 라우팅이다. 기존 네트워크 클래스 방식을 대체로 등장한 IP 주소 할당 방식이다.
동일한 초기 비트를 갖는 IP 주소를 CIDR 블록이라 불리는 그룹에 포함하여 라우팅 테이블에 넣어 라우팅을 실행한다.
이전 네트워크 클래스에서 클래싀 B의 경우 같은 네트워크에 속한 호스트들의 초기 8비트가 일치하였다.
CIDR의 경우 이 일치하는 초기 비트들을 더 유동적으로 표현할 수 있다.

CIDR의 표현 방식은 다음과 같다.
10.10.1.32/27
'/'뒤의 숫자는 접두어의 길이로 해당 CIDR 블록에서 일치해야하는 비트의 수를 가르킨다.
위 IP 주소를 모두 이진법으로 표현해 보자면 다음이 된다.
00001010.00001010.00000001.00100000
이 주소와 처음 27비트가 일치해야 하므로
00001010.00001010.00000001.001xxxxx
형태의 IP 주소를 가져야만 동일한 사이더 블록에 속하는 것이다.

이렇게 유동적으로 네트워크 영역과 호스트 영역에 할당되는 비트를 조절하면 네트워크를 할당한다면 IP 주소를 최대한 효율적으로 사용할 수 있다.
해당 사이트 또는 네트워크 영역에 필요한 만큼의 호스트 주소 개수와 최대한 근사한 개수를 할당해 줄 수 있기 때문이다.

서브넷 마스크

서브넷은 네트워크가 작은 조각으로 쪼개져 있는 경우를 말한다. 이 서브넷을 구하기 위해서 서브넷 마스크가 이용된다.
서브넷 마스크는 32비트로 이루어져 있으며 일련의 숫자 1이 0들의 블록을 따른다. 연속적으로 일정 개수의 1 비트가 이어진 뒤, 이후는 0비트인 것이다.

IP 주소 192.168.5.130/26 를 예시로 들어보자.

11000000.10101000.00000101.10000010 의 IP 주소에
11111111.11111111.11111111.11000000 의 서브넷 마스크를 적용해보자.

두 IP를 서로 AND 연산한 결과 값이 네트워크 영역을 나타내는 IP 주소이다.
11000000.10101000.00000101.10000000 => 네트워크 주소
00000000.00000000.00000000.00000010 => 호스트 영역

접두어 합침

CIDR 블록은 하나의 라우팅 단위로써 라우팅 테이블에 저장된다. 너무 많은 수의 CIDR 블록이 라우팅 테이블에 저장되게 되면 라우터에 부하가 생길 수 있다. 따라서 CIDR는 접두어 합침(routing prefix aggregation) 기능을 제공한다.
네개의 연속된 /24 네트워크는 하나의 /20 네트워크로 묶여 외부에서 보았을 때 하나의 /20 네트워크로 보일 수 있다. 즉, 이 네트워크들이 하나의 라우팅 테이블의 행만을 차지하게 되는 것이다.
(이러한 방식으로 연속된 네트워크를 묶어 라우팅 테이블이 과도하게 커지는 것을 방지하고, 내부에서 다시 각 네트워크로의 라우팅을 진행해 줄 것 같다.)

사진 출처
https://ko.wikipedia.org/wiki/네트워크_클래스#유용한_표

0개의 댓글