현재는 43억개의 주소도 부족해 IPv6가 나온 상황이지만 개발자의 관점에서는 v6까지는 아직 몰라도 괜찮다고 한다. 물론 네트워크 엔지니어라면 알아야 한다.
이러한 IP 주소는 네트워크 부분과 호스트 부분으로 나뉜다.
위의 그림처럼 나뉘는데 클래스는 총 3개가 있다.
Class A 네트워크는 1개의 네트워크 부분과 3개의 호스트 부분으로 이루어지는데 이 네트워크 부분(첫번째 부분)의 숫자가 1~126사이면 Class A 네트워크임을 알 수 있다.
Class B 네트워크는 네트워크 부분(첫번째 부분)이 128~191이면 B 네트워크이다. A와 비교해보면 127은 건너 뛴 모습을 보이는데 이는 로컬 호스트 네트워크라고 한다. 이 127 주소를 가진 네트워크는 컴퓨터의 네트워크가 제대로 연결되었는지 확인하는 역할을 한다.
Class C 네트워크는 네트워크 부분(첫번째 부분)이 192~223으로 구성된다. 여기에 해당되지 않는 부분들은 크게 중요하지는 않다고 한다.
IP 주소를 활용하여 어떤 클래스인지(A, B, C) 알 수 있고, Subnet Mask의 숫자를 보고도 알 수 있다. Subnet Mask에서 255는 네트워크 부분이고 0은 호스트 부분이라고 생각하면 된다.
Slash Notation이라는 것으로도 클래스를 알 수 있다. 8의 배수로 숫자가 바뀌는 것을 보고 유추할 수도 있는데 이 8은 Subnet Mask의 주소를 2진수로 나타냈을때 1이 8개 있다는 뜻이다. 2진수 11111111은 255이므로 Class A 네트워크임을 알 수 있게 되는 것이다.
예를 들어, 회사에서 Class C 네트워크를 설계한다고 한다.
이때 앞에서 배웠듯이 0~255까지 총 256개를 사용할 수 있다고 생각하겠지만 호스트 주소 0은 네트워크 주소이고, 255는 브로드캐스트 주소라는 것 때문에 사용하지 못한다. 따라서 1~254인 총 254개를 사용할 수 있다.
모두 동일한 네트워크를 사용한다면 스위치로 간단하게 연결시킬 수 있지만 서로 다른 부서에서 정보에 접근하지 못하게 하려면 라우터를 사용해야 한다.
여기서 문제점이 발생하는데 각 호스트 주소당 (200.100.100~~ 254개, 200.100.200.~ 254개...) 이렇게 네트워크를 사용할 수 있는데 각 부서에는 60명 밖에 없어서 네트워크 낭비가 발생한다. 즉, 돈낭비가 발생한다. 이 문제를 해결하기 위해 Subnetting 이라는 개념이 도입되었다고 한다.
그림을 보면 호스트 주소가 달려졌음을 확인 가능하다. 좀 더 자세히 살펴보면 다음과 같다.
그림에서 초록색 부분은 호스트 부분인데 여기서 비트를 빌려와서 네트워크 부분으로 사용하는 예제이다.
10진수로 표현하면 다음과 같다.
따라서 C 네트워크의 Subnet Mask가 다음과 같이 변하게 된다.
slash notation이 25로 바뀌는데 25개의 비트 공간을 사용 가능하다는 얘기이다. (원래는 24개 3바이트)
Subnetting으로 최대 6개까지 비트를 빌려올 수 있다고 한다. 네트워크는 호스트가 최소 2개 이상이 되야 하기 때문이다.
private 주소의 범위는 다음과 같다.
각 컴퓨터의 private ip 주소를 라우터가 받아서 public ip로 변경을 해서 인터넷을 이용한다고 보면 된다.
private ip를 이용하면 공짜라서 서브네팅을 안해도 된다고 한다.
IP 주소는 직접 할당할 수도 있지만 DHCP라는 것을 활용하여 자동으로 할당할 수도 있다. 라우터(프린터 등)는 DHCP로 IP 주소가 고정되어 있다.
네트워크가 작다면 직접 설계해도 되지만, 크다면 DHCP를 이용하자.
DHCP Request
Request를 받고 DHCP 서버에서 사용 가능한 IP 정보들을 보내준다.
위의 그림처럼 구성되어 소통을 한다.