UPnP

Universal Plug and Play (UPnP) är en samling kommunikationsprotokoll som är sammanställda av UPnP Forum. UPnP tillåter olika typer av enheter från olika tillverkare att ansluta till nätverk  och underlättar implementationen av nätverk i hemmet eller på företag. En enhet kan helt automatiskt ansluta till ett nätverk, erhålla en IP-adress, meddela sina egenskaper och bli upplyst om andra enheters närvaro och egenskaper.

Översikt
UPnP arkitekturen tillåter P2P-nätverk för datorer, nätverksenheter och trådlösa enheter. Det är en distribuerad öppen arkitektur baserad på TCP/IP, UDP och HTTP.
 
UPnP möjliggör kommunikation mellan alla enheter i ett nätverk (LAN). Några av egenskaperna är:
 Oberoende av kommunikationsmedium och enheter. UPnP kan köras över de flesta kommunikationsmedium som Ethernet, Wi-Fi, bluetooth och FireWire. Inga drivrutiner används, allmänna protokoll används istället.
 Arkitekturen tillåter tillverkare att använda valfria användargränssnitt genom webbläsare.
 Oberoende av programspråk och operativsystem. Alla programspråk och operativsystem kan användas för att konstruera UPnP-produkter. 
 Internetbaserade teknologier. UPnP-teknologin är byggd på bland annat IP, TCP, UDP, HTTP och XML.
 Varje UPnP-enhet kan ha enhetsspecifika tjänster utöver den grundläggande arkitekturen.

Grunden för UPnP-nätverk är IP-adressering. Varje enhet måste ha en Dynamic Host Configuration Protocol (DHCP)-klient och söka efter en DHCP-server när den ansluter till ett nätverk. Om det inte finns någon DHCP-server tillgänglig så måste enheten tilldela en adress till sig själv.

Grunden i ett UPnP-nätverk

Enheter
En UPnP-enhet är ansluten till ett nätverk och erbjuder enhetsspecifika tjänster (funktioner), enheten kan även ha flera inbyggda enheter. En tv med inbyggd digital-tv-dekoder och stöd för UPnP kan bestå av en text-tv-tjänst och klock-tjänst, men har även en nästlad enhet i form av en dekoder. Olika typer av UPnP-enheter associeras med olika typer av tjänster och inbyggda enheter, tjänster i en dvd-spelare skiljer sig exempelvis från tjänster i en klimatanläggning. Varje enhet tillhandahåller en enhetsbeskrivning som beskriver enheten och dess tjänster i form av ett XML-dokument.

Tjänster
För att kontrollera tillståndet för enheter i ett UPnP-nätverk används tjänster. En tjänst erbjuder funktioner för att ändra tillståndet för en enhet, tillståndet modelleras med tillståndsvariabler. En klimat-tjänst kan ha en tillståndsvariabel, indoor_temp, som definierar klimatanläggningens tillstånd och en funktion, set_temp, som tillåter användare att kontrollera tjänsten. Enhetsbeskrivningen har en pekare i form av en URL till en tjänstebeskrivning där information om tjänsterna beskrivs i ett XML-dokument.

En tjänst består av en tillståndstabell, kontrollserver och en händelseserver. Tjänstens tillstånd modelleras genom tillståndsvariabler som uppdateras när tillståndet förändras. Funktionsförfrågningar (exempelvis set_temp) skickas till kontrollservern som exekverar dem, uppdaterar tillståndstabellen och returnerar ett svar.
Händelseservern skickar händelsemeddelanden till intresserade enheter varje gång tillståndet för tjänsten förändras, till exempel, en skrivartjänst skickar meddelande om att bläcket är slut i skrivaren.

Kontrollpunkter
En kontrollpunkt i ett UPnP-nätverk är en enhet som kan upptäcka och kontrollera andra enheter. När en enhet har upptäckts så kan kontrollpunkten:
 Erhålla enhetsbeskrivningen och få en lista på associerade tjänster.
 Erhålla tjänstebeskrivningar för relevanta tjänster.
 Anropa funktioner för att kontrollera tjänsten.
 Registrera sig till tjänstens händelseserver för att erhålla tillståndsmeddelanden när tjänstens tillstånd förändras.

Teknologier
Eftersom UPnP till stor del utnyttjar vanliga standardprotokoll som används överallt på Internet och i andra nätverk, så kan UPnP implementeras på redan befintliga strukturer.

TCP/IP 
TCP/IP-protokollen lägger grunden för alla andra protokoll som används av UPnP

HTTP, HTTPU, HTTPMU 
HTTPU (unicast) och HTTPMU (multicast) är varianter av HTTP för att skicka meddelanden över UDP/IP. Protokollen används av SSDP.

SSDP 
Både enheter och kontrollpunkter använder Simple Service Discovery Protocol (SSDP). Kontrollpunkter kan skicka SSDP-förfrågningar över HTTPMU för att upptäcka enheter och tjänster som finns i nätverket. Enheter skickar SSDP-svar över HTTPU till kontrollpunkter.

GENA 
Generic Event Notification Architecture (GENA) används för att skapa närvaro-meddelanden som skickas över SSDP och för signalering av förändringar i tillstånd.

SOAP 
Simple Object Access Protocol (SOAP) används för att skicka kontrollmeddelanden till enheter och returnera resultat och felmeddelanden.

XML
Extensible Markup Language (XML) är en viktig del av UPnP och används för enhets- och tjänstebeskrivningar, kontrollmeddelanden och händelsemeddelanden.

Referenser
 UPnP™ Forum Universal Plug and Play Device Architecture
 Understanding UPnP™: A White Paper

Externa länkar 
 UPnP Forums hemsida
 Microsoft WHDC UPnP webbsida & länkar
 Universal Plug and Play in Windows XP
 Generic Event Notification Architecture (GENA)

Datorteknik
Standarder och konventioner