Если привязать сокет в Python к localhost,8200, то это будет доступно черезhttp://localhost:8200/. но нетhttp://xxxx:8200/
Если привязать сокет в Python к xxxx,8200, machinename,8200, то это будет доступно черезhttp://xxxx:8200/иhttp://имя_машины: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
Спасибо всем за помощь
решение1
Чтобы ответить на ваш вопрос.
127.0.0.1 — это не просто другой IP-адрес, отличный от IP-адреса машины, это еще и другой интерфейс. 127.0.0.1 не должен быть виден в локальной сети. Это специальный внутренний IP-адрес для адаптера обратной связи.
xxxx будет вашей сетевой картой.
Кстати, «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.
Вот почему вы не можете подключиться к xxxx:8200
Вы можете привязать порт 8200 ко всем доступным интерфейсам (0.0.0.0), тогда это должно заработать.
Другие особенности адаптера обратной связи:
Интерфейс loopback — это виртуальный интерфейс. Он часто используется, чтобы программы могли общаться друг с другом на одной машине. Это не способ ссылаться на IP-адрес машины. 127.0.0.1 — это IP-адрес виртуального адаптера loopback.
Еще одна особенность адаптера обратной связи заключается в том, что, поскольку он виртуальный, он фактически не передает никаких пакетов на сетевую карту.
решение2
Например, Википедия говорит, что «указание веб-браузеру URL-адресовhttp://127.0.0.1/илиhttp://localhost/будет иметь доступ к собственному веб-сайту этого компьютера.
Немного неточно. Этоможетсделайте это. Точно так же это может не открыть ни один веб-сайт, и даже возможно отобразить другой внутренний веб-сайт, нежели тот, который вы получаете, используя свой адрес xxxx.
127.0.0.1 указывает на вашу машину, но это не значит, что он будет вести себя так же, как только достигнет вашей машины.
Если вам нужна нетехническая аналогия, вы можете считать их разными дверями в вашем доме.
Оба указывают на один и тот же дом, но это не одно и то же. Возможно, что каждая дверь приведет вас в одну и ту же комнату, а может привести в другую. Также возможно запереть одну дверь и не запереть другую.
При настройке веб-сайта вы указываете, к каким адресам следует привязываться, и довольно часто ответом оказывается «все адреса». (Это эквивалентно тому, что все двери ведут в одну комнату)
Вы также можете указать веб-сайт, который будет привязан только к одному адресу. (Это эквивалентно запиранию всех дверей, кроме одной.)
Если у вас есть два (или более) веб-сайта, вы можете привязать их к разным адресам. (Это эквивалентно тому, что каждая дверь ведет в разные комнаты).
Пример того, как работают обе ссылки, на моем компьютере с Windows 7 установлен IIS, когда я захожу в диспетчер IIS и нажимаю правой кнопкой мыши на Default Web Site, он дает мне пункт меню «Изменить привязки». Выбрав его, я вывожу список привязок. У меня есть только одна, но для IP-адреса она имеет *, что означает, что IIS прослушивает все мои IP-адреса.
решение3
Каждый IP-адрес в системе независим и может быть привязан к сокетам по отдельности, за исключением специального адреса 0.0.0.0, который указывает ОС на необходимость привязать сокет ко всем интерфейсам.