Hai fatto una buona domanda. Non lasciare che nessuno ti dica diversamente.
Purtroppo, non esiste una regola empirica per i tipi di protocolli che utilizzano TCP rispetto ai tipi di protocolli che utilizzano UDP.
La decisione se un protocollo utilizza l'uno o l'altro dipende da chi ha scritto / creato il protocollo per cominciare.
Se non volessero preoccuparsi di scrivere il proprio sistema di "consegna affidabile", possono semplicemente usare TCP che fornisce tutta l'affidabilità in modo innato.
Se pensassero (conoscendo il proprio protocollo in modo innato) di poter scrivere un sistema di "consegna affidabile" migliore o più appropriato, allora potrebbero incorporarlo nel protocollo stesso e semplicemente usare UDP come mezzo di trasporto.
Ad esempio, dai un'occhiata alla cattura di un campione TFTP UDP , noterai che ci sono sistemi di riconoscimento integrati all'interno del TFTP stesso: avere sia quelli che i sistemi di riconoscimento aggiuntivi all'interno di TCP sarebbe semplicemente ridondante.
Considerando che FTP, che funziona su TCP, non ha un sistema di riconoscimento incorporato. Un utente richiede semplicemente un file e il mittente lo invia. C'è una notifica "trasferimento file completato", ma nulla che garantisce di aver ricevuto ogni bit del file. FTP si affida all'affidabilità di TCP per garantire che il file arrivi fino in fondo.
Detto questo, ho esaminato l'elenco delle porte nella pagina wiki che hai collegato e ho visto una quantità sorprendente di protocolli che presumibilmente utilizzano TCP e UDP. Questo per me era estraneo e ne conosco solo pochissimi che usano entrambi (vale a dire DNS). Ma può darsi che esista un'implementazione TFTP che utilizza TCP e, in tal caso, temo di non esserci esposto.
Domain Name System (DNS) è tradizionalmente il protocollo a cui si fa riferimento quando si discute di protocolli che utilizzano sia TCP che UDP. Non li usa allo stesso tempo, intendiamoci. Ma diverse funzioni all'interno del DNS potrebbero richiedere TCP vs UDP.
Ad esempio, quando si effettua una semplice richiesta di risoluzione A-record, la "richiesta" e la "risposta" sono molto leggere, entrambe richiedono un singolo pacchetto. In quanto tale, ciò avviene in genere su UDP.
Ma se una richiesta o una risposta richiede un trasferimento più ampio (sopra una certa quantità di byte), DNS sceglie di usare TCP per garantire che "tutti i bit" arrivino. Questo è comune con le richieste di trasferimento di zona complete.