Erfahren Sie, ob ein Protokoll TCP oder UDP verwendet


9

Nun, ich weiß, dass das eine dumme Frage sein könnte und ich glaube, dass die richtigste Antwort so sein wird, wie ich es sagen kann, wenn sich meine Erfahrung aufbaut und ich mehr und mehr über die Protokolle lerne.

Ich bin jedoch Student und habe nicht viel praktische Erfahrung auf diesem Gebiet. Obwohl ich für jedes Protokoll googeln kann, möchte ich wissen, ob es eine Faustregel gibt. Ich finde es immer noch dumm, nach "Faustregel" zu fragen, aber ich suche immer noch nach einer.

Ich bin auf diese Liste in Wikipedia gestoßen, in der die Protokolle aufgelistet sind und ob sie TCP oder UDP im Tabellenformat verwenden. Ich kann jedoch nicht verstehen, was es bedeutet, wenn die Zeile für ein bestimmtes Protokoll sowohl TCP als auch UDP mit einer einzelnen Portnummer enthält. In der Telnet-Zeile ist dies beispielsweise der Fall 23-TCP-UDP. Was bedeutet das? Telnet kann sowohl auf TCP-Port 23 als auch auf UDP-Port 23 betrieben werden.

Ich habe auch festgestellt, dass in meinem Lehrbuch steht, dass TFTP UDP verwendet, aber wenn wir uns die obige Tabelle ansehen, ist TFTP-Zeile 69-TCP-UDP. Ratet mal, was in der obigen Tabelle los ist.

Antworten:


9

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.


2
Ja, + 1, DNS-Abfragen bestehen aus einer einzelnen UDP-Anforderung vom Client, gefolgt von einer einzelnen UDP-Antwort vom Server. Das Transmission Control Protocol (TCP) wird verwendet, wenn die Antwortdatengröße 512 Byte überschreitet, oder für Aufgaben wie Zonenübertragungen.
Ijaz Ahmad Khan

@IjazKhan, es gibt keine solche Unterscheidung mehr. Siehe RFC 7766 : " Dieses Dokument legt die Anforderung für die Unterstützung von TCP als Transportprotokoll für DNS-Implementierungen fest und enthält Richtlinien für die DNS-over-TCP-Leistung, die der von DNS-over-UDP entspricht. Dieses Dokument veraltet RFC 5966 und aktualisiert daher RFC 1035 und RFC 1123. "und" Dieses Dokument aktualisiert daher die Kernspezifikationen des DNS-Protokolls, sodass die Unterstützung von TCP fortan ein ERFORDERLICHER Teil einer vollständigen Implementierung des DNS-Protokolls ist. "
Ron Maupin

6

Die Wikipedia-Seite ist nicht die beste. IANA verwaltet die Registrierung für Portnummern (seien Sie gewarnt, sie umfasst derzeit 138 Seiten): Registrierung des Portnamens für Dienstname und Transportprotokoll

Ein Anwendungsschichtprotokoll kann jedes Transportschichtprotokoll und jede Portnummer verwenden. Konventionell verwenden die meisten bestimmte Portnummern in der Registrierung, aber das bedeutet nicht, dass sie auch andere nicht verwenden können. Ein Webserver verwendet beispielsweise standardmäßig den TCP-Port 80, kann jedoch so eingestellt werden, dass jede andere Portnummer verwendet wird, und ein Webbrowser kann diese weiterhin verwenden, wenn die Portnummer auf dem URI angegeben wird.

Es gibt viele Anwendungen, die so eingestellt werden können, dass sie entweder TCP oder UDP verwenden, und die Portnummern können geändert werden. Dies bietet eine gewisse Flexibilität im Umgang mit Konflikten und seltsamen Implementierungen.


5

Im wirklichen Leben ist es sehr einfach zu erkennen, welches Transportprotokoll verwendet wird. Wenn Sie nach einer "Faustregel" suchen, denken Sie daran:

UDP ist ein "verbindungsloses" / unzuverlässiges Protokoll. Es stellt verlorene Pakete nicht wie TCP wieder her und hat viel weniger Overhead als TCP. Daher wird es als Transport für Anwendungen verwendet, die empfindlich auf Verzögerungen reagieren (wie das Streamen von Audio / Video).

TCP ist ein verbindungsorientiertes / zuverlässiges Protokoll. Es stellt Pakete wieder her, wenn sie verloren gehen, und hat einen höheren Overhead, wird jedoch verwendet, wenn Paketverlust Probleme verursachen würde.

Hier sind eine Reihe von Methoden, mit denen Sie im wirklichen Leben bestimmen können, welches Transportschichtprotokoll eine Anwendung verwendet:

  • An netstat -aneiner Windows-Eingabeaufforderung ausführen.
  • Laden Sie TCPView (in dem auch UDP aufgeführt ist) herunter und führen Sie es für eine GUI-Ansicht aus.
  • Führen Sie Wireshark aus
  • Führen Sie nmapden Server mit dem betreffenden Port aus (standardmäßig werden nur TCP-Ports gescannt).

0

Die Quelle der Wikipedia-Liste scheint ursprünglich https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt zu sein, wobei die gelegentliche Zeile basierend auf protokollspezifischen Referenzen aktualisiert wird.

Es sieht so aus, als ob bei älteren Zuweisungen sowohl TCP- als auch UDP-Portnummern einem Protokoll zugewiesen wurden, auch wenn das Protokoll nur das eine oder das andere tatsächlich verwendet hat. Beispielsweise enthält FTP Einträge in der IANA-Tabelle für TCP und UDP. Diese Einträge beziehen sich beide auf RFC 959, aber RFC 959 erwähnt UDP nicht.

Im Allgemeinen ist die Standardressource, um herauszufinden, welche zugrunde liegenden Protokolle ein Anwendungsprotokoll tatsächlich verwendet, der Standard, der das Protokoll definiert.

Einige Protokolle können entweder TCP oder UDP verwenden, entweder nach Wahl des Benutzers (z. B. NFS) oder abhängig von den Details der Anforderung (z. B. DNS).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.