Simple Service Discovery Protocol

SSDP
Название Simple Service Discovery Protocol
Уровень (по модели OSI) Сеансовый
Семейство TCP/IP
Порт/ID 1900/UDP

Простой протокол обнаружения сервисов (англ. Simple Service Discovery Protocol, SSDP) — сетевой протокол, основанный на наборе протоколов Интернета, служащий для объявления и обнаружения сетевых сервисов. SSDP позволяет обнаруживать сервисы, не требуя специальных механизмов статической конфигурации или действий со стороны серверов, таких как DHCP или DNS. Данный протокол является основой протокола обнаружения Universal plug-and-play (UPnP) и предназначен для использования в домашних сетях и в малом бизнесе. Описание протокола SSDP, написанное компаниями Microsoft и Hewlett-Packard, подавалось в 1999 году в качестве черновика интернет-стандарта (Internet draft) в IETF. Предложение истекло в апреле 2000[1], но SSDP был включен в состав стека протоколов UPnP и реализация SSDP попала в стандарт UPnP.[2][3]

SSDP описывает механизм, согласно которому сетевые клиенты могут обнаружить различные сетевые сервисы. Клиенты используют SSDP без предварительной конфигурации. SSDP поддерживает обнаружение при помощи мультикаста, уведомления от серверов и маршрутизацию. Данная служба включает обнаружение UPnP-устройств в домашней сети. Например, телевизор с поддержкой DLNA/UPNP находит медиасерверы в локальной сети с использованием этого протокола. Домашние маршрутизаторы обнаруживаются компьютерами, как правило, также с помощью SSDP (для отображении информации о маршрутизаторах и медиасерверах в «Сетевом окружении» эти устройства также должны поддерживать протокол HTTP, так как SSDP сообщает устройствам http-ссылку на страницу управления устройством).

Транспортный протокол и адресация

[править | править код]

Протокол SSDP представляет собой обмен текстовыми сообщениями с форматированием XML, он основан на HTTPU (от англ. HTTP over UDP — вариант HTTP, в котором для передачи сообщений используются датаграммы UDP). Сервисы анонсируют себя отправкой сообщений на выделенные мультикаст-адреса на порт UDP/1900. В сетях IPv4 используется мультикаст-адрес 239.255.255.250[4], а в IPv6 — ff02::c, ff05::c, … (формат адреса: ff0X::c, где X выбирается в зависимости от типа анонса)[5][6]:

  • 239.255.255.250 — сети IPv4, адрес типа site-local;
  • ff02::c — сети IPv6, адрес link-local
  • ff05::c — сети IPv6, адрес site-local

В дополнение к этому разные реализации могут использовать специальный мультикастовый адрес источника, полученный от локального префикса маршрутизации IPv6, с групповым идентификатором C (десятичное число 12).

В протоколе SSDP используется HTTP-метод NOTIFY для анонсирования появления или удаления сервисов (или информации о присутствии) для всех участников мультикаст-группы. Клиентское устройство, желающие узнать о появлении сервисов в сети, использует запрос с методом M-SEARCH, ответы на который присылаются отправителю запроса на его собственный адрес (unicast).

В операционных системах семейства Windows для нормального функционирования «Службы обнаружения SSDP» никаких других служб не требуется. От работы этого сервиса зависит «Узел универсальных PnP-устройств» (англ. Universal Plug and Play Device Host).

Реализации SSDP IPv6 от Microsoft (в Windows Media Player и в сервере) используют адреса типа «link-local». Для уведомлений о событиях и подписки используется порт 2869 (ранее также использовался порт 5000)[7].

Использование в DDoS-атаках

[править | править код]

В 2014 неожиданно обнаружили, что SSDP использовался в DDoS-атаках типа «Атака отражения и усиления при помощи SSDP» (SSDP reflection attack with amplification). Многие устройства, в том числе бытовые маршрутизаторы, имели изъян в программном обеспечении UPnP, который позволял атакующему направлять ответы с порта 1900 на произвольный адрес в сети Интернет. В случае использования ботнета из многих тысяч подобных устройств атакующий мог создать большой поток пакетов, достаточных для занятия пропускной полосы и насыщения каналов передачи данных атакуемой площадки, что приводит к отказу в обслуживании для обычных пользователей[8][9][10].

Примечания

[править | править код]
  1. IETF draft revision 3 Архивная копия от 19 декабря 2018 на Wayback Machine (outdated and expired)
  2. UPNP Device Architecture 1.1. UPnP Forum (15 октября 2008). Архивировано 7 ноября 2015 года.
  3. UPnP Device Architecture v2.0. upnp.org (20 февраля 2015). Архивировано 7 ноября 2015 года.
  4. Internet Multicast Addresses. IANA (22 июня 2010). Дата обращения: 13 августа 2018. Архивировано 29 мая 2010 года.
  5. UPnP Device Architecture V1.1 (англ.). Дата обращения: 9 июня 2017. Архивировано 29 августа 2017 года.
  6. Internet Protocol Version 6 Multicast Addresses. IANA. Дата обращения: 10 августа 2010. Архивировано 14 октября 2009 года.
  7. Microsoft Knowledge Base Article 832017. Дата обращения: 13 августа 2018. Архивировано 22 апреля 2013 года.
  8. Guide to DDoS Attacks, pg 8. Дата обращения: 13 августа 2018. Архивировано 18 сентября 2016 года.
  9. UDP-Based Amplification Attacks. Дата обращения: 13 августа 2018. Архивировано 13 августа 2018 года.
  10. SSDP generates 100 Gbps DDoS. Дата обращения: 13 августа 2018. Архивировано 13 августа 2018 года.