Network

IP와 Subnet, Subnet Mask (Feat. CIDR)

IP 주소

IP 주소는 네트워크란 넓고 넓은 세계에서 장치들이 서로 통신하기 위한 식별 번호이다. 현재 IP 주소는 버전이 v4와 v6로 두 가지가 있지만, 주로 IPv4가 사용된다.

IPv4 주소는 32bit의 값이고, 아래와 같은 형식이다. 각 자리를 .으로 구별하고, 이를 Octet이라고 부른다. 그래서 IPv4 주소의 총개수는 2^32개이다.

192. 168. 0. 1.
11000000. 10101000. 00000000. 00000001

처음 IP라는게 탄생하던 시절에는 이 정도의 개수로 충분했겠지만, 지금 상황에서는 너무나도 부족하다. 그래서 128bit의 IPv6를 만들었지만, 여러 가지 이유로 사용하지 않고, 효율적으로 관리하기 위한 IP 주소 클래스나 서브넷 마스크 같은 방법들을 만들었다.


IP 주소 클래스

IP를 효율적으로 사용하기 위해 IP의 클래스를 만들어 클래스별로 적당량의 IP를 할당하여 관리하는 걸 IP 주소 클래스 방식이라 한다. IP 주소 클래스로는 A, B, C, D, E가 있지만, D는 멀티캐스팅용이고, E는 미래를 위해 남겨둔 IP라 사용되지 않는다.

클래스가 있는 IP 주소에서는 네트워크 주소와 호스트 주소가 있다.

  • Network Address : 네트워크 식별을 위한 주소
  • Host Address : 호스트 컴퓨터를 식별하기 위한 주소

A 클래스

  • 0 ~ 127로 네트워크 주소가 시작된다(첫 번째 비트가 무조건 0).
  • 호스트 주소는 2^24개를 가질 수 있다.
  • 127.0.0.0 ~ 127.255.255.255는 루프백 IP 주소다.
루프백 IP 주소는 자기 자신을 가리키기 위한 목적의 예약된 IP 주소다. 127.0.0.1과 같이 localhost용 주소이다.

B 클래스

  • 128.0 ~ 191.255로 네트워크 주소가 시작된다(첫 번째, 두 번째 비트가 무조건 10).
  • 호스트 주소는 2^16개를 가질 수 있다.

C 클래스

  • 192.0.0 ~ 223.255.255로 네트워크 주소가 시작된다(첫번째, 두 번째, 세 번째 비트가 무조건 110).
  • 호스트 주소는 2^8개를 가질 수 있다.

서브넷, 서브넷 마스크

서브넷은 말 그대로 부분 네트워크를 뜻한다. IP 주소의 네트워크 영역을 부분적으로 나눈 부분 네트워크를 서브넷이라 하고, 이 서브넷을 만들 때 쓰이는 것이 서브넷 마스크이다.

기존 A 클래스의 IP 주소는 한 개의 네트워크 주소당 16,777,216개의 호스트 주소를 가질 수 있는데, 관리의 어려움이 생길 수도 있고, 불필요하게 쓰이지 않게 될 수 있다.

기존의 IP를 두 개의 서브넷을 나누고 싶다면, 서브넷 마스크에서 비트 하나를 1로 바꾸면 된다.

11111111. 00000000. 00000000. 00000000.
위와 아래가 A 클래스 기준으로 비트 하나를 1로 바꿨을 때의 예시이다.
11111111. 10000000. 00000000. 00000000.

비트 하나를 1로 바꿀때마다 서브넷의 개수는 2배로 증가하고, 할당할 수 있는 호스트의 수는 2로 나뉜다.


CIDR

CIDR(Classless Inter-Domain Routing)은 현재의 복잡한 네트워크 환경을 위해 유연하고 더 많은 IP 주소를 제공해주는 클래스 없는 도메인 간 라우팅 기법으로 최신의 IP 주소 할당 방법이다.

위에서 얘기했던 것처럼 기존의 IP 주소 클래스로 IP를 할당하게 되면, 할당된 IP 주소의 개수가 유연하지 못해서 대부분의 IP 주소를 낭비하게 될 수밖에 없다.

그래서 CIDR은 IP는 그래도 표현하고, 뒤에 /22 식으로 네트워크 주소가 몇 비트까지 인지 알려주는 표기 방법이다. 기존의 IP 주소 클래스 방법으로는 네트워크 주소가 3가지 스타일 밖에 없던 게 자유롭게 늘었다고 생각하면 된다.