SSDP - Simple Service Discovery Protocol ========================================= .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **What is SSDP?** SSDP (Simple Service Discovery Protocol) is a network protocol used to discover devices and services on a local network without manual configuration. It is part of the UPnP (Universal Plug and Play) suite and operates over UDP. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Why is SSDP useful?** * Automatically detects smart TVs, printers, routers, and media servers * Simplifies setup by removing the need for manual IP configuration * Enables plug-and-play features in home and office networks .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **How it works** * **Device joins network** – Connects to local network (e.g., Smart TV) * **Sends SSDP advertisement** – Broadcasts "I'm here" with available services * **Control point (client) listens** – Phones, PCs, or apps listen for these messages * **Client sends M-SEARCH request** – A device can actively search for services * **Device responds** – Matching devices reply with service details (IP, port, URL) * **Client connects** – Uses the info to interact (e.g., stream content) .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Where is SSDP used?** * Smart home environments * Media streaming setups * Networked printers * Home routers and gateways .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Which OSI layer does this protocol belong to?** * **Application Layer (Layer 7)** * SSDP is used for device/service discovery, a high-level application function * It operates over UDP but enables applications to discover peers/services * Typically uses UDP port 1900 and IP multicast .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **What are common devices using SSDP?** * Smart TVs and media players * IoT devices (e.g., smart plugs, speakers) * Network printers * Home routers with UPnP enabled .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **What are alternatives to SSDP?** * **mDNS/Bonjour** – Used by Apple and Zeroconf environments * **WS-Discovery** – Used by Microsoft systems * **Zeroconf/Avahi** – For Linux and cross-platform auto-discovery .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **What is USN in SSDP?** * USN (Unique Service Name) is a string that uniquely identifies a device or service * Format: `uuid:::urn:schemas-upnp-org:service:` .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **What can we learn from SSDP messages?** * **Device type** (e.g., MediaServer, rootdevice) * **Software/firmware** info via `SERVER` field * **Device IP address** via `LOCATION` header * **Join/leave status** via `NTS` * **Unique identity** via `USN`, `UUID` .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Does SSDP support IPv4 or IPv6?** * SSDP supports **both IPv4 and IPv6** * IPv4 uses multicast to `239.255.255.250:1900` * IPv6 uses `FF02::C` (but not all devices support IPv6 discovery) .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Is SSDP suitable for real-time applications?** No, SSDP is designed only for device and service discovery. It is **not intended for real-time communication**, such as video, voice, or large data transfers. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow Topics in this section, * :ref:`Learnings in this section ` * :ref:`Terminology ` * :ref:`Version Info ` * :ref:`SSDP Version&IEEE Details ` * :ref:`SSDP Basic Setup on Ubuntu using IPv4 ` * :ref:`SSDP Basic Setup on Ubuntu using IPv6 ` * :ref:`SSDP Protocol Packet Details ` * :ref:`SSDP Usecases ` * :ref:`SSDP Basic Features ` * :ref:`SSDP Feature : Discovery Protocol ` * :ref:`SSDP Feature : Uses UDP Multicast ` * :ref:`SSDP Feature : HTTP Like Messaging ` * :ref:`SSDP Feature : Zero Configuration ` * :ref:`SSDP Feature : Supports Both Search And Advertisement ` * :ref:`SSDP Feature : Lightweight Protocol ` * :ref:`SSDP Feature : Time To Live Control ` * :ref:`SSDP Feature : Extensible ` * :ref:`SSDP Feature : Part Of UPNP Stack ` * :ref:`SSDP Feature : Cross Platform ` * :ref:`Reference links ` .. _SSDP_step1: .. tab-set:: .. tab-item:: Learnings in this section * In this section, you are going to learn .. _SSDP_step2: .. tab-set:: .. tab-item:: Terminology * Terminology .. _SSDP_step3: .. tab-set:: .. tab-item:: Version Info * Version Info .. _SSDP_step5: .. tab-set:: .. tab-item:: SSDP Version&RFC Details .. csv-table:: :file: ./SSDP/SSDP_RFCdetails.csv :widths: 10,10,10,30,40 :header-rows: 1 .. _SSDP_step20: .. tab-set:: .. tab-item:: SSDP Basic Setup on Ubuntu using IPv4 * setup .. _SSDP_step21: .. tab-set:: .. tab-item:: SSDP Basic Setup on Ubuntu using IPv6 * setup .. _SSDP_step6: .. tab-set:: .. tab-item:: SSDP Protocol Packet Details **SSDP START LINE Packet** .. csv-table:: :file: ./SSDP/SSDP_Start_Line_Packet.csv :widths: 10,20,30,40 :header-rows: 1 **SSDP HEADERS Packet** .. csv-table:: :file: ./SSDP/SSDP_Headers_Packet.csv :widths: 10,20,30,40 :header-rows: 1 **SSDP BLANK LINE Packet** .. csv-table:: :file: ./SSDP/SSDP_Blank_Line_Packet.csv :widths: 10,20,30,40 :header-rows: 1 **SSDP PAYLOAD(optional) Packet** .. csv-table:: :file: ./SSDP/SSDP_Payload_Optional_Packet.csv :widths: 10,20,30,40 :header-rows: 1 .. _SSDP_step7: .. tab-set:: .. tab-item:: SSDP Usecases .. csv-table:: :file: ./SSDP/SSDP_Use_Cases.csv :widths: 10,20,30 :header-rows: 1 .. _SSDP_step8: .. tab-set:: .. tab-item:: SSDP Basic Features .. csv-table:: :file: ./SSDP/SSDP_Features.csv :widths: 10,10,30 :header-rows: 1 .. _SSDP_step9: .. tab-set:: .. tab-item:: SSDP Feature : Discovery Protocol **Discovery Protocol - Testcases** .. csv-table:: :file: ./SSDP/SSDP_Feature1_Discovery_Protocol_Test_Cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _SSDP_step10: .. tab-set:: .. tab-item:: SSDP Feature : Uses UDP Multicast **Uses UDP Multicast - Testcases** .. csv-table:: :file: ./SSDP/SSDP_Feature2_Uses_UDP_Multicast_Test_Cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _SSDP_step11: .. tab-set:: .. tab-item:: SSDP Feature : HTTP Like Messaging **HTTP Like Messaging - Testcases** .. csv-table:: :file: ./SSDP/SSDP_Feature3_HTTP_Like_Messaging_Test_Cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _SSDP_step12: .. tab-set:: .. tab-item:: SSDP Feature : Zero Configuration **Zero Configuration - Testcases** .. csv-table:: :file: ./SSDP/SSDP_Feature4_Zero_Configuration_Test_Cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _SSDP_step13: .. tab-set:: .. tab-item:: SSDP Feature : Supports Both Search And Advertisement **Supports Both Search And Advertisement - Testcases** .. csv-table:: :file: ./SSDP/SSDP_Feature5_Supports_Both_Search_and_Advertisement_Test_Cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _SSDP_step14: .. tab-set:: .. tab-item:: SSDP Feature : Lightweight Protocol **Lightweight Protocol - Testcases** .. csv-table:: :file: ./SSDP/SSDP_Feature6_Lightweight_Protocol_Test_Cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _SSDP_step15: .. tab-set:: .. tab-item:: SSDP Feature : Time To Live Control **Time To Live Control - Testcases** .. csv-table:: :file: ./SSDP/SSDP_Feature7_Time_to_Live_Control_Test_Cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _SSDP_step16: .. tab-set:: .. tab-item:: SSDP Feature : Extensible **Extensible - Testcases** .. csv-table:: :file: ./SSDP/SSDP_Feature8_Extensible_Test_Cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _SSDP_step17: .. tab-set:: .. tab-item:: SSDP Feature : Part Of UPNP Stack **Part Of UPNP Stack - Testcases** .. csv-table:: :file: ./SSDP/SSDP_Feature9_Part_of_UPnP_Stack_Test_Cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _SSDP_step18: .. tab-set:: .. tab-item:: SSDP Feature : Cross Platform **Cross Platform - Testcases** .. csv-table:: :file: ./SSDP/SSDP_Feature10_Cross_Platform_Support_Test_Cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _SSDP_step19: .. tab-set:: .. tab-item:: Reference links * Reference links