2015-09-10 3 views
1

Я пытаюсь сделать следующее:Отправка уведомлений от облачного сервера устройств в локальной сети

  • У меня есть свой сервер за пределами моей локальной сети
  • У меня есть несколько клиентов на моей локальной сети (за маршрутизатором)

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

Все вопросы, которые я видел, касались конкретных облачных сервисов, таких как облако Google, но меня это не интересует.

Проблема Я облицовкой:

  • сервер будет видеть IP маршрутизатора вместо IP устройства. Скажем, я открываю порт 5555 на клиентах, и сервер отправляет сообщение на IP-адрес маршрутизатора на порт 5555, будет ли маршрутизатор перенаправлен ко всем устройствам/никому из устройств/или только к IP-адресам с переадресацией портов?

Я смущен, потому что: - В случае, если это не представляется возможным, чтобы отправить к конкретному устройству, как можно несколько устройств просматривать Интернет и использовать Telnet/FTP ...? Каким-то образом пакеты находят свой путь к правильному устройству.

Я знаю, что чего-то не хватает, но я не знаю, что это такое, чтобы задать правильный технический вопрос.

Возникает вопрос:

Любые идеи, как отправить конкретное сообщение от сервера к одному из многих клиентов в локальной сети после того, как клиенты регистрируются на сервере?

ответ

1

Ваша ЛВС подключена к внешней сети и, скорее всего, выполняет NAT, так что внутренние IP-адреса отличаются от внутренних во внешней сети.

Широко используемая форма NAT не только переводит IP-адреса, но и номера портов. Это позволяет многим внутренним LAN-устройствам совместно использовать один и тот же IP-адрес во внешней сети. Обычно используют этот маршрутизатор.

Когда устройство во внутренней сети подключается. Маршрутизатор запоминает, какой внешний порт использовался, и направляет любой возвращающийся трафик на правильное внутреннее устройство. Вот как несколько устройств, на которых работает telnet/ftp и т. Д., Могут получить доступ к Интернету в ответ на ваш первый вопрос.

Однако новое соединение, входящее в вашу ЛВС, не может быть направлено на конкретное внутреннее устройство без посторонней помощи. Маршрутизатор не знает, куда отправлять запросы, которые он не помнил ранее.

Однако большинство маршрутизаторов имеют функцию Port Forwarding, где вы можете указать, что делать с запросами к конкретным портам из внешней сети. Если вы настроили переадресацию портов и каким-то образом предоставили эту информацию серверу вне локальной сети. Он сможет отправлять запросы на эти порты, и маршрутизатор передает его на соответствующий внутренний IP-адрес и номер порта, который вы предварительно настроили.

Пожалуйста, сообщите, если вы считаете, что не используете NAT с переводом порта (у него есть несколько разных имен). Затем кто-то еще сможет консультировать

+0

Скажите 2 устройствам доступ в Интернет в то же время. Итак, маршрутизатор делает что-то вроде этого? (порт источника: 10000, dest-порт: 80) для устройства1 и (порт источника: 10001: dest-порт: 80) для устройства2, а сервер отвечает на порт 10001 и порт 10002? Порт источника - порт маршрутизатора, dest port - порт веб-страницы. – Makketronix

+0

Да, это так. Маршрутизатор ожидает ответ и отправляет его на соответствующее внутреннее устройство. Если внешний сервер инициирует связь, маршрутизатор не ожидает трафик, поэтому вам необходимо предварительно настроить перенаправление портов, чтобы помочь ему. –

Смежные вопросы