TCP über UDP Verbindung?

_-`avaj´-_

Mitglied
Hallo alle zusammen,
Ich hätte forgende Frage:

Ist es theoretisch möglich eine Verbindung mit UDP Hole Punching zwischen zwei Computern aufzubauen und dann über diese Verbindung mit TCP zu arbeiten?
Also im Prinzip erkennt ja die NAT (bei UDP) welcher Port zu welchem Computer im Netztwerk gehört, also sind die Computer auch von außen über diesen Port zu erreichen und damit sollte doch auch TCP möglich sein...?

Dabei stellen sich jetzt aber 2 Probleme:
1. Der Socket vom UDP Verbindungsaufbau behindert den Port und
2. UDP arbeitet mit Paketen und TCP mit Streams und ich weiss nicht ob die NAT auch eingehende Strams an den jew. Port weiterleitet...?

Also das ganze ist nur eine Idee, da ich das Arbeiten mit UDP nicht alzu konfortabel finde (Paketverlust etc.) und Streams auch z.B. zum Versenden von Datein besser wäre...

Und bevor jetzt wieder alle kommen und sagen: Warum arbeitest du dann nicht einfach mit TCP?
Weil ich über das Internet will und zwar ohne Portfreigaben oder sonstigem Zeugs, das der User selber einstellen muss...
 

Kr0e

Gesperrter Benutzer
Dieses Thema gabs schon sehr oft hier.


TCP über UDP ist nicht möglich. Du kannst dir aber sowas wie TCP auf Basis von UDP nachbauen.

Da gibts sogar schon nen Standard, nennt sich Reliable UDP und wird z.b. bei RakNet implementiert.
Klappt ganz gut, definitiv besser, als wenn man sich alles selbst überlegt.


TCP Nat punching geht auch, ist aber bei weitem komplexer und geht nicht bei allen Routern. Und selbst wenn, dann nicht mit Java. Dafür braucht man min. Zugriff auf Rawsockets.
Natürlich kannst du dich in C++ austoben und die Lib für Java mittels JNA JNI zugänglich machen.

Allerdings gibt es für C/C++ bereits Lösungen. Google mal nach STUNT.

Fazit: Lass es, es ist äußert haarig und selbst wenn mans hinbekommt, ist es entweder nicht performant oder klappt nicht bei allen Routern.


Die User sollen endlich mal lernen, wie man Ports freigibt!
 

Kr0e

Gesperrter Benutzer
Das ist was anderes. Ich verlange nicht, dass der User ne Grafikkarte wechseln soll. Bloß auf eine Webseite connecten und ein paar Knöppe umstellen. Um dein Sinnbild zu vervollständigen, ich weiß wie Nebelscheinwerfer angehen :D

Ich weiß, dass das nicht passieren wird. Wie auch, in Zeiten wo Software Null Selbstdenken erfordert, bzw. dies das Ziel der Ziele ist. "Intuitive Bedienung".

Ist halt meine Meinung. Wäre doch schön, wenn die Leute sich wenigstens etwas mit dem auskennen was sie tagtäglich benutzen.


--EDIT--

Bei meiner alten Arbeitsstelle war man schon froh, wenn die Leute den Druckerbutton finden konnten. Und Gott war das Geschrei groß, wenn sie mal den Explorer aus Versehen geschlossen haben und nciht wussten wie der wieder angeht (Der war damals immer im Autostart drin). "S***** Technik"... :D
Leute die nicht wissen, wie man Ports freischalten, haben es nicht verdient, PRogramme zu benutzen, die das erfordern. So einfach is das :D (Oder anders formuliert, Leute die nicht Google benutzen können)
 
Zuletzt bearbeitet:

_-`avaj´-_

Mitglied
@Kr0e
Sorry aber ich habe leider kein Thema gefunden in dem das schon angesprochen wurde aber danke für deine Antwort...
Na dann arbeite ich halt weiter mit UDP... für meine jetztigen Spiele (noch) nicht allzu störend :D

Leute die nicht wissen, wie man Ports freischalten, haben es nicht verdient, PRogramme zu benutzen, die das erfordern. So einfach is das :D (Oder anders formuliert, Leute die nicht Google benutzen können)

Stimmt ;)
Aber wenn man es halt verlangt, dann benutzt deine Programme halt niemand weils allen zu blöd is -.-
Wie wäre es eigentlich mit ein paar standart Portfreigaben? Die NAT legt für jeden Computer im Netztwerk einen standart Port an, den dann Programme nutzen können, diese müssen dann halt immer zwischen den Programmen verwaltet werden... ;)
 
T

TCPoverUDP

Gast
Das Thema TCP-over-UDP gab es hier tatsächlich schon ein paar mal und wurde auch das eine oder andere mal mehr oder weniger erfolgreich umgesetzt, aber wirklich performant konnte man die wenigsten nennen.

Aber um vielleicht erstmal auf etwas hinzuweisen :

Wenn du mit UDP-Hole-Punching eine UDP-Verbindung offen hast, dann hindert dich das doch nich daran mit TCP über die selbe Port-Nummer zu arbeiten, denn TCP/1337 ist etwas völlig anderes als UDP/1337 und kommt sich desshalb auch nicht in die Quere.

Auch heißt es nicht STUNT sondern nur STUN : Session Traversal Utilities for NAT (früher auch : Simple traversal of UDP through NATs). Das ganze ist mitlerweile ein etablierter Standard und funktioniert daher auch mit allen gängigen Router-Modellen. Viele bekannte Spiele nutzen diese Technik (keine namentliche Nennung) sowie teilweise auch gewisse Kommunikations-Applikationen.

Zum pauschalen "Leute, lernt wie man Ports frei gibt" rate ich eher ab. Grundsätzlich sollte Port-Forwarding nur bei TCP-Servern notwendig sein. Als Client kann es einem eh egal sein und UDP kann man wie ja schon erwähnt wurde über STUN abwickeln. Außerdem ist eine Software die es für den Betrieb vorraussetzt das Ports nach außen hin geöffnet werden ein extremes Sicherheitsrisiko.

Und die Idee mit "NAT legt standard Ports für Clients an" ist ziemlicher Mist und wäre auch gar nicht skalierbar. Es würde eh nur passieren wenn sich der "Client" beim NAT meldet, was in der Regel nur durch DHCP passiert. Wenn man aber mit statischen Adressen arbeitet nutzen viele Router das ARPing nicht mehr richtig aus und wissen halt nur noch lediglich welche IP mit welcher MAC an welchem PORT angeschlossen ist. Das weitere Problem wäre : was passiert wenn du mehrere Router hintereinander hängst ? Der "höhere" Router würde nur einen Port an seinen "Client" vergeben. An diesem hängen aber vielleicht 10 weitere Clients, wesshalb also der "nidrigere" Router beim "höheren" weitere Ports anfordern müsste, die dieser vielleicht gar nicht mehr hat. Zusätzlich kommt das jede ausgehende Verbindung ebenfalls in der NAT eingetragen wird und somit die verfügbare Menge der "freien Ports" weiter singt je mehr Verbindungen nach außen aufgebaut werden. Alles in allem so nur ziemlich schlecht bis überhaupt nicht umsetzt bar. Alleine die Idee ist schon ziemlich wirr.

Es gibt zwar noch die Möglichkeit "UPNP" die auch von vielen moderene Geräten unterstützt wird und standardmäßig auch aktiviert ist, allerdings greift auch hier : NICHT ALLE. Ich z.B. habe in meinem Router UPNP deaktiviert weil ich nicht will das irgendeine wildfremde App mal eben irgendwelche Ports in meinem Router öffnet und ich davon nichts mitbekomme. An sich eine super Erfindung für Trojaner. Praktisch halte ich aber eher weniger was davon.


Man kann über das was bis jetzt alles schon gefallen ist wunderbar diskutieren, um aber beim Topic zu bleiben : grundsätzlich JA, es ist möglich ... andererseits aber : mit viel Aufwand verbunden. Ob der Aufwand gerechtfertigt ist für das was man am Ende will muss jeder selbst entscheiden.
 

Kr0e

Gesperrter Benutzer
Komisch.... "TCPoverUDP":

Dein ganzes Statement ist eigentlich im Endeffekt pro Portfreigabe, da du ja mit bekommen willst wenn was geschieht.

Im Endeffekt: Lass es die Leute selbst freigeben, bzw, versuch UPNP. Wenns dann nich klappt, pech gehabt -> Torrents !
 
T

tuxedo

Gast
Die User sollen endlich mal lernen, wie man Ports freigibt!

Man sollte viel lieber drauf drängen IPv4 und damit NAT zu verdrängen. Dann fällt die klassische Port-Weiterleitung weg ;-) Okay, dann muss man sich mit Firewall beschäftigen. Aber da hat man wenigstens kein verwirrendes NAT Problem mit den vielen IPs ...

- Alex
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Verbindung zu einem LDAP Server über Java Netzwerkprogrammierung 4
T VPN-Verbindung über Java Netzwerkprogrammierung 4
Z Verbindung zwischen 2 Rechnern über ServerSockets nicht möglich Netzwerkprogrammierung 3
C Verbindung zu einem Hostrechner über das Internet herstellen Netzwerkprogrammierung 15
P Socket Verbindung über das Internet Netzwerkprogrammierung 2
M ganymed-ssh2.har: ftp-Verbindung über ftp-Proxy Netzwerkprogrammierung 2
V Verbindung zweier Rechner über das Internet mit Sockets Netzwerkprogrammierung 8
W Socket Shellscript über ssh Verbindung aufrufen Netzwerkprogrammierung 14
T Mac Adresse über Socket Verbindung abfragen? Netzwerkprogrammierung 9
M Verbindung über Proxy// Problem mit Outputstream bei URLConn Netzwerkprogrammierung 5
T Verbindung über das Internet Netzwerkprogrammierung 2
H Server und Client-keine verbindung über den localhost Netzwerkprogrammierung 6
G Verbindung über Sockets Netzwerkprogrammierung 2
D Verbindung über ein Servlet zu einem Server Netzwerkprogrammierung 4
I Fehlermeldung bei Verbindung über SOCKS Proxy Netzwerkprogrammierung 4
B Verbindung über verschiedene IPs Netzwerkprogrammierung 3
K Tabelle im Web über Listener aufrufen Netzwerkprogrammierung 1
S Socket Bilder über Socket Senden Netzwerkprogrammierung 0
B Zip Dateien über FTP laden Netzwerkprogrammierung 2
x46 byte[] über BufferedReader auslesen Netzwerkprogrammierung 18
E Socket Parameter über Sockets übergeben und auslesen ! Netzwerkprogrammierung 5
L Webbasierte Anwendung - Authentifizierung über LDAP/ActiveDirectory Netzwerkprogrammierung 5
J Probleme mit Multicast über IPv6, DatagramChannel Netzwerkprogrammierung 1
S Daten über TCP/IP senden Netzwerkprogrammierung 3
T Broadcast-message über spez. Netzwerk-Schnittstelle Netzwerkprogrammierung 1
T Mikrofonaudio über Java Server an Webbrowser streamen Netzwerkprogrammierung 13
M Erstelltes Programm über Internet Browser ausführen Netzwerkprogrammierung 26
V Einfachen Javaserver über das Internet erreichbar machen Netzwerkprogrammierung 2
J FTP Upload über Proxy funktioniert nicht Netzwerkprogrammierung 1
E Kurze Textnachrichten über einen Server von meinem Handy auf den Computer laden. Netzwerkprogrammierung 9
J FTP FTP Zugriff über Proxy Server Netzwerkprogrammierung 1
Thallius Java Application über ZScaler benutzer? Netzwerkprogrammierung 0
J Chat Server starten über GUI problem Netzwerkprogrammierung 4
V einfaches hin und her von Text über Server Netzwerkprogrammierung 2
P RMI Client Server Programm über Internet Netzwerkprogrammierung 2
antonbracke Multiuser Software über XMPP Server Netzwerkprogrammierung 1
cezary Socket ServerSocket starten über GUIIm unterstehenden Code versuche Netzwerkprogrammierung 6
I ASCII über serielle Schnittstelle Netzwerkprogrammierung 1
N RMI "RMI über Lan funktioniert nicht" & "RMI-Server im Lan scannen" Netzwerkprogrammierung 13
L Mit Java über PHP in MySQL anmelden (Login script) Netzwerkprogrammierung 3
M Socket String Arrays über Socket an Server schicken Netzwerkprogrammierung 2
T Socket Methoden über Internet aufrufen Netzwerkprogrammierung 1
S Socket Kommunikation über Internet Netzwerkprogrammierung 1
X Problem mit vielen Bytes über Socket Netzwerkprogrammierung 23
K ByteArray über Netzwerk senden klappt nicht Netzwerkprogrammierung 5
M allgemeine Frage über Server-Client-Kommunikation Netzwerkprogrammierung 5
P RMI Threads die über RMI auf Datenbank zugreifen Netzwerkprogrammierung 2
S Datei schreiben über Applet Netzwerkprogrammierung 8
G Klassen über Netzwerk kommunizieren lassen Netzwerkprogrammierung 6
J Erster Server-Client läuft auf lokalem Rechner problemlos. Zwei Rechner über das Internet nicht Netzwerkprogrammierung 8
Kjubert Synchronisieren von Objekten über Client/Server - bester Weg? Netzwerkprogrammierung 7
S ImageIcon über Socket schicken (Serialisierung) Netzwerkprogrammierung 6
H Socket Objekte über Socket? Allgemeine Verständnisprobleme in Sachen Socket Netzwerkprogrammierung 3
S Seltsames Verhalten beim Empfangen von Daten über DataInputStream Netzwerkprogrammierung 12
C Datei über Socket schreiben und Ereignis lesen Netzwerkprogrammierung 9
D Socket Class über Netzwerk verschicken Netzwerkprogrammierung 2
D JNLP über Webstart funktioniert nicht... Netzwerkprogrammierung 2
J Socket Dateien über Socket auf Server speichern Netzwerkprogrammierung 3
D Socket Datei nur stückweise über Socket verschicken Netzwerkprogrammierung 6
G Bild über Socket schicken - Client/Server Netzwerkprogrammierung 10
A Computer über Internet verbinden Netzwerkprogrammierung 12
N über Java in eine Text-Datei auf einem Server schreiben Netzwerkprogrammierung 2
c_sidi90 ideale Lösung, Screen Capture über Netzwerk Netzwerkprogrammierung 3
S Socket Verschiedene Exceptions beim Übertragen von Bildern über Socket Netzwerkprogrammierung 20
T ArrayList über Netzwerk senden! Netzwerkprogrammierung 5
N Problem über http eine Datei zu senden Netzwerkprogrammierung 4
T Verbindungsversuche über TCP Sockets von mehreren Threads führt zu Serverabsturz Netzwerkprogrammierung 2
V Authentifikation über mehrere Server? Netzwerkprogrammierung 3
M Map über Webservice übertragen Netzwerkprogrammierung 3
D Mehrere Clients über Java-Sockets Netzwerkprogrammierung 13
Z Socket Connection reset by peer nur per IP nicht über localhost Netzwerkprogrammierung 13
ruffio1978 Telnet über ein socket ansprechen Netzwerkprogrammierung 8
F Socket Verbindungen über mehrere Server Netzwerkprogrammierung 4
U Datei über das Netzwerk einlesen und speichern Netzwerkprogrammierung 8
G Klassen über JMX per URLClassloader laden? Netzwerkprogrammierung 2
E Zwei PCs über das Internet miteinander verbinden? Netzwerkprogrammierung 3
E Socketverbindung über das Internet - Timeout? Netzwerkprogrammierung 28
M Socket Bilder über das Netzwerk übertragen Netzwerkprogrammierung 4
E Java über Socket ins Internet? Netzwerkprogrammierung 4
F Socket Daten über verschiedene IP's schicken Netzwerkprogrammierung 5
M Socket JavaProg über einen Clienten steuern Netzwerkprogrammierung 5
M Mail über Exchange versenden Netzwerkprogrammierung 13
F C/S über HTTPS Netzwerkprogrammierung 2
D ...class.getResourceAsStream("/meine.properties") funktioniert nicht über RMI? Netzwerkprogrammierung 3
J Probleme bei RSA mit byte[] bei Versand über RMI Netzwerkprogrammierung 2
Z File über Socket lesen Netzwerkprogrammierung 3
A HTTP Binärdaten über PHP-Skript in Datenbank schreiben bzw auslesen Netzwerkprogrammierung 2
M Objekt über Object-Stream, empfange "alte" Daten Netzwerkprogrammierung 2
P FTP isFile() über FTP Netzwerkprogrammierung 3
I Socket HTTP Nachrichten über Sockets verschicken Netzwerkprogrammierung 2
N String als byte Array über Socket versenden Netzwerkprogrammierung 8
M Objekt über socket senden/empfangen Netzwerkprogrammierung 3
N Socket File über Socket vom Server an Client versenden Netzwerkprogrammierung 15
P Socket Problem mit Netzwerkverbindung über TCP Netzwerkprogrammierung 12
A UCP Connection über Proxy möglich? Netzwerkprogrammierung 7
F Char über Netzwerk senden Netzwerkprogrammierung 6
S HTTP Login mit CAS Authentisierung über SSL Netzwerkprogrammierung 2
C Befehle über ein GUI an Server senden Netzwerkprogrammierung 15
M Socket Datei über Socket versenden Netzwerkprogrammierung 5
I Objekte über das Netzwerk Netzwerkprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben