| Internet Allgemein Flatrates, Webspace, Protokolle und alles rund ums Internet hier rein. |
Diskussion: Klartextprotokolle - Platzverschwendung? im Forum Internet Allgemein, in der Kategorie Web, Network & Multimedia Palace; Anzeige Guten Abend allerseits Schon seit längerem überlege ich, warum viele Klartextprotokoll so populär geworden sind. Prinzipiell sind sie doch ...
![]() |
| | #1 (permalink) |
| Registriert seit: 25.12.09 ![]() Likes: 0 | Anzeige Guten Abend allerseits Schon seit längerem überlege ich, warum viele Klartextprotokoll so populär geworden sind. Prinzipiell sind sie doch extrem unperformant aufgrund ihrer hohen Datenlast. FTP und POP3 sind als Beispiel sehr gut geeignet: Schliesslich könnte man bestimmt alle existenten Befehle in ein oder zwei Bytes als Opcodes verstauen. Doch stattdessen verwendet man lesbare Wörter wie USER oder PASS. Dies ist doch theoretisch gesehen eine vervierfachung der Datenmenge. Der einzige Vorteil liegt darin, dass der Mensch das Protokoll besser nachvollziehen kann. Bei FTP oder POP3 werden ja praktisch gesehen nur 3-4 Bytes pro Abfrage verschwendet. Doch selbst dies scheint extrem wenig, wenn man es mit HTTP vergleicht. Ein gewöhnlicher HTTP-Header besteht ja geschätzt aus ca. 100-300 Zeichen. In den allermeisten Fällen würde doch bestimmt 1/50 der Bytes ausreichen, um alle wichtigen Daten zu übermitteln. HTTP-Anfragen sind doch theoretisch und praktisch gesehen eine extreme Verschwendung von Traffic. Heutzutage surft ja fast jede Person einmal am Tag im Internet. Ausserdem werden über unauffällige AJAX-Requests auch noch massenhaft Bytes "verschwendet". Oftmals werden ja nur wenig Informationen darüber angefordert. Im Falle des Datums oder einer booleschen Abfrage ist der Header bis zu 100mal grösser als der eigentliche Inhalt. Warum hat sich soetwas unperformantes durchgesetzt? Im Vergleich zum durchschnittlichen HTML-Code ist der Header natürlich klein, aber warum sollte man unnötig Platz verschwenden? Da werden sich doch bestimmt ein paar intelligente Leute was bei gedacht haben, nur ich komm einfach nicht drauf...
__________________ "There are only 10 types of people in the world: Those who understand binary, and those who don't." |
| | |
| | #2 (permalink) |
| Senior Member Registriert seit: 13.07.08 ![]() ![]() ![]() Likes: 85 | Allein schon die Tatsache, dass du diese Protokolle von Hand lesen und schreiben kannst ist ein sehr großer Vorteil. Die extrem einfach Struktur und die Tatsache das alles in ASCII kodiert ist, lassen BE/LE Probleme gar nicht erst aufkommen. Außerdem sind Plain-Text-Protokolle viel einfach erweiterbar. Schau dir nur mal HTTP an, da gibt es sehr sehr viele Erweiterungen von einzelnen Vendors, das Protokoll an sich wurde auch sehr stark erweitert. Als Binärprotokoll könnte man sich mit Browsern und Clienten von vor 15 Jahren keine einzige Website mehr aufrufen. Traffic ist heute billig, dieser Overhead für den Vorteil den er bringt absolut vernachlässigbar. /e: Natürlich sind solche Protokolle auch einfacher zu implementieren, Binärprotokolle haben halt die Angewohnheit meist recht stark auf eine Rechnerarchitektur evtl. sogar Programmiersprache zugeschnitten zu sein...
__________________ "It is the human race! The deterioration of the spirit of man. Man undermining himself, causing a self-willed, self-imposed, self-evident self-destruction."+++ BREAKING +++ Troll ertrinkt im Planschbecken +++ |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 441 | Man sollte auch nicht vergessen, dass die Performance der Client-Rechner erst im Laufe der Jahre zugenommen hat. Als die Protokolle eingeführt wurden, hatten Client-Rechner nicht sonderlich viel Rechenleistung, so dass sie Klartext wesentlich schneller verarbeiten konnten als wenn sie erstmal irgendwelche Opcodes verarbeiten hätten müssen. Auch die einfache Fehleranalyse und Automatisierungen hatte aber sicherlich einen nicht unbeträchtlichen Anteil an der Durchsetzung dieser Protokolle. Ich brauche eben nicht zwingend einen Browser um mit einem Webserver zu kommunizieren, sondern kann dafür auch einfach Telnet verwenden. Genauso sieht es bei Mailservern (POP, IMAP, SMTP) aus. Das vereinfacht sowohl die Analyse von Server-Problemen als auch die Automatisierung von Abläufen auf Servern und Clients.
__________________ Mein Blog - Mein Job - Diaspora Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund. Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+ |
| | |
| | #4 (permalink) | |||||
| Themenstarter Registriert seit: 25.12.09 ![]() Likes: 0 | Zitat:
Zitat:
Zitat:
Und Programmiersprachen machen jetzt auch nicht so den Unterschied. Schliesslich sollte es mit jeder Sprache möglich sein, Binärcode zu vergleichen und zu interpretieren. Zitat:
Wahrscheinlich hast du allerdings recht... Nur wenn ich mir allein schon die gewaltige Anzahl an Exabyte vorstelle, die man durch effektivere Protokolle einsparen könnte...€dit: Ich habe euren Standpunkt ja schon längst kapiert, aber ich spinne das einfach mal nen bisschen weiter ^^ Zitat:
Im Prinzip geht es mit ja nur um die gewaltige Anzahl an Personen, welche an Fehleranalyse gar nicht interessiert sind. Es geht bei Protokollen wie HTTP ja nicht um kleine Softwarefirmen, sondern um absolut jeden Internetbenutzer... Da fällt schon eine ziemlich große Datenlast an. Es wirkt irgendwie so "unelegant".
__________________ "There are only 10 types of people in the world: Those who understand binary, and those who don't." Geändert von @night@ (28.11.11 um 21:23 Uhr) | |||||
| | |
| | #5 (permalink) |
| Senior Member | ich finde Klartext ganz praktisch und von der Abwärtskompatibilität ganz zu schweigen Klar kannst du eine Art komprimierung drauf setzen auf das Protokoll nur welche folgen hätte es? Updatewahn und dann sind wieder ein Teil der sachen ausgeschlossen etc pp.... Datenlast hin oder her. Einen normalen Internetuser ist es völlig egal, wieviel Last entsteht und dafür den "aufwand" zu machen einen Konverter oder ähnliches zu Programmieren und flächendeckend zu nutzen halte ich für rausgeschmissene Zeit und Geld. Ich denke auch größere Firmen haben da schonmal dran geforscht und beschäftigen sich regelmäßig damit. Einfach so an einen Standard "rumfuschen" ohne dabei das laufende System zu beeinträchtigen halte ich für unmöglich. //arg heute wieder mal Ausdrucksmäßig völlig daneben, Sry ^^
__________________ cu Chakky we are dreaming in digital we are living in realtime we are thinking in binary we are talking in IP welcome to our world Geändert von Chakky (28.11.11 um 21:50 Uhr) |
| | |
| | #6 (permalink) |
| Registriert seit: 23.03.05 ![]() Likes: 22 | Also meiner Meinung nach sind Text Protokolle überholt. Aus historischer Sicht mögen sie zwar verständlich sein, aber im Endeffekt bringen sie doch mehr Probleme als sie lösen. Textprotkolle sind: - fehleranfälliger (string verarbeitung) - haben overhead - gegenüber neuen technologien unflexibel (z.B. UTF-8 ) Einziger Vorteil ist die Menschenlesbarkeit, was aber durch die Verfügbarkeit moderner Hilfsmitel, wie z.B. Wireshark, eigentlich keine Relevanz mehr hat. Performancetechnisch sehe ich für Binärprotokolle nur Vorteile. Wenn man z.B. einen Integer oder Float direkt laden kann ist das wesentlich schneller und weniger Fehleranfällig. Maschinenlesbare Formate waren auch vor 20 Jahren schon spezifiziert, also sehe ich da erst recht keine Inkompabilitäten. Ansonsten kann man durch Typisierung neue Datentypen in ein Binärprotokoll problemlos einbinden. Viele Sicherheitslücken durch Buffer Overflows hätte man vermeiden können, wenn man Daten, wenn möglich, durch ein Längenfeld mit nachfolgenden Nutzdaten kodiert und sich nicht auf einen Zeilenumbruch verlässt, der nur neue Probleme schafft. In E-Mails beispielsweise muss alles in ASCII umkodiert werden, woran man sehen kann, dass man sich beim ursprünglichen Design des Protkolls keine großen Gedanken über Anforderungen in der Zukunft gemacht hat. Dass es immer noch funktioniert verdankt man vielen "Hacks" und Protokoll Erweiterungen, die alles aber kein gutes Protokolldesign sind. Für mich sind Text Protokolle eine Altlast mit der man nun leben muss. Bei neuen Protkollen sollte man die Finger davon lassen. Geändert von xblax (28.11.11 um 21:48 Uhr) |
| | |
| | #7 (permalink) | |||
| Senior Member Registriert seit: 13.07.08 ![]() ![]() ![]() Likes: 85 | Zitat:
Zitat:
Zitat:
Nein. Ein neues Protokoll würde ich möglichst immer als Textprotokoll auslegen. Man verhindert damit so viele Probleme mit der Zukunft...
__________________ "It is the human race! The deterioration of the spirit of man. Man undermining himself, causing a self-willed, self-imposed, self-evident self-destruction."+++ BREAKING +++ Troll ertrinkt im Planschbecken +++ | |||
| | |
| | #8 (permalink) | |||
| Registriert seit: 23.03.05 ![]() Likes: 22 | Zitat:
Allerdings sehe ich die Problematik nicht. Maschinenlesbare Darstellungen sind genauso spezifiziert wie die Darstellung in einer menschenlesbaren Form spezifiziert werden muss. Welche Formen man konvertiert ist wohl egal. Zitat:
Zitat:
| |||
| | |
| | #9 (permalink) | |||
| Senior Member Registriert seit: 13.07.08 ![]() ![]() ![]() Likes: 85 | Zitat:
Zitat:
Zitat:
Code: [Protokollspezifika] name: wert\n name2: wert2\n \n Inhalt Schönes Beispiel für ein sehr perfomantes und sehr schlechte erweiterbares Protokoll: IP. Das einzige was im Header gleich geblieben ist... das Versionsfeld, 4-Bit breit. Kompatibilität: null. Damals hat man sich eben für Perfomance entschieden, dafür haben wir heute halt die Probleme. Damals hat man das gigantische Wachstum nicht vorhergesehen.
__________________ "It is the human race! The deterioration of the spirit of man. Man undermining himself, causing a self-willed, self-imposed, self-evident self-destruction."+++ BREAKING +++ Troll ertrinkt im Planschbecken +++ | |||
| | |
| | #10 (permalink) |
| Registriert seit: 27.12.07 ![]() Likes: 39 | Dazu gibt es im Buch "The Pragmatic Programmer" eine sehr gute Abhandlung im Kapitel "The Power of Plain Text". Kurz gesagt sagen sie, dass man anstatt von Binärdaten Plaintext bevorzugen sollte, sofern es nicht die Leistung des Systems massiv einschränkt. Da im Internet eher Videostreams und Downloads von Binärdateien den Datenverkehr bestimmen, kann man davon ausgehen, dass HTML, POP3 usw. nicht ins Gewicht fallen. Der Vorteil der Plaintextprotokolle liegt darin, dass sie nicht obsolet werden: Auch in einiger Zeit wird man rekonstruieren können, was einem der alte Server da zusendet. Kämen nur obskure Zahlenkommandos hätte man ein Problem. Zudem kann auch ein User verstehen was Schiefgeht. Anstatt dem User "Fehler 63 aufgetreten" vorzuhalten, kann die Anwendung einfach den Plaintextfehler wie "418: I'm a Teapot" anzeigen, ohne selbst jeden Fehlertext mit sich rumzuschleppen. Das erleichtert auch die Suche nach einer Lösung, da Fehlermeldungen vom Protokoll aus einheitlich sind.
__________________ You shoot yourself in somebody else's foot.|Dann gabs da noch den Mathematiker der P?=NP in O(1) erklärte. |[A]| = p(·,|[A]|)+1 |
| | |
| | #11 (permalink) | ||||
| Registriert seit: 23.03.05 ![]() Likes: 22 | Zitat:
Man könnte bspw. eine binäre Festkommadarstellung wählen wenn man möchte. Ich sehe allerdings keinen sinn darin, eine binär vorliegende Zahl zunächst ins dezimal System zu konvertieren und anschließen wieder zurück. Zitat:
Zitat:
Semantisch gesehen hast du n Tupel (Name, Wert) und Inhalt. Name, Wert und Inhalt sind mit einer Bedeutung verknüpft. Wie ich das nun kodiere ist Syntax. Wir können das nun als ASCII kodieren oder eben auch Binär. Man benutze Typisierung und kann dann Selbstverständlich als Wert oder Name auch ASCII übertragen wenn man möchte. Aber eben paralell zu anderen Formaten. Zitat:
@bad_alloc Nun also normalerweise sollte ein Protokoll ja spezifiziert werden. Wenn man nun fremde Serversoftware benutzt deren Protokoll weder in einer Spezifikation nachzulesen ist noch deren Verhalten bekannt ist, dann ist das imho eh bedenklich. Und man kann auch mit einem Binärprotokoll Text versenden. Die Fehlernachrichten müssen nicht zwingend nur duch eine Konstante kodiert werden. | ||||
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |