IP 주소란?
IP 주소 (Internet Protocol Address)는 컴퓨터 네트워크에서 장치들이 서로 인식하고 통신을 하기 위해서 사용하는 특수한 번호이다.
보통 IP 주소를 줄여서 'IP' 라고 부르기도 하지만 IP는 인터넷 규약(프로토콜) 자체를 가르키는 말이기 때문에 IP와 IP 주소는 엄밀하게 구별해야 한다.
IP주소에는 IPv4와 IPv6가 있는데 IPv6는 인터넷이 발달함에 따라 필요한 IP주소가 증가했고, IPv4 주소 표기법으로 표현할 수 있는 주소의 한계를 극복하고자 도입한 IP 주소 표기법이다. 해당 글에서는 IPv4 표기법에 대해서만 다루겠다.
IPv4
IP 주소는 32비트로 구성되어 있다. 8개의 비트로 나눠서 4개의 '.'으로 구분한다. 이때 4개로 나눈 각각의 수를 "옥텟"이라고 부른다.
최소 IP 주소는
00000000.00000000.00000000.00000000 (2)
가 되고 10진수로 변환을 하게 되면 0.0.0.0이 된다
마찬가지로 최대 IP 주소는
11111111.11111111.11111111.11111111 (2)
이 되므로 10진수로 변환 시 255.255.255.255가 된다. 따라서 IPv4의 주소 범위는 0.0.0.0 ~ 255.255.255.255이 된다.
IPv4 주소에는 사설 IP와 공인 IP가 존재한다. 사설 IP는 네트워크 관리자가 임의로 할당하는 주소고 공인 IP는 ISP에서 할당받은 주소다.
ISP란?
ISP는 인터넷 서비스 제공자(Internet Service Provider)라고 한다. 인터넷 서비스 제공자는 인터넷에 접속할 수 있도록 해주는 사업자를 말하고 국내엔 대표적으로 KT, SK 브로드밴드, LG U+등이 있다.
IP 주소 클래스
IPv4 주소는 전통적으로 A, B, C, D, E 총 5개 클래스로 나뉘며, 각 클래스는 기본적으로 사용하는 서브넷 마스크가 있다.
- A 클래스
첫 옥텟(8비트)이 0 ~ 127에 해당
기본 서브넷 마스크: 255.0.0.0 (네트워크 부분 8비트)
매우 큰 네트워크용 - B 클래스
첫 옥텟이 128 ~ 191에 해당
기본 서브넷 마스크: 255.255.0.0 (네트워크 부분 16비트) - C 클래스
첫 옥텟이 192 ~ 223에 해당
기본 서브넷 마스크: 255.255.255.0 (네트워크 부분 24비트)
소규모 네트워크에 주로 사용 - D 클래스
첫 옥텟이 224 ~ 239에 해당
멀티캐스트 용도 - E 클래스
첫 옥텟이 240 ~ 255에 해당
연구 목적 등 특수 용도
하지만 최근에는 CIDR(Classless Inter-Domain Routing) 방식이 도입되어, 클래스에 구애받지 않고 필요한 만큼 서브넷 비트를 할당하는 방법을 주로 쓴다.
CIDR(Classless Inter-Domain Routing) 이란?
Classless Inter-Domain Routing(CIDR)은 인터넷상의 데이터 라우팅 효율성을 향상시키는 IP 주소 할당 방법이다.
CIDR 이전에 IP 주소는 클래스 기반이었기 때문에 효율적이지 않았다. 이러한 단점을 알아보자.
왜 클래스 기반 IP 주소를 사용하지 않고 CIDR을 사용할까?
1. 유연하지 않은 IP 주소 지정
클래스 기반 주소 지정 시스템에서 각 클래스는 고정된 수의 디바이스를 지원했다.
- 클래스 A는 1,600만 7,214개의 호스트를 지원
- 클래스 B는 6만 5,534개의 호스트를 지원
- 클래스 C는 254개의 호스트를 지원
클래스 기반 배치는 IP 주소를 할당하는 데 있어서 비효율적이었고 IP 주소 공간 낭비로 이어졌다.
2. 네트워크 설계의 제한
클래스 기반 IP에서는 필요에 따라 네트워크를 결합하는 기능이 제한되었다. 예를 들어 다음 IP 주소는 클래스 아키텍처에서 서로 다른 클래스 C 네트워크에 속한다.
- 192.168.1.0
- 192.168.0.0
네트워크 관리자는 이 두 네트워크를 결합할 수 없었다. 클래스 C 서브넷 마스크가 255.255.255.0으로 고정되었기 때문이다.
IP 주소 표기법
IP 주소는 Network 부분과 Host 부분으로 구분되어 진다. 즉, Network ID (고정된 bit) + Host ID(고정되지 않은 bit)로 나타낸다. IP 주소는 CIDR 표기법을 사용시 IP 주소 / 서브넷 마스크 형태로 표시 된다.
예를 들자면 192.168.10.1/24 처럼 표현한다.
서브넷 마스크를 알아보기 앞서 먼저 서브넷이 뭔지 알아보자.
서브넷(Subnet)이란?
서브넷, 즉 서브네트워크 (Sub Network)는 네트워크 내부의 네트워크이다. 보다 효율적으로 네트워크를 사용할 수 있으며, 서브넷을 통해 트래픽은 불필요한 라우터를 통과하지 않고 더 짧은거리를 이동하여 목적지까지 도달할 수 있다.
IP 주소 공간을 서브넷으로 분할하면 네트워크를 효율적으로 관리하고 더 많은 호스트들을 지원하거나 보안을 강화할 수 있다.
서브넷 마스크(Subnet Mask)란?
네트워크에서 쓰이는 IP 주소는 크게 네트워크 부분(Network Portion)과 호스트 부분(Host Portion)으로 나뉜다.
서브넷 마스크(Subnet Mask)는 이 두 부분을 ‘어디서부터가 네트워크 부분이고, 어디서부터가 호스트 부분인지’ 구분해 주는 역할을 한다.
예를들어,
192.168.10.1/24
라는 IP 주소가 있다고 가정해보자. 이때 /24는 무엇을 의미할까? 바로 서브넷 마스크를 의미한다.
24라는 숫자는 서브넷 마스크에서 1비트의 갯수를 의미한다. IP주소를 이진수로 나타냈을 때 왼쪽에서 부터 24개의 비트가 네트워크 식별 영역을 의미하고 나머지 비트는 호스트 식별영역을 의미한다.
192.168.10.1를 2진수로 나타내면 아래와 같은데
11000000.10101000.00001010.00000001
여기서 왼쪽에서부터 24개까지는 네트워크 영역이라고 생각하면 된다.
따라서 할당 가능한 호스트 IP 주소는 32비트 - 24비트 해서 8비트가 남으므로 2^8 -2 가 된다.
왜 -2가 되는 이유는 바로 아래에서 설명하겠다.
IP 주소의 네트워크 ID와 브로드캐스트 주소
호스트 필드를 모드 0으로 채우면 네트워크 ID, 모두 1로 채우면 브로드캐스트 주소가 된다.
예를들어 IP주소가 192.168.10.1/24일 경우
11000000.10101000.00001010.00000001
and 11111111.11111111.11111111.00000000
----------------------------------------
11000000.10101000.00001010.00000000 => 192.168.10.0 (네트워크 ID)
11000000.10101000.00001010.11111111 => 192.168.10.255 (브로드캐스트 주소)
네트워크 ID와 브로드 캐스트 주소는 IP주소로 사용할 수 없다.
따라서 사용가능한 IP 주소 대역은 192.168.10.1 ~ 192.168.10.254 이다.
그래서 위에 IP 할당가능한 IP주소 부분에서 -2을 한 이유는 네트워크 ID와 브로드 캐스트 주소는 IP주소로 사용할 수 없기 때문이다.
서브넷이라는 단어에 마스크가 붙은 이유는?
"마스크 (Mask)"라는 용어가 붙은 이유는 IP 주소를 비트 단위로 연산할 때 서브넷 마스크가 1인 부분(네트워크 부분)은 그대로 남기고 서브넷 마스크가 0인 부분(호스트 부분)은 제외하며 결국 네트워크 부분만 강조해서 보여주기 때문이다.
이를 흔히 사람의 얼굴 일부를 가리는 마스크에 비유하기도 한다.
마스크가 호스트 부분을 가려서 네트워크 주소만 남긴다는 이미지로 기억하면 쉽다.
서브네팅이란?
서브넷팅이란, 기존에 큰 하나의 네트워크(IP 주소 범위)를 더 작은 네트워크(서브넷)들로 나누는 작업을 말한다.
(예: 192.168.0.0/24 대역을 여러 개의 /25나 /26 등 더 작은 네트워크로 분할)
왜 서브네팅을 사용할까?
- 트래픽 분산 및 관리
- 큰 네트워크 하나에 수백~수천 대 기기가 연결되어 있으면, 브로드캐스트 트래픽(ARP 등)이 네트워크 전체를 뒤덮어 혼잡도가 올라간다.
- 서브넷팅을 통해 네트워크를 여러 구역(서브넷)으로 나누면, 브로드캐스트 범위가 각 서브넷 내부로 제한되어 네트워크 트래픽이 분산된다.
- 보안 및 접근 제어
- 부서별, 역할별로 서로 다른 서브넷을 사용하면, 서로 다른 라우팅 및 방화벽 정책을 쉽게 적용할 수 있다.
- 예: 서버망은 192.168.10.0/24, 개발망은 192.168.20.0/24 등으로 나누고, 이 서브넷들 간 트래픽을 엄격히 제어.
- 주소 자원 효율화
- 과거 Class A/B/C로만 네트워크를 나누면 주소 낭비가 심했다(클래스풀).
- 서브넷팅(CIDR)을 이용하면 실제 필요한 호스트 수에 맞춰서 유연하게 서브넷을 설계할 수 있어, IP 주소 낭비를 줄인다.
서브네팅 과정 예시
예시 상황: 192.168.1.0/24 대역(기본 C클래스)을 4개의 서브넷으로 나누어야 한다. 각 서브넷당 최대 50대 정도 호스트가 필요하다고 하자.
- 기존 /24 정보 확인
- 네트워크 부분: 24비트
- 호스트 부분: 8비트(총 256개 주소, 실제 호스트 사용 가능: 254개)
- 서브넷 개수 결정
- 원하는 서브넷 개수: 4개
- 서브넷 개수를 만들기 위해 필요한 “서브넷 비트” → log2(4)=2\log2(4) = 2 비트
- 즉, 호스트 부분 8비트 중 2비트를 서브넷용으로 빌리면 /26이 됨.
- 결정된 마스크: /26
- /26 → 네트워크 부분 26비트, 호스트 부분 6비트(= 32개 주소, 실제 호스트 30개 가능)
- 여기서 “각 서브넷당 50대”가 필요하다고 했는데, /26은 호스트 30대밖에 못 담습니다.
- 문제: 30대 < 50대 → /26은 호스트 수가 부족!
- 따라서 /25로 나누면? /25 = 호스트 부분 7비트 → 128개 주소, 실제 호스트 126개 가능 → 4개 서브넷은 못 만들고 2개 서브넷만 가능.
- 4개 서브넷 동시에 50대 이상 호스트가 필요하다면, 사실 /25도 2개뿐이라 부족
- 재설계
- “각 서브넷에 50대 필요” & “4개 서브넷으로 나누고 싶다” → 이런 요구사항이라면 /24 하나로는 불가능. 좀 더 큰 네트워크(예: 192.168.0.0/23 등)를 할당받거나, 요구사항을 조정해야 함.
REFERENCE
'Network' 카테고리의 다른 글
도대체 OSI 7 Layer과 TCP/IP는 무엇일까? (0) | 2025.01.08 |
---|