127.0.0.1 과 localhost의 차이

Kyung yup Lee·2020년 12월 16일
20

네트워크

목록 보기
1/3

우리는 내부적으로 서버를 구축하고 백엔드 서버를 개발할 때 흔히들 localhost:3000 을 사용하곤 한다.

그리고 localhost:3000 과 이것의 ip주소인 127.0.0.1:3000 을 브라우져 창에 입력하면 같은 결과가 나온다.

이것을 루프백이라고 하는데, 자신의 컴퓨터를 스스로 서버로 만들고 그 컴퓨터에서 콜을 보내 응답을 받을 수 있는 것을 말한다. 즉 네트워크를 구축하지 않고도 네트워크 처럼 응답을 보내고 받는 것이 가능한 기능을 뜻한다.

그렇다면 localhost:3000 과 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 서버를 통하지 않고서도 도메인이름으로 접속이 가능하다고 한다.

profile
성장하는 개발자

1개의 댓글

comment-user-thumbnail
2021년 5월 14일

3줄 요약
1. localhost 는 거울이다.
2. 127.0.0.1 : 진짜 나
3. localhost : 거울 속에 비춰진 나

답글 달기