개인/리눅스

IP주소와 서브넷마스크를 이용한 서브넷팅하는 방법

OmeGa2 2020. 2. 2. 19:55

 IP주소란?

IP는 Internet protocol의 약자로 다른기종의 컴퓨터들이 서로 인식하고 통신하기 위해서 사용되는 프로토콜이다. 각 컴퓨터마다 고유한 값을 제공해서 각각의 호스트(사용자)를 구분하기 위해 사용한다. IP주소는 NIC (랜카드)에서 할당하는 주소이기 때문에 한 컴퓨터에 여러개의 NIC를 사용하는 경우, 여러 IP주소를 사용할 수 있다.

 

 

IPv4 주소란?

▶ 32비트의 이진숫자로 구성

▶ 8비트씩 4부분으로 나누어 십진수로 표현

▶ 십진수는 0~255 사이의 값을 가지게 된다.

(0.0.0.0 ~ 255.255.255.255)

IPv4는 이진숫자로 구성되어 32비트를 4개로 쪼개서 십진수로 표현한다. 전체 사용할 수 있는 IP개수는 42억개로 한정되어있고 네 개로 나눠진 이진숫자는 각각 자리마다 (0000 0000 = 128, 64, 32, 16, 8, 4, 2, 1)로 표현한다.

첫번째 8비트의 값에 따라 클래스가 5개로 나뉜다 (A~E) 그중 D, E 클래스는 특수목적으로 사용되고 A~C 클래스는 일반적인 목적으로 사용하는데 네트워크 식별자와 호스트식별자로 구분해서 관리한다.

 

 

<IPv4 클래스별 주소 범위>

 

<사설IP주소 대역>

 

D클래스는 다중 방송통신용으로 사용하며 E클래스는 연구용으로 사용한다. 하지만 D,E 클래스는 보통 거의 사용되는 경우가 없다. 반면 자주사용하는 A~C 클래스는 일반적인 목적 이외에 내부 네트워크를 구축할 때 사설IP주소와 자신을 가리키는 루프백 IP주소를 사용하기도 한다.

 

 

IPv4 사설주소를 사용하는 이유

사설IP는 내부네트워크에서 사용하는 IP주소로 실제 인터넷에 접속할 수 없는 주소다. 실제 우리의 컴퓨터에 IP주소를 확인해보면 사설IP주소인 것을 확인할 수 있다. 그럼 우리가 어떻게 인터넷을 사용할 수 있을까?

 

인터넷을 사용할 때 공유기나 라우터는 공인IP를 할당받는다. 가정의 컴퓨터는 공유기를 통해 인터넷과 연결해준다. 따라서, 공유기가 사설IP를 인터넷을 사용할 수 있는 공인IP로 변환해주면서 통신을 가능하게 만들어주는 것이다. 그럼 왜 이런 복잡한 방식으로 인터넷을 쓰는걸까?

 

내부네트워크의 보안을 위한 문제도 있지만 가장 큰 이유는 IPv4 주소의 자원고갈을 방지하기 위해서 사용한다. 32비트인 IPv4주소의 개수는 대략 42억개 정도로 한정되어있다. 얼핏봤을땐 많은 수인것 같지만 전세계에서 사용하면서 개인당 휴대폰 및 컴퓨터 등 IP주소를 여러개 사용한다고 가정하면 그렇게 많은 숫자가 아니다. 

 

개인이 사용하는 여러 디지털장비는 컴퓨터를 꺼놓고 휴대폰을 사용하는 것 처럼 상시 사용하는 것이 아니다. 같은 사설망에서 IP주소는 중복되면 안되지만, 다른 사설망에서는 같은 IP주소를 사용할 수 있다. 때문에 공유기나 라우터를 사용한다. 공유기는 인터넷에 접속하려는 장비에게 랜덤으로 한정된 수량의 사설IP주소를 할당한다. 이렇게 되면 여러대의 장비가 하나의 공인IP로 통신하면서 사용하는 IP의 수를 줄일 수 있다.

 

 

IPv6주소란?

▶ 128비트의 이진숫자 구성

▶ 16비트씩 8개로 구분

▶ IPv4 의 주소고갈문제 해결

IPv4의 주소가 고갈되어가면서 고안된 프로토콜이 IPv6 주소이다. IPv4 주소는 42억개라는 제한된 수의 주소를 가지고 있었다. 이후 사설IP주소를 사용하면서 부족한 주소를 해결하고 있으나 이는 근본적인 해결책이 되지않아 차후 주소가 고갈될 것이라고 판단되서 고안된 프로토콜이 IPv6주소이다. 

 

32비트인 IPv4에 비하면 확장된 128비트의 이진숫자를 16비트씩 쪼개서 8개의 16진수로 표현한다. 각각의 16진수는 콜론(:)으로 구분하며 이는 340간이 넘는 사실상 무한에 가까운 주소의 수를 제공한다.

(IPv6 = FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF)

 

IP주소가 확장되면서 주소의 숫자만 늘어난게 아니라 보안기능이나 흐름제어 등 여러 기능도 함께 추가되었다.

 

IPv6주소의 기능

▶ IP주소의 확장

▶ 패킷 크기의 확장

▶ 흐름제어 기능지원

▶ 인증 및 보안기능

▶ 이동성

IPv6이 새로 개발되면서 여러가지 특징과 기능이 추가되었다. 128비트로 늘어난 용량에 따라 사용할 수 있는 주소가 무한대에 가깝게 늘어났으며 패킷의 크기가 커지면서 더 큰 크기로 패킷을 주고받을 수 있다. 또한 특정 트래픽을 별도로 처리(실시간처리)하면서 품질높은 서비스를 지원한다.

 

패킷을 주고받을 때 출처르 인증함에 따라 보안기능이 향상되었으며 확장된 헤더파일로 인해 데이터의 무결성이나 비밀보장기능도 함께 추가되었다. 또한 사설IP가 아니라서 물리적인 위치에 제한을 받지않고 같은 주소로 여러장소에서 자유롭게 이용할 수 있다.

 

 

인터넷에 접속할 때

인터넷에 접속하기 위해서는 IP주소의 설정이 필요하다. DHCP (동적 호스트구성 프로토콜)로 공유기에서 자동으로 IP를 설정해주는 경우에는 문제가 없다. 하지만 서버로 사용하거나 고정IP설정을 하려고하면 정확한 주소정보 (넷마스크나 게이트웨이 주소)를 알아야한다. 이외 인터넷 사이트나 홈페이지를 이용하기 위해선 별도의 DNS(도메인) 주소와 이름도 알아야한다.

 

넷마스크 (서브넷마스크)주소

▶ 네트워크를 분할해 하위네트워크 구성

서브넷마스크라고도 불리는 넷마스크 주소는 주로 하위네트워크를 구성할 때 사용한다.  주요 역할은 네트워크의 성능을 향상시키기 위해 자원을 효율적으로 분배하면서 네트워크영역과 호스트영역을 분할하는데 이를 서브네팅이라고 부른다.

 

서브네팅을 하기위해 사용하는 서브넷마스크는 전체 네트워크 영역에서 필요한 만큼만 구분하기 위해 주로 사용하며 이진수로 구분한다. 32비트로 구성된 IP주소에서 1은 네트워크 영역, 0은 호스트영역 으로 구분한다. 필요한 호스트의 수만큼 0으로 표현해서 사용하겠다, 라는 뜻으로 생각하면 쉽다.

 

<넷마스크 주소>

ex) IP 주소 : 192.168.5.20 / 넷마스크 : 255.255.255.0

이 경우 넷마스크에서 0 (호스트영역)으로 표현한 부분은 네번째 부분, 즉 192.168.5.0~ 192.168.5.255 까지 총 256개의 호스트를 하나의 네트워크로 묶는다 라는 의미를 가진다.

 

ex) IP 주소 : 172.20.2.20 / 넷마스크 : 255.255.0.0

이 경우 넷마스크의 호스트부분은 세번째, 네번째 부분 즉 172.20.0.0 ~ 172.20.255.255 총 65.536개의 호스트를 하나의 네트워크로 묶는다 라는 의미가 있다.

 

총 256개의 호스트를 가지는 네트워크에서 256개 모두 IP주소로 사용할 수 있는것은 아니다. 각 네트워크에서 2개는 네트워크주소와 브로드캐스트(전체통신) 주소가 되고 실제 사용가능한 IP주소는 254개가 된다. 네트워크주소는 보통 최하위값이 할당되며, 브로드캐스트는 보통 최상위 값이 할당된다. 

(네트워크 주소 : 192.168.5.0 / 브로드캐스트 : 192.168.5.255)

 

 

게이트웨이 주소

▶ 서로 다른 네트워크간의 통신

각자 구성된 네트워크끼리 통신하기위해서는 게이트웨이가 필요하다. 게이트웨이는 IP주소나 소프트웨어를 통칭해서 부르며 다른 네트워크와의 입구, 통로역할을 수행한다. 보통 IP주소에서는 1번이나 254번이 할당된다.

(게이트웨이 : 192.168.5.1 or 192.168.5.254)

 

 

하나의 네트워크를 서브넷팅한다면?

IP주소와 서브넷마스크를 이용해서 하나의 네트워크를 여러개의 서브넷으로 나눌 수 있다.

 

ex) IP주소 : 192.168.3.2 / 서브넷마스크 : 255.255.255.0

11000000 10101000 00000011 00000010 = (IP주소)

11111111 11111111 11111111 00000000 = (서브넷마스크)

 

서브넷마스크는 0으로 표현된 호스트부분으로 하나의 네트워크를 묶는다. 따라서 위 IP주소의 경우 네트워크 범위는 192.168.3.0 ~ 192.168.3.255가 된다.

110000000 10101000 00000011 00000000 = (192.168.3.0)

110000000 10101000 00000011 11111111 = (192.168.3.255)

 

여기서 만약 네트워크를 여러개로 나누고싶다면 서브넷마스크 주소를 바꾸면 된다.

ex) IP주소 : 192.168.3.2 / 서브넷마스크 : 255.255.255.128

11000000 10101000 00000011 00000010 = (IP주소)

11111111 11111111 11111111 10000000 = (서브넷마스크)

 

서브넷마스크에서 지정된 호스트영역에 따라 네트워크의 범위는

192.168.3.0 ~ 192.168.3.127 

192.168.3.128 ~ 192.168.3.255

두 개로 나뉘게 된다.

110000000 10101000 00000011 00000000 = (192.168.3.0)

110000000 10101000 00000011 01111111 = (192.168.3.127)

 

110000000 10101000 00000011 10000000 = (192.168.3.128)

110000000 10101000 00000011 11111111 = (192.168.3.255)

 

여기에서 네트워크의 수는 넷마스크에서 1로 표시된 부분의 수에 따라 나뉘게 되고, 현재는 1이 여덟번째 비트 하나 뿐이니 여덟번째 비트를 기준으로 (0,1) 두 개로 나뉘게 된다. 만약 네트워크부분의 비트가 두 개의 경우 (00, 01, 10, 11) 네트워크가 네개로 나뉘게 된다. 이 때 하나의 네트워크를 네개의 서브넷으로 나눈다고 할 수 있다.

 

각각 나눠진 서브넷은 별도로 네트워크주소와 브로드캐스트 주소가 요구되므로 서브넷을 여러개로 나눌때 마다 사용할 수 있는 IP의 개수는 줄어들게 된다.