Sebbene questa domanda sia già stata contrassegnata come risposta, ho voluto rispondere ad alcune delle ulteriori domande poste nell'OP.
Queste porte sono oggetti fisici?
Nessuna porta non è un oggetto fisico.
Un numero di porta è un numero intero senza segno a 16 bit, il che significa che l'intervallo di porte disponibili per l'uso è compreso tra 1 e 65535 (il numero di porta 0 è riservato e non può essere utilizzato). Un processo associa i suoi canali di input o output tramite socket Internet, un tipo di descrittore di file, con un protocollo di trasporto, un numero di porta e un indirizzo IP. Questo processo è noto come vincolante e consente di inviare e ricevere dati tramite la rete.
Sono qualcosa di costruito in una parte del mio computer? Sono anche qualcosa di fisico? O
scritto nel codice? Dov'è questo codice? Il sistema operativo? Che cos'è veramente un porto?
Il software di rete del sistema operativo ha il compito di trasmettere i dati in uscita da tutte le porte delle applicazioni sulla rete e di inoltrare i pacchetti di rete in arrivo a un processo facendo corrispondere l'indirizzo IP e il numero di porta del pacchetto.
Solo un processo può essere associato a uno specifico indirizzo IP e combinazione di porte utilizzando lo stesso protocollo di trasporto. Errori di applicazione comuni, talvolta denominati conflitti di porte, si verificano quando più programmi tentano di collegarsi agli stessi numeri di porta sullo stesso indirizzo IP utilizzando lo stesso protocollo.
Il paragrafo precedente è la chiave per capire perché le porte / i protocolli sono usati in rete. Se non avessimo un modo per specificare il protocollo, che trasmette i dati su un numero di porta d'accesso concordato, non saresti in grado di fare più di 1 cosa alla volta (controlla la tua e-mail e usa il web) perché il tuo computer avrebbe nessun modo per distinguere tra i dati per il tuo client di posta elettronica e i dati per il sito web che stai navigando.
Quante porte ci sono?
I numeri di porta sono assegnati in vari modi, in base a tre intervalli:
Well Known / System Ports (0-1023) -
Questo intervallo di porte viene utilizzato dai processi di sistema che forniscono tipi di servizi di rete ampiamente utilizzati (HTTP / 80, HTTPS / 443, Telnet / 21, SSH / 22)
Porte registrate / utente (1024-49151) - L'intervallo dei numeri di porta da 1024 a 49151 sono le porte registrate. Sono assegnati da IANA per servizi specifici su richiesta di un'entità richiedente. (Webmin / 10000, HTTP Proxy / 8080, Remote Desktop Protocol / 3389, ecc.)
Porte effimere / dinamiche / private (49152-65535) - L'intervallo 49152-65535 contiene porte dinamiche o private che non può essere registrato con IANA. Questo intervallo viene utilizzato per scopi personalizzati o temporanei e per l'allocazione automatica di porte effimere.
Posso aumentare o diminuire il numero di porte?
Per quanto riguarda la possibilità di aumentare il numero di porte disponibili, non è possibile assegnare una porta superiore a 65535 a causa della matematica che consente il funzionamento in rete (binario) - quindi la risposta a questa domanda è no, non è possibile aumentare il numero totale di porte sopra 65535.
Quali sono i protocolli?
Nell'ambito dell'informatica, un protocollo di comunicazione è un sistema di regole digitali per lo scambio di messaggi all'interno o tra computer. Quando i messaggi vengono scambiati attraverso una rete di computer, il sistema di regole è chiamato un protocollo di rete. Un protocollo è fondamentalmente un insieme concordato di istruzioni / comandi / chiamate che due dispositivi in rete possono entrambi comunicare. Pensa se non avessimo concordato protocolli e server web che avessero inviato dati casualmente ai browser web che il browser non sapeva cosa fare? Fortunatamente abbiamo HTTP e che ogni browser web creato è incorporato nel software in modo che possa comunicare con qualsiasi server web che parli anche la stessa lingua (HTTP).
Immagino che siano una specie di codice ... Puoi creare il tuo protocollo? Che lingua usi per creare un protocollo?
Sì, puoi creare i tuoi protocolli. I protocolli sono scritti in un'ampia varietà di lingue. Non sono uno sviluppatore di software, ma sono abbastanza sicuro che fino a quando qualunque lingua tu stia usando ci sono librerie che ti permettono di scrivere software in grado di comunicare su TCP / IP (ci sono altre suite di protocolli, ma TCP / IP è il più ampiamente utilizzato) è possibile utilizzare tale linguaggio per scrivere un protocollo. Il linguaggio di programmazione 'C' sembra essere il più comunemente usato per scrivere protocolli. Ciò è dovuto al fatto che molti dei primi protocolli di rete sono stati sviluppati su UNIX negli anni '70 e C sembra essere il linguaggio in cui è scritto lo stesso UNIX.
Come si ottiene una porta specifica per eseguire un protocollo specifico?
Questo differisce parecchio tra i sistemi operativi. Ad esempio, per modificare il numero di porta in cui viene eseguito il protocollo Desktop remoto in Windows, è necessario modificare il registro. Su Linux, molti dei servizi di rete possono essere configurati direttamente da un file .conf per un particolare servizio di rete.
Come definisci o inventi un nuovo protocollo?
Vedere https://journal.paul.querna.org/articles/2012/02/22/designing-network-protocols/ per un post sul blog di qualcuno che ha recentemente sviluppato un nuovo protocollo di rete e che genere di cose ha dovuto fare lungo la strada.