UDP Lochung nicht durch 3G gehen

Ich versuche, die Umsetzung in eine software ein Loch Stanzen-Funktion.
Die Sache ist die, ich bin Implementierung mit einer bereits hergestellt TCP Server zur Kommunikation mit Benutzern.

Hier ist, was ich habe, so weit :

  • "A" sendet eine Nachricht an einen UDP-Server "UNS" (auf port 9333)
  • "UNS" sendet wieder "Ein" - port eine Verbindung (port 31000 - localport 31005)
  • "A" sendet eine Nachricht an einen TCP-Server "TS", der sagt, er will eine Verbindung zu B (und geben Sie den port 31000)
  • "TS" sendet eine Nachricht an "B", ihm die "A"'s port (31000) und ip -
  • "B" sendet eine Nachricht an "UNS" (auf port 9333)
  • "UNS" sendet eine Nachricht an "B", erzählte ihm seine port 45000 (localport 45005)
  • "B" sendet eine Nachricht an "TS", was ist der udp-port (45000)
  • "TS" sendet eine Nachricht an "A" B geben die udp-port (45000) und die ip -
  • "Ein" starten Sie das senden von udp-Nachricht an B ip auf port 45000 und hören auf localport 31005
  • "B" beginnen, senden von udp-Nachricht an Eine ip auf port 31000 und hören auf localport 45005

Natürlich Häfen, 31000, 31005, 45000 und 45005 sind hier zum Beispiel, dass bei jeder neuen Verbindung den port ändern, nur 9333 ist statisch.

Ich weiß, es ist eine Menge hin-und-her, mehr als es eigentlich sollte.
Die Tatsache ist, ich bin gebunden für die Verwendung des TCP Servers zur Kommunikation mit sowohl der Anwender als auch der udp-server ist nur hier, um Benutzer wieder seinen port selbst, so dass Sie können senden Sie es zurück an TCP-Server.

Jedoch Nachrichten zwischen Nutzern werden nicht aufgenommen,...
Würde jemand eine Idee, warum ?


EDIT :

Ich getestet habe, meinen router mit http://nattest.net.in.tum.de/test.php und udp hole punching funktioniert gut, so ist das Problem nicht aus meinem router, aber aus meinem Protokoll...

Werden, wenn die Benutzer hinter der gleichen NAT, alles funktioniert einwandfrei, natürlich ist es verwendet private ip, aber es bedeutet, dass der code funktioniert auch, so dass jeder zwar führt ein Protokoll Problem...


EDIT 2 :

Eigentlich machte ich es nur halb funktioniert (Und das problem war aus meinem code eigentlich nicht das Protokoll... ich verbunden habe 2 Benutzer, die ein 3G mit einem iPhone, einer hinter meinem NAT bei WLAN.

Das lustige (naja, nicht so viel) die Sache ist die, nur eine Steckdose waren in der Lage, empfangen und senden von Daten zwischen den beiden Nutzern. (socket initiiert vom iphone) Nach dem Protokoll, ich hätte 2 gut mit sockets, bin ich falsch ?

So habe ich es geschafft, ein Loch in mein NAT, aber eigentlich nicht in der zellulären NAT.

Natürlich testete ich gleich 2 iphones verbunden 3G. Und niemand wird die Nachricht von den anderen.

Habe ich etwas verpasst über zelluläre NAT ?

P. S. : Sorry für die Aktualisierung, so viel meine Frage, aber da bekomme ich keine Antwort, die ich bin versucht zu finden, selbst...

P. S. 2 : Da ich es geschafft ein Loch in mein NAT, ich habe den Titel geändert hinzufügen "auf 3G"


EDIT 3 : ich lief die http://nattest.net.in.tum.de/test.php test wieder mit meinem computer verbunden mit dem internet über mein iphone die 3G-Verbindung.

Hier ist das Ergebnis :
UDP Lochung nicht durch 3G gehen

Anscheinend alle udp hole punching test waren erfolgreich auf der 9. test.

Weiter mehr wie es scheint :

UDP-Binding-Test (?): Endpoint-independent-Anbindung, port-Vorhersage ist einfach

Also sollte es keine Probleme den Anschluss von 2 Kollegen über die 3G-Verbindung (auch nicht viel als hinter einem "home" NAT -)... habe ich Recht ?


EDIT 4 :

Nur um sicher zu sein, dass ich jetzt senden Sie eine Nachricht an zwei verschiedene UDP-Server, um zu überprüfen, ob der port und der lokale port sind die gleichen, die auf 3G.

Lange Geschichte kurz, ports (lokal und öffentlich) sind identisch, beim verbinden mit server. also der test erfolgt auf EDIT 2 war richtig, udp-Endpunkt unabhängig, also sollte es keine Problem dabei, das Loch Stanzen denke ich... (zumindest Bei meinem ISP)

InformationsquelleAutor der Frage TheSquad | 2012-09-10

Schreibe einen Kommentar