IP는 8비트씩 4자리로 이루어진 32자리 이진수로 구성되어 있다.
예를 들어서 192.168.0.1
이라는 IP를 이진수로 표현하면 아래와 같다.
192 - 1100 0000
168 - 1010 1000
0 - 0000 0000
1 - 0000 0001
위 IP 주소에서 네트워크 주소란 것과 호스트 주소란 것을 알아야 한다.
그 이유는 아래와 같은 규칙 때문이다.
“IP 주소는 하나의 네트워크안에 IP들은 네트워크 영역은 같아야하고, 호스트 IP는 서로 달라야 통신이 가능하다.
먼저 네트워크 주소(Network Address)는 네트워크 주소는 네트워크를 식별하는 역할을 한다.
IP 주소의 네트워크 주소 부분은 해당 네트워크에 연결된 모든 호스트들이 동일한 네트워크에 속함을 나타낸다. 네트워크 주소는 일반적으로 서브넷 마스크를 사용하여 IP 주소에서 구분된다.
호스트 주소(Host Address)는 네트워크에 연결된 각 장치(컴퓨터, 라우터 등)를 식별하는 역할을 한다.
호스트 주소는 네트워크 주소 이후의 부분이다.호스트 주소는 해당 네트워크 내에서 고유한 값을 가집니다. 즉, 네트워크 내에서 서로 다른 장치들을 구분한다. 호스트 주소는 서브넷 마스크를 통해 네트워크 주소와 구분되며, 네트워크에 연결된 각 장치에 할당됩니다.
예를 들어, IP 주소 "192.168.1.100
"이 있다면, 이 IP 주소의 네트워크 주소는 "192.168.1
"이고, 호스트 주소는 "100
"이다. 이를 통해 해당 IP 주소가 "192.168.1
" 네트워크에 속하며, 네트워크 내에서는 호스트 주소 "100
"을 가진 장치임을 알 수 있다.
그러면 어떻게 IP 주소가 주어졌을 때 네트워크 주소와 호스트 주소를 구별할 수 있을까?
IP주소에서는 네트워크 주소와 호스트 주소를 구분하는 경계점이 고정되어있지 않다.
그렇다보니 필요한 호스트 IP 개수에 따라 네트워크의 크기를 다르게 할당할 수 있도록 클래스라는 개념을 도입했다.
클래스는 A, B, C, D, E 클래스가 존재하며 각각의 클래스에 해당하는 IP 주소 갯수와 역할이 다르다.
16,000,000
개의 IP 주소가 할당되며, 대규모 네트워크를 지원하며, 호스트 수는 상당히 많지만 네트워크 수는 적은 경우에 적합하다.65,000
개의 IP 주소가 할당되며, 중간 규모의 네트워크를 지원하며, 네트워크 수와 호스트 수가 모두 중간 정도인 경우에 적합하다.250
개의 IP 주소가 할당되며 소규모 네트워크를 지원하며, 네트워크 수는 많지만 호스트 수는 적은 경우에 적합하다.또 각 클래스는 네트워크 주소와 호스트 주소를 나누는 기준도 다르다.
네트워크.호스트.호스트.호스트
네트워크.네트워크.호스트.호스트
네트워크.네트워크.네트워크.호스트
그러면 내 단말의 주소가 어떤 클래스에 속하는지는 맨 앞 옥텟의 주소만 살펴보면 알 수 있다.
1~127.0.0.0 (로컬호스트)
128~191.0.0.0
192~223.0.0.0
224~239.0.0.0
예를 들어, IP 주소 "192.168.1.100
"이 있다면 이 IP는 C 클래스에 속하는 것이다.
그러나 과거 이러한 클래스 기법을 사용하는 클래스 풀 방식은 사용하지않고, 클래스가 없는 클래스 리스 개념의 서브넷 마스크를 사용한다.
클래스 기반에서는 맨 앞 옥텟을 통해서 네트워크 주소와 호스트 주소를 나눌 수 있었지만, 클래스 리스에서는 이러한 방법을 사용할 수 없기에 구분자가 필요하다.
이 구분자 역할을 서브넷 마스크가 맡는다.
서브넷 마스크는 2진수 숫자를 통해서 1은 네트워크 주소, 0은 호스트 주소로 표시한다.
예를 들어서 IP 주소가 102.4.31.57
이고, 서브넷 마스크가 255.255.255.0
이면 255인 부분인 102.4.31.0
이 네트워크 주소, 0인 부분인 0.0.0.57
이 호스트 주소가 된다.
알아두어야 할 중요 IP 주소
broadcast address
-> 로컬 네트워크에 접속된 모든 장치와 소통하는 주소를 의미하고, 서버에서 접근 가능 IP 주소를 broadcast address로 지정하면, 모든 기기에서 서버에 접근이 가능케 된다.