UPnP

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 25. června 2019; kontroly vyžadují 5 úprav .

Universal Plug and Play (UPnP) je architektura pro vícevrstvá připojení mezi hostiteli . Poskytuje automatické propojení hostitelů mezi sebou a jejich společnou práci. Založeno na TCP/IP , HTTP , XML a dalších otevřených internetových standardech.

Fórum UPnP

Universal Plug and Play Forum (UPnP Forum) je otevřené průmyslové sdružení založené v červnu 1999 s cílem vyvinout standardy pro technologii UPnP, které by usnadnily propojování chytrých zařízení přes domácí a případně podnikové sítě. Členové fóra vytvářejí a publikují protokoly pro řízení zařízení UPnP a protokoly pro řízení služeb.

Začátkem června 2001 bylo na fóru UPnP více než 350 společností. Fórum řídí Řídící výbor UPnP, který se skládá z 22 členů. Kromě toho existuje Technická komise, Marketingová komise a různé pracovní komise zabývající se konkrétními kategoriemi zařízení. Seznamy členů fóra, stejně jako informace o tom, jak se k němu připojit, jsou k dispozici na webových stránkách fóra.

Technické prvky

UPnP je zaměřen na domácí sítě, sítě malých podniků a další sítě malé velikosti. Poskytuje výměnu dat mezi libovolnými dvěma zařízeními, která jsou pod kontrolou jakéhokoli síťového řídicího zařízení. UPnP funguje bez ohledu na použitý operační systém, fyzické médium nebo programovací jazyk.

UPnP podporuje sítě s nulovou konfigurací a automatické zjišťování zařízení: zařízení se dynamicky připojuje k síti, získává IP adresu, na požádání oznamuje své schopnosti a shromažďuje informace o přítomnosti a schopnostech jiných zařízení. Přítomnost serverů DHCP a DNS je volitelná; lze je použít pouze v případě, že jsou dostupné online. Zařízení se navíc může automaticky odhlásit ze sítě, což nepovede k žádnému narušení jeho provozu.

Technologie UPnP čerpá ze všech zkušeností z vývoje internetu, aktivně využívá mnoho jeho součástí včetně IP , TCP , UDP , HTTP a XML . Vývojový projekt UPnP zajišťuje mnohostrannou spolupráci zainteresovaných firem v oblasti tvorby standardních protokolů pro ovládání zařízení (DCP). Stejně jako u internetu budou tyto standardy založeny na deklarativních protokolech pro kabelový přístup napsaných v XML a komunikujících přes HTTP.

Přesměrování portů

UPnP umožňuje programově přesměrovat porty. Toho využívají aplikace jako Skype, μTorrent. Níže je uveden příklad použití objektu OLE k implementaci takového přesměrování (kód je napsán v Delphi 7, podporovaném Windows XP Service Pack 2 a vyšším).

používá ..., WinSock , ComObj , ActiveX .... //Pro nejnovější verze Delphi přidejte "OleAuto" místo jednotky "ComObj". ... function GetLocalIP : String ; //Získání místní IP adresy const WSVer = $101 ; var wsaData : TWSAData ; P : PHostEnt ; Buf : pole [ 0 .. 127 ] Char ; _ begin Vysledek := '' ; if WSAStartup ( WSVer , wsaData ) = 0 then begin if GetHostName ( @Buf , 128 ) = 0 then begin P : = GetHostByName ( @Buf ) ; _ if P <> nil then Result := iNet_ntoa ( PInAddr ( p ^. h_addr_list ^ ) ^ ) ; konec ; WSACleanup ; konec ; konec ; procedure AddUPnPEntry ( Port : Integer ; const Name : ShortString ; LAN_IP : string ) ; var Nat : Varianta ; Porty : Varianta ; begin if NOT ( LAN_IP = '127.0.0.1' ) then begin try Nat := CreateOleObject ( 'HNetCfg.NATUPnP' ) ; Porty := Nat . StaticPortMappingCollection ; pokud ne VarIsClear ( Ports ) then begin //něco udělej //ShowMessage(IntToStr(Ports.Count)); porty . Add ( Port , 'TCP' , Port , LAN_IP , True , jméno ) ; konec ; kromě e : Exception do ShowMessage ( 'Došlo k chybě při přidávání UPnP portů ' + e . Zpráva ) ; konec ; konec ; konec ; procedure RemoveUPnPEntry ( Port : Integer ) ; var Nat : Varianta ; Porty : Varianta ; begin try Nat := CreateOleObject ( 'HNetCfg.NATUPnP' ) ; Porty := Nat . StaticPortMappingCollection ; porty . Odebrat ( Port , 'TCP' ) ; kromě ShowMessage ( 'Došlo k chybě při odebírání portů UPnP. ' + 'Zkontrolujte, zda váš router podporuje UPnP a ' + 'má povoleno nebo zakázáno UPnP.' ) ; konec ; konec ; procedura ListUPnPEntry ; var Nat : Varianta ; Porty : Varianta ; Výčet : IEnumVARIANT ; MyPort : OLEVariant ; IntPort , ExtPort : Integer ; Desc , Protocol , IntClient , ExtIP : WideString ; Povoleno : Boolean ; iValue : LongWord ; begin try Nat := CreateOleObject ( 'HNetCfg.NATUPnP' ) ; Porty := Nat . StaticPortMappingCollection ; pokud ne VarIsClear ( Ports ) , pak začněte Enum := IUnknown ( Ports . _NewEnum ) jako IEnumVARIANT ; zatímco Enum . Další ( 1 , MyPort , iValue ) = S_OK začít Popis : = MyPort . Popis ; Povoleno := MyPort . Povoleno ; ExtIP := Můj port . ExternalIPAddress ; ExtPort := MyPort . Externí port ; IntClient := MyPort . Interní klient ; IntPort := MyPort . InternalPort ; Protokol := Můj port . protokol ; Formulář1 . Poznámka1 . Čáry . Přidat ( Desc + ^ I + ^ I + IntToStr ( ExtPort ) + ^ I + Protokol + ^ I + IntToStr ( IntPort ) + ^ I + IntClient ) ; konec ; konec ; kromě ShowMessage ( 'Došlo k chybě při výpisu portů UPnP. Zkontrolujte prosím, zda váš router podporuje UPnP a má povoleno UPnP.' ) ; konec ; konec ; postup TForm1 . Button1Click ( Sender : TObject ) ; begin AddUPnPEntry ( 8090 , 'MyProgram' , GetLocalIP ) ; //Přidat konec portu ; postup TForm1 . Button2Click ( Sender : TObject ) ; begin RemoveUPnPEntry ( 8090 ) ; //Smazat port end ; postup TForm1 . Button3Click ( Sender : TObject ) ; begin ListUPnPEntry ; // Konec aktualizace ;

V tomto příkladu byl název služby nastaven na "MyProgram". Název služby obsahuje popis programu přesměrování portů.

Viz také

Externí odkazy