본 글은 아래의 [변계사 Sam] 블로그에서 개인적인 학습의 목적으로 허가를 받고 발췌하였음을 밝힙니다.
https://better-together.tistory.com/124?category=887984


IPv4 주소의 부족

 

인터넷 도입 초창기에는 인터넷에 접속하는 모든 호스트와 라우터에 고유한 IP 주소를 고정적으로 설정해야 했습니다. IP 주소를 할당하는 기관으로부터 IP 주소를 할당받지 못하면 인터넷에 접속할 수 없었습니다.

 

IPv4 주소 체계에서 사용할 수 있는 IP 주소는 약 43억 개입니다. ( 4Byte 가 0 ~ 2^32 까지 표현 가능 )

인터넷이 널리 보급되면서 인터넷에 연결되는 컴퓨터와 라우터가 급속히 늘어나 IP 주소가 부족해지기 시작했습니다.

이로 말미암아 모든 컴퓨터나 라우터에 고정적으로 고유한 IP 주소를 할당하는 것을 그만두고, 필요한 곳에 필요한 때에 필요한 수만큼 고유한 IP 주소를 할당하기 시작했습니다.

 

 

예를 들어, 24시간 인터넷에 연결되어 있어야 하는 서버는 24시간 내내 IP 주소가 필요하지만, 서버에 서비스를 요청하는 클라이언트는 서비스 요청을 위해 인터넷에 접속할 때만 IP 주소가 필요합니다. 인터넷에 연결된 컴퓨터는 서비스를 제공하는 서버보다는 클라이언트가 훨씬 많습니다. 필요한 클라이언트가 필요한 때에 IP 주소를 할당받아 인터넷에 접속할 수 있다면 같은 IP 주소를 접속 시간 별로 나눠 쓸 수 있어 효율적으로 IP 주소를 사용할 수 있습니다.

 

어떻게 이런 IP 주소의 할당이 가능한지 알아보자.

 


공인 IP 주소와 사설 IP 주소

 

인터넷에서 사용하는 IP 주소인터넷과 연결하지 않는 독립적인 네트워크에서 사용하는 IP 주소와 구별하여 공인 IP 주소(또는 퍼블릭 IP 주소, public IP address, 또는 글로벌 IP 주소, global IP address)라고 합니다.

 

IP 주소는 IP 프로토콜을 사용해서 네트워크를 만들 때 사용하는 주소이고, IP 프로토콜은 네트워크를 연결하는 규칙이기 때문에 사내 네트워크 같은 독립적인 네트워크를 만들 때도 사용됩니다.

이런 인터넷과 독립적인 사설 네트워크에서 사용하는 IP 주소를 사설 IP 주소 (또는 프라이빗 IP 주소, private IP address) 라고 합니다.



공인 IP 주소는 인터넷에 접속하는 호스트에 유일하고 고유하게 할당되어야 하기 때문에 사설 IP 주소와 명확히 구별되어야 합니다. 그래서 사설 IP 주소로 사용 가능한 번호는 아래 그림과 같이 클래스 별로 정해져 있습니다. 인터넷에 연결되지 않는 사설 네트워크를 만들 때는 사설 IP 주소로 사용 가능한 번호의 범위 내에서 IP 주소를 자유롭게 선택할 수 있습니다. 인터넷에 연결되지 않으면 다른 네트워크의 사설 IP 주소와 겹치더라도 사설 네트워크 안에서의 통신에는 전혀 문제가 없기 때문입니다.

초기 사설 IP 주소는 인터넷과의 연결을 고려하지 않은 네트워크에서만 사용되었지만, 사설 IP 주소와 공인 IP 주소 간에 주소 변환을 하는 NAT 기술의 개발 사설 IP 주소를 할당한 네트워크 상의 호스트와 공인 IP 주소를 할당한 인터넷상의 호스트 간에 통신이 가능하게 되었습니다.

 


NAT

NAT(Network Address Translation) 주소가 고갈된 IPv4를 위해 태어난 기술로, 사설 IP 주소와 공인 IP 주소 간에 주소 변환을 해 사설 네트워크에서 인터넷으로 통신이 가능하게 합니다. 한마디로 NAT는 주소 변환 기술이고 주로 라우터에 의해 구현됩니다.

집이나 사무실에서 사용하는 가정용 라우터인 인터넷 공유기에도 NAT 기술이 적용되어 있습니다.

 

사설 IP 주소가 설정된 컴퓨터가 인터넷과 통신하고 싶은 경우에는 간단히 NAT 기술이 구현된 라우터를 연결하여 통신을 하면 되는 것입니다.

이때 라우터는 사설 네트워크에서 인터넷으로 들어가는 일종의 게이트웨이(gateway, 출입구) 역할을 합니다.

기본 게이트웨이*(default gateway)라는 의미에서 보통 라우터에는 호스트부가 1인 IP 주소를 할당합니다.

 

*. 기본 게이트웨이는 호스트의 패킷이 외부 네트워크로 나갈 때나 외부 내트워크의 패킷이 호스트가 속한 네트워크로 들어올 때 꼭 거쳐야 하는 출입구입니다.


 

 

 

위 그림에서 사설 IP 주소가 192.168.24.2인 호스트가 클라이언트가 되어 인터넷에서 서비스를 제공하는 서버, 즉 공인 IP 주소가 203.179.33.13인 호스트와 통신하는 경우 NAT으로 주소를 변환하는 과정은 다음과 같습니다.

 

클라이언트 1은 서버에게 서비스를 요청하는 내용의 IP 패킷을 만들어 전송합니다. IP 패킷의 IP 헤더에는 송신지 IP 주소 192.168.24.2, 수신지 IP 주소 203.179.33.13이라는 정보가 담겨 있습니다.

 

클라이언트 1이 전송한 IP 패킷이 NAT 지원 라우터에 도착하면 NAT에 의해 송신지 사설 IP 주소를 공인 IP 주소로 변환합니다. 그림에서 NAT로 변환되는 공인 IP 주소는 202.244.73.3입니다. 이 번호가 어떻게 선택되는지는 아래에서 별도로 설명합니다.

일단 여기서는 NAT 라우터가 공인 IP 주소로 주소 변환을 한다는 것만 이해하면 됩니다.

 

다시 말해 NAT 라우터가 IP 헤더의 송신지 주소를 사설 IP 주소인 192.168.24.2에서 공인 IP 주소인 202.244.73.3으로 변경한 IP 패킷을 인터넷으로 전송합니다. 송신지 IP 주소를 변환할 때 라우터에는 변환 전후의 주소를 기록한 NAT 테이블이 만들어집니다.

 

라우터에서 서버까지 패킷이 전송되는 과정은 일반적인 패킷 전송 방식과 동일합니다.

 

서버에 도착한 IP 패킷에 응답하여 서버가 클라이언트 1로 서비스를 제공하는 IP 패킷을 보낼 때는 반대로 공인 IP 주소가 사설 IP 주소로 변환되는 과정을 거칩니다.

서버는 자신이 아는 수신지 주소인 공인 IP 주소 202.244.73.3로 IP 패킷을 전송합니다. 이 패킷이 라우터에 도착하면 라우터는 NAT 테이블을 이용해 수신지 공인 IP 주소를 클라이언트의 원래 주소인 사설 IP 주소 192.168.24.2로 변환합니다. 변환된 IP 헤더의 수신지에 따라 클라이언트로 IP 패킷이 전송되는 것입니다.

 

인터넷에 있는 서버 입장에서는 사설 네트워크에 있는 호스트의 존재를 모릅니다.

서버가 통신하는 상대는 NAT 라우터이기 때문입니다. 

인터넷에서는 사설 네트워크에 있는 호스트들을 대신해 NAT 라우터가 사실상 하나의 공인 IP 주소를 갖는 하나의 호스트 역할을 합니다.

사설 네트워크를 떠나 인터넷으로 가는 패킷은 송신지 주소로 NAT의 공인 IP 주소인 202.244.73.3을 가져야 하며, 인터넷에서 사설 네트워크로 들어오는 패킷은 수신지 주소로 NAT의 공인 IP 주소인 202.244.73.3을 가져야 합니다.

 

따라서, 사설 네트워크의 클라이언트 1뿐 아니라 클라이언트 2, 3도 같은 공인 IP 주소를 사용하여 인터넷에 있는 서버와 통신을 하게 됩니다. 즉, 사설 네트워크의 호스트들이 하나의 공인 IP 주소를 공유하면서 인터넷으로의 통신을 할 수 있습니다.

 

NAT 기술 덕분에 하나의 공인 IP 주소로 사설 네트워크에 있는 여러 대의 호스트들이 인터넷 상에 있는 호스트와 통신할 수 있게 되어 부족한 IP 주소의 문제를 해결할 수 있게 된 것입니다.

 

공인 IP 주소로 할당할 수 있는 IP 주소가 이미 고갈되었기 때문에 현재는 사설 IP 주소와 NAT을 조합하여 사용하는 것이 일반적입니다.

집이나, 학교, 기업 내에서는 사설 IP 주소를 설정하고 인터넷과 연결하는 NAT 라우터와 인터넷에 공개된 서버에만 공인 IP 주소를 설정함으로써 부족한 IP 주소의 문제에 대응하고 있는 것입니다.

 


고정 IP와 유동 IP

NAT 라우터가 변환할 때 사용하는 공인 IP 주소가 어떻게 할당되는지 이해하기 위해서 먼저 고정 IP 방식과 유동 IP 방식에 대해 살펴봅니다.

 

호스트에 IP 주소를 부여할 때 고정적으로 하나의 번호를 할당해 지속적으로 사용하는 방식을 고정 IP라고 합니다. 고정 IP는 한 번 할당받은 번호를 반납하기 전까지는 계속 그 주소를 사용하는 방식입니다. 고정 IP를 사용하면 네트워크에 연결된 호스트의 수만큼 IP 주소가 필요합니다.

 

반면 유동(Dynamic) IP는 인터넷에 접속할 때마다 별도로 IP 주소를 부여받는 방식입니다. 유동 IP를 사용하면 네트워크에 연결되어 있는 호스트보다 적은 수의 IP 주소로 운영이 가능합니다. 인터넷에 접속하는 호스트에게 IP 주소를 할당하고, 접속이 끝나면 IP 주소를 다시 반납하여 다른 호스트에게 할당이 가능하기 때문입니다.

 

일반적으로 인터넷에서 서비스를 제공하는 서버는 고정 IP를 사용합니다.

즉 서버는 전 세계에 존재하는 클라이언트가 언제든 접속할 수 있도록 공인 IP 주소를 고정적으로 할당받아 사용합니다.

 

반면 서버 외에 필요할 때 인터넷에 접속하는 클라이언트 같은 호스트는 유동 IP를 사용하는 것이 효율적입니다. 따라서 사설 IP 주소가 할당된 호스트가 인터넷에 접속할 때 NAT에 의해 변환되는 공인 IP 주소도 유동 IP 방식을 사용하고 있습니다.

 


 

ISP와 공인 IP 주소의 할당

 

인터넷이 보급된 초기에는 사용자가 IP 주소 관리기관(NIC)에 직접 IP 주소 신청을 해서 공인 IP 주소를 취득해야 했습니다. 그러나 인터넷이 상용화되어 사용자가 ISP(인터넷 서비스 제공자)를 통해 인터넷 서비스를 이용하게 되면서 IP 주소 관리기관이 ISP에 공인 IP 주소를 할당하고 ISP가 사용자에게 공인 IP 주소를 부여하고 있습니다.

말하자면 ISP가 IP 주소 관리기관으로부터 할당받은 공인 IP 주소를 인터넷 사용자에게 분배하는 것입니다.

 

 

 

사용자가 서버용으로 고정 IP를 신청하지 않는 이상 ISP는 인터넷 서비스 사용자에게 유동 IP를 할당합니다.

IP 주소의 부족으로 ISP가 할당받은 IP 주소보다 분배해야 할 사용자가 많아지면서 효율적인 IP 주소의 운용을 위해서 유동 IP 방식을 사용하고 있습니다.

예를 들어 사용자 A가 인터넷에 접속할 때 부여했던 IP 주소를 사용자 A가 인터넷 접속을 끊으면 다른 사용자 B에게 할당하는 것입니다.

 

인터넷 서비스를 신청하면 ISP가 집이나 사무실에 라우터를 설치합니다. 이 라우터를 통해 사용자가 인터넷에 접속할 때마다 자동으로 공인 IP 주소가 설정되고, 접속이 끊어지면 IP 주소가 반납됩니다.

 

집이나 사무실에서는 ISP의 라우터를 보통 가정용 라우터, 즉 인터넷 공유기와 연결하고 인터넷 공유기와 연결된 컴퓨터로 인터넷에 접속합니다. 인터넷 공유기로 연결된 컴퓨터들이 바로 사설 네트워크입니다.

 

인터넷 공유기로 연결된 컴퓨터들은 인터넷 공유기의 IP 자동 설정 기능*에 의해 네트워크 부가 '192.168.X'인 IP 주소가 할당됩니다. '192.168.X'는 클래스 C의 사설 IP 주소 범위에 속하는 번호입니다.

 

*. 가정용 라우터인 인터넷 공유기가 IP 주소를 자동으로 할당하고 관리하는 DHCP(Dynamic Host Comfiguration protocol) 서버 기능을 갖고 있기 때문에 가능한 것입니다. DHCP 서버 기능이 있는 경우 새로운 컴퓨터를 연결하면 바로 새로운 사설 IP 가 할당됩니다.

 

인터넷 공유기를 ISP의 라우터와 연결함으로써 인터넷에 접속할 수 있게 됩니다. 인터넷 공유기가 NAT 기능을 갖고 있기 때문에 사설 IP 주소를 공인 IP 주소로 변환합니다.

이때 사용되는 공인 IP주소는 ISP가 유동 IP 방식으로 할당한 번호를 사용하게 됩니다.

 

내 컴퓨터에서 [제어판]-[네트워크 및 인터넷] -[네트워크 및 공유 센터]-[이더넷]을 선택한 후 <자세히>를 클릭하면 다음 그림과 같이 네트워크 연결 세부 정보를 확인할 수 있습니다.

내 컴퓨터가 인터넷에 접속하여 공인 IP 주소를 할당받은 시간이 임대 시작 날짜입니다. 기본 임대 기간은 ISP에 따라 다르고 인터넷에 접속되어 있는 동안은 계속해서 갱신됩니다.

 


IP 주소 설정 - 자동과 수동

보통 인터넷을 사용할 때는 ISP가 IP 주소를 관리하기 때문에 사용자가 IP 주소를 신청할 필요가 없습니다.

ISP가 제공하는 인터넷 서비스를 통해 인터넷에 접속할 때마다 유동 IP 주소를 임대받아 사용하면 됩니다.

따라서 유동 IP 주소를 사용하는 컴퓨터는 IP 주소를 별도로 설정하지 않고 필요할 때마다 임대받은 IP 주소로 자동 설정됩니다.

 

하지만 인터넷에서 서비스를 제공하는 서버를 운영하기 위해선 고정된 공인 IP 주소가 필요합니다.

많은 사람이 접속하는 서버의 경우 IP 주소가 바뀌면 서버 접속이 불가능해지기 때문에 자동 IP 주소 설정을 하지 않고 할당받은 공인 IP 주소를 서버에 수동 설정합니다.



예를 들어 인터넷에서 웹사이트를 운영하기 위해서는 다른 사용자가 웹사이트에 접속할 수 있는 공인 IP 주소가 필요합니다. 따라서 구글이나 네이버 같이 웹에서 검색 서비스를 제공하는 웹서버에는 고정 IP 주소가 설정되어 있습니다. 구글이나 네이버가 ISP를 통해 공인 IP 주소를 할당받고, 할당받은 IP 주소를 웹 서버에 수동 설정하고 인터넷에 공개했기 때문에 누구나 이 IP 주소를 통해 구글이나 네이버의 서버에 접속하고 통신할 수 있는 것입니다.

 

 


IPv6

IPv4의 주소 고갈 문제를 지금까지 살펴본 클래스 없는 서브넷 마스크 방식의 주소 할당, 유동 IP 할당, NAT을 사용한 주소 변환 등의 방법으로 해결해 왔습니다.

 

하지만 스마트폰 등 모바일 컴퓨터의 확산에 이어 모든 사물을 인터넷으로 연결하는 사물인터넷의 등장으로 인터넷에서 필요한 IP 주소가 기하급수적으로 늘어나면서 IPv4의 주소 고갈 문제를 근본적으로 해결할 새로운 주소 체계인 IPv6를 도입하게 되었습니다.

 

32 비트의 IPv4 주소가 할당할 수 있는 IP 주소는 2의 32승인 약 43억 개였습니다. IPv6는 128 비트를 사용하기 때문에 2의 128승 개의 주소를 할당할 수 있습니다. 이는 43억을 4번 곱한 숫자로 거의 무한대의 IP 주소를 할당할 수 있게 되었습니다.

 

IPv6에서는 전체 128비트를 16비트씩 8그룹으로 나누어 각 그룹을 16진수로 변환하고, 그룹의 경계를 ':(콜론)'으로 구분하는 형식으로 표기합니다.



 

IPv6에서는 IP 주소 공간 확장뿐만 아니라 IPv4의 단점을 보완하여 클래스와 사설 IP 주소 및 NAT을 사용하지 않고 모든 호스트에 자동으로 공인 IP를 할당하여 보다 간단하게 주소를 설정할 수 있습니다.

 

IPv4를 기반으로 한 네트워크와 IPv6를 기반으로 한 네트워크는 서로 호환되지 않아 IP 패킷을 전송할 수 없습니다. 따라서 인터넷 상의 모든 네트워크를 IPv4에서 IPv6로 전환하는 작업을 해야 하기 때문에 IPv4가 IPv6로 전환되기까지는 오랜 시간이 걸릴 것으로 예상하고 있습니다.

 

그래서 새로운 IPv6 네트워크를 확대해나가면서도 기존 IPv4 네트워크와 IP 패킷 전송이 가능하도록, 두 주소 체계가 공존할 수 있는 전환 기술(듀얼 스택 기술, 터널링 기술, 헤더 변환 기술)을 사용하여 점진적인 전환을 꾀하고 있습니다.



+ Recent posts