공인 IP 주소와 사설 IP 주소
인터넷에서 사용하는 IP 주소를 공인 IP 주소라고 한다. 반면 인터넷과 독립적인 사설 네트워크에서 사용하는 IP 주소를 사설 IP주소라고 한다.
공인 IP 주소는 인터넷에 접속하는 호스트에 유일하게 할당되어야하기 때문에 사설 IP 주소와 명확히 구별되어야 한다. 그래서 사설 IP 주소로 사용 가능한 번호는 그림 2와 같이 클래스 별로 따로 정해져 있다. 인터넷에 연결되지 않는 사설 네트워크를 만들 때는 사설 IP 주소로 사용 가능한 번호의 범위 내에서 IP주소를 자유롭게 선택할 수 있다. 인터넷에 연결되지 않으면 다른 네트워크의 사설 IP 주소와 겹치더라도 사설 네트워크 안에서의 통신에는 전혀 문제가 없기 때문이다.
초기 사설 IP 주소는 인터넷과의 연결을 고려하지 않은 네트워크에서만 사용되었지만, 사설 IP 주소와 공인 IP주소 간에 주소 변환을 하는 NAT 기술의 개발로 사설 IP 주소를 할당한 네트워크 상의 호스트와 공인 IP주소를 할당한 인터넷 상의 호스트 간에 통신이 가능하게 되었다.
NAT(Network Address Translation)
NAT는 주소가 고갈되어가는 IPv4를 위해 생긴 기술로, 사설 IP 주소와 공인 IP 주소간에 주소 변환을 해 사설 네트워크에서 인터넷으로 통신이 가능하게 한다. 주로 라우터에 NAT 기술이 적용되어 있다.
사설 IP주소가 설정된 컴퓨터가 인터넷과 통신하고 싶은 경우에는 NAT기술이 구현된 라우터를 연결하여 통신하면 되는것이다. 이때 라우터는 사설 네트워크에서 인터넷으로 들어가는 일종의 게이트웨이(gateway) 역할을 한다.
그림 4에서 사설 IP주소가 192.168.24.2인 호스트가 클라이언트가 되어 공인 IP 주소가 203.179.33.13인 호스트와 통신하는 경우 NAT로 주소를 변환하는 과정은 다음과 같다.
클라이언트 1은 서버에게 서비스를 요청하는 내용의 IP 패킷을 만들어 전송한다. IP 패킷의 송신지에는 192.168.24.2가, 수신지에는 203.179.33.13라는 정보가 담겨있다.
클라이언트 1이 전송한 IP 패킷이 라우터에 도착하면 NAT에 의해 사설 IP 주소가 공인 IP주소로 변환된다. 따라서 IP 패킷의 송신 IP는 192.168.24.2(사설)에서 202.244.73.3(공인)으로 변환된다. 송신 IP 주소를 변환할 때 라우터에는 변환 전후의 주소를 기록한 NAT 테이블이 만들어진다.
반대로 서버에서 클라이언트 1로 IP 패킷을 보낼 때는 반대로 공인 IP 주소가 사설 IP 주소로 변환되는 과정을 거친다. 서버는 자신이 알고있는 수신지 주소인 202.244.73.3으로 IP 패킷을 보낸다. 이 패킷이 라우터에 도착하면 라우터는 NAT 테이블을 이용해 202.244.73.3(공인)을 192.168.24.2(사설)로 변환한다.
인터넷에 있는 서버 입장에서는 사설 네트워크에 있는 호스트의 존재를 모른다. 서버가 통신하는 상대는 NAT라우터이기 때문이다. 인터넷에서는 사설 네트워크 내의 호스트들을 대신해 NAT 라우터가 사실상 하나의 공인 IP 주소를 갖는 호스트 역할을한다. 따라서 사설 네트워크에서 인터넷으로 가는 패킷은 송신 IP로 NAT의 공인 IP주소를 가지며, 인터넷에서 사설 네트워크 호스트로 들어오는 패킷도 수신지 주소로 NAT의 공인 IP 주소를 가지게 된다. 즉 사설 네트워크의 각 호스트들이 하나의 공인 IP 주소(NAT IP)를 공유하면서 인터넷으로 통신한다.
공인 IP 주소로 할당할 수 있는 IP 주소가 이미 고갈되었기 때문에 현재는 사설 IP 주소와 NAT를 조합하여 사용하는 것이 일반적이다. 집이나 학교, 기업 내에서는 사설 IP 주소를 설정하고 인터넷과 연결하는 NAT 라우터와 인터넷에 공개된 서버에만 공인 IP 주소를 할당함으로써 부족한 IP 주소의 문제에 대응하고 있는 것이다.
고정 IP와 유동 IP
NAT 라우터에 공인 IP 주소가 어떻게 할당되는지 이해하기 위해선 먼저 고정 IP와 유동 IP 방식을 이해해야 한다.
호스트에 IP 주소를 부여할 때 고정적으로 하나의 번호를 할당해 지속적으로 사용하는 방식을 고정 IP라고 한다. 고정 IP는 한번 할당받은 번호를 반납하기 전까지는 계속 해당 주소를 사용하는 방식이다. 고정 IP를 사용하면 네트워크에 연결된 호스트의 수 만큼 IP 주소가 필요하다.
반면 유동(Dynamic, floating) IP는 인터넷에 접속할 때마다 별도로 IP 주소를 부여받는 방식이다. 유동 IP를 사용하게 되면 네트워크에 연결되어있는 호스트보다 적은 수의 IP 주소로 운영이 가능하다. 인터넷에 접속하는 호스트에게 IP 주소를 할당하고, 접속이 끝나면 IP 주소를 다시 반납하여 다른 호스트에게 할당할 수 있기 때문이다.
일반적으로 인터넷에서 서비스를 제공하는 서버는, 전 세계에 있는 클라이언트가 언제든 접속할 수 있도록 고정 IP 주소를 할당받아 사용한다. 반면 인터넷에 접속하는 클라이언트 같은 호스트는 유동 IP를 사용하는 것이 효율적이다. 따라서 호스트가 인터넷에 접속하는 경우, NAT에 의해 사설 IP에서 공인 IP 주소로 변환할 때도 유동 IP 방식으로 IP를 할당하고 있다.
(출처: https://better-together.tistory.com/124)
본 내용은 제가 네트워크 공부를하며 위 블로그를 참고해 정리한 내용이어서 스스로가 이해하기 쉽도록 말을 길게 풀어 쓴 구간이 많습니다.
'네트워크' 카테고리의 다른 글
네트워크 소켓(포트) vs 유닉스 소켓 (0) | 2023.08.03 |
---|---|
TCP 프로토콜의 기능과 특징 (0) | 2023.04.22 |
IP주소와 서브넷 마스크 (0) | 2023.04.22 |
[OSI 7-Layer] 응용 계층 (0) | 2023.04.22 |
[OSI 7-Layer] 표현 계층 (0) | 2023.04.22 |