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 پشتیبانی نمیکنند
- ممکن است باعث مشکلات اتصال در برخی محیطها شود
- فقط در صورت اطمینان کامل از پشتیبانی زیرساخت استفاده کنید