Localhost

기술노트

localhost

localhost는 현재 사용 중인 자신의 컴퓨터(로컬 호스트)를 가리키는 예약 호스트명이다. 보통 IPv4 주소 127.0.0.1, IPv6 주소 ::1에 매핑되며, 네트워크를 실제로 나가지 않고 운영체제 내부의 루프백(loopback) 인터페이스로 연결된다. 이 이름은 표준에서 특별히 예약되어, 일반적인 DNS 조회나 hosts 파일 설정이 없어도 항상 로컬 머신을 가리키도록 동작한다.

핵심 요약
  • 의미 : 내 컴퓨터 자체를 가리키는 특별한 호스트명
  • 주소 : IPv4 → 127.0.0.1 / IPv6 → ::1
  • 용도 : 개발·테스트, 자기 자신과의 통신, 보안상 외부 노출 없이 서비스 점검
  • 특징 : 대부분의 OS에서 hosts 설정과 무관하게 항상 루프백으로 해석

동작 원리

루프백과 이름 해석

  • 운영체제는 localhost를 루프백 인터페이스로 직접 매핑한다.
  • 많은 시스템에서 DNS/hosts 조회보다 앞서 localhost를 내부 규칙으로 처리한다.
  • Windows의 기본 hosts 파일에는 다음과 같은 주석이 포함되어 있으며, 이는 localhost 해석이 시스템(DNS 클라이언트)에서 자체 처리됨을 뜻한다.
# localhost name resolution is handled within DNS itself.
# 127.0.0.1       localhost
# ::1             localhost

주석 처리되어 있어도 localhost가 정상 동작하는 이유가 여기에 있다.

주소 매핑

  • IPv4: 127.0.0.0/8 대역은 루프백 용도로 예약되며, 통상 127.0.0.1을 사용한다.
  • IPv6: ::1이 루프백 주소로 예약되어 있다.

웹사이트와 웹 서버 동작 방식(맥락 설명)

아래 내용은 localhost를 이해하는 데 도움이 되는 일반적인 웹 접속 흐름이다.

  1. 브라우저 실행과 주소 입력 — 사용자는 브라우저 주소창에 URL을 입력한다.
  1. 네트워크 통신과 프로토콜 — 브라우저는 HTTP/HTTPS 등의 프로토콜로 서버에 요청을 보낸다.
  1. 서버 응답과 HTML — 서버는 요청을 처리해 HTML 등 리소스를 응답한다.
  1. 클라이언트 렌더링 — 브라우저는 받은 HTML/CSS/JS를 렌더링해 화면에 표시한다.

localhost를 서버 주소로 쓰면, 이 전체 과정이 외부 네트워크가 아닌 내 컴퓨터 안에서만 이루어진다(예: `http://localhost:8080`).

사용 예

  • 개발 중인 웹 애플리케이션을 외부에 공개하지 않고 로컬에서 테스트
  • 데이터베이스, 캐시, 메시지 브로커 등에 ‘‘자기 자신’’으로 접속
  • 로컬 프록시·에이전트(예: `http://localhost:3128`) 확인

동작 확인

=== 공통 ===

ping localhost

# IPv6 우선 환경: ::1 응답

# IPv4만 강제 확인:

ping -4 localhost     # Windows
ping -c 4 127.0.0.1   # macOS/Linux

=== Windows ===

[System.Net.Dns]::GetHostAddresses("localhost")
ipconfig /flushdns   # hosts 변경 시 캐시 초기화

=== macOS / Linux ===

getent hosts localhost   # (glibc 기반 Linux)
scutil --dns | grep -i localhost   # (macOS, 선택적)

hosts 파일과의 관계

  • 일반 도메인을 특정 IP로 강제로 보내려면 hosts 파일에 직접 추가해야 한다.
  • 그러나 localhost는 운영체제가 예약 처리하므로, hosts에 주석이거나 항목이 없어도 동작한다.
  • localhost를 다른 주소로 바꿔 매핑하는 것은 권장되지 않는다. 많은 프로그램이 루프백을 전제로 한다.

보안 및 주의 사항

  • localhost 서비스는 원칙적으로 외부에서 접근할 수 없다. 다만 잘못된 바인딩(예: `0.0.0.0` 바인딩)이나 프록시 설정, 컨테이너/가상화 네트워킹으로 인해 의도치 않게 외부 노출이 발생할 수 있으니 주의한다.
  • 개발용 쿠키/리다이렉트/콜백 URL에서 localhost와 실제 도메인 간 혼용 시 CORS·OAuth 리디렉션 불일치 문제가 생길 수 있다.

관련 항목

같이 보기