우리는 내부적으로 서버를 구축하고 백엔드 서버를 개발할 때 흔히들 localhost:3000 을 사용하곤 한다.
그리고 localhost:3000 과 이것의 ip주소인 127.0.0.1:3000 을 브라우져 창에 입력하면 같은 결과가 나온다.
이것을 루프백이라고 하는데, 자신의 컴퓨터를 스스로 서버로 만들고 그 컴퓨터에서 콜을 보내 응답을 받을 수 있는 것을 말한다. 즉 네트워크를 구축하지 않고도 네트워크 처럼 응답을 보내고 받는 것이 가능한 기능을 뜻한다.
비유적으로 localhost:3000 은 www.naver.com 이고
127.0.0.1:3000 은 125.209.222.141(네이버 ip주소) 라고 생각하면 될 듯 하다.
우리가 브라우져에 입력하는 사이트 url은 DNS(domain name server) 을 통해 ip 주소로 변환되게 되고 이를 통해 통신이 가능해진다.
루프백은 내 컴퓨터가 내 컴퓨터에 응답을 보내고 받는 기능이기 때문에, DNS 서버를 통해 ip주소로 변환할 수 있는 기능이 없다.
때문에 OS가 이를 조정을 해주어야 되는데, 그것을 담당하는 부분이 OS hosts 파일의 redirect rules이다.
여기에서 localhost 를 어떤 ip로 redirecting 시켜줄지를 지정해줄 수 있는데, 만약 이 부분에서 localhost의 redirecting ip를 다르게 지정해 놓았다면 localhost:3000을 브라우져에 입력하더라도 원하는 결과를 얻지 못할 수 있다는 것이다.
# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
위는 내 운영체제의 hosts 파일을 까본 것이다
보이는대로 localhost의 ip주소가 지정이 되어있다. 위는 ip.v4 아래는 ip.v6 환경에서 redirecting 되는 내용이다.
응용해서 이 파일에 특정 사이트의 도메인과 ip주소의 redirecting rules를 입력해 놓으면 DNS 서버를 통하지 않고서도 도메인이름으로 접속이 가능하다고 한다.