SW/리눅스

Localhost : 로컬호스트 : 개념, 예제, 사용 방법, 개요

얇은생각 2023. 1. 30. 07:30
반응형

컴퓨터 시스템은 호스트 이름 [호스트 시스템 이름] 및 IP 주소로 식별됩니다.

아래 다이어그램은 이를 간략히 보여 줍니다.

 

Localhost : 로컬호스트 : 개념, 예제, 사용 방법, 개요

 

 

마찬가지로 자신을 localhost라고 부르던 모든 컴퓨터 시스템의 공통 이름도 있습니다. 여기서 "localhost"라는 용어는 컴퓨터 네트워킹의 컨텍스트와 관련이 있습니다. 개발자나 시스템 관리자로서의 우리의 여정에서 중요한 역할을 합니다. "로컬 호스트"에는 애플리케이션 테스트, 설명서, 네트워크 성능 테스트 및 사이트 차단과 같은 많은 사용 사례가 있습니다.

 

 

Localhost란

localhost는 호출 프로그램이 실행 중인 컴퓨터 시스템을 가리키는 호스트 이름입니다. 즉, localhost를 호출할 때 기계가 스스로 통신합니다.

이는 네트워크 하드웨어 장애 시에도 기계에서 네트워크 서비스를 확인하는 데 도움이 됩니다. "localhost"를 사용할 때 네트워크 서비스는 루프백이라는 논리적 네트워크 인터페이스를 통해 액세스됩니다. 루프백 인터페이스의 IP 주소는 127.0.0.1입니다. 따라서 localhost는 이름 확인의 일부로 127.0.0.1로 확인됩니다.

 

 

 

루프백 주소란

루프백은 모든 운영 체제에 있는 논리적 네트워크 인터페이스입니다. 이 인터페이스를 통해 전송된 패킷은 동일한 시스템의 동일한 인터페이스로 다시 반환(루핑)됩니다. 따라서 인터페이스를 루프백이라고 합니다.

IPv4 주소 지정을 위한 IETF 표준에 따르면 127.0.0/8의 전체 블록은 네트워크 루프백 목적으로 할당됩니다. 기본 동작으로 루프백 인터페이스는 서버를 설치할 때마다 구성됩니다.

아래 스니펫을 살펴보겠습니다.

ip a show lo

# lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
# inet 127.0.0.1 netmask 255.0.0.0
# inet6 ::1 prefixlen 128 scopeid 0x10<host>
# loop txqueuelen 1000 (Local Loopback)
# RX packets 76238871 bytes 6955286874 (6.9 GB)
# RX errors 0 dropped 0 overruns 0 frame 0
# TX packets 76238871 bytes 6955286874 (6.9 GB)
# TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

 

sudo cat /etc/hosts

# 127.0.0.1 localhost
# 127.0.1.1 sandbox1

# # The following lines are desirable for IPv6 capable hosts
# ::1 ip6-localhost ip6-loopback

 

 

 

패킷 처리 내부 루프백

일반적으로 루프백 패킷은 주소에 따라 다른 IP 패킷과 구별됩니다. 루프백 주소를 가진 루프백 패킷의 처리는 TCP/IP 스택의 링크 계층에서 발생합니다. 이 트래픽은 컴퓨터 시스템 내부로 전달됩니다. 다른 IP 패킷처럼 하드웨어 NIC 카드에 도달하지 않습니다. 또한 라우터가 루프백 IP 주소를 라우팅하면 안 된다는 규칙이 있습니다.

예를 들어 127.0.0.1 주소를 요청하는 경우입니다. 첫 번째 옥텟(127) 때문에 요청이 인터넷으로 전달되지 않습니다. 여기서 TCP/IP 스택은 요청을 인식하고 동일한 시스템으로 다시 라우트합니다.

다음은 로컬 호스트 및 기타 IP 패킷에 대한 패킷 흐름의 간단한 그림입니다.

 

Localhost : 로컬호스트 : 개념, 예제, 사용 방법, 개요 2

 

ping -c 4 localhost

# PING localhost (127.0.0.1) 56(84) bytes of data.
# 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.035 ms
# 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.043 ms
# 64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.041 ms
# 64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.040 ms
# 
# --- localhost ping statistics ---
# 4 packets transmitted, 4 received, 0% packet loss, time 3075ms
# rtt min/avg/max/mdev = 0.035/0.039/0.043/0.008 ms

 

ping -c 4 google.com

# PING google.com (142.250.71.46) 56(84) bytes of data.
# 64 bytes from maa03s35-in-f14.1e100.net (142.250.71.46): icmp_seq=1 ttl=120 time=2.14 ms
# 64 bytes from maa03s35-in-f14.1e100.net (142.250.71.46): icmp_seq=2 ttl=120 time=2.18 ms
# 64 bytes from maa03s35-in-f14.1e100.net (142.250.71.46): icmp_seq=3 ttl=120 time=2.19 ms
# 64 bytes from maa03s35-in-f14.1e100.net (142.250.71.46): icmp_seq=4 ttl=120 time=2.20 ms
# 
# --- google.com ping statistics ---
# 4 packets transmitted, 4 received, 0% packet loss, time 3004ms
# rtt min/avg/max/mdev = 2.147/2.180/2.203/0.051 ms

 

 

 

로컬 호스트를 사용하여 애플리케이션을 테스트

애플리케이션 서비스의 액세스는 먼저 네트워크 인터페이스를 통해 이루어집니다. 응용 프로그램 서비스가 물리적 인터페이스와 매핑된 경우 외부에서 액세스할 수 있습니다. 마찬가지로 응용 프로그램이 논리적 루프백 인터페이스로 매핑된 경우 특정 컴퓨터 시스템에서만 액세스할 수 있으며 외부에서는 액세스할 수 없습니다.

다른 원격 호스트보다 로컬 서버에서 코드를 개발하고 테스트하는 것이 항상 쉽습니다. 이를 위해 프로덕션 도메인 이름을 /etc/hosts 파일의 새 루프백 주소(127.0.1.100)로 매핑합니다. /etc/hosts의 항목은 DNS보다 우선합니다.

아래 스니펫은 로컬 서버에서 원격 tistory 웹 서버로 전송되는 유기적인 ping 응답을 보여줍니다. 도메인 매핑은 두 번째 스니펫에 나와 있습니다.

호스트 파일의 127 세그먼트 IP를 tistory.com에 매핑한 후 출력을 자세히 확인하면 트래픽이 루프백 네트워크 인터페이스로 라우팅됩니다.

ping -c 4 tistory.com

# PING tistory.com (172.67.74.167) 56(84) bytes of data.
# 64 bytes from 172.67.74.167 (172.67.74.167): icmp_seq=1 ttl=59 time=34.5 ms
# 64 bytes from 172.67.74.167 (172.67.74.167): icmp_seq=2 ttl=59 time=34.5 ms
# 64 bytes from 172.67.74.167 (172.67.74.167): icmp_seq=3 ttl=59 time=34.5 ms
# 64 bytes from 172.67.74.167 (172.67.74.167): icmp_seq=4 ttl=59 time=34.5 ms
# 
# --- tistory.com ping statistics ---
# 4 packets transmitted, 4 received, 0% packet loss, time 3005ms
# rtt min/avg/max/mdev = 34.521/34.529/34.541/0.227 ms

 

sudo cat /etc/hosts

# 127.0.0.1 localhost
# 127.0.1.1 sandbox1
# 127.0.1.100 tistory.com
# 
# # The following lines are desirable for IPv6 capable hosts
# ::1 ip6-localhost ip6-loopback

 

ping -c 4 tistory.com

# PING tistory.com (127.0.1.100) 56(84) bytes of data.
# 64 bytes from linuxize.com (127.0.1.100): icmp_seq=1 ttl=64 time=0.074 ms
# 64 bytes from linuxize.com (127.0.1.100): icmp_seq=2 ttl=64 time=0.094 ms
# 64 bytes from linuxize.com (127.0.1.100): icmp_seq=3 ttl=64 time=0.042 ms
# 64 bytes from linuxize.com (127.0.1.100): icmp_seq=4 ttl=64 time=0.055 ms
# 
# --- tistory.com ping statistics ---
# 4 packets transmitted, 4 received, 0% packet loss, time 3062ms
# rtt min/avg/max/mdev = 0.042/0.066/0.094/0.020 ms

 

 

Localhost는 응용 프로그램을 테스트하고 네트워크 문제를 해결하는 데 도움이 되는 프로그램이 실행되는 시스템의 기본 이름입니다. 루프백 네트워크 인터페이스를 통해 로컬 루프 메커니즘을 사용하여 구현됩니다. 네트워크 하드웨어 구성 종속성 없이 소프트웨어를 테스트할 수 있습니다. 컴퓨터 사용자로서 localhost 및 루프백 네트워크 인터페이스라는 용어를 기본적으로 이해하는 것이 중요합니다.

반응형