مشت به حفره یودی‌پی

از ویکی‌پدیا، دانشنامهٔ آزاد

سوراخ کردن یودی‌پی[۱] (به انگلیسی: UDP hole punching) شیوه‌ای متداول برای برنامه‌ها در نگه‌داشتن جریان بسته‌های UDP در شبکه‌ها NAT است.

سوراخ کردن UDP اتصال بین دو میزبان برقرار می کند که با یک یا چند مترجم آدرس شبکه (NAT) ارتباط برقرار می کنند. به طور معمول، میزبان های شخص ثالث در شبکه حمل و نقل عمومی برای ایجاد حالت های پورت UDP استفاده می شود که ممکن است برای ارتباطات مستقیم بین میزبان های ارتباطی استفاده شود. هنگامی که وضعیت پورت با موفقیت ایجاد شد و میزبان ها در حال برقراری ارتباط هستند، وضعیت پورت ممکن است با ترافیک معمولی ارتباطی حفظ شود ویا در غیاب طولانی مدت آن، با بسته های زنده نگه داشته شود که معمولاً از بسته های خالی UDP یا بسته هایی با حداقل حجم قابل تنظیم است.[۲]


شیوه‌های پیمایش NAT معمولاً برای ارتباط شبکه‌ای مشتری-مشتری در اینترنت که شامل میزبان‌های متصل‌شده در شبکه خصوصی، خصوصاً در ارتباط همتا به همتا، Direct Client-to-Client و صدا روی پروتکل اینترنت (VoIP) به کار گرفته می‌شود.

بررسی اجمالی[ویرایش]

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

نمودار توالی پیام با همتایان A و B با استفاده از سرور S برای برقراری ارتباط

میزبان هایی با اتصال شبکه در داخل یک شبکه خصوصی متصل شده از طریق NAT به اینترنت معمولاً از روش Session Traversal Utilities for NAT (STUN) یا Interactive Connectivity Establishment (ICE) برای تعیین آدرس عمومی NAT که همتایان ارتباطی آن نیاز دارند استفاده می کنند. در این فرآیند از میزبان دیگری در شبکه عمومی برای ایجاد نقشه پورت و سایر حالت های پورت UDP استفاده می شود که فرض می شود برای ارتباط مستقیم بین میزبان های برنامه معتبر است.[۳]

از آنجایی که حالت UDP معمولاً پس از مدت کوتاهی در محدوده ده‌ها ثانیه تا چند دقیقه منقضی می‌شود و درگاه UDP در این فرآیند بسته می‌شود، سوراخ‌کاری UDP از انتقال بسته‌های دوره‌ای نگهدارنده استفاده می‌کند که هر کدام تجدید می‌شوند.

در یک رویکرد تا حدودی دقیق تر، هر دو میزبان شروع به ارسال برای یکدیگر با استفاده از تلاش های متعدد می کنند. در یک NAT مخروط محدود ، اولین بسته از میزبان دیگر مسدود خواهد شد. پس از آن دستگاه NAT سابقه ارسال بسته ای به دستگاه دیگر را دارد و به هر بسته ای که از این آدرس IP و شماره پورت می آید اجازه عبور می دهد. این تکنیک به طور گسترده در نرم افزارهای همتا به همتا و تلفن Voice over Internet Protocol استفاده می شود.

همچنین می توان از آن برای کمک به ایجاد شبکه های خصوصی مجازی که بر روی UDP کار می کنند استفاده کرد. همین تکنیک گاهی اوقات به اتصالات پروتکل کنترل انتقال (TCP) گسترش می‌یابد، هرچند با موفقیت کمتری این امر انجام می پذیرد، زیرا جریان‌های اتصال TCP توسط سیستم‌عامل میزبان کنترل می‌شوند،. بنابراین هر دستگاه NAT که بررسی شماره دنباله را انجام می دهد، بسته ها را به یک اتصال موجود مرتبط نمی داند و آنها را رها نمی کند.

منابع[ویرایش]

  1. "UDP hole punching". Wikipedia (به انگلیسی). 2023-12-03.
  2. Ford, Bryan; Kegel, Dan; Srisuresh, Pyda (2008-03-01). "State of Peer-to-Peer (P2P) Communication across Network Address Translators (NATs)". ietf.org.
  3. ietf.org (۲۰۱۱-۰۱-۰۱). «Simple Security in IPv6 Gateway CPE».