네트워크 계층을 대표하는 여러 프로토콜이 존재한다. RIP, BGP, ICMP 등등 그러나 그중 가장 대표적인 프로토콜은 IP라고 생각한다.
IP는 Internet Protocol의 약자로 인터넷에서 사용되는 규칙이다. 인터넷을 사용하는 모든 컴퓨터는 자신의 주소를 가지고 있는데 이 주소를 바로 IP 주소라고 한다. 따라서 인터넷에서 보내지는 모든 메시지는 IP를 기반으로 목적지, 수신자[Receiver]를 찾아간다.
가장 보편적으로 사용되고 있는 IP 버전은 4(IPv4)다. IPv4는 32개의 Bit로 구성되어 있다. 따라서 인터넷에 있는 모든 기기에 부여할 수 있는 주소의 수는 2^(32)다. 현재는 IoT 세계가 도래하면서 이정도의 수도 부족하다고 판단하여 IPv6가 나왔다. IPv6는 다음 포스팅에서 다룬다.
이번 포스팅에서는 IPv4에 사용되고 있는 두 가지 주소체계 방식을 다룬다. 클래스 방식과 CIDR 방식이다.
1. 클래스[Class] 방식
해당 방식은 전통적인 IP 주소 표현 방식으로 IP의 시작 주소에 따라서 클래스 A, B, C, D, E 로 나누어진다. 각 클래스 별로 네트워크 부분과 호스팅 부분으로 IP 주소를 분리할 수 있다. 다음 표를 참고하자.
클래스 이름 | 네트워크 부분 표기(이진수 표기) | 네트워크 부분 표기(십진수 표기) |
A | 00000000 | 0 |
B | 10000000.00000000 | 128.0 |
C | 11000000.00000000.00000000 | 192.0.0 |
D | 11100000 | |
E | 11110000 |
위 표를 보면, 네트워크의 각 클래스마다 네트워크 부분의 시작점이 다르다. A는 0, B는 10, C는 110으로 시작한다. 이를 십진수로 표기하면 각각 0, 128, 192가 된다.
따라서 A은 0~127 (B 이전까지)의 범위를 갖는다.
B 클래스에는 32비트 중 16비트(2 옥텟)를 네트워크로 사용한다. 따라서 이진수로 표현하면 10000000.00000000 부터 시작하고 10111111.11111111 까지 표현할 수 있다. 이를 10진수로 표현하면 128.0 ~ 191.255 다.
해당 방식을 적용하여 아래 표와 같이 정리할 수 있다.
클래스 이름 | 네트워크 가능 범위 |
A | 0 ~ 127 |
B | 128.0 ~ 191.255 |
C | 192.0.0 ~ 223.255.255 |
호스트가 될 수 있는 범위도 위와 같이 계산된다. 따라서 각 클래스마다 가질 수 있는 네트워크, 호스트 범위를 정리를 하면 아래와 같다.
클래스 | 네트워크 가능 범위 | 호스트 가능 범위 |
A | 0 ~ 127 | 0.0.0 ~ 255.255.255 |
B | 128.0 ~ 191.255 | 0.0 ~ 255.255 |
C | 192.0.0 ~ 223.255.255 | 0 ~ 255 |
(주의. 표기를 위해 호스트 가능 범위에 0, 255를 허용했다. 그러나 0과 255는 각각 네트워크 주소, 브로드캐스트 영역으로 사용된다. 아래에서 자세히 설명한다.)
네트워크와 호스트의 범위를 직접 하나하나 외우는 것보단, 각 클래스마다 첫 옥텟의 첫 비트가 어떻게 정해지는지를 이해하면 외울 필요도 없고 헷갈릴 필요도 없어서 이렇게 공부를 해놓는게 좋을 것 같다.
그럼 각 클래스마다 가질 수 있는 네트워크 개수와 호스트 개수는 몇개일까?
클래스 | 네트워크 개수 | 네트워크 가능 범위 |
A | 2의 7승 | 00000000 (7 bit) |
B | 2의 14승 | 10000000 00000000 (14 bit) |
C | 2의 21승 | 11000000 00000000 00000000 (21 bit) |
클래스 | 네트워크 주소 개수 | 호스트 주소 개수 |
A | 2의 7승 | (2의 24승) -2 개 |
B | 2의 14승 | (2의 16승) -2 개 |
C | 2의 21승 | (2의 8승) -2 개 |
호스트 주소가 전부 0으로 채워진 주소는 네트워크 주소(게이트웨이)로 사용한다. 전부 1로 채워진 주소는 브로드캐스트 영역으로 사용된다.
예를 들어, 10.255.12.15 이란 A클래스의 IP가 있다. 이때 10.0.0.0 은 네트워크를 표현하는 주소로, 10.255.255.255는 브로드캐스트할 때 사용하는 주소다. 즉, 하나의 기기가 차지할 수 있는 주소가 아니라는 말이다.
이는 모든 클래스의 모든 주소에 해당된다. 따라서 호스트 주소 개수엔 2개씩을 빼줘야 한다.
요약하자면
- A, B, C 클래스는 32비트 (=4개의 옥텟)에서 각각 1,2,3 개의 옥텟을 네트워크 영역으로 갖는다. (나머지가 호스트 영역)
- A, B, C 클래스에서 첫 옥텟의 시작 비트는 각각 0, 10, 110이다. 이에 따라 네트워크 시작 범위가 0, 128, 192로 각각 정해진다.
- A, B, C 클래스에서 네트워크 주소로 가질 수 있는 범위는 네트워크 영역의 비트수에서 시작 고정 비트(0, 10, 110)을 빼면 된다.
- 호스트 영역에서 모든 비트가 0이거나 1인 비트인 주소는 호스트로 사용되지 않는다.
그럼, 이렇게 IP 주소를 옥텟(8비트)으로 쪼개서 네트워크와 호스트 영역의 개수를 지정하는 방식의 문제는 무엇일까?
클래스 A 영역의 네트워크를 사용하는 한 회사가 있다고 가정해보자. 이 회사가 가질 수 있는 최대 호스트 개수는 약 2의 21승이다.
이 회사는 여러가지 사업부로 구성되어 있는데, 사업부 외부로는 데이터를 주고받을 일이 거의없고 하나의 사업부 내에서만 통신한다 가정하자.
이때, 하나의 PC가
네트워크엔 브로드캐스트란 기능이 있다. 같은 네트워크 내에 있는 모든 호스트에게 말을 거는 개념이다.
예를 들어, 하나의 회사를 생각해보자. 이 회사에선 총 500대의 PC를 사용하기 때문에 500개의 IP 주소가 필요하다. 이런 경우 클래스 C에 있는 IP는 할당받을 수 없다. 왜냠 C 클래스에서 가질 수 있는 최대 호스트의 개수는 254개다. 따라서 이 회사가 필요로하는 개수를 충족하지 못한다.
그래서 이 회사에 쿨래스 B 영역의 IP 주소를 할당했다고 해보자. 그러면 이 회사가 사용할 수 있는 최대 호스트 개수는 65,534개 (약 2의 16승)다. 근데 이 회사에서 요구한 호스트의 개수는 500인데.. 나머지 65,000개의 주소가 낭비되는 것이다.
+ 수퍼네팅, 서브네팅
2. CIDR[Classless Inter-Domain Routing]
CIDR는 '사이더'라고 읽으면 된다. CIDR의 C는 [Classless]를 의미한다. 즉 앞에 나온 클래스 방식과 대조되는 방식이다. 클래스 방식은 네트워크와 호스트 개수가 지정되어 있기 때문에 불편하고 비효율적이라 생각하여 나온 방식이 사이더다. 해당 방식은 '네트워크 부분의 BIT 수를 직접 지정하자'라는 개념으로 굉장히 단순하다.
예를 들어 클래스 방식에서, 110*.*.*.* 으로 시작하는 주소는 무조건 클래스 B이고 네트워크 부분은 앞의 16 bits고 호스트는 뒤 16bits를 의미한다. CIDR는 그냥 네트워크 개수가 몇 비트인지 직접 지정해준다. 예를 들어 192.30.250.00/18 이란 주소 체계를 가지면, 앞에서 부터 18bits가 네트워크 부분이라는 뜻이다. 나머지 14bits는 호스트가 된다.
해당 방식은 클래스를 기반으로 부여하게 될 시 호스트의 개수가 낭비되는 경우가 있어 네트워크 부분을 자유 자재로 지정하게 하여 호스트를 자신의 환경에 맞춰 적절하게 조정할 수 있도록 하는 방식으로, IPv4의 주소 낭비를 보완하기 위해 나왔다. 또한, 라우터에서 빠르게 네트워크 주소를 찾고 처리할 수 있어 속도적으로도 빠르다.
'전공 > 네트워크' 카테고리의 다른 글
네트워크 계층 - IP에 대한 모든 것 #3. IPv4의 단편화[Fragment] (0) | 2020.10.27 |
---|---|
네트워크 계층 - IP에 대한 모든 것 #2. IPv4 & IPv6 (0) | 2020.10.27 |
네트워크 계층 - 포워딩 (0) | 2020.10.27 |
네트워크 계층- 개요 (0) | 2020.10.27 |
데이터 링크 - ARP 동작 과정 (0) | 2020.10.18 |