Simple Service Discovery Protocol
Простой протокол обнаружения сервисов (англ. 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 | |
---|---|
Название | Simple Service Discovery Protocol |
Уровень (по модели OSI) | Сеансовый |
Семейство | TCP/IP |
Порт/ID | 1900/UDP |
SSDP описывает механизм, согласно которому сетевые клиенты могут обнаружить различные сетевые сервисы. Клиенты используют SSDP без предварительной конфигурации. SSDP поддерживает обнаружение при помощи мультикаста, уведомления от серверов и маршрутизацию. Данная служба включает обнаружение UPnP-устройств в домашней сети. Например, телевизор с поддержкой DLNA/UPNP находит медиасерверы в локальной сети с использованием этого протокола. Домашние маршрутизаторы обнаруживаются компьютерами, как правило, также с помощью SSDP (для отображении информации о маршрутизаторах и медиасерверах в «Сетевом окружении» эти устройства также должны поддерживать протокол HTTP, так как SSDP сообщает устройствам http-ссылку на страницу управления устройством).
Транспортный протокол и адресация
SSDP является текстовым протоколом, основанным на HTTPU, с применением XML. Для передачи сообщений он использует датаграммы UDP. Сервисы анонсируются отправкой сообщений на выделенные мультикаст-адреса на UDP-порт 1900. В сетях IPv4 используется мультикаст-адрес: 239.255.255.250[4]. В сетях с поддержкой IPv6 также используются адреса: FF01::C, 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)
- [FF08::C] (сети IPv6, адрес organization-local)
- [FF0E::C] (сети IPv6, глобальная адресация)
Дополнительно реализации могут использовать специальный мультикаст-адрес источника, полученный от локального префикса маршрутизации 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]
См. также
Ссылки
- IETF SSDP draft версии 3 (устаревший и просроченный), 2000
Примечания
- IETF draft revision 3 (outdated and expired)
- UPNP Device Architecture 1.1 (недоступная ссылка). UPnP Forum (15 октября 2008). Архивировано 7 ноября 2015 года.
- UPnP Device Architecture v2.0 (недоступная ссылка). upnp.org (20 февраля 2015). Архивировано 7 ноября 2015 года.
- Internet Multicast Addresses . IANA (22 июня 2010).
- UPnP Device Architecture V1.1 (англ.).
- Internet Protocol Version 6 Multicast Addresses . IANA. Дата обращения: 10 августа 2010.
- Microsoft Knowledge Base Article 832017
- Guide to DDoS Attacks, pg 8
- UDP-Based Amplification Attacks .
- SSDP generates 100 Gbps DDoS