우디의 개발스터디

[네트워크] localhost 와 127.0.0.1

by 개발자 우디

웹 개발 업무를 하다 보면 자연스럽게 주소창에 localhost:8080이나 127.0.0.1:8080을 입력해 로컬 환경에서 테스트를 해보고는 한다. 거의 매일같이 사용하는데 막상 정확한 원리를 모르는 것 같아서 찾아봤다.

 

우선 루프백 이라는 것부터 설명하자면

자신의 로컬 PC를 스스로 서버로 만들고 그 로컬 PC 내에서 요청을 보내고 응답을 받을 수 있는 것이다.

 

쉽게 말해 내 PC 환경만으로 별도의 외부서버와 통신하는 것처럼 요청과 응답을 주고받을 수 있다는 뜻이다. 운영체제는 이런 루프백을 위해 고정된 아이피와 호스트네임을 제공하는데 그것이 바로 127.0.0.1localhost이다. 그렇기 때문에 127.0.0.1은 인터넷상에 일반 IP로 쓸 수 없게 지정되어 있다. OS에 귀속되는 가상의 주소라고 생각하면 될 것 같다.

 

그렇다면 localhost:8080 과 127.0.0.1:8080은 어떤 차이가 있을까?

  • localhost:8080 은 www.google.com 이라고 치면
  • 127.0.0.1:8080 은 142.250.76.132(구글의 응답 ip주소)라고 생각하면 된다.

구글의 ip주소 확인

사용자가 웹 브라우저에 입력하는 사이트 url은 DNS(domain name server) 을 통해 ip 주소로 변환되게 되고, 이를 통해 요청과 응답을 주고받는 연결이 가능해진다. 참고로 루프백은 내 로컬 PC가 내 로컬 PC에 요청과 응답을 주고받는 기능이기 때문에, DNS 서버를 통해 ip주소로 변환할 수가 없다.

 

따라서 OS가 해당 부분을 조정해줘야 하는데, 그것을 담당하는 부분이 OS hosts 파일의 redirect rules이다.

 

해당 hosts 파일이 존재하는 윈도우 파일 경로

C\Windows\System32\drivers\etc\hosts

 

여기에서 localhost 를 특정 ip로 redirecting 시킬 것인지 지정할 수 있는데, 만약 이 부분에서 localhost의 redirecting ip를 다르게 지정해 놓았다면 localhost:8080을 주소창에 입력하더라도 로컬 서버로 접근이 불가능하다.

내 PC의 hosts 파일

위에 보이는대로 localhost의 ip주소가 지정이 되어있다. 위는 ip.v4 아래는 ip.v6 환경에서 redirecting 되는 내용이다.
참고로 해당 파일에 특정 사이트의 도메인과 ip 주소의 redirecting rules를 지정해두면 DNS 서버를 거치지 않고 도메인 네임만으로도 접속이 가능하게 할 수 있다.

 

 

블로그의 정보

우디의 개발스터디

개발자 우디

활동하기