15

Если привязать сокет в Python к localhost, 8200 это доступно через http://localhost:8200/. но не http:// xxxx:8200/

Если привязать сокет в Python к xxxx, 8200, machinename, 8200, это доступно через http:// xxxx:8200/ и http:// machinename:8200/, но не http:// localhost:8200/

Я думал, что localhost означает «этот компьютер», и что при его использовании можно было бы «зацикливаться» на IP-адресе компьютера, но, похоже, это разные IP-адреса.

Всегда ли 127.0.0.1 отличается IP-адресом от IP-адреса компьютера?

Обновить:

Я понимаю, что фактические числа разные, но что делает петля?

Например, википедия говорит, что
«указание веб-браузера на URL-адреса http://127.0.0.1/ или http://localhost/ получит доступ к собственному веб-сайту этого компьютера»

но этот веб-сайт также будет доступен в xxxx, и предположительно будет настроен с одним сокетом в xxxx Так как же тогда работают обе ссылки?

заключение:

Я думаю, что я, наконец, понимаю, что 127.0.0.1 и xxxx работают так

--127.0.0.1 ==\
               >- Computer
--x.x.x.x   ==/

и не

--127.0.0.1 ==\
--------------- x.x.x.x >- Computer

или же

--x.x.x.x ==\
--------------- 127.0.0.1 >- Computer

Спасибо всем за помощь

3 ответа3

16

Ответить на ваш вопрос.

127.0.0.1 - это не просто IP-адрес, отличный от IP-адреса компьютера, но и другой интерфейс. 127.0.0.1 не должно быть видно в локальной сети. Это специальный внутренний IP-адрес для петлевого адаптера.

хххх будет вашей сетевой картой.

кстати, 'localhost' - это просто запись в вашем файле hosts, которая указывает на 127.0.0.1

Если вы привязываете сокет к 127.0.0.1:8200, то только клиенты, работающие локально, смогут получить к нему доступ и только с http://127.0.0.1:8200 или http://localhost:8200 (или с записью файла dns или hosts). это указывает на 127.0.0.1).

Сокет, связанный с xxxx:8200, будет доступен только через http:// xxxx:8200 или запись в файле dns или hosts, которая указывает на это.

Привязка сокета к 127.0.0.1 не делает его автоматически доступным также и для интерфейса Ethernet.

Вот почему вы не можете подключиться к хххх:8200

Вы можете привязать порт 8200 ко всем доступным интерфейсам (0.0.0.0), тогда он должен работать.

2

Например, википедия говорит, что «указание веб-браузера на URL-адреса http://127.0.0.1/ или http://localhost/ получит доступ к собственному веб-сайту этого компьютера»

Слегка неточно. Это может сделать так. Точно так же он может не открывать какой-либо веб-сайт, и даже можно отобразить другой внутренний веб-сайт, отличный от того, который вы получаете при использовании своего адреса хххх.

127.0.0.1 указывает на вашу собственную машину, но это не значит, что она будет вести себя так же, как только достигнет вашей машины

Если вы хотите нетехническую аналогию, вы можете рассматривать их как разные двери в ваш дом.

Оба указывают на один и тот же дом, но это не одно и то же. Каждая дверь может привести вас в одну и ту же комнату, или они могут привести вас в другую комнату. Также возможно заблокировать одну дверь, а не другую.

Когда вы настраиваете веб-сайт, вы указываете, к каким адресам привязываться, и часто ответом являются все адреса. (Это эквивалентно тому, что все двери ведут в одну комнату)

Вы также можете указать веб-сайт для привязки только к одному адресу. (Это эквивалентно запиранию всех дверей, кроме одной.)

Если у вас есть два (или более) веб-сайта, вы можете привязать их к отдельным адресам. (Это равносильно тому, что каждая дверь входит в отдельные комнаты).

Пример того, как работают обе ссылки, на моем компьютере с Windows 7 установлен IIS, когда я захожу в IIS Manager и щелкаю правой кнопкой мыши на веб-сайте по умолчанию, он дает мне пункт меню «Изменить привязки». Выбор, который вызывает список привязок. У меня есть только один, но для IP-адреса он имеет *, что означает, что IIS прослушивает все мои IP-адреса.

1

Каждый IP-адрес в системе является независимым и может быть связан с сокетами отдельно, за исключением специального адреса 0.0.0.0, который указывает ОС привязывать сокет ко всем интерфейсам.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .