Как программа находит камеры в сети

В простейшем случае (Class C IPv4 network) в локальной сети может быть до 254 различных устройств, в более сложном (Class B) это число возрастает до 16381. Каждому устройству в сети выделяется уникальный IP адрес, обычно динамический.

IP адрес может обслуживать до 65535 портов, каждый из которых представляет отдельный сервис, например, файловый сервер, принтер, или в нашем случае камеру.

Очевидно, что простым перебором за разумное время не получится опросить все адреса и порты.

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

Когда больше двадцати лет назад мы начинали работу над Visec, появилось большое количество камер, каждая из которых предлагала собственный протокол обнаружения. Это был хаос. Стало понятно, что требуется стандартизация. Некоторые компании, такие, как AXIS, стали использовать протокол Bonjour от Apple. Интересно, что первоначально этот протокол назывался Rendezvous. Предполагается, что слово Rendezvous (Рандеву) очень неудобно для англоязычного читателя, поэтому протокол переименовали. Bonjour тоже французское слово, но читается проще. В любом случае, Bonjour до сих пор используется AXIS в фирменном протоколе VAPIX. Другие производители постепенно перешли на SOAP, из которого со временем родился стандарт ONVIF.

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

Сейчас мы поддерживаем Bonjour для старых камер AXIS и ONVIF для всех остальных.

Вот пример приветствия (probe) ONVIF:

<?xml version="1.0" encoding="utf-8"?><Envelope xmlns:dn="http://www.onvif.org/ver10/network/wsdl" xmlns="http://www.w3.org/2003/05/soap-envelope"><Header><wsa:MessageID xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">uuid:87f5601f-b6f2-4e24-89e8-1c2316c70439</wsa:MessageID><wsa:To xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">urn:schemas-xmlsoap-org:ws:2005:04:discovery</wsa:To><wsa:Action xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://schemas.xmlsoap.org/ws/2005/04/discovery/Probe</wsa:Action></Header><Body><Probe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/ws/2005/04/discovery"><Types>dn:NetworkVideoTransmitter</Types><Scopes /></Probe></Body></Envelope> <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing"><s:Header><a:Action s:mustUnderstand="1">http://schemas.xmlsoap.org/ws/2005/04/discovery/Probe</a:Action><a:MessageID>uuid:87f5601f-b6f2-4e24-89e8-1c2316c70439</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><a:To s:mustUnderstand="1">urn:schemas-xmlsoap-org:ws:2005:04:discovery</a:To></s:Header><s:Body><Probe xmlns="http://schemas.xmlsoap.org/ws/2005/04/discovery"><d:Types xmlns:d="http://schemas.xmlsoap.org/ws/2005/04/discovery" xmlns:dp0="http://www.onvif.org/ver10/network/wsdl">dp0:NetworkVideoTransmitter</d:Types></Probe></s:Body></s:Envelope>

Видно, что это достаточно сложная структура, а приходящий ответ ещё сложнее:

<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:d="http://schemas.xmlsoap.org/ws/2005/04/discovery"xmlns:dn="http://www.onvif.org/ver10/network/wsdl"><SOAP-ENV:Header><wsa:Action SOAP-ENV:mustUnderstand="true">http://schemas.xmlsoap.org/ws/2005/04/discovery/ProbeMatches</wsa:Action><wsa:MessageID>uuid:3bff1bbc-b857-484f-823c-a5554768d57f</wsa:MessageID><wsa:RelatesTo>uuid:f2ad8af7-1d27-db12-d13d-4f9a5311c8a3</wsa:RelatesTo><wsa:To SOAP-ENV:mustUnderstand="true">http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To><d:AppSequence SOAP-ENV:mustUnderstand="true" MessageNumber="1" InstanceId="1167609630"></d:AppSequence></SOAP-ENV:Header><SOAP-ENV:Body><d:ProbeMatches><d:ProbeMatch><wsa:EndpointReference><wsa:Address>urn:uuid:0b6b62ea-b49a-49dc-906a-00d08909a6ef</wsa:Address></wsa:EndpointReference><d:Types>dn:NetworkVideoTransmitter</d:Types><d:Scopes>onvif://www.onvif.org/type/video_encoder onvif://www.onvif.org/type/audio_encoder onvif://www.onvif.org/hardware/CM-610 onvif://www.onvif.org/name/OpenEye onvif://www.onvif.org/location/country/ </d:Scopes><d:XAddrs>http://192.168.1.35/onvif/device_service</d:XAddrs><d:MetadataVersion>1</d:MetadataVersion></d:ProbeMatch></d:ProbeMatches></SOAP-ENV:Body></SOAP-ENV:Envelope>

Multicast (многоадресная рассылка) - это технология, используемая для отправки данных от источника к нескольким получателям. В отличие от широковещательной рассылки, которая отправляет данные на все устройства в сети, multicast-технология направляет данные только определенным получателям, которые зарегистрированы для получения этих данных.

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

При использовании multicast данные группируются в потоки, каждый из которых имеет свой идентификатор (IP-адрес) и может иметь различные уровни приоритета. IP-адрес потока обычно включает идентификатор группы и идентификатор экземпляра. Идентификатор группы определяет, какие устройства могут получать данные, а идентификатор экземпляра используется для различения потоков с одним и тем же идентификатором группы.

© Видеонаблюдение Visec Online, 2001-2024

Видеонаблюдение Висек Онлайн

Допустимая транслитерация

Видеонаблюдение Вайсек Онлайн

Другая транслитерация