What is IP Address?
IP 주소는 인터넷에 연결된 모든 장치(컴퓨터, 스마트폰, 서버, 라우터 등)를 식별하기 위한 고유한 숫자 주소이다. 여기서 IP는 Internet Protocol(인터넷 규약) 의 약자이다. 마치 현실 세계에서 집의 주소나 전화번호가 그 위치를 특정하듯이, IP 주소는 인터넷 세상에서 데이터 패킷이 정확한 목적지에 도달할 수 있도록 해주는 핵심적인 “주소” 역할을 한다. 패킷의 헤더 부분에 출발지 IP 주소와 목적지 IP 주소가 포함되어 있어, 라우터들이 이 주소를 보고 패킷을 전달하게 된다.
IP 주소의 주요 기능
- 식별(Identification) 네트워크 상에서 특정 장치를 고유하게 식별한다. 이 주소가 있어야만 서로 다른 장치들이 송신할 수 있다.
- 위치 지정(Location Addressing) 장치의 네트워크 상 위치를 나타낸다. 라우터는 이 위치 정보를 바탕으로 최적의 경로를 계산하여 패킷을 보낸다.
IP 주소의 종류
현재 주로 사용되는 IP 주소 체계는 크게 2가지이다.
- IPv4(Internet Protocol Version 4)
- 형식: 192.168.1.1과 같이 네 부분으로 된 10진수 숫자를 점(.)으로 구분하는 형식이다. 각 부분은 0부터 255까지의 숫자를 가진다.
- 길이: 32비트(bit)로 구성된다. 각 숫자는 8비트(1바이트)를 나타내며, 4개의 옥텟(octet)으로 이루어져 있다.
- 주소 개수: 2^32개, 약 43억개의 주소를 가질 수 있다.
- 문제점: 인터넷에 연결되는 장치(스마트폰, IoT 기기 등)가 폭발적으로 증가하면서 IPv4 주소가 거의 고갈 상태에 이르렀다. 이 문제 때문에 새로운 주소 체계인 IPv6이 개발되었다.
- IPv6(Internet Protocol Version 6)
- 형식: 2001:0db8:85a3:0000:0000:8a2e:0370:7334와 같이 16진수 숫자를 콜론(:)으로 구분하는 형식이다.
- 길이: 128비트(bit)로 구성된다.
- 주소 개수: 2^128개, 약 340간 개로 사실상 무한대에 가까운 주소를 제공한다.
- 특징:
- IPv4 주소 고갈 문제를 해결한다.
- 보안 기능(IPsec)이 기본으로 포함되어 있다.
- 모바일 환경, IoT 기기에 더 효율적이다.
- 길이가 길어 외우기 어렵다는 단점이 있지만, 압축 표기법을 사용하여 ::로 0을 생략하거나 선행 0을 제거할 수 있다.
IP 주소의 구분
IP 주소는 사용 용도에 따라 두 가지로 나뉜다.
- 공인 IP(Public IP) 공인 IP는 인터넷 서비스 제공업체(ISP)가 할당하는 주소이며, 전 세계에서 유일한 IP 주소이다. 이 주소는 외부 인터넷과 직접 통신할 수 있는 유일한 통로 역할을 한다.
- 특징
- 유일성: 공인 IP는 인터넷 상에서 중복될 수 없다.
- 할당 주체: ISP(KT, SKT, LG U+ 등)이 관리하며, 개인이나 기업에 부여된다.
- 용도:
- 서버: 웹 서버, 메일 서버, FTP 서버 등 외부에서 직접 접속해야 하는 서비스에 사용된다.
- 네트워크의 관문: 가정이나 회사의 공유기(라우터)에 할당되어, 내부 네트워크의 모든 장치가 인터넷으로 나가는 유일한 공인 주소가 된다.
- 사설 IP(Private IP) 사설 IP는 로컬 네트워크(Local Networok), 즉 특정 공간(가정, 회사, 학교 등) 내에서만 사용되는 주소이다. 이 주소는 여러 네트워크에서 중복해서 사용될 수 있다.
- 특징
- 중복 가능성: 192.168.0.1이라는 사설 IP 주소는 전 세계 수많은 가정과 회사에서 동시에 사용되고 있다.
- 할당 주체: 라우터(공유기)가 내부 네트워크에 연결된 장치들에 할당한다.
- 용도: 로컬 네트워크 내의 장치들 간 통신에 사용된다. 예를 들어, 가정 내에서 컴퓨터와 프린터가 통신할 때 사용된다.
- 사설 IP 대역: 국제 표준에 따라 사설 IP로만 사용되도록 예약된 특정 주소 대역이 있다.
- 클래스 A: 10.0.0.0 ~ 10.255.255.255
- 클래스 B: 172.16.0.0 ~ 172.31.255.255
- 클래스 C: 192.168.0.0 ~ 192.168.255.255
공인 IP와 사설 IP를 연결하는 핵심 기술 : NAT
가장 중요한 질문은 “사설 IP를 가진 장치들이 어떻게 외부 인터넷과 통신할 수 있는가?” 이다. 여기에 해답을 주는 기술이 NAT(Network Address Translation)이다. NAT는 IP 주소와 포트 번호를 변환하여, 여러 개의 사설 IP 장치가 하나의 공인 IP를 공유하며 인터넷에 접속할 수 있도록 해주는 기술이다. 우리가 흔히 사용하는 공유기(Router)는 NAT 기능을 내장하고 있다. 우리가 집에서 PC로 웹 서핑을 하는 상황을 예로 들어 NAT의 작동 원리를 설명하겠다.
- 공유기(Router): ISP로부터 203.248.1.50 이라는 공인 IP를 할당받았다고 가정하자.
- PC(내부 장치): 공유기로부터 192.168.0.10 이라는 사설 IP를 할당받았다고 가정하자.
- PC에서 외부로 패킷을 보낼 때 (Outbound Traffic)
- PC의 요청 생성 PC가 www.google.com(IP주소: 172.217.161.46)에 접속하기 위해 패킷을 생성한다.
- 출발지 IP: 192.169.0.10 (사설 IP)
- 출발지 포트: 50000 (임의의 포트)
- 목적지 IP: 172.217.161.46 (구글 서버 IP)
- 목적지 포트: 80 (HTTP Protocol)
- 공유기(NAT Router)의 역할 이 패킷이 공유기에 도착하면, 공유기는 외부 인터넷으로 패킷을 보내기 전에 주소 변환을 수행한다.
- 공유기는 패킷의 출발지 IP(192.168.0.10)을 자신의 공인 IP(203.248.1.50)으로 변경한다.
- 이때, 공유기는 192.168.0.10에서 50000포트로 보낸 요청을 203.248.1.50의 60000포트(임의의 포트)로 변환한다.
- 이 정보를 NAT Table 에 기록한다.
- NAT Table
- 사설 IP: 192.168.0.10
- 사설 포트: 50000
- 공인 IP: 203.248.1.50
- 공인 포트: 60000
- 외부로 패킷 전송 공유기는 변환된 패킷을 구글 서버로 보낸다. 이제 구글 서버는 요청이 203.248.1.50 IP의 60000 포트에서 온 것으로 인식한다.
- 외부에서 PC로 패킷이 돌아올 때 (Inbound Traffic)
- 구글 서버의 응답 구글 서버는 요청에 대한 응답 패킷을 생성하여 보낸다.
- 출발지 IP: 172.217.161.46
- 출발지 포트: 8
- 목적지 IP: 203.248.1.50(공유기의 공인 IP)
- 목적지 포트: 60000(아까 공유기가 변환한 포트)
- 공유기(NAT 라우터)의 역할 이 패킷이 공유기에 도착하면, 공유기는 NAT 테이블을 조회한다.
- 패킷의 목적지 주소(203.248.1.50)와 포트(60000)를 확인하고, NAT 테이블에서 이 정보에 해당하는 사설 IP와 포트를 찾는다.
- 테이블에 기록된 정보를 바탕으로 목적지 IP를 192.168.0.10으로, 목적지 포트를 50000으로 다시 변경한다.
- 내부로 패킷 전달 공유기는 변환된 패킷을 PC(192.168.0.10)으로 전달하고, PC는 응답을 받게 된다. 공유기의 경우 하나의 유일 공인 IP를 가지며, 기기에 할당되는 사설 IP와 포트는 각 기기별로 다르다. 따라서, 할당해준 서로 다른 사설 IP 및 서로 다른 포트를 이용하여 NAT를 진행하며, 사설 IP 및 포트가 다른 기기들과 다르게 고유하기 때문에 외부로 나갔다가 돌아오는 패킷 또한 정확히 찾아낼 수 있다.
IP 할당을 위한 기술: DHCP
공유기나 서버가 내부 네트워크의 장치에 사설 IP를 자동으로 할당하는 기술은 DHCP(Dynamic Host Configuration Protocol) 이다. DHCP는 네트워크 장치에 IP 주소, 서브넷 마스크, 게이트웨이, DNS 서버 주소 등을 자동으로 할당해주는 프로토콜이다.
DHCP의 IP 할당 과정 (DORA)
- Discover(발견): 새로운 장치가 네트워크에 연결되면, IP 주소를 요청하는 “DHCP Discover” 메세지를 브로드캐스트(네트워크 내 모든 장치에 전송)한다.
- Offer(제안): DHCP 서버(대부분 공유기)는 이 메세지를 받고, 자신이 할당 가능한 IP 주소 목록을 확인하여 하나를 골라 ”DHCP Offer” 메세지를 보낸다.
- Request(요청): 클라이언트(장치)는 받은 IP 주소 제안을 수락하기 위해 “DHCP Request” 메세지를 다시 브로드캐스트한다. (여러 DHCP 서버가 있을 경우, 다른 제안은 거절한다는 의미)
- Acknowledgment(승인): DHCP 서버는 클라이언트의 요청을 최종 승인하고, 할당된 IP 주소와 임대 시간(IP Lease Time)등의 정보를 담은 ”DHCP Acknowledgment” 메세지를 보낸다.
- 만약 유저가 새로운 와이파이에 연결한다면,
- 와이파이의 비밀번호를 입력하고 물리적으로 네트워크에 연결을 진행
- 네트워크에 연결된 초기 상태에는 사설 IP 주소가 할당된 상태가 아니며, 자신의 하드웨어 MAC 주소만을 알고 있는 상태임
- 따라서, IP 주소를 얻어야함. 이 IP 주소를 할당해주는 것이 DHCP 서버.
- 현재 DHCP 서버의 공인 IP 또한 모르기 때문에, 특별한 IP 주소(브로드캐스트 주소)로 DHCP Discover BroadCast Message를 보냄.
- 브로드캐스트 주소로 전달된 DHCP Discover 패킷은 해당 DHCP Server에 연결된 모든 장치에게 일괄 전송되고, 이 중 DHCP Server가 가능한 IP 주소를 담아 DHCP Offer 메세지에 IP 주소를 담아 패킷을 보냄
- 클라이언트는 DHCP Server로 부터 받은 패킷을 받았다고 응답해야하므로 DHCP Request 패킷을 다시 브로드캐스트한다. 다른 DHCP 서버로부터 Offer가 온 것에 대해서도 거절 의사를 보내는 것이다.
- DHCP 서버는 클라이언트의 요청을 최종 승인하고, 할당된 IP 주소와 임대 시간 등의 정보를 담은 DHCP Acknowledgment 패킷을 보낸다. 이 과정이 완료되면 DHCP 서버에도 할당된 사설 IP 목록이 갱신되고, 앞으로 해당 사설 IP를 가진 장치가 라우터에 요청을 보내면 NAT를 진행하여 외부 인터넷에서 정보를 가져올 수 있게 된다.
- 만약 유저가 이미 연결했던 네트워크에 다시 연결할 때
- 네트워크를 연결한 장치가 이전에 사용했던 사설 IP를 기억하고 있으므로, DHCP 서버에게 이전에 사용했던 IP 주소를 다시 사용하고 싶다고 DHCP Request 패킷을 보낸다.
- DHCP 서버는 그 IP 주소가 아직 사용 가능한 상태이면 그대로 할당해주고, 이미 다른 장치가 사용 중이거나 다른 정책에 따라 변경이 필요하면 새로운 IP 주소를 할당해준다. DHCP가 승인을 할 때, 임대 시간이라는 개념을 할당해주는데, 시점이 지나면 새로운 IP로 갱신해주는 것이다.
- 만약 유저가 새로운 와이파이에 연결한다면,