naver.com이나 google.com처럼 짧은 이름 하나만 입력해도 브라우저는 정확히 원하는 서버를 찾아갑니다. 그런데 컴퓨터끼리는 사실 이름이 아니라 숫자로 된 주소로만 서로를 알아봅니다. 우리가 친구 이름만 기억해도 전화번호부가 대신 번호를 찾아주는 것과 똑같은 원리입니다.
이 글에서는 그 숫자 주소, 즉 IP 주소가 도메인과 어떻게 연결되는지부터 시작해서 명령어 한 줄로 확인하는 방법, 클릭 몇 번이면 되는 온라인 도구, 코드로 자동화하는 방법, 그리고 같은 사이트인데 확인할 때마다 IP가 다르게 나오는 이유까지 하나씩 차근차근 짚어보겠습니다. 평소 궁금했지만 검색해도 뭔가 부족했던 부분들까지 최대한 자세히 풀어보려고 합니다.
목차
1. 도메인과 IP 주소는 어떻게 연결되어 있을까
2. 명령어와 온라인 도구로 IP 주소를 확인하는 방법
3. 프로그래밍으로 IP 주소를 조회하는 방법
4. 하나의 사이트에 여러 IP 주소가 존재하는 이유
#1. 도메인과 IP 주소는 어떻게 연결되어 있을까
1) IP 주소란 정확히 무엇일까
IP 주소는 인터넷에 연결된 기기마다 부여되는 고유한 번호입니다. 우리 집 주소처럼, 이 번호가 있어야 데이터가 정확한 곳으로 전달됩니다. 택배를 보낼 때 주소가 없으면 아무리 정확한 물건이라도 도착할 곳을 못 찾는 것과 같은 이치입니다.
(1) IPv4와 IPv6, 뭐가 다를까
① IPv4 - 192.168.1.1처럼 점으로 구분된 4개의 숫자입니다. 각 자리는 0~255까지 표현 가능하며, 이론상 약 43억 개의 주소를 만들 수 있습니다.
② IPv6 - 훨씬 긴 형태의 새 방식으로, 스마트폰과 IoT 기기가 폭증하면서 IPv4 주소가 부족해지자 도입됐습니다. 한 사이트가 두 방식을 동시에 가진 경우도 흔합니다.
(2) 공인 IP와 사설 IP의 차이
집이나 회사에서 쓰는 공유기는 여러 기기에 사설 IP(192.168.x.x 등)를 나눠줍니다. 반면 인터넷 회사가 공유기에 부여하는 공인 IP는 외부 세계에서 우리 집을 찾아오는 진짜 주소입니다. 우리가 nslookup으로 확인하는 웹사이트의 IP는 대부분 공인 IP입니다.
. . . . .
2) 도메인 이름은 왜 쓰는 걸까
숫자만으로도 통신이 가능한데 왜 굳이 이름을 쓸까요? 답은 간단합니다. 사람이 숫자를 외우기는 어렵기 때문입니다. 이 변환을 대신해주는 시스템이 DNS(Domain Name System)이며, 일종의 '인터넷 전화번호부'라고 보면 됩니다.
(1) DNS 조회는 어떤 순서로 진행될까
① 로컬 캐시 확인 - 내 컴퓨터나 공유기가 예전에 조회한 결과를 저장해뒀는지 먼저 확인합니다.
② 재귀 리졸버 요청 - 캐시에 없으면 인터넷 회사의 DNS 서버에 물어봅니다.
③ 루트·최상위 도메인 서버 조회 - .com, .kr 같은 최상위 도메인을 관리하는 서버를 거쳐 어느 서버가 답을 알고 있는지 안내받습니다.
④ 권한 있는 네임서버 응답 - 해당 도메인을 실제 관리하는 네임서버가 최종 IP 주소를 알려주고, 그 결과가 다시 저장(캐시)됩니다.
(2) 캐시와 TTL은 왜 중요할까
DNS 응답에는 TTL(Time To Live)이라는 값이 함께 옵니다. 이 시간 동안은 다시 물어보지 않고 저장된 결과를 그대로 씁니다. 그래서 사이트를 이전 서버로 옮겨도 TTL이 끝나기 전까지는 예전 IP로 접속되는 경우가 생깁니다. 보통 몇 분에서 하루 정도로 설정됩니다.
#2. 명령어와 온라인 도구로 IP 주소를 확인하는 방법
1) Windows 명령 프롬프트로 확인하기
가장 정확한 방법은 명령어를 직접 입력하는 것입니다. Windows키+R을 누르고 "cmd"를 입력하면 검은 화면(명령 프롬프트)이 열립니다.
"Address:" 뒤에 나오는 숫자가 IP 주소입니다. "Non-authoritative answer"는 오류가 아니라 이전에 저장된 정보를 보여준다는 뜻이니 걱정하지 않아도 됩니다.
(2) ping으로 상태까지 함께 확인하기
IP 주소를 확인하면서 사이트가 실제로 응답하는지도 보고 싶다면 ping이 더 유용합니다.
ping naver.com
Pinging naver.com [223.130.200.107] with 32 bytes of data:
Reply from 223.130.200.107: time=15ms
"Reply from..."이 뜬다면 사이트가 정상 작동 중이라는 뜻이고, time 뒤의 숫자가 작을수록 응답 속도가 빠른 것입니다.
(3) tracert로 경로까지 추적하기
접속이 느릴 때는 tracert naver.com(맥/리눅스는 traceroute)을 입력하면 내 컴퓨터에서 목적지 서버까지 거쳐가는 중간 경유지들을 순서대로 보여줍니다. 어느 구간에서 지연이 생기는지 짐작할 수 있어 인터넷 속도 문제를 진단할 때 자주 쓰입니다. Mac이나 Linux라면 dig naver.com 명령어의 "ANSWER SECTION"에서도 같은 IP 정보를 확인할 수 있습니다.
. . . . .
2) 설치 없이 웹사이트로 바로 확인하기
명령어가 번거롭다면 온라인 도구가 훨씬 편합니다. 도메인만 입력하면 바로 IP 주소를 보여줍니다.
도구
특징
whatismyip.com
'Domain to IP' 메뉴에 주소만 입력하면 바로 결과가 나옵니다.
dnschecker.org
전 세계 여러 지역에서 확인한 결과를 한 번에 비교할 수 있습니다.
ipinfo.io
IP 주소와 함께 서버 위치를 지도로도 보여줍니다.
mxtoolbox.com
IP 조회 외에도 메일 서버, 블랙리스트 등록 여부 등을 함께 점검할 수 있습니다.
이런 도구들은 프로그램 설치 없이 웹브라우저만 있으면 되기 때문에, 컴퓨터가 익숙하지 않은 분들에게도 가장 부담 없는 방법입니다.
. . . . .
3) 브라우저 개발자 도구로 지금 접속한 서버 보기
"지금 내가 보고 있는 이 페이지는 실제로 어느 서버에 연결된 걸까?"라는 궁금증에는 브라우저 개발자 도구가 답이 됩니다.
(1) 크롬(Chrome)에서 확인하기
① 확인하려는 사이트에 접속한 뒤 F12를 눌러 개발자 도구를 엽니다.
② 위쪽의 Network 탭을 클릭합니다.
③ F5로 새로고침한 뒤 맨 위 항목을 클릭합니다.
④ Headers 패널에서 Remote Address 값을 확인합니다.
(2) 파이어폭스(Firefox)에서 확인하기
방식은 크롬과 거의 같으며, 항목 이름만 Remote IP로 다릅니다. F12로 개발자 도구를 연 뒤 Network 탭에서 새로고침하고 첫 항목의 Headers를 확인하면 됩니다. 이 값은 지금 실제로 연결된 서버 주소이기 때문에 명령어로 확인한 결과와 다를 수 있다는 점도 함께 기억해두면 좋습니다.