Perché i popolari servizi che utilizzano TCP hanno UDP e voci TCP in / etc / services?


22

Sto leggendo un libro sulla programmazione in rete con Go. Uno dei capitoli riguarda il file / etc / services. Qualcosa che ho notato durante l'esplorazione di questo file è che alcune voci popolari come HTTP e SSH, entrambe che usano TCP a livello di trasporto, hanno una seconda voce per UDP. Ad esempio su Ubuntu 14.04:

ubuntu@vm1:~$ grep ssh /etc/services  
ssh             22/tcp         # SSH Remote Login Protocol 
ssh             22/udp

ubuntu@vm1:~$ grep http /etc/services  
http            80/tcp          www             # WorldWideWeb HTTP            
http            80/udp                          # HyperText Transfer Protocol

Qualcuno sa perché questi hanno due voci? Non credo che SSH o HTTP abbiano mai usato UDP (confermato da questa domanda per SSH).


7
22/udpè stato rimosso in Debian nel 2016. IANA elenca ancora 22 / udp ed elenca sia udp che tcp per la maggior parte dei protocolli che di solito sono implementati solo su uno di essi. Potrebbe essere solo che significa che 22 è riservato a ssh nel caso in cui qualcuno voglia implementare ssh su udp un giorno?
Stéphane Chazelas,

2
Vedi anche la sezione 7.1 di rfc6335
Stéphane Chazelas il

Risposte:


29

Fondamentalmente, è perché quella era la tradizione fin da quando i numeri di porta iniziarono ad essere assegnati fino al 2011. Vedi, ad esempio, §7.1 "Principi passati" di RFC 6335 :

Le porte TCP e UDP sono state assegnate contemporaneamente quando è stata richiesta una delle due

È possibile che un giorno non vengano allocati, dato che le porte 1023 e inferiori sono le "porte di sistema", trattate appositamente dalla maggior parte dei sistemi operativi, e la maggior parte di tale intervallo è attualmente assegnata.

E, a proposito, HTTP / 3 funziona su UDP. Sebbene possa utilizzare qualsiasi porta UDP, non solo 80/443. Quindi davvero quelli non sono ancora utilizzati.

Per quanto riguarda la Debian è interessato, la sua /etc/servicesgià avuto 22 / UDP a 1,0 (ronzio 1996) .

È stato tuttavia rimosso in questo commit nel 2016, rilasciato per la prima volta nella versione 5.4 del netbasepacchetto.

Al momento della scrittura, l'ultima versione stabile di Debian (buster) ha 5.6 . E l'ultimo pacchetto netbase Ubuntu LTS (18.04, bionico) si basa su Debian netbase 5.4 e puoi vedere che il suo log delle modifiche menziona anche la rimozione di udp / 22 .


4
@SergiyKolodyazhnyy Non credo, dato che questa pratica precede i firewall.
derobert,

3
@TobySpeight Non è solo Linux, fa parte degli standard pertinenti. Vedi, ad esempio, §6 di tale RFC. Sebbene IANA registri anche porte più alte, hanno una classificazione diversa (e ciò conta in pratica a causa del modo in cui i sistemi operativi, non solo Linux, li trattano). Lo chiarirò un po '. Inoltre, 0 non è una porta valida. Viene utilizzato dall'API socket come jolly (per indicare al kernel di scegliere una porta per te).
derobert il

2
"0 non è una porta valida" è discutibile. Non è certamente una porta utilizzabile sul nostro sistema operativo (motivo per cui l'ho chiamato in modo specifico e perché attualmente è riservato e probabilmente non verrà assegnato a nulla), ma non è speciale a livello di protocollo.
Toby Speight,

1
@derobert: il tuo argomento è che la porta 0 è inutilizzabile su macchine Unix perché porta 0 significa "scegli una porta libera". Sto dicendo che l'argomento è sbagliato. La conclusione non segue logicamente dalla premessa.
MSalters il

3
Sebbene possa utilizzare qualsiasi porta UDP, non solo 80/443 Questo è essenzialmente vero per qualsiasi protocollo TCP / UDP, queste sono solo le porte predefinite associate a ciascuna. La maggior parte delle applicazioni che utilizzano TCP e UDP non forniscono un modo per specificare porte non predefinite, ma HTTP consente di specificarle negli URL, quindi è più possibile variare la porta.
Barmar,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.