IP 주소
일반적으로 네트워크 계층 식별자인 IP 주소는 컴퓨터나 라우터에 고유한 주소로 할당되어 네트워크 통신시 상대를 특정 호스트로 지정할 수 있다. 전세계의 모든 호스트의 IP 주소는 유일해야 하기 때문에 IP 주소는 유한한 리소스이다.
현재 일반적으로는 IPv4를 사용하고 있다. 추후에 더 많은 IP 주소를 할당할 수 있게 되는 IPv6로 대체될 것이라고 예상되지만 아직은 일반적으로 IP 주소라고 하면 IPv4를 의미한다.
IPv4를 기준으로 IP주소는 32bit로 구성된다. 때문에 0과 1를 이용해 아주 길게 표현할 수 있는데, 이는 너무 길고 복잡하기 때문에 1byte가 되는 8bit씩 4개의 옥텟으로 나누어 각 그룹을 십진수로 표현하고, 각 그룹을 `.`으로 구분하는 형식으로 표기한다.
서브넷팅(Subnetting)
앞서 말했듯이, IP 주소는 전세계에서 사용되는 유한한 리소스이다. 따라서 네트워크를 할당해줄 때 필요한 만큼에 가깝게 할당해주어야 쓸모 없이 낭비되는 리소스를 줄일 수 있다. 그러한 개념에서 서브넷팅이란 네트워크를 더 작은 네트워크(= 서브넷)으로 나누는 과정을 뜻한다.
구성 : 네트워크 부와 호스트 부
IP 주소는 크게 네트워크 부(=Network ID, Network Part)와 호스트 부(=Host Part, Host ID)로 나뉜다. 해당 호스트가 속한 네트워크 주소와 해당 네트워크 내에서도 호스트를 구분하는 고유한 호스트 아이디를 가지는 셈이다. 같은 네트워크 내에 속한 호스트들은 모두 네트워크 부는 동일하고, 호스트 부만 구분된다.
여기서 네트워크 부는 IP 주소를 할당해주는 기관에서 할당해주게 되고, 호스트 부는 네트워크 관리자가 호스트마다 할당할 수 있게 된다. 그렇다면 어디까지가 네트워크 부이고, 어디까지가 호스트 부인지 어떻게 알까?
앞서 말했듯이, IP 주소는 유한한 자원이다. 때문에, 해당 네트워크가 얼마나 많은 호스트에 주소를 할당할 것인지를 예측해서 적당한 크기의 네트워크부를 할당하게 되는데, 가장 먼저 등장했던 것이 클래스 개념이다.
클래스
클래스는 A, B, C, D, E 총 5개가 있다. 이 중 D와 E는 특수 용도로 사용되는 클래스이다. (D는 멀티 캐스트, E는 실험적인 목적으로 예약) 따라서, 아래에서는 A, B, C에 대해서만 언급할 것이다.
A 클래스
A 클래스는 첫 옥텟만 네트워크 영역을 나타내고 나머지는 모두 호스트 영역을 나타낸다. 한 옥텟에서 나올 수 있는 경우의 수는 \(2^{8}\) 이므로, 약 1677만개 이상의 호스트를 가질 수 있다.
A 클래스는 네트워크 부의 첫 번째 비트(bit)가 `0`으로 시작한다. 그러므로 0 ~ 127으로 시작하는 IP 주소를 가진다고 생각하기 쉽지만, 127은 호스트 자기 자신에 대한 루프백 주소로 사용되기 때문에 0 ~ 126까지의 수로 시작한다.
B 클래스
B 클래스는 2개의 옥텟이 네트워크 영역을 나타내기 때문에 약 6만 6천개 이상의 호스트를 가질 수 있다.
B 클래스는 네트워크 부의 맨 앞이 `10`으로 시작한다. (`1000 0000` ~ `1011 1111`) 따라서 128 ~ 191으로 시작하는 IP 주소를 가진다.
C클래스
마지막으로 C 클래스는 250여개의 호스트를 가질 수 있다. C 클래스는 A, B 와 비교해서 가장 작은 규모의 네트워크 규모를 가진다.
C 클래스는 맨 앞이 `110`으로 시작(`1100 0000` ~ `1101 1111`)하기 때문에, 192 ~ 223으로 시작하는 IP 주소를 가진다.
위와 같이 클래스별로 구분하는 방식은 클래스 별 호스트 개수의 차이가 많이 나 실용성이 떨어진다는 단점이 있다. 그러던 중 기존의 IP 주소 할당 방식인 클래스를 대체하는 새로운 방법으로 등장한 것이 CIDR였다.
CIDR(Classless Inter-Domain Routing)
CIDR 즉, 클래스 없는 도메인 간 라우팅 기법은 네트워크 부와 호스트 부를 나누는 구분점을 2진수 한 자리, 즉 1bit 단위까지 가능하게 함으로써 더 유연하게 네트워크를 쪼갤 수 있게 되었다. 그렇다면 그냥 IP 주소만 보고 어디까지가 네트워크 주소고 어디까지가 호스트 부인지 어떻게 알 수 있을까? 답은 서브넷 마스크를 이용해 알 수 있다는 것이다.
서브넷 마스크
서브넷 마스크는 네트워크 부와 호스트 부를 구분해주는 역할을 한다. 이는 클래스 기반 할당 방식 때에도 있던 방식이다. 서브넷 마스크의 표기 방식은 IPv4와 같이 32bit로 표현하는데, 네트워크 부는 모두 1로 표현하고 호스트 부는 모두 0으로 표현한다. 1과 0은 절대 번갈아가면서 나올 수 없다. 네트워크 부가 모두 끝나야만 호스트 부가 나오기 때문이다.
예를 들어, 앞에서 24개의 bit가 네트워크 부일 경우 `1111 1111` `1111 1111` `1111 1111` `0000 0000`과 같이 표현하는 것이다. 일반적으로는 16, 24, 32개의 bit를 네트워크 부로 사용하나 언제든지 다르게 사용할 수 있다.
이 서브넷 마스크를 이용해 패킷의 목적지 IP 주소를 보고, 서브넷 마스크와 AND 비트 연산을 통해 네트워크부(서브넷 마스크의 1부분)를 확인한 후 네트워크 대역을 확인하여 목적지를 찾아가도록 할 수 있다.
CIDR 표기법
서브넷 마스크를 보다 간편하게 표기하는 방법이다. IP 주소 뒤에 `/`를 붙여 몇개의 비트(bit)가 고정된 비트(=네트워크 부)인지 알려준다. 예를 들어, 192.168.0.4/24 라는 주소는 앞에서 24비트까지가 네트워크 주소를 알리는 것으로, `192.168.0`이 네트워크 대역이고, 마지막 옥텟인 `4`가 호스트 주소임을 알 수 있게 해준다.
CIDR 표기법을 이용하면 서브넷 마스크와 IP주소를 AND 비트 연산하지 않아도 되게 된다. 단순히 관계 연산(==)을 이용해서 구분할 수 있게 된다.
변화된 서브넷팅의 개념
이전의 서브넷팅이 단순히 네트워크를 더 작은 서브넷으로 구분하는 것이었다면, CIDR 방식으로 1bit 단위로 네트워크를 쪼갤 수 있게 되면서 주로 C class 규모의 네트워크를 더 작은 네트워크로 구분할 때 서브넷팅이라는 용어를 쓴다.
'개념' 카테고리의 다른 글
Network) TTL, 단편화, DHCP, ARP, RTT (0) | 2024.03.19 |
---|---|
Network) 특수한 IP 주소(Broadcast IP 주소, Loopback IP 주소) (0) | 2024.03.17 |
틈새 Network 공부(네트워크 계층, L2 - L4) (0) | 2024.03.16 |
운영체제) 인터럽트(Interrupt)와 관련 주요 개념, DMA (0) | 2022.09.01 |
쿠키, 토큰, 세션 (0) | 2021.10.10 |