개요
네트워크는 두 대 이상의 컴퓨터(혹은 디바이스, 논리적 구성요소)로 구성된 통신망으로 정의할 수 있다. 디바이스는 주변에서 흔히 볼 수 있는 전자 기기가 될 수도 있고, 네트워크 장비(e.g. 공유기, 라우터, 스위치 ..)가 될 수도 있다. 우리가 알고 있는 인터넷은 전세계에 공유되고 있는 네트워크로, ISP(Internet Service Provider)에 의해 제공된다. 한국에서 ISP는 대표적으로 3사 통신사가 있겠다. (현 시점에서 일론 머스크 행님의 스타링크가 위협할 수 있는 시장이 열릴수도 있겠지만..)
IP 주소란 무엇일까?

디바이스간 통신은 물리적 인터페이스(하드웨어 - e.g. 어댑터, 케이블 등..)을 통해 이루어질 수도 있고, 소프트웨어 및 개념 모델이 적용된 논리적 네트워크를 통해 이루어질 수도 있다. 대중적으로 알고있는(?) IP 주소는 논리적 네트워크 내에서 각 디바이스를 식별하기 위한 번지수로, OSI 7 Layer에서 4계층에 해당한다. (OSI 7 Layer에 대해서는 뒤에서 다룬다.)
개요에서 언급하다시피, 네트워크는 ISP를 통해 전세계적으로 공유될 수도 있지만, 그렇지 않을 수도 있다. 전자의 경우, 공용망(Public Network)라고 하고, 후자의 경우 사설망(Private Network)라고 한다. 그리고, 공용망 내에서 각 디바이스에 할당되는 IP 주소는 공용 IP 주소로, 전세계에서 고유한 주소다. 반면, 사설망 내에서 할당되는 사설 IP 주소는 해당 네트워크 내에서만 고유하기 때문에 타 사설망의 디바이스 IP 주소가 겹칠 수 있다. (주소 상으로만 겹치는것처럼 보이고 네트워크 자체가 격리되었기 때문에 서로 독립적이다.)
위 그림은 일반적으로 가정에서 흔히 볼 수 있는 네트워크 구조로, 라우터(혹은 스위치)에 공인 IP 주소가 할당된다. 그리고, 라우터(Router)는 이름에서 알 수 있다시피, 사설망(가정) 내의 각 디바이스에 할당된 IP 주소로 길(Route)을 찾아주기 위한 역할을 수행한다.
IP 주소의 구조

IP 주소는 위와 같이 2진수, 10진수 체계로 표현할 수 있다. 2진수 체계로 표현하게 되면 구분자(.)를 기준으로 각 8개의 비트(Bit)로 표현할 수 있다. 비트당 0과 1, 2가지 경우의 수를 나타낼 수 있게 되기 때문에 8비트는 256가지의 수(10진수 체계로 0 ~ 255)를 나타낼 수 있다. 그리고, 각 8비트 마다 A, B, C, D 클래스로 구분한다. 고로, 나타낼 수 있는 경우의 수는 총 32비트로 2^32가지의 경우의 수를 나타낼 수 있다. 이렇게 보면 많아보이지만, 절대적으로 공용망의 경우, 전세계의 디바이스들을 전부 포용하기는 어렵다. 고로, 128 비트로 확장되어 16진수로 표기하는 방식의 IP 주소도 있다. 이를 IPv6라고 한다. (32비트 IP 주소 체계는 IPv4라고 한다.)

여태까지는 IP 주소를 통해 각 디바이스에 식별될 주소에 대해서만 알아보았다. 하지만, 전세계에는 네트워크가 하나만 있는 것이 아니라 무수히 존재한다. 즉, 네트워크 간에도 식별할 수 있는 개념이 필요하다. 이를 위한 내용이 network part와 host part이다. network part는 IP 주소에서 네트워크간 식별하기 위한 비트 구간으로, 위 그림에서는 총 24비트를 사용하고 있다. IPv4 주소 체계의 경우 총 32 비트를 수용하기 때문에 나머지 8비트 만큼만 해당 네트워크 내에서 디바이스를 할당할 수 있다. 즉, 2^8 = 256개의 기기가 해당 네트워크(192.168.1.0/24)에 할당될 수 있다.
사실 순수하게 256개를 전부 사용할 수 있는 것은 아니고, 여기서 2개의 경우의 수를 더 빼야 한다. 그 이유는, host part에서 예약된 주소가 존재하기 때문이다.
- 0은 네트워크 자체를 의미
- 255는 해당 네트워크의 브로드캐스트 주소다. (브로드캐스트 주소는 해당 네트워크 내의 모든 디바이스로의 전송을 말한다.)

위 그림은 IPv4 주소를 활용하여 네트워크를 구성한 예시이다. 눈여겨볼 점은 주소마다 끝에 /24 와 같은 접두어가 붙었다는 점이다. 이는 위에서 언급한 network part를 위해 사용할 비트 수(서브넷 마스크)를 의미한다. 즉, 서브넷 마스크 비트 수가 작을 수록 host part에서 할당할 수 있는 비트 수가 늘어나는 셈이 되기 때문에 더 많은 디바이스를 할당할 수 있는 큰(?) 네트워크를 구성하게 된다. 이러한 개념을 차용하는 이유는 네트워크를 쪼개서(서브네팅) 효율적으로 관리하기 위함인데, 인프라를 설계하는 관점에서 운영 환경에 따라 할당해줄 IP 주소를 유추하고, 적절한 크기의 네트워크를 구성하는 것이 중요하다. (AWS 기준으로 VPC의 서브넷을 구성해보면 알 수 있다.)
'[CS] - Network' 카테고리의 다른 글
| SSL/TLS 인증서 (2) | 2025.05.19 |
|---|