Assegnazione di porte TCP / IP per l'uso interno delle applicazioni

StackOverflow https://stackoverflow.com/questions/218839

  •  03-07-2019
  •  | 
  •  

Domanda

Ho scritto un servizio WCF ospitato da un servizio Windows e deve essere ascoltato su una porta TCP / IP nota. Da quale intervallo posso allocare in sicurezza una porta da utilizzare all'interno della mia organizzazione? Tale porta verrà incorporata nei file di configurazione del servizio e dei client che stanno utilizzando il servizio.

È stato utile?

Soluzione

Scegli un numero di porta da 49152 a 65535.

IANA pubblica un elenco di porte attualmente assegnate.

http://www.iana.org/assignments/port-numbers

Le porte dinamiche e / o private sono quelle da 49152 a 65535. Questa è la gamma da cui DOVREBBE scegliere una porta per le applicazioni interne. Naturalmente è possibile utilizzare qualsiasi porta appartenente a uno degli intervalli non assegnati nell'elenco pubblicato. Tuttavia, tieni presente che selezionando un numero di porta da quegli intervalli non assegnati non esiste alcuna garanzia che la porta scelta non sarà una porta riservata in futuro.

  

I NUMERI DI PORTE NON ASSEGNATI NON DOVREBBERO ESSERE   USATO. LA IANA ASSEGNERÀ IL NUMERO   PER IL PORTO DOPO LA TUA DOMANDA   È STATO APPROVATO.

E assicurati che il numero di porta selezionato sia configurabile come indicato:

  

Quella porta sarà incorporata in   file di configurazione per il servizio e il file   clienti che stanno consumando il   servizio.

Ciò eviterà il mal di testa nel caso in cui un altro software di terze parti che non puoi toccare stia utilizzando il tuo numero di porta. Se ciò accade, vai avanti e lo cambi nel file di configurazione e funziona.

Altri suggerimenti

Le porte 0-1023 sono le porte note e sono assegnate da IANA. Questi dovrebbero essere usati solo per i protocolli assegnati su reti pubbliche.

Le porte 1024-65535 erano chiamate numeri di porta registrati (vedi rfc1700 ) ma ora sono divisi in due aree (vedi rfc6335 ).

Le porte 1024-49151 sono le porte utente e sono quelle da utilizzare per i propri protocolli.

Le porte 49152-65535 sono le porte dinamiche e non devono essere prescritte a un protocollo.

Le porte utente possono essere utilizzate per qualsiasi protocollo, ma ci sono un numero finito, quindi il tuo uso si scontrerà con qualcun altro su qualche rete. IANA tiene traccia dei numeri di porta registrati (0-49151). Se il protocollo verrà utilizzato su reti pubbliche, è necessario esaminare la registrazione con IANA. Se lo stai utilizzando solo all'interno della tua rete, scegli una porta all'interno di quest'area (1024-49151) e controlla quella porta con registro IANA per assicurarsi che non sia utilizzato da un protocollo che potrebbe essere utilizzato sulla rete. Per uso privato è probabilmente meglio scegliere un numero assegnato a un protocollo che non verrà utilizzato piuttosto che sceglierne uno non assegnato e che potrebbe essere assegnato in futuro.

Non utilizzare un numero di porta all'interno dell'intervallo dinamico. Queste porte sono assegnate dal sistema operativo, in modo dinamico e in qualche modo casuale. Se si apre una connessione client (utilizzando bind () con port = 0), verrà assegnata una porta non utilizzata dall'intervallo dinamico. Non c'è modo di garantire che una porta in questo intervallo sia sempre gratuita per il protocollo.

Risposta breve: evitare qualsiasi cosa fino al 1023 compreso o superiore a 49152 e testare la porta scelta rispetto ai servizi sulla rete.

Se hai preso le ragionevoli precauzioni che sembra avere (mettendo il numero di porta in un file di configurazione), non dovrebbe essere un grosso disturbo se in seguito scopri un conflitto.

Ma (in modo da poter aggiungere qualcosa agli altri suggerimenti che sono spuntati mentre sto scrivendo) assicurati di rendere facile il cambiamento! Se è nei file di configurazione, rendilo ovvio. Documentalo e segnalalo nella risoluzione dei problemi. È il tipo di cosa che potrebbe andare storto, quindi semplifica il debug se deve essere modificato.

Oltre agli altri suggerimenti sulla scelta di una porta comune per l'applicazione, ti suggerirei di rendere configurabile la porta all'interno della tua applicazione. I numeri di porta hardcoded sono una cattiva idea, soprattutto se in seguito trovi un conflitto di porte con un'altra applicazione e devi cambiare il tuo.

Ecco un buon delle porte delle applicazioni comuni . Fai la tua scelta in uno slot vuoto. Forse dovresti anche scansionare la tua rete per qualsiasi applicazione speciale interna.

Sono disponibili porte con numeri generalmente alti e le suggerirei, ma potrebbero essere bloccate dai firewall.

Come nota, ricordati di controllare quelle porte tramite netstat / a / n per vedere se sta usando o no da un'altra applicazione. Scopro che Vista ha usato il 49152 .... per qualche motivo a livello di applicazione. Fondamentalmente, poiché la maggior parte del listener a livello di sistema non implementa la condivisione delle porte è molto sicuro usare quelle porte che non sono affatto utilizzate.

buona giornata di programmazione AMIR

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top