Du hast eine gute Frage gestellt. Lassen Sie sich von niemandem etwas anderes sagen.
Leider gibt es keine Faustregel für die Protokolltypen, die TCP verwenden, gegenüber den Protokolltypen, die UDP verwenden.
Die Entscheidung, ob ein Protokoll das eine oder das andere verwendet, hängt davon ab, wer das Protokoll geschrieben / erstellt hat.
Wenn sie sich nicht die Mühe machen wollten, ein eigenes "zuverlässiges Liefersystem" zu schreiben, können sie einfach TCP verwenden, das die gesamte Zuverlässigkeit von Natur aus bietet.
Wenn sie dachten (ihr eigenes Protokoll von Natur aus zu kennen), dass sie ein besseres oder geeigneteres "zuverlässiges Übermittlungssystem" schreiben könnten, können sie dies in das Protokoll selbst einbauen und einfach UDP als Transportmittel verwenden.
Wenn Sie sich beispielsweise eine UDP- TFTP-Beispielerfassung ansehen , werden Sie feststellen, dass in TFTP selbst integrierte Bestätigungssysteme vorhanden sind. Sowohl diese als auch die zusätzlichen Bestätigungssysteme in TCP wären einfach redundant.
Während FTP, das über TCP ausgeführt wird, kein integriertes Bestätigungssystem hat. Ein Benutzer fordert einfach eine Datei an und der Absender sendet sie. Es gibt eine Benachrichtigung "Dateiübertragung abgeschlossen", aber nichts, was garantiert, dass jedes Bit der Datei empfangen wurde. FTP verlässt sich auf die Zuverlässigkeit von TCP, um sicherzustellen, dass die Datei vollständig übertragen wird.
Trotzdem habe ich die Liste der Ports auf der von Ihnen verlinkten Wiki-Seite durchgesehen und eine überraschende Anzahl von Protokollen gefunden, die angeblich TCP und UDP verwenden. Dies war mir fremd und ich kenne nur sehr wenige, die beide verwenden (nämlich DNS). Es kann jedoch sein, dass es eine TFTP-Implementierung gibt, die TCP verwendet, und wenn ja, fürchte ich, dass ich nicht damit konfrontiert bin.
Domain Name System (DNS) ist traditionell das Protokoll, auf das bei der Erörterung von Protokollen verwiesen wird, die sowohl TCP als auch UDP verwenden. Es verwendet diese nicht gleichzeitig, wohlgemerkt. Unterschiedliche Funktionen in DNS erfordern jedoch möglicherweise TCP und UDP.
Wenn Sie beispielsweise eine einfache A-Record-Auflösungsanforderung stellen, sind "Anforderung" und "Antwort" sehr leicht und erfordern beide ein einzelnes Paket. Daher erfolgt dies normalerweise über UDP.
Wenn eine Anforderung oder Antwort jedoch eine größere Übertragung erfordert (über einer bestimmten Anzahl von Bytes), wählt DNS die Verwendung von TCP, um sicherzustellen, dass "alle Bits" dort ankommen. Dies ist bei vollständigen Zonenübertragungsanforderungen üblich.