Condividi tramite


Condivisione delle porte Net.TCP

Windows Communication Foundation (WCF) fornisce un nuovo protocollo di rete basato su TCP (net.tcp://) per la comunicazione ad alte prestazioni. WCF introduce inoltre un nuovo componente di sistema, Servizio di condivisione porte Net.Tcp, che consente la condivisione delle porte net.tcp tra più processi utente.

Informazioni generali e motivazione

Quando il protocollo TCP/IP è stato introdotto per la prima volta, solo pochi protocolli di applicazione lo utilizzavano. TCP/IP utilizza numeri di porta per differenziare le applicazioni, assegnando un numero di porta univoco a 16 bit a ogni protocollo di applicazione. Ad esempio, il traffico HTTP è oggi standardizzato sull'utilizzo della porta TCP 80, SMTP utilizza la porta TCP 25 e FTP utilizza le porte TCP 20 e 21. Altre applicazioni che utilizzano TCP come trasporto possono scegliere un altro numero di porta disponibile, per convenzione o in base a una standardizzazione formale.

L'utilizzo di numeri di porta per fare distinzioni tra le applicazioni comporta problemi di protezione. I firewall sono generalmente configurati per bloccare il traffico TCP su tutte le porte, a parte alcuni punti di ingresso conosciuti, pertanto la distribuzione di un'applicazione che utilizza una porta non standard è spesso complicata, se non impossibile, a causa della presenza di firewall aziendali e personali. Le applicazioni che possono comunicare su porte note standard, già consentite, riducono la superficie d'attacco esterna. Molte applicazioni di rete utilizzano il protocollo HTTP, poiché la maggior parte dei firewall è configurata, per impostazione predefinita, per consentire il traffico sulla porta TCP 80.

Il modello HTTP.SYS, in cui il traffico per molte applicazioni HTTP diverse viene reso multiplex su una sola porta TCP, è diventato lo standard sulla piattaforma Windows. Questo offre un punto di controllo comune per gli amministratori dei firewall, consentendo al contempo agli sviluppatori di applicazioni di ridurre al minimo i costi di distribuzione associati alla creazione di nuove applicazioni che possono fare uso della rete.

La possibilità di condividere porte tra più applicazioni HTTP caratterizza da molto tempo Internet Information Services (IIS). Tuttavia, è solo con l'introduzione di HTTP.SYS (il listener del protocollo HTTP in modalità kernel) con IIS 6.0 che questa infrastruttura è stata completamente generalizzata. In effetti, HTTP.SYS consente a processi utente arbitrari di condividere le porte TCP dedicate al traffico HTTP. Questa funzionalità consente a molte applicazioni HTTP di coesistere sullo stesso computer fisico in processi isolati separati, condividendo al contempo l'infrastruttura di rete necessaria per inviare e ricevere traffico sulla porta TCP 80. Il servizio di condivisione delle porte Net.TCP consente lo stesso tipo di condivisione delle porte per le applicazioni net.tcp.

Architettura di condivisione delle porte

L'architettura di condivisione delle porte in WCF ha tre componenti principali:

  • Un processo di lavoro: qualsiasi processo che comunica su net.tcp:// utilizzando porte condivise.
  • Il trasporto TCP WCF: implementa il protocollo net.tcp://.
  • Il Servizio di condivisione porte Net.TCP: consente a molti processi di lavoro di condividere la stessa porta TCP.

Il Servizio di condivisione porte Net.TCP è un servizio Windows in modalità utente che accetta connessioni net.tcp:// per conto dei processi di lavoro che stabiliscono connessioni tramite esso. Quando arriva una connessione socket, il servizio di condivisione delle porte esamina il flusso di messaggi in ingresso per ottenerne l'indirizzo di destinazione. In base a questo indirizzo, il servizio di condivisione delle porte può instradare il flusso di dati all'applicazione che in definitiva lo elaborerà.

Quando viene aperto un servizio WCF che utilizza la condivisione delle porte net.tcp://, l'infrastruttura di trasporto TCP WCF non apre direttamente un socket TCP nel processo dell'applicazione. Registra, invece, l'URI (Uniform Resource Identifier) dell'indirizzo di base del servizio presso il Servizio di condivisione porte Net.TCP e attende che quest'ultimo ascolti i messaggi per suo conto. Il servizio di condivisione delle porte invia i messaggi indirizzati al servizio dell'applicazione non appena arrivano.

Installazione della condivisione delle porte

Il Servizio di condivisione porte Net.TCP è disponibile in tutti i sistemi operativi che supportano .NET Framework 3.0, ma non viene attivato per impostazione predefinita. Per motivi di sicurezza, gli amministratori devono attivare manualmente il Servizio di condivisione porte Net.TCP al primo utilizzo. Il Servizio di condivisione porte Net.TCP espone opzioni di configurazione che consentono di modificare diverse caratteristiche dei socket di rete appartenenti al servizio stesso. Per ulteriori informazioni, vedere Procedura: attivare il servizio di condivisione delle porte Net.TCP.

Utilizzo della condivisione delle porte Net.tcp in un'applicazione

Il modo più semplice per utilizzare la condivisione delle porte net.tcp:// nell'applicazione WCF consiste nell'esporre un servizio mediante NetTcpBinding e nell'attivare il Servizio di condivisione porte Net.TCP mediante la proprietà PortSharingEnabled.

Per ulteriori informazioni su questa procedura, vedere Procedura: configurare un servizio Windows Communication Foundation per l'utilizzo della condivisione delle porte.

Implicazioni di protezione della condivisione delle porte

Sebbene il Servizio di condivisione porte Net.TCP preveda un livello di elaborazione tra le applicazioni e la rete, le applicazioni che utilizzano la condivisione delle porte dovrebbero comunque essere protette come se fossero direttamente in ascolto sulla rete. In particolare, le applicazioni che utilizzano la condivisione delle porte dovrebbero valutare i privilegi del processo con cui vengono eseguite. Considerare l'ipotesi di eseguire l'applicazione utilizzando l'account predefinito Servizio di rete, che viene eseguito con l'insieme minimo di privilegi del processo necessari per la comunicazione di rete.

Vedere anche

Attività

Procedura: configurare un servizio Windows Communication Foundation per l'utilizzo della condivisione delle porte
Procedura: attivare il servizio di condivisione delle porte Net.TCP

Concetti

Configurazione del servizio di condivisione delle porte Net.TCP

Altre risorse

Hosting