Ich versuche zu verstehen, warum UDP-Lochen funktioniert.
- Angesichts Peers
A,Bhinter einem NAT-Router undServermit offenem Port 80. Asendet ein PaketServervom Port1234. Dadurch öffnet der Router eine Route von / nachA:1234undS:80Bsendet ein PaketServervom Port4321. Dadurch öffnet der Router eine Route von / nachB:4321undS:80
An dieser Stelle Asollte in der Lage sein zu senden direkt Pakete an B:4321und Bsollte in der Lage sein , Pakete zu senden direkt an A:1234.
Ich habe zwei Fragen:
- Ist mein Verständnis des UDP-Lochens korrekt?
- Warum überprüfen Router nicht, ob die IP-Adresse der Paketquelle übereinstimmt
Server? Ist das nicht ein Sicherheitsrisiko?
UPDATE : Beantworte hier meine eigene Frage, da sie als geschlossen markiert ist. Das Lochen von NAT-Löchern funktioniert wie folgt:
- Angesichts Peers
A,Bhinter einem NAT-Router undServer. Aund eineBVerbindung zuServerund eine Liste der Ports sendet sie für abgehende / ankommende Verbindungen mit werden.- Angenommen,
APort1234und Port werdenBaufgelistet4321, dann wirdAein Paket von Port1234zuBOn-Port gesendet4321. Dadurch öffnet der Router eine Route von / nachA:1234undB:4321. - Der Router von B blockiert die Anforderung stillschweigend, aber der Router von A hält die Verbindung offen und wartet auf eine Antwort.
Bsendet ein Paket von Port4321zuAPort1234. Dadurch öffnet der Router eine Route von / nachB:4321undA:1234.ADer Router von akzeptiert die eingehende Verbindung und denkt, dass dies eine Antwort auf Schritt 3 ist.- Wir sind fertig. Beachten Sie, dass wir während dieses Prozesses nur ausgehende Verbindungen von
Aund verwendet habenB.
Aund Bkommunizieren direkt miteinander. Ich habe die Frage aktualisiert, um dies deutlicher zu machen.