Користење на NAT Traversal за поврзување на корисници во пасивен режим

Оваа статија е бесплатен превод на еден од записите во Блог за програмери на DC++.

Со дозвола на авторот (како и заради јасност и интерес) го обоив со линкови и го дополнив со некое лично истражување.

Вовед

Најмалку еден корисник на поврзувачкиот пар мора да биде во активен режим во овој момент. Механизмот за преминување NAT ќе биде корисен кога активниот режим не е конфигуриран на ниту една страна. Ова обично се должи на заштитен ѕид или NAT уред кој ги блокира дојдовните врски.

Ако двата клиенти се во активен режим

Клиентот што иницира испраќа команда што содржи своја IP адреса и порта $ConnectToMe на друг клиент. Користејќи ги овие податоци, клиентот што ја примил командата воспоставува врска со иницијаторот.

Ако еден од клиентите е во пасивен режим

Преку центар, пасивен клиент A испраќа команда $RevConnectToMe активен клиент Bкој потоа одговара со наредбата $ConnectToMe.

Користење на NAT Traversal за поврзување на корисници во пасивен режим
Како сервер S во случајот погоре има DC центар

Ако двата клиенти се вклучени во пасивен режим 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 за поврзување на корисници во пасивен режим
Илустрација погодна за целиот процес со предупредување дека протокол не користи јавни пристаништа отворени од седницата NATS, како и приватни адреси.

Епилог

Во моментот на пишување на (оригиналниот) напис, приближно половина од клиентите на DC работат во пасивен режим. Тоа значи дека една четвртина од сите можни врски не може да се направат.

Понатаму DC++ ќе може да го заобиколи NATкористење на постоечките врски AS и BS да воспостави директна врска клиент-клиент, дури и ако A и B се во пасивен режим.

Извор: www.habr.com