Siguiendo con la serie de streaming en Windows 7, ahora vamos a analizar un poco más a fondo que es lo que ocurre realmente por detrás para que todo esto funcione sin problemas.
Para ello, he instalado Wireshark en uno de los equipos Windows 7 del laboratorio, concretamente el equipo Win7_2. Una vez instalado, lo ejecutamos y lo ponemos a capturar tráfico. A continuación iniciamos Windows Media Player.
El primer paquete que se captura es el siguiente:
Lo primero que ha hecho Windows Media Player cuando lo hemos ejecutado y ya tenemos configurada la red de streaming, es anunciarse a voces, utilizando para ello el protocolo SSDP (Simple Service Discovery Protocol) para localizar dispositivos UPnP (Universal Plug and Play).
El protocolo SSDP fue desarrollado por el IETF, Microsoft y HP y proporciona un mecanismo de descubrimiento de servicios de red sin necesidad de una configuración específica. Para ello los servicios se anuncian utilizando el puerto UDP 1900 en modo unicast y multicast (en la captura se observa la IP multicast 239.255.255.250). Para anunciar dichos servicios, SSDP utiliza una solicitud HTTP (HTTP-Request) junto con el método NOTIFY, la cual podemos ver a continuación:
Fijaros que lo que se anuncia es una URL (concretamente http://192.168.64.2:2869/upnphost/udhisapi.dll?content=uuid:a67dc1ce-917e-4034-b723-f076fbab5c0f), pero ¿que hay en esa URL?. Si abrimos un navegador y escribimos la dirección completa, obtendremos que se trata de una serie de datos en formato XML:
Entre los datos, observamos la información del tipo de servicio, su localización, el Identificador único (UUID) e incluso algunos iconos del servicio en cuestión.
Si avanzamos en la captura observaremos que ahora toca el turno de búsqueda de servicios mediante el método SEARCH. Para ello, WMP realiza el mismo proceso utilizando SSDP con el protocolo UDP y el puerto 1900.
Como Windows 7 instala por defecto el protocolo IPv6, WMP lo aprovecha y realiza todo este proceso tanto con IPv4 como con IPv6 y además realiza una búsqueda de Host mediante ICMPv6 (Código 135 Neighbor Solicitation)
Una vez finalizada la búsqueda, observamos que comienza una conversación entre los dos equipos y que el equipo Win7_2 ejecuta un método GET para descargarse la información de los servicios de multimedia compartidos en Win7_1 (tal y como lo habíamos hecho antes manualmente con Internet Explorer).
Concretamente ejecuta lo siguiente:
GET /upnphost/udhisapi.dll?content=uuid:27b9ec31-df79-4180-98a2-7976bfc391eb HTTP/1.1
Cache-Control: no-cache
Connection: Close
Pragma: no-cache
Accept: text/xml, application/xml
Host: [fe80::458b:3af9:e5a3:7939]:2869
User-Agent: Microsoft-Windows/6.1 UPnP/1.0 Windows-Media-Player/12.0.7600.16385 DLNADOC/1.50 (MS-DeviceCaps/1024)
Es entonces cuando el equipo Win7_1 responde con un HTTP 200 OK y a continuación le envía el detalle de los servicios en formato XML:
Gracias a este intercambio de información en formato XML, la automatización del proceso de búsqueda y localización de servicios, Windows Media Player o cualquier otra aplicación que soporte SSDP y UPnP puede interactuar con otros servicios de forma transparente para el usuario.
Si queréis investigar más acerca de SSDP os recomiendo el documento original Internet-Draft del IETF ya que es bastante claro y explicativo. Lo podéis encontrar en: http://tools.ietf.org/html/draft-cai-ssdp-v1-03
Si quieres aprender mucho más sobre los secretos de lo sistemas Microsoft Windows, te recomendamos leer el libro de Sergio de los Santos "Máxima Seguridad en Windows: Secretos Técnicos"
********************************************************************
Montar una red de streaming de multimedia con Windows 7 (I de II)
Montar una red de streaming de multimedia con Windows 7 (II de II)
********************************************************************
Enviado
oct 23 2009, 08:28
por
Josh Sáenz G.