본문 바로가기
공부

localhost에 대하여

by 실패전문개발자 2025. 4. 14.

localhost를 자주 사용하는데 자세히 알아본 적은 없는 것 같아 알아봤습니다.

localhost는 컴퓨터 네트워크에서 자기 자신을 가리키는 주소입니다.

개발을 할 때 웹서버를 띄우고 localhost를 접속하여 디버깅을 합니다.

 

127.0.0.1

localhost는 도메인입니다.

내 컴퓨터를 의미하는 도메인 이름으로 DNS나 hosts 파일을 통해 IP로 변환됩니다.

 

127.0.0.1은 IP주소입니다.

내 컴퓨터를 의미하는 루프백 IP이고, 직접 IP로 접근할 수 있습니다.

 

왜 127.0.0.1이 localhost가 된 것인가?

  • 루프백(Loopback) 주소초창기 인터넷 프로토콜 설계 당시, 자기 자신에게 네트워크 요청을 보내는 기능이 필요했습니다.
  • 실제 외부 네트워크를 거치지 않고, 내부적으로 네트워크 처리를 흉내 내야 했습니다.
  • 이를 위해 루프백 인터페이스라는 개념이 등장했고, 이 인터페이스에 할당된 특별한 IP 주소가 127.0.0.1입니다.

왜 127.0.0.1?

  • 127.0.0.0/8 대역(127.0.0.0 ~ 127.255.255.255)은 IP ClassA 대역의 마지막 블록입니다.
  • 일반 네트워크 할당보다 특수 목적에 할당하기 적합하다고 여겨졌습니다.
  • 당시 운영체제와 라우팅 소프트웨어는 비교적 단순했기 때문에 127로 시작하는 IP를 모두 루프백 처리하도록 하면 구현이 쉬웠습니다.
  • 즉 127.0.0.0/8 대역은 모두 루프백으로 사용이 가능한데 그중 대표되는 IP가 127.0.0.1입니다.

RFC 문서 정의

  • RFC 3300 문서에서 이렇게 정의되어 있습니다.
  • "This is ordinarily implemented using only 127.0.0.1/32 for loopback"
  • 이 이후로 127.0.0.1은 표준 루프백 주소로 사용되었고, 전 세계 운영체제와 네트워크 스택에 적용되었습니다.

localhost 통신 과정

개발자가 톰캣을 보통 8080 포트에 띄운다고 가정을 하고, http://localhost:8080에 접속을 한다고 가정을 하겠습니다.

  1. http://localhost:8080로 http 요청 송신
  2. localhost를 운영체제는 hosts 파일을 확인하고 127.0.0.1로 변환
  3. 브라우저에서 요청이 들어오면 운영체제는 네트워크 스택을 통해 처리
    • 이때 물리적인 네트워크 인터페이스를 사용하지 않고 루프백 인터페이스를 사용
    • 루프백 인터페이스는 127.0.0.1에 바인딩된 가상의 네트워크 인터페이스
    • 운영체제의 네트워크 스택이 패킷을 자기 자신에게 보내는 것처럼 작동
  4. 실행시킨 웹서버가 요청을 받고 응답을 생성해서 자신에게 다시 보내는 방식으로 응답을 전송 (이때 통신은 외부 네트워크를 전혀 거치지 않음, 운영체제 내부에서만 동작함)

 

'공부' 카테고리의 다른 글

recoil 소개  (0) 2022.06.22
쿠버네티스 학습  (0) 2022.03.24
RabbitMQ vs Kafka vs Redis  (0) 2022.03.11
Log4j 학습  (0) 2022.01.28
Apache vs NGINX, 그리고 NGINX 설정  (0) 2022.01.26