Перейти к содержимому

Броадкаст и обнаружение ​

Экран Броадкаст (Броадкаст и обнаружение) отправляет одно содержимое UDP сразу на много адресов и слушает с другой стороны, чтобы увидеть, кто ответит. С его помощью можно найти устройства в сети, проверить, что multicast-поток доходит до приёмника, или сыграть роль устройства, которое отвечает на пробы обнаружения.

  • Блок Передатчик отправляет на список хостов, широковещательный адрес, multicast-группу или на каждый хост подсети — один раз или снова и снова как маяк.
  • Блок Приёмник обнаружения слушает порт, вступает в multicast-группы, перечисляет каждого пира, который с ним говорит, и может отвечать на пробы.

DANGER

Широковещательная и multicast-рассылка и обход подсети достигают каждого устройства в сегменте сети, а не только того, которое вы имеете в виду, а маяк делает это снова и снова. Сначала проверьте, в какой сети вы находитесь, и отправляйте только в сети, которыми вы владеете или которые вам разрешено тестировать. Ограничения ниже — это ограничители, а не разрешение.

Отправка ​

  1. Выберите режим в поле Режим (см. ниже).
  2. Введите адресата: название поля зависит от режима. В сети с адресом IPv4 кнопка моя подсеть заполняет его по адресу этого компьютера.
  3. Выберите Полезная нагрузка и заполните его.
  4. Нажмите Отправить один раз: на каждый адрес уходит по одной датаграмме.

Режимы ​

РежимАдресатЧто происходитПо умолчанию
СписокЦели: записи IP:port или host:port, разделённые запятыми, точками с запятой или переводами строки — пробел их не разделяет. Имя разрешается, берётся его адрес IPv4, если он есть.По одной датаграмме на каждый адрес127.0.0.1:9000, 127.0.0.1:9001
БроадкастАдрес: 255.255.255.255:port или адрес, оканчивающийся на .255Одна датаграмма, которую получает каждый хост в локальной сети. Маршрутизаторы её дальше не передают.255.255.255.255:9000
MulticastАдрес: группа от 224.0.0.0 до 239.255.255.255 с портомОдна датаграмма в группу; её получают только слушатели, вошедшие в группу239.1.1.1:9000
ОбходCIDR-блок, a.b.c.d/nn, и ПортОдна датаграмма на каждый пригодный хост блока, как unicast — для устройств, которые игнорируют широковещание192.168.1.0/24, порт 9000

При обходе адреса сети и широковещательный пропускаются (кроме /31 и /32), а базовый адрес, не совпадающий с адресом самой сети, округляется вниз до него: 192.0.2.77/30 обходит 192.0.2.77 и 192.0.2.78. Обход охватывает не более 1024 хостов, поэтому самый широкий блок — /22 (1022 хоста); более широкий отклоняется с указанием префикса, до которого его нужно сузить.

Широковещание, multicast-группы, обходы и подписки приёмника обнаружения на группы работают только по IPv4: в IPv6 широковещания нет. Режим Список может называть и хосты IPv6 (см. Параметры сокета).

Кнопка моя подсеть подставляет x.y.z.10:9000, x.y.z.11:9000 в режиме Список, x.y.z.255:9000 в режиме Броадкаст и x.y.z.0/24 в режиме Обход — по адресу этого компьютера x.y.z.w. Она исходит из сети /24.

Содержимое ​

Полезная нагрузкаЧто отправляется
OSCOSC-сообщение: OSC-адрес и типизированные Аргументы, как на экране OSC. По умолчанию /hello/discover с текстом who-is-there.
текстТекст в UTF-8 ровно в том виде, как набран, без терминатора. По умолчанию HELLO-PROBE.
сырой hexБайты (hex) байт в байт — чтобы воспроизвести захваченный кадр или говорить на двоичном протоколе обнаружения. Пары шестнадцатеричных цифр; всё остальное между ними игнорируется. По умолчанию 48 45 4c 4c 4f.

Параметры сокета ​

Пункт параметры сокета открывает ещё три параметра:

ПараметрЧто этоПо умолчанию
Локальный адрес (источник)Локальный IP:port, с которого уходят датаграммы. Зафиксируйте его, чтобы выбрать сетевую карту или порт-источник, на который отвечает устройство. 0.0.0.0:0 — любой.0.0.0.0:0
TTL / хопыЧерез сколько маршрутизаторов может пройти датаграмма, 1–255. Для multicast это предельное число хопов: 1 оставляет её в этой сети.1
возвращать копию на этот хостТолько для multicast: доставлять датаграммы группы и на этот компьютер, чтобы слушатель на нём их слышалвключено

Если в поле Локальный адрес (источник) оставлено значение по умолчанию, датаграммы уходят с сокета IPv4, а если все адресаты IPv6 — с сокета IPv6. Список, где есть и те и другие, отправляется с сокета IPv4, и его адресаты IPv6 завершаются ошибкой; отправляйте их отдельным списком или задайте в поле Локальный адрес (источник) адрес IPv6.

Результат ​

Блок Последняя отправка показывает, что ушло: Целей, Пакеты, Объём и Ошибки, а также первые восемь адресатов, до которых дошло («… ещё n» для остальных). Ошибка по одному адресату не останавливает остальные; строка консоли называет, сколько отправок не удалось.

Повтор в виде маяка ​

Маяк отправляет один и тот же раунд — по одной датаграмме на каждый адрес — по расписанию, пока вы его не остановите. Он нужен устройствам, которые ждут периодического объявления.

  1. Настройте режим, адресата и содержимое, как для одиночной отправки.
  2. В разделе Повторять как маяк задайте Темп (/с), а если маяк должен остановиться сам, — Раундов или Секунд.
  3. Нажмите Запустить маяк. Завершить маяк можно кнопкой Остановить маяк или остановкой его задачи в полосе задач.
ПолеЧто этоПо умолчанию
Темп (/с)Раундов в секунду; должно быть больше 02
РаундовОстановиться после стольких раундов; 0 — без ограничения0
СекундОстановиться через столько секунд; 0 — без ограничения0

Темп, умноженный на число адресатов, не может превышать 50 000 датаграмм в секунду. Поэтому обход /24 (254 хоста) можно повторять не чаще примерно 196 раз в секунду. Пока маяк работает, Последняя отправка показывает Целей (число адресатов в каждом раунде, начиная с первого отчёта), итоги, Раундов и Пак/с (датаграмм в секунду); значения обновляются четыре раза в секунду, а кнопка Отправить один раз недоступна. Маяк, у которого больше 32 датаграмм завершились ошибкой и ни одна не отправлена — нет маршрута, широковещание запрещено, — останавливается сам и называет причину.

Прослушивание устройств ​

Блок Приёмник обнаружения занимает порт UDP и записывает каждого пира, который на него отправляет: то, что отвечает на пробу, или то, что устройство объявляет само.

  1. Задайте поле Адрес прослушивания — порт, на который отправляют устройства.
  2. Для multicast перечислите группы в поле Подписка на multicast-группы.
  3. Нажмите Слушать. Параметры блокируются, пока вы не нажмёте Остановить.
ПолеЧто этоПо умолчанию
Адрес прослушиванияГде слушать, IP:port. 0.0.0.0 слушает на всех сетевых картах.0.0.0.0:9000
Подписка на multicast-группыГруппы IPv4 multicast, в которые нужно вступить, через запятую; пусто — только unicast и широковещание239.1.1.1
ИнтерфейсIPv4-адрес сетевой карты, на которой вступать в группы; пусто — выбирает системапусто
делить портСлушать порт, который использует и другая программа (SO_REUSEADDR). Работает, только если и та программа разрешает совместное использование.включено
отвечать на запросыОтвечать на пробы, как это делало бы устройство (ниже)выключено

Пиры ​

Список Пиры показывает, кто что-либо отправил, самые недавние сверху; над ним — число увиденных пиров, услышанные пакеты и отправленные ответы:

СтолбецЧто в нём
ПирIP:port отправителя; точка рядом показывает, слышали ли его за последние 3 секунды
Прот.osc, если его последняя датаграмма декодировалась как OSC, иначе udp
ПакетыСколько он отправил
ДавностьСекунд с его последней датаграммы
Последнее сообщениеЕго последняя датаграмма: OSC-адрес и аргументы или начало текста

Список обновляется несколько раз в секунду и вмещает до 512 пиров; сверх этого пакеты по-прежнему считаются, но у новых пиров строки нет.

Ответы на пробы ​

С параметром отвечать на запросы приёмник играет роль устройства: на каждую полученную датаграмму он отвечает с порта прослушивания на адрес и порт отправителя.

ПолеЧто этоПо умолчанию
Полезная нагрузкаОтвет: OSC, текст или hex, как при отправкеOSC /hello/here с текстом signal-lab
Задержка ответа (мс)Подождать столько перед ответом, как это делает медленное устройство0
Только если содержитОтвечать только на датаграммы, декодированный текст которых содержит это — OSC-адрес и аргументы или начало текста; пусто — на каждуюпусто

Приёмник никогда не отвечает на датаграмму, идентичную его собственному ответу, поэтому два приёмника, нацеленные друг на друга, не будут бесконечно отвечать друг другу.

Брандмауэры и общие порты ​

Широковещательный и multicast-трафик с других компьютеров по умолчанию блокируется большинством брандмауэров Windows: разрешите Signal Lab в частных сетях, когда приложение предложит. Широковещание никогда не проходит через маршрутизатор. Чтобы слушать порт, который уже занят настоящей службой, обе стороны должны разрешить совместное использование (здесь — делить порт); без этого занятый порт отклоняется с подсказкой включить его. См. Устранение неполадок.

В Инспекторе ​

Когда захват включён, трафик экрана появляется с протоколом osc или udp — в зависимости от содержимого:

ИсточникЧто этоСколько
broadcastОтправить один раз: каждая датаграмма с вердиктом fan-out, broadcast, multicast или sweep; неудавшаяся — с error: …каждая
beaconРаунды маякане более одного раунда за 50 мс
discoveryДатаграммы, которые получает приёмникне более одной за 40 мс
discoveryЕго ответы, с вердиктом auto-replyкаждый

То, что Инспектор опускает у маяка или приёмника, подсчитывается: следующий нарисованный им кадр несёт это число в вердикте, +n not shown (для маяка — по одному кадру на каждый адрес каждого пропущенного раунда). См. Инспектор.

На сервере или в Docker ​

На сервере экран отправляет и слушает в сети сервера. В Docker широковещание, multicast и обнаружение достигают локальной сети, только когда контейнер использует сеть хоста (--network host) на хосте Linux. В сети-мосте Docker по умолчанию или в Docker Desktop работает только unicast к хостам, до которых контейнер может добраться.

В других местах ​

  • signallab send udp отправляет одну датаграмму на один хост; широковещания, multicast и обхода из командной строки нет.
  • Узел UDP-датаграмма отправляет текстовую датаграмму на один или несколько хостов, а узел Ждать UDP ждёт датаграмму. См. UDP и TCP.
  • Чтобы сыграть роль устройства, которое отвечает по правилам — по нескольким правилам, с ответами, собранными из того, что пришло, — используйте эмулятор UDP-устройство или OSC-устройство. См. Эмуляторы.

Проблемы ​

Что вы видитеОбычная причина
… is not a broadcast addressРежим Броадкаст принимает 255.255.255.255:port или адрес, оканчивающийся на .255. Для другой маски подсети используйте Обход.
… is not a multicast groupАдрес вне диапазона 224.0.0.0–239.255.255.255.
… spans … addresses, and a sweep reaches at most 1024 hostsБлок шире /22; сузьте его.
Set the port to sweepПоле Порт равно 0.
… is over the … pps limitТемп, умноженный на число адресатов, превышает 50 000 в секунду: снизьте Темп (/с) или сузьте круг адресатов.
… is already in use — turn on “share the port” to listen alongside itПорт занят другой программой; отметьте делить порт.
Cannot join the multicast group …Группа или Интерфейс непригодны на этом компьютере — нет сетевой карты с таким адресом или нет multicast-маршрута.
Отправлено, но никто не отвечаетУстройства слушают другой порт; здешний брандмауэр не пускает их ответы; между вами и ими есть маршрутизатор; или, в Docker, контейнер не в сети хоста.
Пробы уходят, но приёмник обнаружения не слышит ответовМногие устройства отвечают на адрес и порт, с которых пришла проба, — то есть на собственный сокет передатчика, который экран не читает. Слушайте порт, на который отвечают устройства, или отправляйте пробу из эксперимента: узел UDP-датаграмма с параметром ждать ответ отправляет и слушает на одном порту.

Все сообщения об ошибках перечислены в разделе Сообщения об ошибках.