Каков механизм, что процесс, слушая localhost отказывается обрабатывать запрос к своему IP-адресу LAN?

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

Быстрый и грязный ответ должен был бы объединить файлы в /usr/share/X11/xkb/symbols/gb и /usr/share/X11/xkb/symbols/pl в новый файл, но также необходимо предоставить информацию через XML для фронтендов (как KDE4), и необходимо было бы, вероятно, считать несколько сотен страниц документации.

Но Вы можете сходить с рук меньше: Вы видели это учебное руководство при создании гибрида de/pl контурная карта?

1
03.12.2012, 20:48
2 ответа

При установке сокета слушания можно выбрать, с каким локальным адресом он связывается. Это, покончили связывание (2) системный вызов. (Можно также принять решение связать его с 0.0.0.0, что означает, слушают на всех локальных адресах).

Вы сказали netcat слушать на localhost. Таким образом, это звонило, связывают (2) с 127.0.0.1 (или подобный) как адрес сокета. Таким образом, ядро связало сокет слушания только с тем адресом.

Когда запрос на установление соединения вошел к 192.168.44.182:20000, ядро посмотрело на список сокетов слушания и не нашло ни один. Таким образом, ядро отказалось от соединения.

Когда запрос войдет к 127.0.0.1:20000, ядро найдет сокет слушания и принятие (2), syscall скажет netcat об этом.

Чтобы иметь netcat слушают во всех интерфейсах, опускают хост: nc -l -p 20000 или альтернативно укажите 0.0.0.0: nc -l 0.0.0.0 -p 20000. Можно также указать определенный IP-адрес, на котором Вы хотите, чтобы это послушало также (192.168.44.182), но затем конечно, nc localhost 20000 будет отклонен.

(Связывающий с localhost часто делается, когда Вы только хотите позволить соединения от той же машины, например, из соображений безопасности.)

3
27.01.2020, 23:29

Каждый сокет имеет 2 характеристики, связанные с ним. Адрес и порт. Сокет, слушающий в каждом интерфейсе на самом деле, слушает на адресе INADDR_ANY, который является 0.0.0.0, таким образом, так как Вы говорите сокету, что он слушает на 127.0.0.1 это проигнорирует все запросы к другим адресам машины.

0
27.01.2020, 23:29
  • 1
    На большей части unixes у Вас может также быть интерфейс, связанный с сокетом. Но очень немного программ поддерживают опцию, поскольку это не портативно, особенно в системах не-Unix. Верный –  BatchyX 03.12.2012, 22:09
  • 2
    @BatchyX, но это - тема, усовершенствованная вне объема этого вопроса. –  Karlson 03.12.2012, 22:11

Теги

Похожие вопросы