IPv4 주소 체계

우리는 사람을 구별할 때 보통 이름과 얼굴, 성별 등과 같은 요소로 구별을 한다. 하지만 이러한 요소들을 고유하지 않으며, 그렇기 때문에 서류상에 등록할 때 사람들 각각을 구분하기 위하여 주민번호를 발급하여 구분하며 이러한 주민번호는 고유한 값이다.

주민등록번호 규칙

이것은 마치 데이터베이스에 있는 PK값과 같아 각자를 고유한 개개인을 구분하는데 사용할 수 있다. 마찬가지로 네트워크상에서 각각의 컴퓨터는 이러한 주민번호와 같은 고유한 값을 가지게 되는데 이러한 값을 하는 것이 IP이다. 현재 우리가 사용하는 IP 체계는 32Bit 체계를 사용하며, 대략 42억개의 IP 주소를 사용할 수 있다고 한다.

32bit 체계의 IPv4

처음 IPv4, 즉 32 bit 체계를 가질 때만 해도 컴퓨터가 지금처럼 보급화되지 않았기 때문에 42억개 정도로도 충분했지만, 지금은 개인이 여러개를 가지는 경우도 있기 때문에 거의 고갈되어 2010년도 기준, IPv6 체계까지 하여 총 2가지 체계를 가진다고 한다.

과거에는 IP를 할당할 때 클래스 단위로 나누어 IP를 할당하였지만 지금은 현재 CIDR(사이더)이란 방식을 사용한다고 한다. 오늘은 과거에 사용하던 클래스 단위 IP 주소 체계에 대해 살펴볼 예정이다. IP를 클래스 단위로 할당할 때, 각각의 기준에 따라 총 3가지 클래스로 나누어 구분할 수 있다.

  • A Class
  • B Class
  • C Class

각각의 클래스는 가지는 네트워크 주소(대표 주소)와 Host 주소(IP)의 규모가 다르며, IP 대의 영역이 있기 때문에 대략적으로 IP 주소만 봐도 어떠한 클래스에 속하는지 구별할 수 있다.

A Class

먼저 A Class를 구분할 때는 아래의 그림에서 네트워크 주소에서 1번째 비트 즉 구분 비트가 0이어야 한다.

A Class

그렇다라는 의미는 반대로 최대로 할당될 수 있는 네트워크는 아래의 그림과 같이 표현될 수 있다.

A Class

이렇게 표현되어 있는 2진수를 10진수로 바꾸었을 때, 이는 0~127 범위 안에 속하여 이 사이에 있는 IP 주소는 A Class라고 볼 수 있다. 네트워크 주소 내에서 첫번째 구분 비트를 제외하면 총 2^7 개의 네트워크 그룹이 존재하며, 이 네트워크 그룹은 2^24개(16,777,216개)로 약 1,600만개의 IP 주소를 가질 수 있다. 예를 들어 54.15.135.12의 IP는 A Class에 속해 있으며, 대표 IP는 네트워트 주소만으로 표현됨으로 54.0.0.0이라고 볼 수 있다. 간단하게 정리하면 다음과 같이 정리 할 수 있다.

A Class IP의 범위는 0.0.0.0 ~ 127.255.255.255 이며, 약 1,600만개의 Host 주소를 가진 네트워크 그룹은 총 127개 있다.

B Class

B Class는 구분 비트 10 이다. A Class 에 비해 표현할 수 있는 네트워크 주소의 범위가 더 커졌으며, 호스트 주소의 범위는 줄어들었다.

B Class

위와 마찬가지로 최대로 할당될 수 있는 네트워크 범위의 수는 아래의 그림과 같이 10111111까지이며 이는 10진수로 표현했을 때 191이다.

B Class

이러한 B Class는 네트워크 영역 중 고정되는 앞의 2개의 구분 비트를 제외하면 총 2^14개(16,384개) 네트워크 그룹이 있으며 각각의 네트워크 그룹은 2^16개(65,536개)로 대략 65,000개의 IP 주소를 가질 수 있다. B Class의 범위는 앞의 A Class 범위 이후부터이기 때문에 다음과 같이 정리할 수 있다.

B Class IP의 범위는 128.0.0.0 ~ 191.255.255.255 이며, 약 65,000개의 Host 주소를 가진 네트워크 그룹이 대략 16,000개 존재한다.

만약 153.39.16.3의 IP를 사용하고 있다면 이는 B Class 안에 포함되며 대표 IP는 네트워크 영역 안의 153.39.0.0이 된다.

C Class

마지막으로 C Class는 가장 넓은 범위의 네트워크 범위를 가진다. 하지만 반대로는 호스트 주소의 범위는 줄어든다.

C Class

C Class는 구분자 비트는 무조건 110이어여 하며, 범위는 최대 11011111까지이다. 이는 10진수로 표현했을때, 223에 해당하는 값이다.

C Class

C Class는 총 2^23개(2,097,152개)의 네트워크 주소를 가지며, 각각의 네트워크는 2^8(256개)개의 호스트 주소를 가질 수 있다. 그렇기 때문에 C Class의 IP 범위는 아래와 같이 정리할 수 있다.

C Class IP의 범위는 192.0.0.0 ~ 223.255.255.255까지 이며, 254개의 호스트 주소를 가지는 네트워크가 대략 200만개 존재한다.

만약 203.18.41.12의 IP를 사용하고 있다면 이는 C Class 안에 포함되며 대표 IP는 203.18.41.0 이다. 위의 설명을 살펴보면 사용할 수 있는 호스트 갯수를 254개 라고 설명했는데 이는 0-255 범위로 총 256개의 IP 보다 2개 적은 숫자이다. 이는 대표 IP인 203.18.41.0번과 브로드 캐스트 IP인 203.18.41.255를 제외한 숫자이다.

이상으로 대략적인 IP 주소 체계에 대해서 살펴보았다. 사실 그동안 관심을 안가져서 어려웠지 막상 공부를 하고나니 대략적으로나마 IP 주소 체계에 대해 이해할 수 있었던 계기가 되었다.

현재 이커머스회사에서 frontend 개발자로 업무를 진행하고 있는 Martin 입니다. 글을 읽으시고 궁금한 점은 댓글 혹은 메일(hoons0131@gmail.com)로 연락해주시면 빠른 회신 드리도록 하겠습니다. 이 외에도 네트워킹에 대해서는 언제나 환영입니다.:Martin(https://github.com/martinYounghoonKim
Kotlin의 Nothing 타입
2019년의 회고