مشت زدن سوراخ تی سی پی
پیمایش TCP NAT و سوراخ سوراخ تی سی پی (TCP) (گاهی اوقات عبور پانچ NAT) زمانی اتفاق می‌افتد که دو میزبان پشت ترجمه آدرس شبکه (NAT) سعی دارند با اتصالات خروجی تی سی پی (TCP) به یکدیگر متصل شوند. این سناریو به خصوص در مورد مهم است نظیر به نظیر ارتباطات، مانند صدا از طریق IP (VoIP) به اشتراک گذاری فایل، راه دور، سیستم‌های چت و برنامه‌های مشابه.
سوراخ کردن سوراخ تی سی پی (TCP) یک روش پیمایش NAT است که برای ایجاد اتصال TCP بین دو همتا در اینترنت در پشت دستگاه‌های NAT مورد استفاده قرار گرفته‌است. "پیمایش NAT" اصطلاحی کلی برای تکنیک‌هایی است که شبکه TCP / IP و / یا اتصالات تی سی پی (TCP) را پیمایش می‌کند و دروازه‌های NAT را پیمایش می‌کند.
در ادامه، اصطلاحات میزبان، مشتری و همکار تقریباً به جای هم استفاده می‌شوند.عبور از طریق NAT، از طریق سوراخ سوراخ، با استفاده از NAT، اتصالات دو طرفه تی سی پی (TCP) را بین میزبانهای اینترنت در شبکه‌های خصوصی برقرار می‌کند. با انواع NATها کار نمی‌کند، زیرا رفتار آنها استاندارد نیست. هنگامی که دو میزبان در تی سی پی (TCP) به یکدیگر متصل می‌شوند، هر دو از طریق اتصالات خروجی، آنها در حالت "همزمان بازکردن تی سی پی (TCP)" نمودار ماشین حالت تی سی پی (TCP) هستند.
در دسترس بودن سوراخ سوراخ تی سی پی (TCP) به نوع تخصیص پورت کامپیوتر به کار رفته توسط NAT بستگی دارد. برای دو همتا پشت NAT برای اتصال ، آنها باید کمی دربارهٔ یکدیگر بدانند. چیزی که آنها کاملاً باید بدانند «مکان» همکار دیگر یا نقطه انتهایی از راه دور است. نقطه پایانی از راه دور داده‌های آدرس IP و پورتی است که همکار به آن متصل می‌شود؛ بنابراین وقتی دو همتا، A و B، به ترتیب با اتصال به پورت‌های محلی Pa و Pb، اتصال تی سی پی (TCP) را آغاز می‌کنند، برای برقراری اتصال باید پورت نقطه انتهایی از راه دور را به عنوان نقشه‌برداری شده توسط NAT بدانند. هنگامی که هر دو همتا پشت NAT هستند، نحوه کشف نقطه پایانی از راه دور عمومی همتای دیگر مشکلی به نام "پیش‌بینی پورت NAT است". تمام روشهای پیمایش و سوراخکاری تی سی پی (TCP) NAT باید مشکل پیش‌بینی پورت را حل کنند.
تخصیص درگاه NAT می‌تواند یکی از این دو باشد:بسته به اینکه NATها یک رفتار قابل پیش‌بینی یا غیرقابل پیش‌بینی از خود نشان دهند، انجام اتصال تی سی پی (TCP) از طریق تی سی پی (TCP) به صورت همزمان امکان‌پذیر است یا نه، همان‌طور که در زیر توسط ماتریس اتصال نشان دهنده موارد مختلف و تأثیر آنها در انتها به ارتباطات پایان:
در اینجا برخی از روش‌های استفاده شده توسط NATs برای همگام سازی‌ها برای انجام پیش‌بینی بندر وجود دارد:
اگر همتا از راه دور اطلاعات یک نقشه‌برداری را داشته باشد، می‌تواند ارزش نگاشت‌های بعدی را حدس بزند. اتصال TCP در دو مرحله اتفاق می‌افتد، در ابتدا همتایان با شخص ثالث ارتباط برقرار می‌کنند و نقشه‌برداری آنها را می‌آموزند. برای مرحله دوم، هر دو همکار می‌توانند حدس بزنند که برای همه اتصالات بعدی نگاشت درگاه NAT چگونه خواهد بود که پیش‌بینی پورت را حل می‌کند. این روش نیاز به ایجاد حداقل دو اتصال متوالی برای هر همتا دارد و نیاز به استفاده از شخص ثالث دارد. این روش در صورت وجود Carrier-grade NAT با تعداد زیادی مشترک در پشت هر آدرس IP به درستی کار نمی‌کند، زیرا فقط مقدار محدودی پورت در دسترس است و اختصاص پورت‌های متوالی به یک میزبان داخلی ممکن است غیر عملی یا غیرممکن باشد.
در این حالت، پیش‌بینی پورت پیش پا افتاده‌است و همکاران به راحتی باید پورتی را که به آن متصل هستند از طریق کانال ارتباطی دیگری (مانند UDP یا DHT) قبل از بازکردن همزمان اتصالات خروجی TCP، مبادله کنند. این روش فقط به یک اتصال در هر کاربر نیاز دارد و برای پیش‌بینی پورت به شخص ثالث نیاز ندارد.
با استفاده از این راه حل، همتا ابتدا به یک سرور شخص ثالث متصل می‌شوند که ارزش نگاشت درگاه آنها را ذخیره می‌کند و به هر دو همتا ارزش نگاشت پورت همکار دیگر را می‌دهد. در مرحله دوم، هر دو همتا از نقطه پایانی محلی یکسان استفاده می‌کنند تا همزمان یک باز تی سی پی (TCP) را با یکدیگر انجام دهند. متأسفانه این امر مستلزم استفاده از SO_REUSEADDR در سوکتهای تی سی پی (TCP) است و چنین استفاده ای استاندارد تی سی پی (TCP) را نقض می‌کند و می‌تواند منجر به خراب شدن داده‌ها شود. فقط درصورتی که برنامه بتواند از خود در برابر تخریب این داده‌ها محافظت کند، باید استفاده شود.
ما در اینجا فرض می‌کنیم که پیش‌بینی پورت قبلاً از طریق یکی از روش‌های توضیح داده شده در بالا صورت گرفته‌است و هر همتا نقطه پایانی همکار را از راه دور می‌داند. هر دو هم صدا "تماس POSIX متصل" به نقطه پایانی همتا را انجام می‌دهند. تی سی پی (TCP) همزمان باز به صورت زیر اتفاق می‌افتد:
برای کارکرد همزمان NAT، تی سی پی (TCP) باید:
این برای اطمینان از اینکه NATها با توجه به تی سی پی (TCP) همزمان باز رفتار خوبی دارند، کافی است.
تکنیک توضیح داده شده در بالا در CGN به خوبی کار می‌کند. CGN همچنین می‌تواند از یک "رفتار اضافه بار درگاه استفاده" کند، به این معنی که نقاط انتهایی داخلی مشخص با همان مقدار پورت را می‌توان در همان نقطه پایانی عمومی ترسیم کرد. این منحصر به فرد بودن پنج } نیست و در نتیجه قابل قبول است. "حفظ پورت" تی سی پی (TCP) همچنین می‌تواند منجر به مواردی شود که پورت‌های CGN بیش از حد بارگیری می‌شوند و مسئله ای برای سالم بودن پروتکل نیست. "اضافه بار پورت" برای تی سی پی (TCP) به CGN این امکان را می‌دهد تا با حفظ ضمانت‌های ارتباطی تی سی پی (TCP) از انتها به پایان، میزبان بیشتری را در داخل جا دهد.