Пассивдүү режимде колдонуучуларды туташтыруу үчүн 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 колдонуу
Эскертүү менен бүт процесске ылайыктуу иллюстрация протокол сессия тарабынан ачылган коомдук портторду колдонбойт NAT-S, ошондой эле жеке даректер.

эпилогунда

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

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

Source: www.habr.com

Комментарий кошуу