A NAT Traversal használata a felhasználók passzív módban való összekapcsolásához.

Ez a cikk egy szabad fordítása a DC++ fejlesztőinek blogjából. a DC++ fejlesztőinek blogjából..

A szerző engedélyével (valamint a láthatóság és az érdekesség kedvéért) színesített linkekkel és néhány személyes kutatással kiegészítettem.

Bevezetés

Jelenleg legalább az egyik felhasználónak aktív módban kell lennie az összekapcsolódó párban. A NAT „kikerülő” mechanizmus hasznos lehet, ha egyik fél sem állította be az aktív módot. Ez általában a tűzfal vagy NAT eszköz által blokkolt bejövő kapcsolatok miatt fordul elő.

Ha mindkét kliens aktív módban van,

az indító kliens elküldi a saját IP-címét és portját tartalmazó parancsot $ConnectToMe a másik kliensnek. Az ezen adatok felhasználásával a parancsot kapó kliens kapcsolatot létesít az indítóval.

Ha az egyik kliens passzív módban van,

a passzív kliens a hubon keresztül A küld egy parancsot $RevConnectToMe az aktív kliensnek, B, amely aztán válaszol a $ConnectToMe parancsokkal.

A NAT Traversal használata a felhasználók passzív módban való összekapcsolásához.
A szerver S az előző példában a DC hub.

Ha mindkét kliens passzív módban van az ADC hubon,

a különböző NAT mögött lévő kliensek A és B csatlakoznak a hubhoz. S.

A NAT Traversal használata a felhasználók passzív módban való összekapcsolásához.
Így néz ki az összekapcsolódás a kliens oldaláról. A

A hub a 1511-es porton fogadja a kapcsolatokat. A kliens A kimenő kapcsolatokat létesít a saját privát hálózatából az 50758-as porton. A hub ezután látja a NAT eszköz címét, dolgozik vele, és a klienseknek a megfelelő azonosítók szerint közvetíti.

Ügyfél A elküldi a szervernek S a kérést, hogy segítsen a klienssel való kapcsolatfelvételben. B.

Hub: [Outgoing][178.79.159.147:1511] DRCM AAAA BBBB ADCS/0.10 1649612991

Passzív módban lévén a kliens B, miután megkapta ezt a parancsot, közölnie kell a privát portját, amelyet a hubbal való NAT-on keresztüli kapcsolatra használ.

Hub: [Incoming][178.79.159.147:1511] DNAT BBBB AAAA ADCS/0.10 59566 1649612991

Ezen információk megérkezése után a kliens A azonnal megpróbál kapcsolatot létesíteni a klienssel B és megadja a saját privát portját.

Ablak:		[Kimenő][178.79.159.147:1511]	 	D<b>RNT</b> AAAA BBBB ADCS/0.10 <b>50758</b> 1649612991

Mi az érdekesség? Az érdekesség abban rejlik, hogy ugyanannak a kapcsolatnak a végpontját eltoljuk egy új kapcsolódás létrehozásával egy nyilvános címen, a már használt privát porton keresztül.

A NAT Traversal használata a felhasználók passzív módban való összekapcsolásához.
Bingo!

Természetesen a kliens NAT-ja B teljes joggal elutasíthatja az első kapcsolatfelvételi kérelmet a klienstől. A, de saját lekérdezése azonban a kapcsolaton létrehozott «lyukra» irányul, és a kapcsolat mégis létrejön.

A NAT Traversal használata a felhasználók passzív módban való összekapcsolásához.
Illustráció, amely alkalmas az egész folyamatra azzal a megjegyzéssel, hogy protokoll nem használ nyilvános portokat, amelyeket a session nyit meg NAT‒S, valamint privát címeket.

Epilógus

A cikk írásakor (az eredeti) a DC ügyfelek körülbelül fele passzív módban működik. Ez azt jelenti, hogy minden lehetséges kapcsolat negyedét nem lehet létrehozni.

Később a DC++ képes lesz megkerülni a NAT-ot, használva a meglévő kapcsolatokat A‒S és B‒S a közvetlen kliens-kliens kapcsolat létrehozásához, még akkor is, ha A és B passzív módban vannak.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster