La porta 0 ha un significato speciale nella programmazione di rete, specialmente nei sistemi operativi Unix quando si tratta di programmazione socket, dove questa porta viene utilizzata per richiedere porte dinamiche allocate dal sistema. La porta 0 è una porta con carattere jolly, che indica al sistema di trovare un numero di porta adatto.
A differenza della maggior parte dei numeri di porta, la porta 0 è una porta riservata in una rete TCP/IP, ovvero non viene utilizzata nei messaggi TCP o UDP. Le porte di rete in TCP e UDP vanno da 0 a 65535.
I numeri di porta compresi tra 0 e 1023 sono identificati come porte di sistema. L'Internet Assigned Numbers Authority (IANA) mantiene un elenco ufficiale degli usi previsti di questi numeri di porta su Internet e la porta di sistema 0 non deve essere utilizzata.
Come funziona la porta TCP/UDP 0 nella programmazione di rete
La porta 0 ha un significato speciale nella programmazione di rete
La configurazione di una nuova connessione socket di rete richiede l'allocazione di un numero di porta sia sul lato di origine che su quello di destinazione. Il messaggio TCP o UDP inviato dall'originatore (sorgente) contiene entrambi i numeri di porta, in modo che il destinatario del messaggio (destinazione) possa inviare un messaggio di risposta all'endpoint del protocollo corretto.
IANA ha porte di sistema designate preassegnate per le applicazioni Internet di base, come i server Web (porta 80), ma molte applicazioni di rete TCP e UDP non dispongono di una propria porta di sistema e devono ottenerne una dal sistema operativo dei dispositivi ogni volta che vengono eseguite. .
Per ottenere l'assegnazione di un numero di porta di origine, l'applicazione chiama le funzioni di rete TCP/IP come bind() per richiedere una porta. L'applicazione può fornire un numero fisso (codificato) a bind(), se desidera richiedere una porta specifica, ma tale richiesta potrebbe fallire nel caso in cui un'altra applicazione venga eseguita sul sistema che attualmente utilizza quella porta.
Inoltre, l'applicazione può fornire la porta 0 a bind() come parametro di connessione. Ciò fa sì che il sistema operativo cerchi e restituisca automaticamente una porta disponibile adatta all'interno dell'intervallo di numeri di porta dinamica TCP/IP.
All'applicazione non viene assegnata la porta 0 ma un altro numero di porta dinamico. Il vantaggio di questa convenzione di programmazione è l'efficienza. Invece di dover distribuire ed eseguire codice per ciascuna applicazione per provare più porte finché non ne ottiene una valida, le applicazioni possono fare affidamento sul sistema operativo.
Unix, Windows e altri sistemi operativi non sono identici nella gestione della porta 0, ma si applica la stessa convenzione generale.
Porta 0 e problemi di sicurezza della rete
Il traffico di rete inviato su Internet ai server in ascolto sulla porta 0 può essere generato da aggressori informatici o da applicazioni programmate in modo errato. I messaggi generati dal server in risposta al traffico della porta 0 aiutano gli aggressori a conoscere il comportamento del dispositivo e le potenziali vulnerabilità della rete.
Molti fornitori di servizi Internet (ISP) bloccano il traffico sulla porta 0, sia i messaggi in entrata che quelli in uscita, per proteggersi da questi exploit.