UPnP (Universal Plugand Play)
컴퓨터에 USB 드라이브를 꽂으면 자동으로 인식 되듯이
네트워크 상에 Device 를 연결하면 자동으로 인식 되도록 하자.
Configuration 이 필요 없이 연결 즉시 사용 가능하고,
Device 간 연결이 용이하도록 하자.
스마트홈의 기본 기술로 사용하는 거 같음.
그럼 이걸로 어떻게External IP 를 알아오는가?
UPnP Device 중 IGD (Internet Gateway Device)
Type 이 있는데, IGD 들은
GetExternalIPAddress Action 을 가지고 있다.
19.
그 뿐만 아니라
Learnthe public (external) IP address
Requesting for a new public IP address
Enumerate existing port mappings
Add and remove port mappings
Assign lease times to mappings
과 같은 강력한 기능을 가지고 있다.
20.
그래서 ARP HOOKING처럼 패킷을 후킹할 수 있는
HACKING 도구로 사용될 수 있다.
여기까지가 이론 공부.. 실제로 IGD 를 이용하여 P2P 를 만들자
그래도 집 셋탑박스가UPnP Device 로
Discovery 되어서 해당 셋탑박스가 제공하는
Get, SetVolumn Action 을 사용하는 프로그램을 만들어 봄.
23.
1. Discovery
M-SEARCH *HTTP/1.1
HOST: 239.255.255.250:1900
ST:upnp:rootdevice
MAN:"ssdp:discover“
MX:3
ASCII 형태의 위 전문을
UDP Port 239.255.255.250:1900
BroadCast 포트로 전송한다.
24.
http/1.1 200 ok
cache-control:max-age=1810
date: tue, 12 jan 2016 16:27:39 gmt
ext:
location:
http://192.168.219.21:38400/description.xml
server: android/2.2 upnp/1.0 smartict/1.0
st: upnp:rootdevice
usn: uuid:fe28fde0-8522-bcb4-b767-
d7beb5b1f1ef::upnp:rootdevice
x-type: stb
그러면 아래와 같이 Device 정보가 담긴 응답이 온다.