호스트 주소 공간을 너무 크게 할당해도, 작게 할당해도 낭비와 부족이라는 문제가 존재합니다.
그래서 그런 문제를 회피하기 위해 생겨난 개념이 IP 주소의 클래스입니다.
클래스
네트워크 크기에 따라 IP 주소를 분류하는 기준입니다.
클래스를 이용하면 필요한 호스트 IP 개수에 따라 네트워크 크기를 가변적으로 조정해 네트워크 주소와 호스트 주소를 구획할 수 있습니다. 클래스를 기반으로 IP 주소를 관리하는 주소 체계를 클래스풀 주소 체계라고 부릅니다.클래스는 A~E까지 총 다섯 개가 존재합니다.
A 클래스는 B와 C 클래스에 비해 할당 가능한 호스트 주소의 수가 다양합니다.
네트워크 주소는 비트 0으로 시작하고 1옥텟으로 구성되며, 호스트 주소는 3옥텟으로 구성됩니다.
이론상으로 2^7(128)개의 A 클래스 네트워크가 존재할 수 있고 2^24(16,777,216)개의 호스트 주소를 소유할 수 있습니다.
A 클래스로 나타낼 수 있는 IP 주소의 최솟값을 10진수로 표현하면 0.0.0.0, 최댓값을 10진수로 표현하면 127.255.255.255입니다. 가장 처음 옥텟의 주소가 0~127이라면 A 클래스 주소로 짐작할 수 있습니다.
B 클래스는 비트 10(2진수)로 시작하고 2옥텟으로 구성되며, 호스트 주소도 2옥텟으로 구성됩니다. 이론상으로 2^14(16,384)개의 B 클래스 네트워크와 각 네트워크에 속한 2^16(65,534)개의 호스트 주소 소유할 수 있습니다. B 클래스의 IP 주소의 최솟값을 10진수로 표현하면 128.0.0.0, 최댓값을 10진수로 표현하면 191.255.255.255입니다. 가장 처음 옥텟의 주소가 128~191일 경우 B 클래스 주소로 짐작할 수 있습니다.
C 클래스는 비트 110(2진수)으로 시작하고 3옥텟으로 구성되며, 호스트 주소는 1옥텟으로 구성됩니다.
이론상으로 2^21(2,097,152)개의 C 클래스 네트워크가 존재할 수 있고 각 네트워크는 2^8개의 호스트 주소를 소유할 수 있습니다. C 클래스로 나타낼 수 있는 IP 주소의 최솟값을 10진수로 표현하면 192.0.0.0이고, 최댓값을 10진수로 표현하면 223.255.255.255입니다. 가장 처음 옥텟의 주소가 192~223일 경우 C 클래스 주소로 짐작할 수 있습니다.
클래스별로 호스트의 주소를 모두 사용할 수 있는 것은 아닙니다.
호스트 주소가 전부 0인 주소와 호스트 주소가 전부 1인 IP 주소는 특정 호스트를 지칭하는 IP 주소로 사용 불가능합니다.
전부 0인 주소는 해당 네트워크 자체를 의미하는 네트워크 주소로 사용되고, 전부 1인 주소는 브로드캐스트를 위한 주소로 사용합니다. 네트워크 주소와 브로드캐스트 주소 2개를 제외한 나머지 호스트의 주소를 사용할 수 있습니다.
A 클래스는 이론상으로는 2^24(16,777,216)개의 주소를 호스트에 할당 가능하지만 실제로 할당 가능한 주소는 16,777,216 - 2인 16,777,214개입니다.
B 클래스도 이론상 2^16(65,536)개의 주소를 호스트에 할당할 수 있지만, 실제로 할당 가능한 주소는 65,536 - 2인 65,534개입니다. C 클래스도 마찬가지입니다.
클래스풀 주소 체계를 이용하면 할당 가능한 호스트의 주소 공간을 유동적으로 관리할 수 있지만, 클래스별 네트워크의 크기가 고정되어 잇기에 여전히 다수의 IP 주소가 낭비될 가능성이 큽니다.
단적인 예로 A 클래스 네트워크 하나당 할당 가능한 IP 주소는 1,600만 개 이상이고 B 클래스 하나당 할당 가능한 호스트 IP 주소는 6만 개가 넘습니다.
300명의 직원이 사용할 컴퓨터들을 동일한 네트워크로 구성하고 싶다면 클래스풀 주소 체계에서는 어쩔 수 없이 B 클래스 주소를 이용이 강제됩니다. C 클래스 주소는 호스트에게 할당할 수 있는 IP 주소가 254개뿐이기 때문입니다.
그래서 클래스풀 주소 체계보다 더 유동적이고 정교하게 네트워크를 구획할 수 있는 클래스리스 주소 체계가 등장합니다. 클래스 개념 없이 클래스에 구애받지 않고 네트워크의 영역을 나누어서 호스트에게 IP 주소 공간을 할당하는 방식입니다. 오늘날 주로 사용되는 방식입니다.
클래스리스 주소 체계에서는 클래스를 이용하지 않으므로 IP 주소상에서 네트워크 주소와 호스트 주소를 구분짓는 지점은 임의의 지점입니다.
클래스리스 주소 체계에서는 네트워크와 호스트를 구분짓는 수단으로 서브넷 마스크를 이용합니다.
서브넷 마스크란 IP 주소상에서 네트워크 주소는 1, 호스트 주소는 0으로 표기한 비트열을 의미합니다.
서브넷 마스크를 이용해서 클래스를 원하는 크기로 더 잘게 쪼개어 사용하는 것을 서브네팅이라고 합니다.
클래스별 기본 서브넷 마스크
IP 주소와 서브넷 마스크를 비트 & 연산이라고 합니다.
비트 & 연산이란 피연산자가 모두 1인 경우에는 1, 아닌 경우에는 0이 되는 연산입니다.
서브넷 마스크를 표기하는 방법은 두 가지가 있습니다.
두 번째 방식은 'IP 주소 / 서브넷 마스크상의 1의 개수로 표기'하는 방식입니다.
C 클래스를 CIDR로 표기하면 192.168.219.104/24로 표기합니다.
255.255.255.0(8개 8개 8개 0개 = 24개 = 8비트가 3번)
192.168.0.2와 255.255.255.128을 비트 & 연산으로 계산하면 192.168.0.0입니다. 여기서 IP 주소의 범위는 네트워크 주소와 브로드캐스트 주소를 제외한 192.168.0.1 ~ 192.168.0.126입니다.
(네트워크 주소: 192.168.0.0, 브로드캐스트 주소: 192.168.0.127)
전세계에서 고유한 IP 주소를 공인 IP 주소입니다.
네트워크 간의 통신을 이용할 때 사용하는 IP 주소가 공인 IP 주소입니다.
ISP나 공인 IP 주소 할당 기관을 통해 할당 가능합니다.
사설 IP 주소란 사설 네트워크에서 사용하기 위한 IP 주소입니다.
사설 네트워크란 인터넷, 외부 네트워크에 공개되지 않은 네트워크를 의미합니다.
우리가 사용하는 모든 네트워크 기기의 IP 주소를 전부 별도로 신청해서 할당받지는 않았을텐데
그 이유는 LAN 내의 많은 호스트는 사설 IP 주소를 사용하기 때문입니다. 실례로 공유기를 사용하는 것과 같습니다.
사설 IP 주소의 할당 주체는 일반적으로 라우터입니다. 할당받은 사설 IP 주소는 해당 호스트가 속한 사설 네트워크상에서만 유효한 주소이므로, 얼마든지 다른 네트워크상의 사설 IP 주소와 중복할 수 있습니다.
사설 IP 주소를 사용하는 호스트가 외부 네트워크와 통신하려면 NAT를 사용해야 합니다. NAT는 IP 주소를 변환하는 기술입니다. 주로 네트워크 내부에서 사용되는 사설 IP 주소와 네트워크 외부에서 사용되는 공인 IP 주소를 변환하는데에 사용됩니다. NAT를 통해서 사설 IP 주소를 사용하는 여러 호스트는 적은 수의 공인 IP 주소를 공유할 수 있습니다.
순서
터미널에서 IP를 확인하게 되면 그 IP는 사설 IP 주소입니다.
공인 IP 주소가 궁금하다면 구글이나 네이버에 what is my ip 라고 검색하여 알아 낼 수 있습니다.
정적 할당은 호스트에 직접 수작업으로 IP 주소를 부여하는 방식입니다.
이렇게 할당된 IP 주소를 정적 IP 주소라고 합니다.
이렇게 입력하면 그 IP에 해당하는 고정된 주소를 가지게 됩니다.
IP 주소를 정적으로만 할당하다 보면 호스트의 수가 많아질 경우 관리가 곤란해질 수 있습니다.
의도치않게 잘못된 IP 주소를 입력할 수도 있고, 중복된 IP 주소를 입력할 수도 있습니다.
이럴 때 동적 할당을 사용합니다.
동적 할당
정적 할당과는 달리 IP 주소를 직접 일일이 입력하지 않아도 호스트에 IP 주소가 동적으로 할당되는 방식입니다. 이렇게 할당된 IP 주소를 동적 IP 주소라고 합니다.
동적 IP 주소는 사용되지 않을 경우 회수되고, 할당받을 때마다 다른 주소를 받을 수 있습니다. 스마트폰이나 노트북을 이용할 때 수동으로 IP 주소를 설정하지 않고도 인터넷을 이용할 수 있는 이유는 동적으로 IP가 할당되었기 때문입니다. 이 동적 할당에 사용되는 프로토콜이 DHCP입니다.
DHCP를 통한 IP 주소 할당은 IP 주소를 할당하고자 하는 호스트와 해당 호스트에게 IP 주소를 제공하는 DHCP 서버 간에 메세지를 주고받음으로써 이루어집니다. DHCP 서버의 역할은 일반적으로 라우터가 수행하지만 특정 호스트에 DHCP 서버 기능을 추가할 수도 있습니다. DHCP 서버는 클라이언트에게 할당 가능한 IP 주소 목록을 관리하다가 클라이언트가 요청할 때 IP 주소를 할당합니다.
이렇게 할당받은 주소는 임대 기간이 정해져 있습니다. 임대 기간은 보통 수 시간에서 수일입니다. 끝나면 다시 DHCP 서버로 반납됩니다.
DHCP와 클라이언트가 IP 주소 할당 과정 중에 주고받는 메세지
| 메세지 이름 | 설명 |
|---|---|
| DHCP Discover | 클라이언트가 DHCP Discover 메세지를 통해서 DHCP 서버를 찾는다. |
| DHCP Offer | 서버는 Discover 메세지를 받은 뒤 클라이언트에게 DHCP Offer 메세지를 보낸다. |
| DHCP Request | Request는 Offer에 응답한다. 이것도 브로드캐스트로 전송된다. |
| DHCP ACK | 클라이언트에게 최종 승인과도 같은 메세지다. 할당받은 IP 주소를 자신의 IP로 설정한 뒤 임대 기간 동안 사용하게 된다. |
IP 주소 임대 기간이 끝나기 전에 임대 기간을 임대 갱신으로 연장도 가능합니다.
자기 자신을 가리키는 주소입니다. 가장 일반적으로 사용되는 주소는 127.0.0.1입니다. 이것을 로컬 호스트라고 합니다.
루프백 주소로 전송된 패킷은 자기 자신에게 되돌아오므로 자기 자신을 마치 다른 호스트인 양 간주하여 패킷을 전송할 수 있습니다. 이는 주로 테스트나 디버깅 용도로 사용합니다.
0.0.0.0/8은 인터넷 표준 공식 문서에 따르면 '이 네트워크의 이 호스트를 지칭하도록 예약되었다'라고 명시되어 있습니다. 이 주소는 호스트가 IP 주소를 할당받기 전에 임시로 사용되는 경우가 많습니다.