#keywords upnp,ssdp,zero,configuration,ip,udp,dhcp,http,SOAP,GENA,UUID,XML,RootDevice,universal,plug,play,discovery,SSDP #title uPnP (Universal Plug and Play) [wiki:Home 대문] / [wiki:CategoryNetwork 네트웍], [wiki:CategoryProgramming 프로그래밍] / [wiki:uPnP uPnP (Universal Plug and Play)] ---- == [wiki:uPnP uPnP (Universal Plug and Play)] == * 작성자 조재혁([mailto:minzkn@minzkn.com]) * 고친과정 2011년 6월 9일 : 처음씀 [[TableOfContents]] == 개요 == [wiki:uPnP uPnP (Universal Plug and Play)]는 오늘날 IPv4기반의 Network상황에서 Home networking을 위해서 많이 활용되고 있습니다. 그리고 DLNA의 수단으로써 좀더 강력한 사용자 접근성을 발휘합니다. 이 페이지는 그러한 [wiki:uPnP uPnP (Universal Plug and Play)]에 대해서 간략히 정리해보고자 합니다. 이 문서는 표준을 엄격히 서술하는 것이 아니며 통상적인 범용구현을 위하여 나름 재해석한 내용을 담고 있습니다. 표준과 다른 부분도 있을수 있으니 이점 유념하도록 합니다. == 이 글을 읽기전에 필요한 선행지식 요소 == * 용어정의 * Action: Service 에 요청하는 명령. 하나 이상의 입력 또는 출력 인수를 사용할 수 있으며 반환 값도 가질 수 있습니다. * Control point: Device 및 Service 의 제공정보를 검색하고 이에 맞는 이벤트를 수집 및 제어를 수행를 담당하는 부분 * Device: 논리적인 개념의 장치로 정의되며 또 다른 논리적인 개념의 Device 및 Service를 포함할수 있으며 Network 에 자신의 존재를 알리는 일련의 행위를 주도합니다. * RootDevice: 어떠한 논리적 Device에 속하지 않은 최상위의 Device를 말합니다. * Service: 논리적인 개념의 기능 단위로 정의되며 제어에 있어서 가장 작은 단위를 말합니다. Action과 Model들에게 상태 변수와 물리적 장치의 상태를 제공 할 수 있습니다. * IPv4, IPv6 * UDP, TCP * [^http://www.ietf.org/rfc/rfc2616.txt RFC2616: Hypertext Transfer Protocol -- HTTP/1.1] * [^http://www.w3.org/XML/ XML(Extensible Markup Language). W3C recommendation.] * DNS (Domain Name System) * DHCP (Dynamic Host Configuration Protocol) * [^http://www.ietf.org/rfc/rfc2279.txt RFC2279: UTF-8, a transformation format of ISO 10646] * UUID (Universally Unique IDentifier) * [wiki:SimpleServiceDiscoveryProtocol SSDP(Simple Service Discovery Protocol)] * [^http://www.w3.org/TR/soap/ SOAP (Simple Object Access Protocol)] * GENA (General Event Notification Architecture) == 개략적인 흐름 == * Protocol stack |||||||| [wiki:uPnP uPnP (Universal Plug and Play)] Vendor || |||||||| [wiki:uPnP uPnP (Universal Plug and Play)] Forum || |||||||| [wiki:uPnP uPnP (Universal Plug and Play)] Device Architecture || ||<|2> SSDP ||<|2> Multicast events || SOAP || GENA || |||| HTTP || |||| UDP |||| TCP || |||||||| IP || * 탐색 및 제어의 흐름 [attachment:ControlPointandDeviceInteraction.png] * UPnP 의 실현단계 * Step0: Device 와 Control Point 들간에 적절한 Network 주소체계를 부여하여 검색이 가능한 Network주소를 이용할수 있도록 하는 단계. * Step1: Control Point가 적절한 Device 를 찾고 이를 정돈하는 단계. * Step2: Device 의 자세한 기능을 Control Point가 수집하는 단계. * Step3: Control Point 가 Device로 적절한 명령 및 이벤트를 하달하는 단계. * Step4: Device가 제공하는 상태변화를 Control Point 가 인지하는 단계. * Step5: Device들의 사용자 Interface를 표시하는 단계. == 개발요소 == * DHCP Server * dhcpd * DHCP Client * dhclient, dhcpcd * HTTP Server (v1.1 support) * Apache * HTTP Client * cURL, wget * XML parser * UUID Generator * util-linux * [wiki:SimpleServiceDiscoveryProtocol SSDP(Simple Service Discovery Protocol)] * SOAP * GENA (General Event Notification Architecture) == 동작요소 == === Addressing === * [wiki:uPnP uPnP (Universal Plug and Play)]의 가장 첫 단추는 주소체계(Addressing)의 이해와 구현이 선행되어야 합니다. * [wiki:uPnP uPnP (Universal Plug and Play)]는 IP기반의 Network상에서 구현되므로 IP주소가 필요합니다. * [wiki:uPnP uPnP (Universal Plug and Play)]의 Control Point 와 Device는 DHCP server를 구현할 필요는 없지만 DHCP client 에 대응하는 일련의 DHCP network 주소체계 및 AutoIP 를 확보할수 있어야 합니다. * [wiki:uPnP uPnP (Universal Plug and Play)]와 DLNA는 IPv4기반하에 동작하는게 기본적인 사항입니다. 그러나 IPv6호환성이 고려됩니다. === Discovery === [attachment:DiscoveryArchitecture.png UPnP Device Architecture 1.1 문서에서 인용] * [wiki:SimpleServiceDiscoveryProtocol SSDP(Simple Service Discovery Protocol)]를 사용하여 장비를 탐색합니다. * Control point는 장비를 탐색하는데 적극적이고 장비들은 이러한 탐색에 응답하게 됩니다. === Description === * Control point는 장비를 탐색후 장비에 대한 제한적인 정보만을 가지고 있게 되는데 Description을 통해서 장치로부터 좀더 세부적인 정보를 XML형태로 취득합니다. === Control === * 장비들에게 XML로 표현되는 형태의 SOAP으로 명령을 내릴 수 있습니다. === Event === * 장비의 상태변화를 Control point에게 XML로 표현되는 형태의 GENA로 통지합니다. === Presentation === * 장비가 URL을 제공하여 Control point가 이를 이용하여 특정 내용을 가져올 수 있도록 제공합니다. 내용에 따라서 사용자에게 제어할 수 있도록 Interface를 제공합니다. == 참고자료 == * [^http://www.upnp.org/] * [^http://www.dlna.org/] * [^http://www.upnp.org/specs/arch/UPnP-arch-DeviceArchitecture-v1.1.pdf] * [^http://www.ietf.org/rfc/rfc2710.txt RFC2710: Multicast Listener Discovery (MLD) for IPv6] * [^http://www.ietf.org/rfc/rfc2616.txt RFC2616: Hypertext Transfer Protocol -- HTTP/1.1] * [^https://tools.ietf.org/id/draft-goland-http-udp-00.txt Multicast and Unicast UDP HTTP Messages] * [^http://www.ietf.org/rfc/rfc2279.txt RFC2279: UTF-8, a transformation format of ISO 10646] * [^http://www.w3.org/XML/ XML(Extensible Markup Language). W3C recommendation.] * [^http://pds14.egloos.com/pds/200907/11/09/uPNP_and_DLNA.pdf] * [^http://en.wikipedia.org/wiki/Simple_Service_Discovery_Protocol] * [^http://quimby.gnus.org/internet-drafts/draft-cai-ssdp-v1-03.txt] * [^http://www.w3.org/TR/soap/ SOAP (Simple Object Access Protocol)] * [^http://opentools.homeip.net/dev-tools-for-upnp] * [^http://developer.lgappstv.com/TV_HELP/index.jsp?topic=%2Flge.tvsdk.references.book%2Fhtml%2FUDAP%2FUDAP%2FLG+UDAP+2+0+Protocol+Specifications.htm LG UDAP] * [^https://tools.ietf.org/id/draft-cohen-gena-client-00.txt GENA - General Event Notification Architecture Base: Client to Arbiter]