El Protocolo de localización de servicios ( SLP , srvloc ) es un protocolo de descubrimiento de servicios que permite a los ordenadores y otros dispositivos encontrar servicios en una red de área local sin configuración previa. SLP ha sido diseñado para escalar desde redes pequeñas no administradas hasta grandes redes empresariales. Se ha definido en RFC 2608 y RFC 3224 como documento de seguimiento de estándares .
Los dispositivos utilizan SLP para anunciar servicios en una red local. Cada servicio debe tener una URL que se utiliza para localizar el servicio. Además, puede tener una cantidad ilimitada de pares de nombre/valor, llamados atributos . Cada dispositivo debe estar siempre en uno o más ámbitos . Los ámbitos son cadenas simples y se utilizan para agrupar servicios, de manera similar al entorno de red en otros sistemas. Un dispositivo no puede ver servicios que se encuentran en distintos ámbitos.
La URL de una impresora podría verse así:
servicio:impresora:lpr://miimpresora/micola
Esta URL describe una cola llamada "myqueue" en una impresora con el nombre de host "myprinter". El protocolo utilizado por la impresora es LPR . Tenga en cuenta que la impresora utiliza un esquema de URL especial "service:". Las URL "service:" no son obligatorias: se puede utilizar cualquier esquema de URL, pero permiten buscar todos los servicios del mismo tipo (por ejemplo, todas las impresoras) independientemente del protocolo que utilicen. Los primeros tres componentes del tipo de URL "service:" ("service:printer:lpr") también se denominan tipo de servicio . Los primeros dos componentes ("service:printer") se denominan tipo de servicio abstracto . En una URL que no sea "service:", el nombre del esquema es el tipo de servicio (por ejemplo, "http" en "http://www.wikipedia.org").
Los atributos de la impresora podrían verse así:
(nombre-impresora=Hugo),(impresora-lenguaje-natural-configurada=en-us),(ubicación de la impresora=En mi oficina en casa),(formato-de-documento-de-impresora-compatible=aplicación/postscript),(color de impresora compatible=falso),(compresión de impresora compatible=deflate, gzip)
El ejemplo utiliza la sintaxis estándar para atributos en SLP, solo se han agregado nuevas líneas para mejorar la legibilidad.
La definición de una URL de "servicio" y los atributos permitidos para la URL se especifican mediante una plantilla de servicio , una descripción formalizada de la sintaxis de la URL y los atributos. Las plantillas de servicio se definen en RFC 2609.
SLP permite varios tipos de consultas para localizar servicios y obtener información sobre ellos:
SLP tiene tres funciones diferentes para los dispositivos. Un dispositivo también puede tener dos o las tres funciones al mismo tiempo.
En la actualidad, la mayoría de las implementaciones son daemons que pueden actuar como UA y SA. Por lo general, se pueden configurar para que también se conviertan en DA.
SLP es un protocolo orientado a paquetes. La mayoría de los paquetes se transmiten mediante UDP , pero también se puede utilizar TCP para la transmisión de paquetes más largos. Debido a la posible falta de fiabilidad de UDP, SLP repite todas las multidifusiones varias veces en intervalos crecientes hasta que se recibe una respuesta. Todos los dispositivos deben escuchar en el puerto 427 los paquetes UDP; los SA y DA también deben escuchar TCP en el mismo puerto. SLP utiliza ampliamente la multidifusión , especialmente por parte de dispositivos que se unen a una red y necesitan encontrar otros dispositivos.
El funcionamiento de SLP difiere considerablemente según si hay un agente de directorio (DA) en la red o no. Cuando un cliente se une por primera vez a una red, envía una consulta por multidifusión a los DA de la red. Si ningún DA responde, asumirá que se encuentra en una red sin DA. También es posible agregar DA más tarde, ya que envían por multidifusión un paquete de "latido" en un intervalo predefinido que será recibido por todos los demás dispositivos. Cuando un SA descubre un DA, debe registrar todos los servicios en el DA. Cuando un servicio desaparece, el SA debe notificar al DA y anular su registro.
Para enviar una consulta en una red sin DA, el UA envía un paquete UDP de multidifusión que contiene la consulta. Todas las SA que contienen coincidencias enviarán una respuesta UDP al UA. Si la respuesta es demasiado grande para caber en un solo paquete UDP, el paquete se marcará como "desbordado" y el UA podrá enviar la consulta directamente a la SA mediante TCP, que puede transmitir paquetes de cualquier tamaño.
Para enviar una consulta en una red con un DA, el UA enviará el paquete de consulta al DA mediante UDP o TCP. Como cada SA debe registrar todos los servicios con el DA, el DA puede cumplir la solicitud por completo y simplemente envía el resultado de vuelta al UA.
SLP contiene un mecanismo de seguridad, basado en criptografía de clave pública , que permite firmar anuncios de servicios. En la práctica, se utiliza muy poco: