IP 주소란?
네트워크에서 장치들이 통신을 하기 위해서 서로를 구분, 식별하도록 해주는 번호이다.
우리가 쓰는 ip주소는 IPv4인데, 2진수 32비트로 이루어져 있으며, 8비트씩 끊어 "옥텟"으로 구분한다.
IP주소는 관리 기관에서 부여한 네트워크 ID와, 네트워크 상에서 개별 호스트를 식별할 수 있도록 하는 호스트 ID로 구성된다.
IP 주소의 유한성
IP주소는 무한한 자원이 아니라 특수 목적으로 예약된 것들을 포함해 약 43억개의 주소를 모두 사용하면 더이상 할당할 수 없다.
특수 IP 주소
- 네트워크 ID가 127이고 호스트 ID가 임의의 값이라면 루프백 주소이다.
- 네트워크 ID가 모두 0이고 호스트 ID만 설정되었다면, 특정 호스트를 식별하기 위한 주소이다.
- 네트워크 ID가 설정되어있고 호스트 ID가 모두 0이라면 네트워크의 경계를 구분하기 위한 네트워크 주소이다.
- 네트워크 ID가 설정되어있고 호스트 ID가 모두 1이라면 브로드캐스트 주소이다.
IP 주소 할당 방식 - Class
클래스 | 네트워크 ID | 호스트 ID | 용도 |
A 클래스 | 8 bit, 0~127 | 24 bit, 0.0.0~255.255.255 | 일반 사용자 |
B 클래스 | 16 bit, 128.0~191.255 | 16 bit, 0.0~255.255 | 일반 사용자 |
C 클래스 | 24 bit, 192.0.0~223.255.255 | 8 bit, 0~255 | 일반 사용자 |
D 클래스 | 1110 | 멀티캐스트 주소 | 멀티 캐스트 |
E 클래스 | 1111 | 예약된 주소 | 미래에 예약됨 |
A, B, C 클래스는 일반 사용자들에게 부여하는 주소이다.
A 클래스에서 네트워크 주소의 첫 비트는 0으로 고정되어 있다. B는 10로, C는 110로, D는 1110, E는 1111로 고정되어 있다.
IP 주소 할당 방식 - CIDR
클래스에 따라 IP 주소를 할당하면 사용하지 않는 주소 공간을 많이 낭비하게 되어 유한한 자원인 IP 주소를 효율적으로 사용하기 어렵다.
CIDR은 클래스 구분이 없이 필요한 호스트 수에 따라 적당히 할당하는 방식이다.
기존 클래스 할당 방식에서는 호스트 ID의 길이가 8, 16, 24로 매우 제한적이었지만 CIDR에서는 훨씬 다양한 길이를 제공한다.
접두어 표기법(Prefix)
CIDR 방식에서는 네트워크 ID의 길이(bit)를 슬래쉬 뒤에 나타내는 접두어 표기법을 사용한다.
만약 /24 라면 32bit 중 네트워크 ID 24bit를 제외한 나머지 8bit가 호스트 ID가 된다.
서브넷 마스크 (Subnet Mask)
192.168.23.56 이라는 주소만 보면 어디까지가 네트워크 ID이고 어디부터가 호스트 ID인지 알기 어렵다.
서브넷 마스크는 이러한 주소에서 네트워크 ID와 호스트 ID를 구분하는 역할을 한다.
32비트로 이루어져 있으며, 이진수 표기법으로 IP 주소에서 네트워크에 해당하는 비트는 1로, 호스트에 해당하는 비트는 0으로 표현한다.
어떤 IP 주소와 그 주소의 서브넷 마스크를 2진수로 표현한 다음, AND 연산을 수행하면 네트워크 ID는 그대로 남고 호스트 ID는 모두 0으로 나타난다. 즉, 서브넷을 찾을 수 있다.
와일드카드 마스크 (Wildcard Mask)
와일드카드 마스크는 서브넷마스크와 유사하게 필터링 기능을 하지만 정 반대의 표기법을 사용한다.
와일드카드 마스크에서 네트워크 ID 처럼 반드시 변하면 안되는 부분은 0으로 표현하고 변해도 괜찮은 부분은 1로 표현한다.
서브넷 마스크는 네트워크를 구분하는 역할을 하지만 와일드카드 마스크는 훨씬 다양하게 IP 주소를 필터링할 수 있다.
(ex) 홀수 / 짝수 주소 필터링 등
마찬가지로 해당 IP 주소와 AND 연산을 시키면 원하는 주소를 필터링할 수 있다.
서브넷팅 (Subnetting)
서브넷팅이란 하나의 기존 네트워크를 여러개의 더 작은 네트워크로 분할하는 것이다.
서브넷팅을 통해 형성된 작은 네트워크들을 서브넷이라고 한다.
분할된 서브넷들의 크기가 모두 같냐 다르냐에 따라 FLSM 과 VLSM으로 구분된다.
서브넷팅 조건
- 서브넷에 할당되는 주소는 공백없이 순서대로 할당된다.
- 서브넷에 할당되는 주소 중에서 첫 번째 주소와 마지막 주소는 반드시 네트워크 주소와 브로드캐스트 주소로 사용한다.
FLSM (Fixed Length Subnet Mask)
기존 네트워크를 모두 같은 크기의 서브넷으로 나누는 방법이다.
각 서브넷의 규모와 상관없이 규모가 가장 큰 서브넷의 크기에 따라 IP 주소가 분배된다.
(ex) 호스트 256개의 기존 네트워크를 4개로 나누려고 한다. 서브넷1은 호스트 최소 60개, 서브넷2는 호스트 최소 32개, 서브넷 3은 호스트 최소 20개, 서브넷4는 호스트 최소 5개가 필요하다.
FLSM 하는 방법
- 네트워크 주소와 서브넷 마스크를 이진수로 나타낸다.
- 현재 호스트 비트로 표현할 수 있는 IP 주소가 몇 개인지 파악한다.
- 호스트 ID의 가장 첫 비트부터 네트워크 ID로 옮기면서 최소한의 필요한 IP 주소만을 포함하도록 한다.
- 네트워크 주소를 십진수로 변환하고 네트워크 ID의 비트수를 세어 접두어 표기법으로 나타낸다.
VLSM (Variable Length Subnet Mask)
기존 네트워크를 각각 다른 크기의 서브넷으로 나누는 방법이다.
각 서브넷의 규모를 고려하여 IP 주소가 분배된다.
하지만, 서브넷의 크기가 가장 큰 서브넷부터 순차적으로 IP를 분배해야 한다.
(ex) 호스트 256개의 기존 네트워크를 4개로 나누려고 한다. 서브넷1은 호스트 최소 100개, 서브넷2는 호스트 최소 50개, 서브넷 3은 호스트 최소 30개, 서브넷4는 호스트 최소 25개가 필요하다.
VLSM 하는 방법
- 네트워크 주소와 서브넷 마스크를 이진수로 나타낸다.
- 현재 호스트 비트로 표현할 수 있는 IP 주소가 몇 개인지 파악한다.
- 호스트 ID의 가장 첫 비트부터 네트워크 ID로 옮기면서 가장 큰 서브넷이 최소한 필요로 하는 IP 주소만큼을 포함하도록 한다.
- 가장 마지막 서브넷의 네트워크 주소로 3번 과정을 반복한다.
- 각 서브넷의 네트워크 주소를 십진수로 변환하고 네트워크 ID 비트수를 세어 접두어 표기법으로 나타낸다.
슈퍼넷팅 (Supernetting)
서브넷팅과는 반대로 여러개의 작은 네트워크를 하나의 큰 네트워크로 합치는 작업이다.
여러 네트워크의 중복되는 부분을 하나의 네트워크로 만들기 위해 사용하기도 한다.