Kommunikation übers Internet

MaxJava

Mitglied
Hallo zusammen,
wenn ich per TCP/IP ein Programm erstelle kann ich durch entsprechende Konfiguration an meinem Router über die externe IP andere Rechner im Internet erreichen.

Es gibt doch aber jede Menge Spiele, die man online spielen kann ohne irgendetwas im Router einzustellen. Wie funktionieren diese? Oder auch Chat-Programme wie Skype, icq? Laufen die auch über TCP? Ich meine mal gehört zu haben Skype funktioniert mit UDP aber auch hier müsste ich doch erst den Port am Router freigeben? Wie genau wird das in solchen Programmen realisiert?

Danke schonmal für eure Antworten :rtfm:
 

Ch4t4r

Aktives Mitglied
Router blocken nur einen Verbindunggsaufbau von außerhalb (Firewall), lassen aber Antworten auf von dir aufgebaute Verbindungen zu. Im Sinne von Skype:
Du-> Server-> speichert die Nachricht
Ziel-> Server -> antwortet mit gespeicherten Nachrichten.
Ein Server vermittelt also zwischen Clients
 
Zuletzt bearbeitet:

MaxJava

Mitglied
Also antwortet der Server nicht direkt, sonder der Client fragt an ob es neue Antworten gibt. Ist dies der Fall, werden die neuen Antworten gesendet?
Das würde Sinn machen ;D
 

Ch4t4r

Aktives Mitglied
Es geht darum, dass der Client die Verbindung aufbaut (so gesehen anfragt) und nicht der Server zum Client. Zum Verständnis: eine Firewall schützt nicht vor Viren, sie verhindert nur, dass die Verbindung auf einem gewissen Port zu dir aufgebaut wird. Steht eine Verbindung erstmal können beide Seiten lesen und empfangen.
 

InfectedBytes

Top Contributor
Nicht unbedingt, es ist eher so, das der Client eine (dauerhafte) Verbindung zum Server herstellt. Der Router lässt dies zu, da es vom Clienten ausgeht. Jetzt können Client und Server beliebig Daten austauschen.

Wenn jedoch jemand von außerhalb eine Verbindung zu dir aufbauen will, dann wird der Router dies blockieren (sofern nicht anders eingestellt).
 

MaxJava

Mitglied
Okay danke,
also ich schreibe einen Client und stelle eine Verbindung zum Server her. Solange diese Verbindung zwischen Client und Server besteht wird das in der Firwall vermerkt und es werden Daten, die der Server mir schickt, durchgelassen, da die Verbindung vom Client initiiert wurde?
Das ist jetzt aber richtig oder?

Funktionieren auf diese Weise auch Online Multiplayer Spiele? Also per TCP mein ich?

Und noch zum Schluss eine Frage:
Die Liste von Wikipedia zeigt, dass es tausende von Ports gibt. Welche Gründe haben Programme auf bestimmten Ports (z. B. icq port 5190) zu laufen? Das Programm könnte doch genauso gut auf Port 6200 laufen? Sind die Ports einfach willkürlich ausgewählt?

Die Ports von 0-1023 sind standardisiert (Wikipedia) und man benötigt admin rechte. Können diese trotzdem überschrieben werden?
 

InfectedBytes

Top Contributor
Okay danke,
also ich schreibe einen Client und stelle eine Verbindung zum Server her. Solange diese Verbindung zwischen Client und Server besteht wird das in der Firwall vermerkt und es werden Daten, die der Server mir schickt, durchgelassen, da die Verbindung vom Client initiiert wurde?
Das ist jetzt aber richtig oder?
jop, so ist es.

Funktionieren auf diese Weise auch Online Multiplayer Spiele? Also per TCP mein ich?
Die meisten Onlinespiele (nicht alle) haben einen zentralen Server, welcher sich um die Kommunikation kümmert.
Wenn ein Onlinespiel TCP nutzt, dann läuft das im Grunde so ab, wie oben beschrieben.
Viele nutzen jedoch das verbindungslose UDP, bei dem es ein bisschen anders aussieht.

Und noch zum Schluss eine Frage:
Die Liste von Wikipedia zeigt, dass es tausende von Ports gibt. Welche Gründe haben Programme auf bestimmten Ports (z. B. icq port 5190) zu laufen? Das Programm könnte doch genauso gut auf Port 6200 laufen? Sind die Ports einfach willkürlich ausgewählt?

Die Ports von 0-1023 sind standardisiert (Wikipedia) und man benötigt admin rechte. Können diese trotzdem überschrieben werden?

Die Ports sind willkürlich gewählt, idealerweise nimmt man eben einen, welcher von keinem "wichtigen" Programm genutzt wird.
Und die ersten 1024 Ports können grundsätzlich benutzt werden wie jeder andere Port (bei manchen Betriebssystemen benötigt man admin rechte, bei manchen nicht), allerdings sollte man dies nicht tun, da sie eben standardports.
 

mbrain

Mitglied
Was du meinst ist P2P und dazu solltest du dich in erster Linie mit NAT und in weiterer Folge mit NAT Traversal beschäftigen.

Das ist ziemlich aufwendig und hat auch nichts mehr speziell mit JAVA zu tun sondern mit Netzwerktechnik allgemein. Im Prinzip schreibt man dazu ein Programm (in welcher Sprache auch immer) welches nach einem bestimmten Protokollmuster mit einem eigens konfigurierten Server Daten austauscht und dabei herausfindet, wie der eigene Router genau arbeitet und Verbindungen durchlässt, umleitet oder eben blockt. SOCKS ist dabei das älteste Protokoll für NAT Traversal

Nach Erlangtem Wissen über Verhältnis von Mapping, Filtering und Allocation (beschrieben in RFC3947) des Routers kommt sogenanntes Hole Punching zum Einsatz - meißt UDP Hole Punching. Dabei sendet PC-A erstmal einige sinnbefreite UDP Pakete an PC-B welche (wenn ein NAT Problem besteht) verworfen werden, da PC-B diese Pakete ja zuvor nicht bestellt hat und somit kein Eintrag in der NAT Tabelle für eingehende Pakete von PC-A vorliegt. Gleichzeitig dazu sendet PC-B auch UDP Pakete an PC-A, welche von PC-A empfangen werden, da PC-A ja zuvor Pakete an PC-B gesendet hat und diese nun als Antwort darauf interpretiert werden. PC-A sendet weiterhin Pakete an PC-B die jetzt auch nicht mehr verworfen werden, weil ja PC-B ja auch Pakete an PC-A gesendet hat welche jetzt wiederum als Antwort darauf interpretiert werden. Dann müssen noch beide ein sogenanntes ACK-Paket senden welches dem jeweils anderen Router mitteilt, das die Verbindung aufgebaut wurde.

Dadurch erstellt der Router einen neuen Eintrag in der NAT Tabelle und öffnet einen (jetzt erlaubten) Eingang für den anderen Computer über einen verbindungsorientierten TCP Tunnel.

Danach muss man nur mehr darauf achten das in regelmässigen Intervallen Pakete über diese Verbindung gesendet werden, weil der Router sonst nach einer bestimmten Zeit unbenutzte Ports automatisch schliesst und du das ganze Prozedere vom Server, über Hole Punching bis hin zum Verbindungsaufbau wiederholen musst.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
ExceptionOfExpectation Server/Client-Kommunikation Netzwerkprogrammierung 34
G Socket Socket Kommunikation Netzwerkprogrammierung 1
R Kommunikation zwischen Shell und Putty Netzwerkprogrammierung 5
temi (Netzwerk-) Kommunikation zwischen Anwendungen. Wie? Netzwerkprogrammierung 5
T Client zu Client Kommunikation Netzwerkprogrammierung 2
K Socket Nur bestimmte Zeichen als Kommunikation zulassen Netzwerkprogrammierung 1
I Client/Server Kommunikation bei einem Spiel Netzwerkprogrammierung 4
H Android - PC kommunikation Netzwerkprogrammierung 3
S Server Kommunikation Netzwerkprogrammierung 1
brainless Client Server Kommunikation verschlüsseln Netzwerkprogrammierung 13
T Socket Server/Client Kommunikation Netzwerkprogrammierung 8
I Socket Kommunikation C / Java Netzwerkprogrammierung 2
P MIME-TYPE Erklaerung, Kommunikation zwischen Client und Server Netzwerkprogrammierung 3
J Sichere Kommunikation bei Server Client Netzwerkprogrammierung 3
Shams Anfängerfrage zu Server-Socket-Kommunikation Netzwerkprogrammierung 2
S Socket Kommunikation über Internet Netzwerkprogrammierung 1
M Socket Verschlüsselte Kommunikation - Fehler Netzwerkprogrammierung 1
I Interne Computer Kommunikation Netzwerkprogrammierung 6
M allgemeine Frage über Server-Client-Kommunikation Netzwerkprogrammierung 5
L Ratschlag zur Umsetzung einer client-server-Kommunikation Netzwerkprogrammierung 6
R Server zu Client Kommunikation Netzwerkprogrammierung 11
V Socket UDP Server/Client Kommunikation sehr langsam Netzwerkprogrammierung 2
Y HTTP Google Reader API Kommunikation Netzwerkprogrammierung 3
C Socket Kommunikation mit SMTP-Server Netzwerkprogrammierung 4
J Kommunikation von Webanwendungen (auf Tomcat Server) untereinander Netzwerkprogrammierung 8
H Kommunikation Netzwerkprogrammierung 8
F Socket Server/Client Kommunikation Netzwerkprogrammierung 4
X Problem mit Server-Client-Kommunikation Netzwerkprogrammierung 14
E Zeitgleiche Kommunikation, mögliche Ansätze Netzwerkprogrammierung 17
1 Java to Android TCP Kommunikation Netzwerkprogrammierung 2
O php - applet Kommunikation Netzwerkprogrammierung 9
D HTTP Java HTTP Kommunikation Netzwerkprogrammierung 9
1 SSH-Kommunikation - Ende eines Streams nicht erkenntlich Netzwerkprogrammierung 2
R Kommunikation TCP + UDP Netzwerkprogrammierung 3
S RMI RMI-Applet kommunikation funktioniert nicht Netzwerkprogrammierung 8
1 Kommunikation mit externem Programm über TCP Netzwerkprogrammierung 2
D Server-Client (Web) Kommunikation Netzwerkprogrammierung 9
E Client-Server-Kommunikation Netzwerkprogrammierung 13
C HTTP Studienarbeit Kommunikation via HTTP mit POST zwischen Server und Client Netzwerkprogrammierung 7
DamienX Socket Asnchrone Kommunikation Netzwerkprogrammierung 5
Raidri Rückwertige RMI Kommunikation Netzwerkprogrammierung 6
S TCP/IP-Kommunikation ist zu langsam Netzwerkprogrammierung 13
M Kommunikation zwischen ServerSocket und Socket Netzwerkprogrammierung 2
G Datagram-Sockets für UDP-Kommunikation Netzwerkprogrammierung 2
G java asynchrone kommunikation Netzwerkprogrammierung 8
B Rmi Kommunikation Server zu mehreren Clients? Netzwerkprogrammierung 3
G Problem mit Client-Server Kommunikation Netzwerkprogrammierung 4
N Servlet-RMI Kommunikation Netzwerkprogrammierung 8
G Objecte für Kommunikation nutzen Netzwerkprogrammierung 2
L http kommunikation mit und ohne multipart Netzwerkprogrammierung 4
D Einfache Applet-Servlet-Kommunikation Netzwerkprogrammierung 5
G unvollständige Daten: Http Client-Server-Kommunikation Netzwerkprogrammierung 2
RaoulDuke RMI Kommunikation Java <-> Perl Netzwerkprogrammierung 7
M Servlet - Applet Kommunikation Netzwerkprogrammierung 3
S Kommunikation zweier Java-Programme Netzwerkprogrammierung 6
J client/server kommunikation Netzwerkprogrammierung 3
T Kommunikation auf Byte-Ebene zw. C und Java via Socket Netzwerkprogrammierung 12
M Client-Kommunikation ohne Server Netzwerkprogrammierung 7
S Kommunikation Fortran <-> Java auf Client-Server-Archi Netzwerkprogrammierung 2
J Kommunikation zw. Server und mehreren Clints haut nicht hin Netzwerkprogrammierung 2
K Socket Kommunikation Netzwerkprogrammierung 3
K Applet - Servlet Kommunikation ohne Sockets Netzwerkprogrammierung 5
R applet servlet kommunikation Netzwerkprogrammierung 2
G JINI über RMI // Client-Server Kommunikation Netzwerkprogrammierung 4
D Kommunikation zwischen mehreren Servlets??? Netzwerkprogrammierung 3
I ActiveMQ-Messages übers Netzwerk Netzwerkprogrammierung 13
D Socket-Verbindungen übers Internet Netzwerkprogrammierung 4
I PingPong Spiel übers Netzwerk Netzwerkprogrammierung 1
E Java Server übers Internet erreichen Netzwerkprogrammierung 4
N RMI Einstellungen für "übers Internet" Netzwerkprogrammierung 8
N Gedankenspiel Synchronisation zweier Datenbanktabellen übers Netz Netzwerkprogrammierung 4
H Eine Mac-Adresse übers Internet ermitteln Netzwerkprogrammierung 2
X Password übers Netzwerk schicken jPasswordField Netzwerkprogrammierung 2
Y server client socket verbindung übers internet aufbauen Netzwerkprogrammierung 8
M Socket JFileChooser übers Internet Netzwerkprogrammierung 32
W funktionen übers netzwerk nutzen Netzwerkprogrammierung 4
W browse / durchsuchen übers netz Netzwerkprogrammierung 2
Kr0e Versenden von Daten übers Netzwerk Netzwerkprogrammierung 30
H MySQL übers Netzwerk Netzwerkprogrammierung 9
T Pfadangabe beim kopieren übers Netzwerk Netzwerkprogrammierung 5
M Daten übers Netz verschlüsselt übertragen? Wie? Netzwerkprogrammierung 18
A array übers netzwerk (anfänger) Netzwerkprogrammierung 8
R File chooser übers Netzwerk Netzwerkprogrammierung 3
S Netzwerk übers Internet Netzwerkprogrammierung 30
P Serialialiserte Objekte übers Netzwerk verschicken Netzwerkprogrammierung 9
H Dateigröße übers Internet Netzwerkprogrammierung 3
S Socketverbindung übers WWW Netzwerkprogrammierung 6
G Verzeichnis eines Rechners übers Netzwerk auslesen Netzwerkprogrammierung 5
M Erstelltes Programm über Internet Browser ausführen Netzwerkprogrammierung 26
V Einfachen Javaserver über das Internet erreichbar machen Netzwerkprogrammierung 2
P RMI Client Server Programm über Internet Netzwerkprogrammierung 2
T Suche Internet-Lektüre Netzwerkprogrammierung 0
T Socket Methoden über Internet aufrufen Netzwerkprogrammierung 1
S Programmieren mit dem Internet Netzwerkprogrammierung 4
J Erster Server-Client läuft auf lokalem Rechner problemlos. Zwei Rechner über das Internet nicht Netzwerkprogrammierung 8
A Computer über Internet verbinden Netzwerkprogrammierung 12
J Komplexes Netzwerk-Spiel im Internet Netzwerkprogrammierung 13
C Verbindung zu einem Hostrechner über das Internet herstellen Netzwerkprogrammierung 15
J Socket Chatserver aus dem Internet nicht erreichbar Netzwerkprogrammierung 19
M Modem, serielle Schnittstelle. Verbindungsaufbau ins Internet. Netzwerkprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben