ورود

View Full Version : سوال: ارتباط دو برنامه از پشت nat



gbg
پنج شنبه 30 تیر 1390, 15:23 عصر
سلام
من 2 تا فایل اجرایی دارم که IP و Port مورد نظر رو میگیره و به اون IP , Port وصی میشه
حالا مشکلم اینجاست که هر دوی این برنامه ها پشت NAT هستن
من می خوام یه برنامه بنویسم که هر دو اونها به اون متصل بشن و اون برنامه اون 2 تا رو به هم وصل کنه
البته از پکت بندی برنامه اصلی اطلاعی ندارم و همچنین سورسش رو هم ندارم
کسی راه حلی داره؟

Mask
دوشنبه 03 مرداد 1390, 21:56 عصر
خوب مشکل کجاست؟
این روش بد نیست نسبتا. تا حدودی یه چیزی میشه شبیه به Team viewer.

vcldeveloper
سه شنبه 04 مرداد 1390, 12:35 عصر
حالا مشکلم اینجاست که هر دوی این برنامه ها پشت NAT هستن
UPNP این امکان رو به یک برنامه میده که به روتر درخواست باز کردن پورت مورد نظرش را ارسال کنه.


من می خوام یه برنامه بنویسم که هر دو اونها به اون متصل بشن و اون برنامه اون 2 تا رو به هم وصل کنه
NAT زمانی مانع تبادل اطلاعات میشه که یکی از خارج از شبکه بخواد ارتباطی را با یک نود در داخل شبکه برقرار کنه. اما اگر یک نود از داخل شبکه درخواستی را به نودی در خارج از شبکه ارسال کنه، و نود خارجی به این درخواست پاسخ بده، مشکلی از طرف NAT ایجاد نمیشه. پس اگر هر دو برنامه به یک سرور مشخص متصل بشند، سرور میتونه در ادامه با اونها داده رد و بدل کنه.

اگر میخواید ارتباط تان مطمئن باشه، براش مشکلی پیش نیاد، بهتره که از اتصال مبتنی بر HTTP هم در کنار اتصال عادی (TCP یا UDP) استفاده کنید. به این صورت که اگر به هر دلیلی اتصال مبتنی بر UDP یا TCP به سر انجام نرسید، سوئیچ کنید روی HTTP؛ چون HTTP توسط NAT بلوکه نمیشه. این کاری هست که نرم افزارهایی مثل Skype انجام میدند.

gbg
سه شنبه 22 شهریور 1390, 13:44 عصر
سلام
من تازه امروز جواب شما رو دیدم

UPNP این امکان رو به یک برنامه میده که به روتر درخواست باز کردن پورت مورد نظرش را ارسال کنه.


چطور میشه این درخواست رو ارسال کرد ، پکت خاصی یا دستور خاصی وجود داره؟


NAT زمانی مانع تبادل اطلاعات میشه که یکی از خارج از شبکه بخواد ارتباطی را با یک نود در داخل شبکه برقرار کنه. اما اگر یک نود از داخل شبکه درخواستی را به نودی در خارج از شبکه ارسال کنه، و نود خارجی به این درخواست پاسخ بده، مشکلی از طرف NAT ایجاد نمیشه. پس اگر هر دو برنامه به یک سرور مشخص متصل بشند، سرور میتونه در ادامه با اونها داده رد و بدل کنه.

اگر میخواید ارتباط تان مطمئن باشه، براش مشکلی پیش نیاد، بهتره که از اتصال مبتنی بر HTTP هم در کنار اتصال عادی (TCP یا UDP) استفاده کنید. به این صورت که اگر به هر دلیلی اتصال مبتنی بر UDP یا TCP به سر انجام نرسید، سوئیچ کنید روی HTTP؛ چون HTTP توسط NAT بلوکه نمیشه. این کاری هست که نرم افزارهایی مثل Skype انجام میدند.
من از اتصال TCP/IP استفاده کردم و البته این رو هم اضافه کنم که این نرم افزار در دو شبکه مختلف هستن
و هر کدوم از این شبکه ها NAT خودش رو داره
البته اگه یک طرف اجازه عبور رو بده مشکل حل میشه ولی من آدرس بعد نت اون رو می دونم و نمی دونم آدرس آیپیش پشت نت چیه البته بدست آوردنش آسونه ولی چطور به سرور NAT بگم به این آی پی می خوام وصل بشم

joker
سه شنبه 22 شهریور 1390, 15:38 عصر
برای استفاده از upnp هم باید روی مودم یا حالا هر گت وی که داری این امکان فعال باشه ( پکتها و مشخصات استانداردی داره که توی اینترنت بگردی هست )
ولی به نظر من راحت ترین راه را برو اگه سیستمهات پشت مودم های معمولی adsl هستند میتونی از port FORWARDING (http://portforward.com/)که روی اکثر این مودمها هست استفاده کنی
اینطوری شما به آی پی ولید اون مودم وصل میشی ، اون خودش زحمت برقراری ارتباط با آی پی پشت NAT را میکشه و مشکلت خیلی زود حل میشه :)
ارتباطات تونلی هم میتونی استفاده کنی ولی با توجه به شرایط فعلی ممکنه بد برداشت کنند بیان کت بسته ببرنت استنتاخ! با خ دسته دار :)

روشهای سخت تری هم هست که چون منجر به سرویس دهان میشه از ذکرش خودداری میکنم ، و اشک شوق توی چشمام حلقه میزنه :افسرده:

gbg
سه شنبه 22 شهریور 1390, 17:06 عصر
خب من الان بین دوتا مرکز از وی پی ان استفاده کردم که حدود 200 هزار تومن برای 2 مگ در ماه میشه (بجز هزینه اینترنت) و در طولانی مدت به صرفه نیست و کامپیوتر هم آیپیش ممکنه تغییر کنه و این دوتا مرکز با وایرلس وصلن
یک سیستم مرکزی دارم که آی پی های این کامپیوترها رو داره و البته آی پیش ثابته
نمی خوام کاربران (حدود 50 کاربر) دگیر تنظیم کردن چیزی بشن و می خوام خود برنامه همه کار رو هوشمند انجام بده

vcldeveloper
یک شنبه 27 شهریور 1390, 11:56 صبح
ولی به نظر من راحت ترین راه را برو اگه سیستمهات پشت مودم های معمولی adsl هستند میتونی از port FORWARDING (http://portforward.com/)که روی اکثر این مودمها هست استفاده کنی
Port Forwarding باید به صورتی دستی توسط کاربر بر روی مودم تنظیم بشه. علت ایجاد UPNP هم این هست که بشه این تنظیمات را بدون دخالت کاربر روی مودم اعمال کرد.

Delphi 2010
دوشنبه 11 مهر 1390, 20:00 عصر
آقای کشاورز میشه یکمی در مورد UPNP توضیح بدید یا یه مرجع یا یه نمونه ای بدید که روش تحقیق کنیم و به نتیجه برسیم

vcldeveloper
دوشنبه 11 مهر 1390, 22:06 عصر
آقای کشاورز میشه یکمی در مورد UPNP توضیح بدید یا یه مرجع یا یه نمونه ای بدید که روش تحقیق کنیم و به نتیجه برسیم
شما یک جستجوی ساده برای UPNP و NAT در گوگل انجام بدید، انواع و اقسام توضیحات و منابع براتون لیست میشه.