[TIL / 네트워크] localhost 의 정체

알락·2022년 10월 31일

Network banner

우리가 곧잘 사용하던 localhost. 간단한 웹 프로젝트를 진행해보면 어김없이 localhost를 사용하게 되는 경우가 꼭 생긴다. 보통 localhost127.0.0.1이라는 IP주소와 동일하게 사용된다.
간단한 웹서버를 만들어 브라우저로 접속해보자.

simple webserver ver.string

웹브라우저의 URL 입력창을 보면 localhost를 확인할 수 있다. 그리고 똑같은 부분을 127.0.0.1로 바꿔도 똑같은 결과를 받아 올 수 있다.
simple webserver ver.num

지금껏 그냥 localhost가 내부에서 실행하는 웹 어플리케이션을 동작시키기 위해서 사용하는 주소라고 생각했다. 하지만 Docker를 학습하면서 각종 컨테이너가 각자의 프로세스를 갖고 실행되고 있는 프로세스에 접근하려고 하니, 이제껏 신경도 안 써봤던 IP 주소의 중요함을 보았다. 이번 기회에 localhost가 어떤 건지 제대로 파헤쳐볼려고 한다.

localhost

localhost는 위에서 언급한 바 있지만 작업중인 기기 내부에서 실행시킨 웹 프로그래밍에 접근하기 위해서 사용한다. 위키백과에서는 다음과 같이 정의한다.

localhost(로컬호스트)는 컴퓨터 네트워크에서 사용하는 루프백 호스트명으로, 자신의 컴퓨터를 의미한다. IPv4에서의 IP 주소는 127.0.0.1[1]이며, IPv6에서는 ::1(0:0:0:0:0:0:0:1의 약자)[2]로 변환된다.

아직 localhost의 실체가 안 잡힌다. 어떤 식으로든 localhost라는 문자열이 맵핑이 되는 것을 확인해보고 싶다. 그래서 직접 찾아봤다.
localhost127.0.0.1의 관계를 정의해놓은 파일은 다음에 존재했다. (참고: Mac OS 의 경우다.)

> /priavte/etc cat hosts

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1	localhost
255.255.255.255	broadcasthost
::1             localhost

이제 localhost가 유령같은 존재에서 실체가 있는 존재로 바뀐 것 같다.
localhost라는 명칭에 대해서도 자체적으로 유래를 정의해보고 싶다. 보통 우리는 인터넷을 사용할 때, URI를 입력하게 된다. 예시로 https://velog.io를 통해서 우리는 벨로그 플랫폼에 접속하게 된다. 이 주소 속에 host가 존재한다. velog.io이다. 사실 이 호스트는 3.38.26.27라는 IP 주소와 맵핑이 된다. 그리고 이 IP주소도 호스트다. 우리가 익숙하게 사용 가능한 문자로 주소 표현 방식인 DNS와 숫자로 표현되는 IP의 관계 정보는 DNS 서버에서 저장을 한다.
localhost는 그래서 일반적인 웹 소통방식인 DNS의 역할을 하며 local에서 이용이 가능한 host를 지칭한다고 생각한다.

참고

profile
블록체인 개발 공부 중입니다, 프로그래밍 공부합시다!

0개의 댓글