Хэрэглэгчдийг идэвхгүй горимд холбохын тулд 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 портоор дамжуулан хувийн сүлжээнээсээ гадагш гарах холболтуудыг хийдэг. Hub нь эргээд 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

сэтгэгдэл нэмэх