Sdílet prostřednictvím


Sdílení portů Net.TCP

Windows Communication Foundation (WCF) poskytuje nový síťový protokol založený na protokolu TCP (net.tcp://) pro vysoce výkonnou komunikaci. WCF také zavádí novou systémovou komponentu, službu Sdílení portů Net.TCP, která umožňuje sdílení portů net.tcp napříč více uživatelskými procesy.

Pozadí a motivace

Při prvním zavedení protokolu TCP/IP byl použit pouze malý počet aplikačních protokolů. Tcp/IP používá čísla portů k rozlišení mezi aplikacemi přiřazením jedinečného 16bitového čísla portu ke každému aplikačnímu protokolu. Například provoz HTTP je dnes standardizovaný tak, aby používal port TCP 80, SMTP používá port TCP 25 a FTP používá porty TCP 20 a 21. Jiné aplikace používající protokol TCP jako přenos můžou zvolit jiné dostupné číslo portu, a to buď podle konvence, nebo prostřednictvím formální standardizace.

Použití čísel portů k rozlišení mezi aplikacemi mělo problémy se zabezpečením. Brány firewall jsou obecně nakonfigurované tak, aby blokovaly provoz TCP na všech portech s výjimkou několika známých vstupních bodů, takže nasazení aplikace, která používá nestandardní port, je často složitá nebo dokonce nemožné kvůli přítomnosti podnikových a osobních bran firewall. Aplikace, které můžou komunikovat přes standardní, dobře známé porty, které už jsou povolené, snižují prostor pro vnější útoky. Mnoho síťových aplikací využívá protokol HTTP, protože většina bran firewall je ve výchozím nastavení nakonfigurovaná tak, aby umožňovala provoz na portu TCP 80.

Model HTTP.SYS, ve kterém je provoz pro mnoho různých aplikací HTTP multiplexovaný na jeden port TCP, se stal standardem na platformě Windows. To poskytuje společný bod kontroly pro správce brány firewall a zároveň umožňuje vývojářům aplikací minimalizovat náklady na nasazení nových aplikací, které mohou využívat síť.

Schopnost sdílet porty napříč více aplikacemi HTTP byla dlouho funkcí Internetová informační služba (IIS). Byla však pouze se zavedením HTTP.SYS (naslouchací proces protokolu HTTP v režimu jádra) se službou IIS 6.0, že tato infrastruktura byla plně generalizována. HTTP.SYS umožňuje libovolným uživatelským procesům sdílet porty TCP vyhrazené pro provoz HTTP. Tato funkce umožňuje mnoha aplikacím HTTP, aby společně existovat na stejném fyzickém počítači v samostatných izolovaných procesech při sdílení síťové infrastruktury potřebné k odesílání a příjmu provozu přes port TCP 80. Služba sdílení portů Net.TCP umožňuje stejný typ sdílení portů pro aplikace net.tcp.

Architektura sdílení portů

Architektura sdílení portů ve WCF má tři hlavní komponenty:

  • Pracovní proces: Jakýkoli proces komunikující přes net.tcp:// pomocí sdílených portů.

  • Přenos WCF TCP: Implementuje protokol net.tcp://.

  • Služba sdílení portů Net.TCP: Umožňuje mnoha pracovním procesům sdílet stejný port TCP.

Služba sdílení portů Net.TCP je služba systému Windows v uživatelském režimu, která přijímá připojení net.tcp:// jménem pracovních procesů, které se k němu připojují. Když dorazí připojení soketu, služba sdílení portů zkontroluje příchozí datový proud zpráv a získá cílovou adresu. Na základě této adresy může služba sdílení portů směrovat datový proud do aplikace, která ho nakonec zpracuje.

Když se otevře služba WCF, která používá sdílení portů net.tcp://, infrastruktura přenosu WCF TCP neotevře přímo soket TCP v procesu aplikace. Infrastruktura přenosu místo toho zaregistruje základní adresu URI (Base Address Uniform Resource Identifier) služby Net.TCP Port Sharing Service a čeká, až služba sdílení portů naslouchá zprávám jejím jménem. Služba sdílení portů odesílá zprávy adresované aplikační službě při jejich doručení.

Instalace sdílení portů

Služba Sdílení portů Net.TCP je dostupná ve všech operačních systémech, které podporují WinFX, ale služba není ve výchozím nastavení povolená. Jako bezpečnostní opatření musí správce před prvním použitím ručně povolit službu Sdílení portů Net.TCP. Služba sdílení portů Net.TCP zveřejňuje možnosti konfigurace, které umožňují manipulovat s několika charakteristikami síťových soketů vlastněných službou sdílení portů. Další informace naleznete v tématu Postupy: Povolení služby sdílení portů Net.TCP.

Použití sdílení portů Net.tcp v aplikaci

Nejjednodušším způsobem, jak použít sdílení portů net.tcp:// v aplikaci WCF, je zveřejnit službu pomocí NetTcpBinding služby a pak povolit službu Sdílení portů Net.TCP pomocí PortSharingEnabled vlastnosti.

Další informace o tom, jak to provést, naleznete v tématu Postupy: Konfigurace služby WCF pro použití sdílení portů.

Vliv sdílení portů na zabezpečení

Přestože služba Sdílení portů Net.TCP poskytuje vrstvu zpracování mezi aplikacemi a sítí, aplikace, které používají sdílení portů, by měly být stále zabezpečené, jako kdyby přímo naslouchaly v síti. Konkrétně by aplikace, které používají sdílení portů, měly vyhodnotit oprávnění procesu, ve kterých běží. Zvažte spuštění aplikace pomocí integrovaného účtu síťové služby, který běží s minimální sadou oprávnění procesů vyžadovaných pro síťovou komunikaci.

Viz také