پرش به مطلب اصلی

TcpConnector

📖 معرفی کلی

گره TcpConnector برای برقراری اتصال TCP به یک آدرس و پورت مشخص استفاده می‌شود. این نود به‌عنوان یک کلاینت TCP عمل کرده و اتصال‌های خروجی ایجاد می‌کند.

🔧 مشخصات فنی اساسی

ویژگیمقدارتوضیح
نوع نودAdapter (تک‌جهته)جهت کانکشن ها از چپ شروع و به راست پیش روی می‌کنند
لایه شبکهلایه ۴ (Transport Layer)کار با کانکشن‌ها، نه پکت‌های خام
موقعیت در زنجیرانتهای زنجیرفقط در انتهای زنجیر قابل استفاده است
وابستگینیاز به حداقل یک نود قبلیبرای دریافت داده‌ها ضروری است
نکات
  • جایگاه ثابت: این نود باید حتماً در انتهای یک زنجیر قرار گیرد و نمی‌تواند در میانه یا ابتدای زنجیر استفاده شود.
  • وابستگی اجباری: برای عملکرد صحیح، نیاز به نود قبلی دارد تا داده‌های دریافتی را به آن منتقل کند.
  • عدم دوجهته بودن: برخلاف برخی نودهای لایه ۳، این نود فقط داده را از چپ به راست منتقل می‌کند.
  • نود آداپتر: این نود از نوع Adapter است.

🎯 قابلیت‌ها و عملکردها

گره TcpConnector دارای قابلیت‌های زیر است:

🌐 مدیریت اتصالات TCP

  • برقراری اتصال به آدرس و پورت مقصد به‌عنوان یک کلاینت TCP
  • مدیریت کامل چرخه‌ی حیات سوکت‌ها: از ایجاد تا بسته شدن و تبادل داده با نود قبلی

🔒 کنترل دسترسی پیشرفته

  • پشتیبانی از فرمت‌های مختلف شبکه مانند CIDR (مثلاً /24، /32)

🚪 پشتیبانی از چندین پورت

  • قابلیت انتخاب پورت مقصد به‌صورت تصادفی از یک بازه‌ی مشخص

🌍 پشتیبانی از چندین IP

  • قابلیت اتصال به یک IP با subnet mask (مثلاً در سرورهایی که IPv6 با subnet می‌دهند، می‌تواند هر بار یک IP از بازه انتخاب کند)

🌐 پشتیبانی از دامنه

  • امکان تبدیل دامنه به IP برای برقراری اتصال

🔄 پشتیبانی از داده‌های متغیر

  • قابلیت دریافت آدرس و پورت مقصد از context و اتصال به مقصد مورد نظر
  • مثلاً اگر نود قبلی یک Socks5Server یا HttpProxyServer باشد، می‌تواند آدرس درخواستی کاربر را خوانده و به آن متصل شود

⚙️ راهنمای پیکربندی

📋 ساختار کلی

{
"name": "connector_name",
"type": "TcpConnector",
"settings": {
// تنظیمات پایه
"address": "1.1.1.1",
"port": 8443,
"nodelay": true,
// تنظیمات اختیاری
"fastopen": false,
"domain-strategy": "ipv4"
},
"next": "next_node_name"
}

🔧 پارامترهای ضروری

1. Address (آدرس مقصد)

IP مشخص:

"address": "192.168.1.100"

برای اتصال مستقیم به یک آدرس IP ثابت.

آدرس از context:

"address": "dest_context->address"

برای اتصال به آدرس درخواستی کاربر (این مقدار باید توسط نودهای پروکسی مانند Socks5Server، HttpProxyServer و غیره تنظیم شود).

دامنه:

"address": "google.com"

برای اتصال به یک دامنه که به IP تبدیل می‌شود (در این حالت می‌توانید پارامتر domain-strategy را نیز تنظیم کنید).

2. Port (پورت مقصد)

پورت منفرد:

"port": 8443

پورت از context:

"port": "dest_context->port"

پورت تصادفی از یک بازه:

"port": "random(1000,2000)"

در این حالت برای هر اتصال یک پورت تصادفی جدید از بازه‌ی مشخص انتخاب می‌شود.

3. Nodelay (بهینه‌سازی TCP)

"nodelay": true

دلیل اهمیت: توصیه می‌شود همیشه مقدار Nodelay را true قرار دهید تا تأخیر (latency) کاهش یافته و پاسخ‌دهی real-time بهبود یابد. این پارامتر الگوریتم Nagle را غیرفعال می‌کند که در حالت عادی باعث تأخیر در ارسال بسته‌های کوچک می‌شود.

مطالعه‌ی بیشتر: برای اطلاعات بیشتر جستجو کنید: TCP Nagle Algorithm


🔧 پارامترهای اختیاری

پارامتر domain-strategy

این پارامتر تعیین می‌کند هنگام تبدیل دامنه به IP، اگر هم IP نسخه‌ی ۴ و هم ۶ وجود داشت، کدام استفاده شود.

مقادیر مجاز:

"domain-strategy": "prefer-ipv4"
"domain-strategy": "prefer-ipv6"
"domain-strategy": "ipv4"
"domain-strategy": "ipv6"

نکته مهم: اگر از حالت prefer استفاده نکنید و دامنه IP نسخه‌ی مورد نظر را نداشته باشد، اتصال لغو می‌شود.

پارامتر fastopen

"fastopen": false

این پارامتر ویژگی TCP Fast Open را فعال یا غیرفعال می‌کند که برای کاهش تأخیر در برقراری اتصال طراحی شده است.

توصیه: توصیه می‌شود این پارامتر را false نگه دارید مگر اینکه کاملاً از عملکرد آن آگاه باشید. دلیل این توصیه:

  • همه‌ی سیستم‌عامل‌ها و شبکه‌ها از TCP Fast Open پشتیبانی نمی‌کنند
  • ممکن است باعث مشکلات اتصال در برخی محیط‌ها شود
  • فقط در صورت اطمینان کامل از پشتیبانی زیرساخت استفاده کنید