Пайдаланушыларды пассивті режимде қосу үшін NAT Traversal пайдалану

Бұл мақала жазбалардың бірінің тегін аудармасы DC++ әзірлеушілер блогы.

Автордың рұқсатымен (айқындық пен қызығушылық үшін) мен оны сілтемелермен боядым және оны кейбір жеке зерттеулермен толықтырдым.

Кіріспе

Қосылатын жұптың кем дегенде бір пайдаланушысы осы уақытта белсенді режимде болуы керек. NAT өту механизмі белсенді режим екі жақта да конфигурацияланбаған кезде пайдалы болады. Бұл әдетте брандмауэр немесе NAT құрылғысы кіріс қосылымдарды блоктайды.

Екі клиент белсенді режимде болса

Бастауыш клиент өзінің IP мекенжайы мен порты бар пәрменді жібереді $ConnectToMe басқа клиентке. Осы деректерді пайдалана отырып, пәрменді алған клиент бастамашымен байланыс орнатады.

Клиенттердің бірі пассивті режимде болса

Хаб арқылы пассивті клиент A пәрмен жібереді $RevConnectToMe белсенді клиент Bол $ConnectToMe пәрменімен жауап береді.

Пайдаланушыларды пассивті режимде қосу үшін NAT Traversal пайдалану
Сервер ретінде S жоғарыдағы жағдайда тұрақты ток хабы бар

Екі клиент те пассивті режимде болса ADC хабы

Әртүрлі NAT артындағы клиенттер A и B хабқа қосылды S.

Пайдаланушыларды пассивті режимде қосу үшін NAT Traversal пайдалану
Клиент жағынан хабқа қосылу осылай көрінеді A

Хаб 1511 портындағы қосылымдарды қабылдайды. Клиент A 50758 порты арқылы өзінің жеке желісінен шығыс қосылымдарын жасайды. Хаб өз кезегінде NAT құрылғысының мекенжайын көреді, онымен жұмыс істейді және оны идентификаторларына сәйкес клиенттерге таратады.

Клиент A серверге жібереді S клиентпен байланысуға көмек сұрайтын хабарлама B.

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

Сондай-ақ пассивті режимде клиент B, осы пәрменді алған соң, NAT арқылы хабқа қосылу үшін пайдаланылған жеке порты туралы хабарлауы керек.

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

Осы ақпаратты алғаннан кейін клиент A бірден клиентпен байланыс орнатуға тырысады B және өзінің жеке порты туралы хабарлайды.

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

Қандай қызығушылық бар? Пайдаланылған жеке порт арқылы жалпы мекенжайға жаңа қосылым жасау арқылы бірдей қосылымның соңғы нүктесін ауыстыру қызығушылық болып табылады.

Пайдаланушыларды пассивті режимде қосу үшін NAT Traversal пайдалану
Бинго!

Әрине, бұл жағдайда клиент NAT B клиенттің бірінші қосылу сұрауын қабылдамауға толық құқығы бар A, бірақ оның өз өтініші дәл осы байланыс арқылы жасалған «тесікке» асығады және байланыс орнатылады.

Пайдаланушыларды пассивті режимде қосу үшін NAT Traversal пайдалану
Ескертумен бүкіл процесс үшін қолайлы иллюстрация хаттама сеанс ашқан жалпы порттарды пайдаланбайды NAT-S, сондай-ақ жеке мекенжайлар.

Эпилогия

(Түпнұсқа) мақаланы жазу кезінде DC клиенттерінің шамамен жартысы пассивті режимде жұмыс істейді. Бұл барлық мүмкін болатын қосылымдардың төрттен бірін жасау мүмкін емес дегенді білдіреді.

Болашақта DC++ NAT желісін айналып өте аладыбар қосылымдарды пайдалану A-S и B-S тікелей клиент-клиент байланысын орнату үшін, тіпті егер A и B пассивті режимде болады.

Ақпарат көзі: www.habr.com

пікір қалдыру