Введение
Компьютеры идентифицируются по имени хоста [имя хост-компьютера] и IP-адресу.
Точно так же у нас также есть общее имя для всех компьютерных систем, известное как localhost. Здесь термин «локальный хост» связан с контекстом компьютерных сетей. Это играет жизненно важную роль в нашем путешествии в качестве разработчика или системного администратора. Существует множество вариантов использования «localhost», таких как тестирование приложений, документация, тестирование производительности сети и блокировка сайтов.
Что такое локальный хост?
Localhost — это имя хоста, которое относится к компьютерной системе, на которой запущена вызывающая программа, что означает, что машина будет разговаривать сама с собой, когда мы вызываем localhost.
Это помогает нам проверять сетевые службы на машине даже во время сбоев сетевого оборудования. Когда используется «localhost», доступ к сетевым службам осуществляется через логический сетевой интерфейс, называемый loopback. IP-адрес петлевого интерфейса — 127.0.0.1
. Поэтому локальный хост разрешается в 127.0.0.1
как часть разрешения имени.
Что такое петлевой адрес?
Loopback — это логический сетевой интерфейс, присутствующий во всех операционных системах. Пакеты, переданные через этот интерфейс, возвращаются (зацикливаются) на тот же интерфейс на той же машине. Следовательно, интерфейс называется loopback.
В соответствии со стандартами IETF для адресации IPv4 весь блок 127.0.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
Компоненты внутренней обработки пакетов loopback
Как правило, пакеты loopback отличаются от других IP-пакетов своими адресами. Обработка петлевых пакетов с петлевым адресом происходит на канальном уровне стека TCP/IP. Этот трафик будет проходить через сами компьютерные системы. Он не затронет аппаратные сетевые карты, как другие IP-пакеты. Кроме того, существует правило, согласно которому маршрутизаторы не должны маршрутизировать петлевой IP-адрес.
Например, когда мы запрашиваем адрес 127.0.0.1
. Запрос не будет отправлен в Интернет из-за первого октета (127). Здесь стек TCP/IP распознает запрос и перенаправляет его на ту же машину.
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 (143.150.21.36) 56(84) bytes of data.
64 bytes from maa-f13.1e100.net (143.150.21.36): icmp_seq=1 ttl=120 time=2.14 ms
64 bytes from maa-f13.1e100.net (143.150.21.36): icmp_seq=2 ttl=120 time=2.18 ms
64 bytes from maa-f13.1e100.net (143.150.21.36): icmp_seq=3 ttl=120 time=2.19 ms
64 bytes from maa-f13.1e100.net (143.150.21.36): 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
Протестируйте приложение с помощью Localhost
Доступ к сервису приложения происходит сначала через сетевой интерфейс. Если служба приложения сопоставлена с физическим интерфейсом, к ней можно получить доступ из внешнего мира. Аналогичным образом, если приложение сопоставлено с логическим петлевым интерфейсом, к нему можно получить доступ только из этой конкретной компьютерной системы и нельзя получить доступ из внешнего мира.
Всегда проще разрабатывать и тестировать код с локального сервера, а не с другого удаленного хоста. Для этого мы сопоставляем имя нашего производственного домена с новым петлевым адресом (127.0.1.100) в /etc/hosts
. Записи в /etc/hosts имеют приоритет над DNS.
Фрагмент ниже показывает органический ответ на пинг с локального сервера на удаленный веб-сервер Noviello. Отображение домена показано во втором фрагменте. Когда мы тщательно проверяем выходные данные после сопоставления IP-адреса сегмента 127 с Noviello.it в файле хоста, трафик направляется на петлевой сетевой интерфейс.
ping -c 4 noviello.it
PING noviello.it (132.12.73.145) 56(84) bytes of data.
64 bytes from 132.12.73.145 (132.12.73.145): icmp_seq=1 ttl=59 time=34.5 ms
64 bytes from 132.12.73.145 (132.12.73.145): icmp_seq=2 ttl=59 time=34.5 ms
64 bytes from 132.12.73.145 (132.12.73.145): icmp_seq=3 ttl=59 time=34.5 ms
64 bytes from 1132.12.73.145 (132.12.73.145): icmp_seq=4 ttl=59 time=34.5 ms
--- noviello.it 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 noviello.it
# The following lines are desirable for IPv6 capable hosts::1 ip6-localhost ip6-loopback
ping -c 4 noviello.it
PING noviello.it (127.0.1.100) 56(84) bytes of data.
64 bytes from noviello.it (127.0.1.100): icmp_seq=1 ttl=64 time=0.074 ms
64 bytes from noviello.it (127.0.1.100): icmp_seq=2 ttl=64 time=0.094 ms
64 bytes from noviello.it (127.0.1.100): icmp_seq=3 ttl=64 time=0.042 ms
64 bytes from noviello.it (127.0.1.100): icmp_seq=4 ttl=64 time=0.055 ms
--- noviello.it 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 — это имя по умолчанию системы, на которой работает наша программа, которая помогает нам тестировать приложения и устранять неполадки в сети. Это достигается за счет использования механизма локальной петли через сетевой интерфейс обратной связи. Это помогает нам тестировать программное обеспечение без зависимости от конфигурации сетевого оборудования. Как пользователь компьютера, важно иметь базовое понимание терминов локальный хост и петлевые сетевые интерфейсы.