Përdorimi i NAT Traversal për të lidhur përdoruesit në modalitetin pasiv

Ky artikull është një përkthim falas i njërit prej artikujve në Blogu i Zhvilluesve të DC++.

Me lejen e autorit (dhe gjithashtu për qartësi dhe interes), kam shtuar disa lidhje dhe disa kërkime personale.

Paraqitje

Aktualisht, të paktën një përdorues në një çift lidhës duhet të jetë në modalitetin aktiv. Kalimi NAT është i dobishëm kur asnjëra palë nuk e ka të konfiguruar modalitetin aktiv. Kjo zakonisht ndodh sepse lidhjet hyrëse bllokohen nga një firewall ose një pajisje NAT.

Nëse të dy klientët janë në modalitetin aktiv

Klienti fillestar dërgon një komandë që përmban adresën e tij IP dhe portin. $ConnectToMe te një klient tjetër. Duke përdorur këto të dhëna, klienti që merr komandën krijon një lidhje me iniciatorin.

Nëse njëri nga klientët është në modalitetin pasiv

Përmes qendrës, një klient pasiv A dërgon një komandë $RevConnectToMe klient aktiv B, i cili më pas përgjigjet me komandën $ConnectToMe.

Përdorimi i NAT Traversal për të lidhur përdoruesit në modalitetin pasiv
Si një server S në rastin e mësipërm, qendra DC është e pranishme

Nëse të dy klientët janë në modalitetin pasiv të ndezur Qendra ADC

Klientë të vendosur pas NAT-ve të ndryshme A и B u bashkua me qendrën S.

Përdorimi i NAT Traversal për të lidhur përdoruesit në modalitetin pasiv
Ja si duket lidhja me qendrën nga ana e klientit. A

Qendra pranon lidhje në portin 1511. Klienti A kryen lidhje dalëse nga rrjeti i tij privat nëpërmjet portit 50758. Qendra, nga ana tjetër, sheh adresën e pajisjes NAT, punon me të dhe transmeton te klientët sipas identifikuesve të tyre.

klient A dërgon në server S një mesazh që kërkon ndihmë për t'u lidhur me një klient B.

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

Duke qenë gjithashtu në modalitetin pasiv, klienti B, pas marrjes së këtij komande, duhet të raportojë portin e tij privat të përdorur për t'u lidhur me qendrën nëpërmjet NAT.

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

Pas marrjes së këtij informacioni, klienti A menjëherë përpiqet të krijojë një lidhje me klientin B dhe raporton portin e vet privat.

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

Cili është qëllimi? Qëllimi është të zhvendoset pika fundore e së njëjtës lidhje duke krijuar një lidhje të re me një adresë publike përmes një porte private të përdorur tashmë.

Përdorimi i NAT Traversal për të lidhur përdoruesit në modalitetin pasiv
Bingo!

Sigurisht, në këtë rast, NAT-i i klientit B ka të drejtë të refuzojë kërkesën e parë për lidhje nga klienti A, por kërkesa e tij është drejtuar tashmë në "vrimën" e krijuar nga kjo lidhje, dhe lidhja më në fund është vendosur.

Përdorimi i NAT Traversal për të lidhur përdoruesit në modalitetin pasiv
Një ilustrim që i përshtatet të gjithë procesit me kushtin që protokolli nuk përdor portat publike të hapura nga seanca NATS, si dhe adresa private.

epilog

Në kohën e shkrimit të këtij teksti, afërsisht gjysma e klientëve DC funksionojnë në modalitetin pasiv. Kjo do të thotë se një e katërta e të gjitha lidhjeve të mundshme nuk mund të vendosen.

Me tutje DC++ do të jetë në gjendje të anashkalojë NAT-in, duke përdorur lidhjet ekzistuese AS и BS për të krijuar një lidhje të drejtpërdrejtë klient-klient, edhe nëse A и B janë në gjendje pasive.

Burimi: www.habr.com