NAT Traversal naudojimas norint sujungti vartotojus pasyviuoju režimu

Šis straipsnis yra nemokamas vieno iš įrašų vertimas DC++ kūrėjų tinklaraštis.

Autoriui leidus (taip pat dėl ​​aiškumo ir įdomumo) nuspalvinau nuorodomis ir papildžiau asmeniniais tyrimais.

įvedimas

Bent vienas jungiamosios poros vartotojas šiuo metu turi būti aktyviuoju režimu. NAT perėjimo mechanizmas bus naudingas, kai aktyvus režimas nėra sukonfigūruotas nė vienoje pusėje. Paprastai taip yra dėl ugniasienės arba NAT įrenginio, blokuojančios gaunamus ryšius.

Jei abu klientai yra aktyviame režime

Inicijuojantis klientas siunčia komandą su savo IP adresu ir prievadu $ConnectToMe kitam klientui. Naudodamas šiuos duomenis, klientas, gavęs komandą, užmezga ryšį su iniciatoriumi.

Jei vienas iš klientų yra pasyviajame režime

Per centrą – pasyvus klientas A siunčia komandą $RevConnectToMe aktyvus klientas Bkuri tada atsako komanda $ConnectToMe.

NAT Traversal naudojimas norint sujungti vartotojus pasyviuoju režimu
Kaip serveris S aukščiau nurodytu atveju yra nuolatinės srovės šakotuvas

Jei abu klientai yra įjungti pasyviuoju režimu ADC šakotuvas

Klientai už skirtingų NAT A и B prisijungė prie mazgo S.

NAT Traversal naudojimas norint sujungti vartotojus pasyviuoju režimu
Taip iš kliento pusės atrodo ryšys su šakotuvu A

Centras priima ryšius per prievadą 1511. Klientas A atlieka išeinančius ryšius iš savo privataus tinklo per prievadą 50758. Hubas savo ruožtu mato NAT įrenginio adresą, dirba su juo ir transliuoja jį klientams pagal jų identifikatorius.

Klientas A siunčia į serverį S pranešimas, kuriame prašoma padėti susisiekti su klientu B.

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

Taip pat pasyviuoju režimu klientas B, gavęs šią komandą, turi pranešti apie savo privatų prievadą, naudojamą prisijungti prie šakotuvo per NAT.

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

Gavęs šią informaciją klientas A iš karto bando užmegzti ryšį su klientu B ir praneša apie savo privatų uostą.

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

Kokios palūkanos? Susidomėjimas yra to paties ryšio galinio taško perkėlimas sukuriant naują ryšį į viešąjį adresą per jau naudojamą privatų prievadą.

NAT Traversal naudojimas norint sujungti vartotojus pasyviuoju režimu
Bingo!

Žinoma, šiuo atveju klientas NAT B turi visas teises atmesti pirmą kliento užklausą prisijungti A, tačiau jo paties prašymas įsiveržia į būtent šio ryšio sukurtą „skylę“ ir ryšys užsimezga.

NAT Traversal naudojimas norint sujungti vartotojus pasyviuoju režimu
Iliustracija tinka visam procesui su įspėjimu protokolas nenaudoja sesijos atidarytų viešųjų prievadų NAT-S, taip pat asmeniniais adresais.

Epilogas

Rašant (pradinį) straipsnį, maždaug pusė nuolatinės srovės klientų dirba pasyviuoju režimu. Tai reiškia, kad ketvirtadalis visų galimų jungčių negali būti užmegztas.

Toliau DC++ galės apeiti NATnaudojant esamus ryšius A-S и B-S užmegzti tiesioginį kliento-kliento ryšį, net jei A и B yra pasyviuoju režimu.

Šaltinis: www.habr.com

Добавить комментарий