UPnP 란?

universal plug and play로 컴퓨터에 장치를 부착하면 자동으로 장치를 검색하고 사용가능케하는 plug and play을 네트워크상으로 범위를 확장시킨 개념이다.

UPnP 프로토콜 스택

사용 프로토콜

TCP/IP, HTTP, HTTPU, HTTPMU, SSDP, GENA, SOAP, XML

UPnP 네트워킹 단계

1. addressing

2. discovery

3. description

4. control

5. eventing

6. presentation

상세 내용

1. addressing

-> 주소지정

각 장치는 네트워크에 접속시 주소를 할당받게 된다. DHCP서버를 검색하여 DHCP 서버가 존재시 주소가 자동 할당되며 DHCP 서버가 존재하지 않는다면 Auto IP를 사용한다.

Auto IP는 사설 IP 169.254/16 영역에서 IP주소를 자동 할당하고 IP의 사용 여부를 검사하며 IP사용시 새로운 IP를 재할당하고 IP 사용 여부가 없을 때 까지 이 동작을 반복한다.

IP할당후에도 장치는 네트워크상의 DHCP서버가 사용 가능한지 주기적으로 계속 검사한다.

2-1. Discovery - Advertisement

-> 검색 - 알림

새로운 장치에 주소가 할당되면 이 장치는 네트워크상의 제어 포인트(장치)들에게 자신의 접속 상태를 알립니다.

접속 상태를 알릴때에는 표준형 멀티캐스트용 주소(239.255.255.250 : 1900  HTTPU)로 멀티캐스트 하며 알림 내용에는 타임 스탬프를 포함시켜 자신의 유효 기간을 알려줍니다.

이 장치는 유효 기간이 만료하기 전에 알림 내용을 재 전송합니다. 그렇지 않으면 제어 포인트는 이 장비가 더 이상 유효하지 않다고 인식합니다. 또한 장치가 오프라인 모드로 전환시 연결끊김 메시지도 반디시 전송해야 합니다.

2-2. Discovery - Search

- 검색

제어 포인트가 네트워크에 추가 되었거나 장치 및 서비스를 검색하기 위해서는 SSDP 검색 메시지를 멀티캐스트하여 원하는 장치 및 서비스를 검색합니다.(표준형 멀티캐스트용 주소(239.255.255.250 : 1900  HTTPU) 모든 장치는 메시지를 수신하고 검색조건에 일치하면 응답을 합니다. 응답은 SSDP 헤더를 가진 유니캐스트 UDP를 사용하여 전송됩니다.

3. Description

-> 설명

검색 요청에 의한 응답에는 장치 설명서를 제공하는 URL을 포함하고 있습니다.

제어 포인트는 그 URL을 토하여 HTTP GET 요청을 수행하고 장치는 장치 설명서를 보내줍니다. 장치 설명서에는 서비스 설명도 동일하게 존재하며 HTTP GET요청을 수행하여 서비스 설명도 검색가능합니다.

장치에 대한 UPnP 설명은 XML 문서로서 공급업체와 관련된 정보, 포함되어 있는 장치에 대한 정의, 장치 공급 URL, 제공하는 모든 서비스 내용, 제품 제어 및 이벤트용 URL 등에 관한 정보를 포함하고 있습니다. UPnP 관련 제품 공급업체는 표준형 장치 및 서비스 설명서를 확장하여 추가적인 상태 변수, 동작 및 전체 서비스까지도 포함할 수 있습니다. 이러한 방법으로 UPnP는 기본적 표준을 준수하면서도 유연성을 제공합니다. 장치 및 서비스 설명서 샘플은 UPnP 장치 구조 문서에 포함되어 있습니다.

예 : 검색 메세지

NOTIFY * HTTP/1.1

HOST: 239.255.255.250:1900

CACHE-CONTROL: max-age=180

Location: http://192.168.1.1:5431/dyndev/uuid:0014-bf09        //<-- 설명 XML URL

NT: upnp:rootdevice

NTS: ssdp:alive

SERVER:LINUX/2.4 UPnP/1.0 BRCM400/1.0

USN: uuid:0014-bf09::upnp:rootdevice

설명 XML URL 내부에는 제어 URL과 이벤트 URL, SCPD URL(가용한 기능 설명)을 포함한다.

<service>

<serviceType>urn:schemas-upnp-org:service:

WANIPConnection:1</serviceType>

<serviceId>urn:upnp-org:serviceId:WANIPConnection</serviceId>

<controlURL>/ipc</controlURL>

<eventSubURL>/ipc</eventSubURL>

<SCPDURL>/ipc.xml</SCPDURL>

</service>

4. control

-> 제어

제어 포인트는 장치의 제어 URL을 통하여 장치를 제어할수 있습니다. 동작을 실행시키는 것은 일종의 원격 프로시저 호출입니다.

제어 메시지에는 동작 이름과 이 메시지에 포함된 독립변수 이름 및 변수를 정의하고 이들 정보는 UPnP용 포맷으로 캡슐화 되고 SOAP를 사용하여 포맷된후 TCP/IP를 통한 HTTP를 사용하여 전송됩니다.

장치는 반드시 제어 요청에 30초 이내에 응답해야 합니다. 또한 제어 포인트는 특정 서비스 변수의 상태를 질의할 수도 있습니다. 예를 들어 DVD플레이어는 DVD 시간을 포함하는 상태 병수를 알려주는 서비스를 가지고 있을 수 있고 제어 포인트를 이를 질의할수 있습니다. 그러나 각각의 질의(쿼리문)문에 대해서는 하나의 변수만이 전송됩니다.

5. eventing

-> 이벤트

장치는 자신의 이벤트에 등록된 네트워크 상의 제어 포인트에게 자신의 변화 상태를 송신할수 있습니다. 장치의 업데이트를 발행하는 것입니다. 제어포인트는 장치의 이벤트를 수신을 취소하는 것도 가능합니다. 제어포인트의 이벤트 수신 취소시 장치는 이벤트 목록에서 해당 제어포인트를 삭제합니다.

장치가 보내는 이벤트 메시지에는 구독용 URL, 구독기간, 특정 변수 값 및 변수 이름이 포함되어있고 GENA를 사용하여 포맷후 TCP/IP를 사용하여 전송합니다.

6. presentation

-> 표현

프리젠테이션 페이지에 대한 URL은 장치 설명서에 포함되어 있습니다. 이 페이지를 검색하려면 프리젠테이션 URL로 HTTP GET 요청을 발행할 제어 포인트가 필요합니다. 그러면 장치가 프리젠테이션 페이지 정보를 반환합니다.

UPnP Device Architecture 문서는 이 페이지를 HTML로 작성해야 한다고 명시하고 있습니다. 이 과정에서는 아버지가 제어를 위하여 장치를 조회한다는 점을 제외하고는 웹 브라우징 기법과 비슷합니다.

프리젠테이션 페이지의 기능은 전적으로 UPnP 제품 공급업체 의하여 지정됩니다. 프리젠테이션 페이지를 구현하기 위하여 UPnP 제품 공급업체는 장치의 기존 기능을 최대한 활용하면서 제어 기능 및 이벤트를 위한 UPnP 기능을 사용하기 원할 것입니다. 프리젠테이션과 관련하여 정의된 UPnP Forum 구성요소는 전혀 없고 전적으로 공급업체에 의하여 결정된다는 점에 유의하십시오.

UPnP에 사용되는 프로토콜 설명

종류 : SSDP(장치 검색 discovery), GENA(통보 event), SOAP(제어 control), TCP/IP, HTTP, HTTPU, HTTPMU

1. TCP/IP

UPnP 프로토콜을 구축하는 기반 역할을 한다. 즉 UPnP 포로토콜을 캡슐화하는 역할을 하는 것으로 송수신의 순서 및 전달을 보장한다.

2. HTTP, HTTPU, HTTPMU

HTTP를 기본 프로토콜로하여 유니캐스트, 멀티캐스트를 지원하는 프로토콜이다. UPnP는 모든 측면에서 HTTP 및 이의 파생 프로토콜 기반위에서 구축되었다. HTTP는 TCP/IP기반이고 HTTPU, HTTPMU는 UDP/IP 기반 위에서 동작한다.

3. SSDP

SSDP는 네트워크 서비스를 네트워크상에서 검색하는 방법을 정의한다. SSDP는 HTTPU 및 HTTPMU 기반 위에 구축되며 제어포인트가 네트워크 상에서 원하는 리소스를 검색하는 바법 및 장치들이 네트워크상에서 자신들이 가용 상태에 있음을 알리는 방법을 정의합니다. 제어포인트 및 장치 모두가 SSDP를 사용합니다.

제어포인트는 네트워크 접속시 멀티캐스트 HTTPMU를 기반으로한 SSDP를 송신하고 장치들은 이를 수신하여 검색조건에 맞을시 유내캐스트 HTTPU를 기반으로한 SSDP를 송신합니다. 또한 장치는 자신의 가용 상태를 알리는 정보를 GENA를 통해 같이 전송합니다.

SSDP는 장치를 원할히 끊는 방법을 포함하고 또한 타임스탬프가 존재하여 장치의 가용 시간을 정해줍니다.

4. GENA

GENA는 장치의 알림을 송수신하기 위한 기능을 제공합니다. 장치의 접속을 알리는 단계에서는 HTTPMU(UDP/IP)기반에서 적용되고 , 알림(eventing) 단계에서는 HTTP 기반의 TCP/IP에서 동작합니다. 중요한 것은 GENA는 결국 알림을 위하여 존재하는 프로토콜입니다. 또한 GENA는 가입자 및 통보 발행자의 개념이 존재합니다. UPnP는 GENA 포맷을 사용하여 존재 발표 내용을 생성한 후에 SSDP 프로토콜을 통하여 전송하고 UPnP 이벤트 작업의 서비스 상태 변화를 신호로 알려주는 기능을 합니다. 이벤트 통보를 수신 받고자 하는 제어 포인트는 원하는 서비스, 이벤트 송신 위치 및 이벤트 통보 구독 시간을 포함하는 요청을 송신함으로써 이벤트 소스에 가입합니다. 가입 내용은 주기적으로 갱신되어 지속적으로 통보되며, GENA를 사용하여 가입을 취소하는 것도 가능합니다.

5. SOAP

SOAP는 XML 및 HTTP의 용법을 정의하여 원격 프로시저 호출을 실행합니다. 이것은 인터넷을 통한 RPC기반 통신의 표준이 되어가는 추세입니다. 원격 프로시저 호출과 유사하게, UPnP는 SOAP를 사용하여 제어 메시지를 장치들로 전송하며 그 결과 및 오류 내역을 제어 포인트로 반환합니다. 각 UPnP 제어 요청은 실행할 동작 및 일련의 매개 변수를 포함하는 SOAP 메시지 입니다. 그 응답도 또한 SOAP 메시지이며 상태, 반환 값(return value) 및 모든 반환 매개 변수를 포함하고 있습니다.