Použití NAT Traversal k připojení uživatelů v pasivním režimu

Tento článek je volným překladem jednoho z příspěvků v Vývojářský blog DC++.

Se svolením autora (stejně jako pro názornost a zajímavost) jsem jej přibarvil odkazy a doplnil osobním průzkumem.

úvod

Alespoň jeden uživatel propojovacího páru musí být v tuto chvíli v aktivním režimu. Mechanismus procházení NAT bude užitečný, když aktivní režim není nakonfigurován na žádné straně. To je obvykle způsobeno bránou firewall nebo zařízením NAT, které blokuje příchozí připojení.

Pokud jsou oba klienti v aktivním režimu

Iniciující klient odešle příkaz obsahující jeho vlastní IP adresu a port $ConnectToMe jinému klientovi. Pomocí těchto dat klient, který obdržel příkaz, naváže spojení s iniciátorem.

Pokud je jeden z klientů v pasivním režimu

Prostřednictvím rozbočovače, pasivního klienta A odešle příkaz $RevConnectToMe aktivní klient Bkterý poté odpoví příkazem $ConnectToMe.

Použití NAT Traversal k připojení uživatelů v pasivním režimu
Jako server S ve výše uvedeném případě je DC rozbočovač

Pokud jsou oba klienti v pasivním režimu ADC rozbočovač

Klienti za různými NATy A и B se připojil k hubu S.

Použití NAT Traversal k připojení uživatelů v pasivním režimu
Takto vypadá připojení k hubu ze strany klienta A

Hub přijímá připojení na portu 1511. Klient A vytváří odchozí spojení ze své privátní sítě přes port 50758. Hub zase vidí adresu NAT zařízení, pracuje s ním a vysílá ho klientům podle jejich identifikátorů.

Zákazník A odešle na server S zpráva s žádostí o pomoc s připojením ke klientovi B.

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

Také v pasivním režimu klient B, po obdržení tohoto příkazu, musí ohlásit svůj soukromý port použitý pro připojení k hubu přes NAT.

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

Po obdržení těchto informací klient A se okamžitě pokusí navázat spojení s klientem B a hlásí svůj soukromý přístav.

Hub:		[Outgoing][178.79.159.147:1511]	 	D<b>RNT</b> AAAA BBBB ADCS/0.10 <b>50758</b> 1649612991

Jaký je zájem? Zájem je o posunutí koncového bodu stejného připojení vytvořením nového připojení na veřejnou adresu přes již použitý privátní port.

Použití NAT Traversal k připojení uživatelů v pasivním režimu
Bingo!

Samozřejmě v tomto případě klient NAT B má plné právo odmítnout první požadavek na připojení od klienta A, ale jeho vlastní žádost spěchá do „díry“ vytvořené právě tímto spojením a spojení je navázáno.

Použití NAT Traversal k připojení uživatelů v pasivním režimu
Ilustrace vhodné pro celý proces s tím, že protokol nepoužívá veřejné porty otevřené relací NAT-S, stejně jako soukromé adresy.

Epilog

V době psaní (původního) článku zhruba polovina DC klientů pracuje v pasivním režimu. To znamená, že čtvrtinu všech možných spojení nelze uskutečnit.

Dále DC++ bude moci obejít NATpomocí stávajících připojení A-S и B-S k navázání přímého spojení klient-klient, i když A и B jsou v pasivním režimu.

Zdroj: www.habr.com

Přidat komentář