NAT-Port für UDP-Locher


8

Ich habe gerade einen Artikel über den Prozess des "Stanzens von Löchern" mit dem UDP-Protokoll gelesen. Ich verstehe, wie es gemacht wird, aber ich habe noch eine letzte Frage, um die Dinge zu klären. Wir haben den Rendezvous-Server und Client A, B.

Client A hat bereits eine Lücke für Client B geschlagen. Client B empfängt die NAT-IP und den NAT-Port vom Rendezvous-Server und beginnt, Daten an denselben Port wie der Rendezvous-Server zu senden. Angenommen, ich kenne zufällig einen zweiten Port, den das NAT für UDP-Verbindungen geöffnet hat. Könnte ich meine Pakete auch über diesen zweiten Port senden? Oder wird der Port für jede ausgehende UDP-Verbindung unterschieden? Wenn ja, warum können wir denselben Port für Client B und den Rendezvous-Server verwenden? Würde das NAT nicht einen neuen Port öffnen, wenn Client A das Loch schlägt und Client B wissen muss, welchen neuen Port das NAT für diese bestimmte Verbindung geöffnet hat?

Ich hoffe meine Frage ist etwas verständlich.

Antworten:


6

Das NAT-Gerät führt eine Tabelle mit aktuell geöffneten Verbindungen, damit es Rückpakete an den internen Host senden kann, der die Verbindung geöffnet hat. Ein Eintrag in der Statustabelle könnte ungefähr so ​​aussehen:

Interne Quell-IP | Interner S-Port | Externer S-Port | Ziel-IP | D-Port
192.168.1.12 10123 10123 203.0.113.1 5555

Wenn ein Paket (von der Außenseite) das NAT - Gerät prüft die empfangen wird Quell - IP , Quellport und Zielport des Pakets und vergleichen Sie es mit der Destination IP, D-Portund External S-PortFelder in der Verbindungstabelle. Wenn eine Übereinstimmung gefunden wird, wird das Paket an Internal Source IPon weitergeleitet Internal S-Port.

Das Stanzen von UDP-Löchern hängt von der Tatsache ab, dass die internen und externen Quellports gleich sind. Dies ist normalerweise der Fall, es sei denn, Sie haben einen zweiten internen Host, der denselben Quellport verwendet, um eine Verbindung mit derselben Kombination aus externem Ziel und D-Port herzustellen.

Wenn wir davon ausgehen, dass der interne und der externe S-Port identisch sind, können beide Clients A, B ihren Quellport an den Rendezvous-Server kommunizieren, der die Informationen dann an den anderen Client zurückleitet.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.