HTTP über UDP

Hallo,

ich überlege gerade wie sich das mit udp und tcp verhält.

über tcp laufen ja bekanntlich die „wichtigen“ pakete wie smtp und http ,etc. und über udp mehr die „unwichtigen“ wie snmp, tftp, etc. Ich stelle mir nun die Frage, ob man zb. http pakete, die eigentlich über tcp gesendet werden, auch über udp senden kann und ob das überhaupt gemacht wird.

Diese Frage ist aufgekommen, als ich mich ein wenig über vpn informiert habe und dabei festgestellt habe, dass man einen tunnel zu dem entfernten Netz über tcp ODER (nicht und) udp aufbauen kann. Das müsste dann ja heißen, dass wenn ich nur einen tunnel über udp herstelle auch die http pakete darüber laufen, oder hab ich das was falsch verstanden?

gruß

bobby

Moien

über tcp laufen ja bekanntlich die „wichtigen“ pakete wie smtp
und http ,etc. und über udp mehr die „unwichtigen“ wie snmp,
tftp, etc.

Das würde ic so nicht formulieren. Bei tcp kommt jedes Byte das man sendet auch garantiert an und das in den richtigen Reihenfolge. Das produziert einiges als Verwaltungsaufwand. Bei udp kommen die Datenblöcke (udp => Block, tcp => Stream) evtl. an (keinerlei Garantien) und zwar in irgendeiner Reihenfolge.

Ich stelle mir nun die Frage, ob man zb. http
pakete, die eigentlich über tcp gesendet werden, auch über udp
senden kann

Kann man durchaus. Allerdings müsste man um http noch ein Protokoll legen das die Reihenfolge wiederherstellt und verloren gegangene Daten nochmal überträgt. Im Prinzip ist man dann aber wieder bei TCP angekommen. Man könnte also das rad nochmal erfinden, muss es aber nicht.

und ob das überhaupt gemacht wird.

Kein normaler http-Server kann sowas, also eher nein.

Diese Frage ist aufgekommen, als ich mich ein wenig über vpn
informiert habe und dabei festgestellt habe, dass man einen
tunnel zu dem entfernten Netz über tcp ODER (nicht und) udp
aufbauen kann. Das müsste dann ja heißen, dass wenn ich nur
einen tunnel über udp herstelle auch die http pakete darüber
laufen, oder hab ich das was falsch verstanden?

Ein vpn winkelt über eine einzige Verbindung (normales tcp oder ein eigenes udp-Protokol alle Datentransfers ab. Das vpn-Programm verpackt die Daten und schickt sie zum vpn-Server der sie wieder entpackt (und halt ggf an den http-Server schickt). Ein so angesprochener http-Server merkt nicht dass die Daten zwischendurch mal verschlüsselt per udp unterwegs waren.

cu

hi,

danke für die schnelle und gute antwort.

Wenn ich nun also eine Verbindung zu einem vpn-Server aufbaue ist es egal ob ich das über tcp oder udp mache? Oder gibt es da performance unterschiede? Meiner Meinung nach würde es per tcp sicherer (auf Grund des 3-way-handshake) sein und bei upd schneller, weil ja keine reliabilität vorhanden ist.

so, gute nacht

matthias

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

gleich mal vorweg für Dich: http://learn.to/quote

Wenn ich nun also eine Verbindung zu einem vpn-Server aufbaue
ist es egal ob ich das über tcp oder udp mache?

Nein. Was für eine Verbindung meinst Du überhaupt? Den Tunnel selbst
oder die getunnelten Anwendungen? Generell ist UDP die bessere Wahl,
um Timeoutprobleme bei „TCP über TCP“ zu vermeiden.

Oder gibt es da performance unterschiede?

Es gibt Unterschiede. Nur ist nicht klar, was im Einzelfall schneller
ist. UDP kann z.B. durch übermäßige Fragmentierung bei ungünstiger
MTU langsamer werden, als TCP.

Meiner Meinung nach würde es per tcp sicherer (auf Grund des
3-way-handshake) sein

Nicht bei TCP Verbindungen, die durch den Tunnel gehen.

und bei upd schneller, weil ja keine reliabilität vorhanden ist.

Reliabilität hast Du in keinem Falle. UDP liefert Dir jedenfalls
geringere Latenzzeiten, was nicht heißt, dass dann die
Datenübertragung insgesamt schneller ist.

Gruß

Fritze

Hallo,

gleich mal vorweg für Dich: http://learn.to/quote

Danke :smile: Ich bin ja auch völlig neu hier und das war mein erster Artikel.

Meiner Meinung nach würde es per tcp sicherer (auf Grund des
3-way-handshake) sein

Nicht bei TCP Verbindungen, die durch den Tunnel gehen.

Wieso nicht? Gibt es da keinen 3-way-handshake? Wie genau läuft den der Transport durch den tunnel?

gruß

Matthias

Hallo,

Meiner Meinung nach würde es per tcp sicherer (auf Grund des
3-way-handshake) sein

Nicht bei TCP Verbindungen, die durch den Tunnel gehen.

Wieso nicht? Gibt es da keinen 3-way-handshake? Wie genau
läuft den der Transport durch den tunnel?

Natürlich gibt es den 3-way-handshake und die damit verbundenen
Mechanismen. Aber es gibt sie im Falle von „TCP Tunnel“ gleich
zweimal. Das kann unter Umständen zu Problemen führen, wenn bei
Verbindungsproblemen Timeouts aus dem Ruder laufen.

Wenn z.B. der Tunnel anfangs Verbindungsprobleme hatte und daher die
Timeouts recht lang gewählt wurden, die getunnelten Daten hingegen
kurze Timeouts haben, dann kann es dazu führen, dass aufgrund eines
Verbindungsproblems auf Tunnelebene die Pakete im Tunnel in den
Timeout laufen, was dazu führt das diese schneller wiederholt
gesendet werden, als der Tunnel mithalten kann. Das kann den Tunnel
komplett lahmlegen.

Kurzum: Einmal TCP reicht.

OpenVPN z.B. bietet den TCP Modus lediglich an, um restriktive
Firewalls, zur Not über Port 443 und einen Proxy hinweg, zu
überwinden. Erste Wahl sollte wenn möglich UDP sein.

Gruß

Fritze