Vous avez posé une bonne question. Ne laissez personne vous dire le contraire.
Malheureusement, il n'y a pas de règle empirique pour les types de protocoles qui utilisent TCP et les types de protocoles qui utilisent UDP.
La décision si un protocole utilise l'un ou l'autre revient à celui qui a écrit / créé le protocole pour commencer.
S'ils ne voulaient pas se soucier d'écrire leur propre système de «livraison fiable», ils peuvent simplement utiliser TCP qui fournit toute la fiabilité de manière innée.
S'ils pensaient (connaissant leur propre protocole de manière innée) qu'ils pourraient écrire un système de «livraison fiable» meilleur ou plus approprié, alors ils peuvent l'intégrer dans le protocole lui-même et simplement utiliser UDP comme moyen de transport.
À titre d'exemple, jetez un œil à une capture d'échantillon UDP TFTP , vous remarquerez qu'il existe des systèmes d'accusé de réception intégrés dans TFTP lui-même - les avoir à la fois et les systèmes d'accusé de réception supplémentaires dans TCP seraient simplement redondants.
Alors que FTP, qui s'exécute sur TCP, n'a pas de système de reconnaissance intégré. Un utilisateur demande simplement un fichier et l'expéditeur l'envoie. Il y a une notification "transfert de fichier terminé", mais rien ne garantit d'avoir reçu chaque bit du fichier. FTP s'appuie sur la fiabilité de TCP pour garantir que le fichier est transmis de manière complète.
Cela dit, j'ai parcouru la liste des ports sur la page wiki que vous avez liée et j'ai vu une quantité surprenante de protocoles qui utiliseraient soi-disant TCP et UDP. Cela m'était étranger, et je ne connais que très peu de ceux qui utilisent les deux (à savoir, DNS). Mais il se peut qu'il existe une implémentation TFTP qui utilise TCP, et si c'est le cas, je crains de ne pas y être exposé.
Le système de noms de domaine (DNS) est traditionnellement le protocole auquel il est fait référence lors de l'examen des protocoles qui utilisent à la fois TCP et UDP. Il ne les utilise pas en même temps, faites attention. Mais différentes fonctions au sein du DNS peuvent nécessiter TCP contre UDP.
Par exemple, lors d'une simple demande de résolution d'enregistrement A, la «demande» et la «réponse» sont très légères, nécessitant toutes deux un seul paquet. En tant que tel, cela se fait généralement via UDP.
Mais si une demande ou une réponse nécessite un transfert plus important (au-dessus d'un certain nombre d'octets), DNS choisit d'utiliser TCP pour garantir que «tous les bits» y parviennent. Ceci est courant avec les demandes de transfert de zone complètes.