[네트워크] 서브네팅 이해하기 (1) IPv4와 클래스, 주소의 고갈
잘못된 내용이 있다면 덧글로 알려주시면 감사하겠습니다!
간단한 것 같은데 자꾸만 헷갈려서, 스스로 한 번 정리해볼 필요성을 느꼈다.
이 글에서는 IP 주소 체계에 대한 이해와 함께 서브넷, 서브넷팅이 무엇인지 정리해보려고 한다.
먼저 전체를 이해하기 위한 전제를 먼저 설명한 뒤
클래스의 분배 방식과 이에 대한 한계,
서브넷과 서브넷팅에 대해 설명할 것이다.
전제 1. IP 주소는 한정적 자원
인터넷에 연결되는 모든 컴퓨터는 고유한 번호인 IP 주소를 가진다.
현재 네트워크에서 일반적으로 사용되는 IP 주소 체계는 IPv4이다.
IPv4의 주소는 32bit 길이를 가지고, 이를 8bit씩 4개의 구간(옥텟)으로 나타낸다.
따라서 각 자릿수는 0부터 2^8의 범위로 표현할 수 있다.
그렇다면 사용 할 수 있는 IP 주소는 총 몇 개일까?
256*256*256*256 = 4,294,967,296
대략 40억개다.
전 세계에서 한정된 이 주소를 나눠쓰기에는 턱없이 모자라다.
그래서 이를 잘 관리하고 나눠 사용하는 것이 중요하다.
이런 문제 때문에 생긴 또 다른 주소 체계가 IPv6인데, 이를 사용하는 경우도 있지만 아직은 IPv4가 일반적이다.
전제 2. IP 주소 = 네트워크 주소 + 호스트 주소
IP 주소는 네트워크 주소와 호스트 주소로 이루어진다.
마치 집 주소가 내 집 건물의 기본 도로명 주소 + 동 호수 로 이루어지듯이 말이다.
(ex. 3옥텟 까지는 네트워크 주소, 나머지 1옥텟은 호스트 주소)
하지만 어디까지가 네트워크 주소이고 호스트 주소인지는 고정되어있지 않다.
서브넷 마스크를 알아야, 네트워크 / 호스트 부분을 분리해 식별할 수 있다.
예를 들어,
192.168.123.132 라는 IP 주소가 있을 때, 서브넷 마스크가 255.255.255.0이라고 하자.
이때 네트워크 주소는 192.168.123이고, 호스트 주소는 132이다.
원리는 IP 주소와 서브넷 마스크를 이진수로 바꾸어 연산하는 것이다.
11000000.10101000.01111011.10000100 - IP 주소(192.168.123.132)
11111111.11111111.11111111.00000000 - 서브넷 마스크(255.255.255.0)
--------------AND 연산--------------
11000000.10101000.01111011.00000000 - 네트워크 주소(192.168.123.000)
---------네트워크 주소의 나머지---------
00000000.00000000.00000000.10000100 - 호스트 주소(000.000.000.132)
일반적인 IP 주소에는 반드시 '서브넷 마스크'가 존재한다고 볼 수 있다.
이때 헷갈리지 말아야 할 것은,
'서브넷 마스크'는 IP주소와 유사한 형태로 네트워크 주소의 길이를 표기하여 할당하는 값이지, 어떤 특정 주소를 나타내는 게 아니다.
클래스와 서브넷
클래스, 서브넷은 모두 IP 주소라는 한정적인 자원을 체계적으로 관리하고 분배하기 위한 개념이다.
결론부터 말하면, 클래스를 사용한 IP 주소 분배에 한계가 있어 서브네팅을 도입하게 되었다고 한다.
따라서 현재 IP 주소는 클래스 기반 대신, CIDR를 사용한 서브네팅 방식으로 지정된다.
이에 대해 하나 하나 차근 차근 알아보도록 하자!
클래스 기반 주소 지정
IP 주소를 사물함이라고 비유해보자. (이해를 돕기 위한 비유이므로 실제와는 다른 점이 많겠지만)
나는 사물함이 없는 독서실에 가서,
많은 수의 사물함을 설치해놓고 필요한 사람들에게 빌려주는 장사를 하려고 한다.
어떤 사람은 보관하고 싶은 짐이 너무 많아서 여러 개의 사물함을 빌릴 것이다.
하지만 그 사람이 아래 그림처럼 위치를 중구난방으로 사물함을 대여한다면 어떨까.
사물함을 빌리는 사람이 늘어날 수록 사용자도, 관리자도 불편할 것이다.
따라서 사물함을 빌려줄 때, 처음부터 "여기서부터 여기까지는 자유롭게 쓸 수 있어~" 라고 영역을 할당해줄 것이다.
또, 필요에 따라 얼마나 넓은 영역을 할당해줄지 달리 하기 위해, 등급을 나눌 것이다.
등급 별 관리가 쉽도록, 아래처럼 등급에 따라 사물함 구역을 나눠 관리할 것이다.
다시 비유 대신 IP 주소로 설명하자면,
"이 만큼의 범위 내에 속한 IP 주소는 자유롭게 사용할 수 있어~" 라고 할당해주자는 것이다.
앞선 비유에서 이야기한 사물함 대여 등급을 '클래스'라고 이해할 수 있다.
이것을 클래스 기반 주소 지정이라고 한다.
인터넷이 시작될 때 IP 주소를 지정하는 방식이 이와 같았다.
아래와 같이 앞자리 수(첫번째 옥텟)의 값으로 클래스를 분류한다. 그리고 규모에 따라 클래스를 부여해준다.
주황색에 해당하는 옥텟은 각 클래스에서 '자유롭게 사용할 수 있는' 부분, 즉 호스트 주소로 쓰이는 부분이다.
앞 자리가 127인 대역을 할당받았다면? 127이니까 Class A -> 127.*.*.* 인 IP 주소를 모두 사용 가능하다.
(물론 128개밖에 없는 클래스 A의 네트워크는 이미 옛날에 미국의 대기업들이 선점한 상태이다.)
앞 자리가 130인 대역을 할당받았다면? 130이니까 Class B -> 130.n.*.*.*인 IP 주소를 모두 사용 가능하다.
앞 자리가 192인 대역을 할당받았다면? 192이니까 Class C -> 192.n.m.*인 IP 주소를 모두 사용 가능하다.
(이 때 n과 m은 해당 IP 주소에서 고정인 값이다. 192.n.m까지가 네트워크 주소라는 뜻이다.)
이 때 위 표에 써놓은 '블록'은 뭘까? CIDR 표기법으로 나타낸 '서브넷 마스크'이다.
쉽게 이해하면, "IP 주소의 32bit 중 24bit 만큼이 네트워크 주소야~"하고 말해주는 것이다.
즉, 각 클래스마다 주어진 기본 서브넷 마스크가 있다.
한계, 주소의 고갈
그런데 각 클래스에서 사용할 수 있는 IP 주소의 개수를 보자.
클래스 B인 대역을 할당받은 하나의 네트워크가 사용 가능한 주소의 개수는 65,536개이다.
클래스 C인 대역을 할당받은 하나의 네트워크가 사용 가능한 주소의 개수는 256개이다.
클래스 B를 할당받기엔 주소가 너무 많아 남고,
클래스 C를 할당받기엔 주소가 부족할 수도 있다.
또는 어떤 네트워크에겐 256개도 너무 많을 수도 있다.
이처럼 클래스의 단위가 너무 크다보니 할당량 조절이 쉽지 않았다. 낭비가 심했다.
나무위키(..!)에서는
쉽게 말해 단체 급식에서 반찬을 배식할 때 무조건 한 번만 덜어줄 수 있다는 제한이 있다고 하자.
기존에는 큰 국자, 중간 국자, 작은 국자 세 개만 갖고 배식하다가
서브넷 마스크의 등장으로 집게로 각자 필요한 양만큼만 덜어줄 수 있게 개선된 것이다.
라고 설명하고 있는데 적절한 비유라고 생각한다.
결국, IPv4 주소는 이미 할당받은 대역을 제외하고는 이미 고갈되었다.
때문에 클래스 기반 주소 지정은 더 이상 사용하지 않는다.
따라서 효율적인 IPv4 주소 할당을 위하여
서브넷 마스크를 클래스가 지정해주는 대신, 필요에 따라 원하는 값의 서브넷 마스크를 적용할 수 있도록 바뀌었다.
IP 주소는 전세계에 유일한 주소라고 했다. 이런 주소가 고갈되었는데 어떻게 우리는 계속 제한 없이 주소를 가지고 인터넷을 사용하는걸까?
1. 기존에 할당받은 대역의 주소들을 공인 주소(Public IP 주소)라 하는데, 이와 사설 주소(Private IP 주소) 개념을 분리하였다.
인터넷에 직접 연결되는 공인 주소와 달리, 인터넷에 직접 연결되지 않은 네트워크에서는 사설 주소를 구성할 수 있다.
한 가정 내의 여러 대의 PC가 각각 다른 사설 IP 주소를 가지고, 공유기는 이를 하나의 공인 주소로 변환한다.
2. 주소를 할당받은 기업들이 이를 관리하고 있다.
고갈되었다는 것은, 사용 불가하다는 게 아니라 더 이상 할당이 불가능하다는 뜻이다. 클라우드 회사들이 많은 IP 주소를 효율적으로 관리하고 있다. 서브네팅이 이를 위해 활용된다.
3. IPv6를 사용하는 경우도 있다.
글이 길어져서 다음 포스트로 이어집니다..
[네트워크] 서브네팅 이해하기 (2) 서브넷, 서브네팅, CIDR
참고 자료
TCP/IP 주소 및 서브넷 - Windows Client
IP 네트워크 및 서브넷의 개념에 대한 일반적인 소개입니다.
learn.microsoft.com
IP주소 A,B,C클래스 및 서브넷에 대한 이해
IP주소의 총 개수 : 4,294,967,296계산 방법 : 256 * 256 * 256 * 256 문제점 : 처음 이 체계를 만들때는 40억개면 충분 할 것이라 생각했지만, 지금 기준엔 너무나도 모자람이 한정된 자원을 체계적으로 잘
raisonde.tistory.com
Layer3 IP주소(IP Address) - 라마개발일기
L3 Network Layer의 대표 프로토콜인 IP와, IP주소에 대해서 정리해보았다.
lamarr.dev