Протокол обнаружения сервисов (англ. Service Location Protocol, SLP, srvloc) — протокол обнаружения сервисов, который позволяет компьютерам и иным устройствам находить сервисы в локальной вычислительной сети без предварительной конфигурации. SLP был разработан, чтобы работать как в небольших сетях, так и в больших корпоративных сетях. Он определен в RFC 2608.
SLP описывает три роли для устройств. Устройство может иметь две или даже три роли одновременно.
- User Agents (UA) — устройства, которые ищут сервисы
- Service Agents (SA) — устройства, анонсирующие один или несколько сервисов
- Directory Agents (DA) — устройства, кеширующие сервисы. Они используются в больших сетях для уменьшения количества трафика и позволяют SLP масштабироваться. Существование DA в сети является необязательным, но если он присутствует, то UA и SA должны использовать его вместо прямых коммуникаций.
Ныне большинство реализаций действуют как UA и SA. Также они могут быть настроены для работы в качестве DA.
SLP содержит механизмы криптографии на основе открытых ключей, которые позволяют подписывать анонсы сервисов. На практике это используется редко.
- Открытый ключ провайдера сервиса должен быть установлен на каждом UA. Это нарушает исходную цель SLP — возможность обнаружения сервисов без предварительной настройки
- Защиты сервисов не достаточно. URL сервиса содержит имя компьютера или его IP адрес, а в локальной сети почти невозможно предотвратить подделку IP или DNS имени. Поэтому гарантия аутентичности URL бесполезна если любое устройство может отвечать по указанному адресу
- Поскольку адреса могут быть подделаны, аутентичность устройства должна быть подтверждена на другом уровне, например, на уровне приложения (через SSL) или на уровне пакетов (IPsec). Дополнительная аутентификация в SLP не даст сильного повышения безопасности.
- SLP часто используется для нахождения принтеров и поддерживается системами печати, например CUPS.
- SLP часто используется в принтерах с возможностью работы в локальной сети, поэтому они могут работать без предварительной конфигурации. Некоторые клиентские драйвера используют протокол для нахождения принтера.
- Архитектура для управляющих сетей (ACN), протокол, разрабатываемый для контроля развлечений, использует SLP для обнаружения устройств управления освещением
- Mac OS и Mac OS X вплоть до версии 10.1 используют SLP для обнаружения файловых и других сервисов. Более новые версии Mac OS X (старше 10.2), предпочитают Zeroconf.
- Клиенты Novell NetWare в чистом IP окружении используют SLP для обнаружения серверов.
- SUSE Linux поддерживает SLP начиная с версии 9.1