Обнаружьте все компьютеры, выполняющие сервис на сеть

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

Если я использую UDP, будете, я все еще должен проверить с помощью ping-запросов 192.168. X.0 - 192.168. X.255? Или UDP находит путь вокруг этого? Существует ли способ, которым я могу в некотором роде обойти брандмауэры, таким образом, я не должен перейти к каждому компьютеру в своей сети и позволить входящий трафик данному порту UDP?

Простите мне за то, что были таким образом забывающие на этом, это - мой первый раз, пытаясь реализовать протокол ;)

2
задан 03.12.2010, 00:10

2 ответа

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


Существует очень немного обстоятельств, при которых UDP предпочтителен для TCP:

  • UDP не работает так хорошо на двухстороннюю связь. Необходимо составить собственную ассоциацию запроса/ответа. Даже когда Вы отправляете данные в одном направлении, Вы часто хотите, чтобы получатель подтвердил, который является данной величиной, отправленной в другом направлении.
  • UDP не надежен. Если пакет потерян или дублирован, жесток.
  • UDP перемещается пакетом. Если Ваш пакет является слишком большим и систематически отбрасывается, жестким.
  • UDP представляет некоторые проблемы безопасности, такие как создание легких DDoS-атак. Поэтому много блоков брандмауэров или сильно ограничивают его.
  • Немного протоколов используют TCP, таким образом, по умолчанию закрытые брандмауэры просто не пропускают ни одного из него (кроме DNS, который они сильно ограничивают).
  • UDP не делает управления перегрузкой. При лавинной рассылке сети пакеты будут отброшены случайным образом. TCP, с другой стороны, ограничит дебет тем, что может перенести сеть.

Можно отправить пакет UDP на машину и видеть, отвечает ли что-то, конечно. Можно даже отправить широковещательную передачу UDP и видеть, как далеко она идет, или отправьте многоадресную передачу UDP и надейтесь, что она прибывает.

Существует два требования для сетевого пакета (UDP или TCP) для инициирования действия с целевой машиной. Во-первых, все маршрутизаторы и брандмауэры на пути пакета, должно быть, позволили пакету до места назначения. Во-вторых, должно быть приложение, слушающее на целевой машине. Это могло быть Вашим синхронизатором или сервисным стартером, таким как inetd или сервер для протокола более высокого уровня, который Вы синхронизатор встроите в такой как HTTP (S) или SSH.

Если Ваши пакеты заблокированы брандмауэром, то в принципе нет никакого способа обойти это. Иначе брандмауэр просто не делает своего задания. Конечно, на практике, брандмауэры действительно имеют дыры, например, UPnP (). Вы, более вероятно, сможете обойти брандмауэр по TCP (особенно по HTTPS, который брандмауэры обычно не могут блокировать выборочно, так должны позволить разрешить просмотр веб-страниц), чем по UDP.

Если не будет ничего слушающего на целевом порте, снова, то Вы не сможете взять под свой контроль целевую машину, чтобы заставить его выполнить Ваше приложение. (Который был бы воплощением ненадежности, как некоторые более старые неисправленные версии Windows.) Это - преимущество осуществления контрейлерных перевозок по общему протоколу универсала как SSH: просто необходимо включить один сервис, и затем можно сделать то, что Вы хотите по нему, включая синхронизацию файлов.

2
ответ дан 08.12.2019, 05:52

Если Вы интересуетесь локальной сетью только и предположением, что клиент знает номер порта сервера, клиент мог широковещательно передать сообщение UDP, на которое сервер ответит с одноадресным сообщением, таким образом устанавливая связь.

Или, Вы могли рассмотреть использование некоторого существующего протокола обнаружения, такой как Добрый день/Обнулять Conf или UPnP (Универсальный Plug and Play) для определения местоположения устройств.

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

3
ответ дан 08.12.2019, 05:52

Теги

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