𝗛𝗼𝘄 𝗕𝗮𝗰𝗸𝗲𝗻𝗱 𝗔𝗰𝗰𝗲𝗽𝘁 𝗖𝗼 – انجمن DEV

Summarize this content to 400 words in Persian Lang
چرخه حیات اتصال TCPسرور متصل می شود و گوش می دهد• سرور یک سوکت شنیداری ایجاد می کند و آن را به یک پورت متصل می کند.• فراخوانی سیستم listen() را فراخوانی می کند تا سوکت را به عنوان غیرفعال و آماده پذیرش اتصالات علامت گذاری کند. (مثال: پورت 3000)
𝗦𝗬𝗡 𝗤𝘂𝗲𝘂𝗲• هنگامی که یک کلاینت یک اتصال را آغاز می کند، دست دادن TCP شروع می شود:
کلاینت یک بسته SYN (همگام سازی) را به سرور ارسال می کند.
سرور با یک SYN-ACK (همگام سازی- تأیید) پاسخ می دهد.
مشتری با یک ACK دست دادن را کامل می کند.
• قبل از اتمام دست دادن، اتصال در صف SYN قرار می گیرد.• اتصالات در این صف در حالت نیمه باز هستند (SYN دریافت شده اما هنوز توسط مشتری تایید نشده است).• اگر دست دادن کامل نشود (مثلاً به دلیل مهلت زمانی)، ورودی از صف SYN حذف می شود.
𝗔𝗰𝗰𝗲𝗽𝘁 𝗤𝘂𝗲𝘂𝗲• هنگامی که دست دادن TCP کامل شد، اتصال از صف SYN به صف پذیرش منتقل می شود.سپس سرور می تواند برای بازیابی اتصال، فراخوانی سیستمی () را فراخوانی کند.
𝗙𝗶𝗹𝗲 𝗗𝗲𝘀𝗰𝗿𝗶𝗽𝘁𝗼𝗿𝘐𝘵'𝘴 𝘢𝘯 𝘪𝘯𝘵𝘦𝘨𝘦 𝘪𝘯𝘥𝘦𝘹 𝘵𝘰 𝘢𝘯 𝘦𝘯 𝘥𝘦𝘴𝘤𝘳𝘪𝘱𝘵𝘰𝘳 𝘵𝘢𝘣 𝘵𝘩𝘦 𝘰𝘱𝘦𝘳𝘢𝘵𝘪𝘯𝘨 𝘴𝘺𝘴 𝘛𝘩𝘪𝘴 𝘪𝘯𝘵𝘦𝘨𝘦𝘳 𝘳 𝘳𝘦𝘧𝘦𝘳𝘦𝘯𝘤𝘦 𝘵𝘰 𝘢 𝘴𝘰𝘤𝘬𝘦𝘵
• فراخوانی ()accept یک توصیفگر فایل جدید نشان دهنده اتصال کلاینت را برمی گرداند.• برنامه سرور از این توصیفگر برای خواندن و نوشتن در سوکت مشتری استفاده می کند.
𝗖𝗼𝗻𝗻𝗲𝗰𝘁𝗶𝗼𝗻 𝗠𝗮𝗻𝗮𝗴𝗲𝗺𝗲𝗻𝙎𝙔𝙉 𝙌𝙪𝙚𝙪𝙚 𝙊𝙫𝙚𝙧𝙛:• اگر صف SYN پر باشد، تلاش های جدید برای اتصال حذف می شوند.• کاهش: تنظیم پارامترهای هسته مانند 𝘯𝘦𝘵.𝘪𝘱𝘷4.𝘵𝘤𝘱𝘮𝘢𝘹𝘴𝘺𝘯_𝘣𝘢𝘤𝘬𝘭𝘰𝘨 یا از کوکی های SYN استفاده کنید.
𝗔𝗰𝗰𝗲𝗽𝘁 𝗤𝘂𝗲𝘂𝗲 🗢𝘃𝗲𝗿• اگر صف پذیرش پر باشد، اتصالات جدید نادیده گرفته می شوند یا بازنشانی می شوند.• کاهش: اندازه بک لاگ را در فراخوان listen() افزایش دهید و net.core.somaxconn را تنظیم کنید.
𝗙𝗶𝗹𝗲 𝗗𝗲𝘀𝗰𝗿𝗶𝗽𝘁𝗼𝗿 𝗘𝘅• سیستم محدودیتی برای توصیفگرهای فایل باز دارد (ulimit -n یا /proc/sys/fs/file-max).• تجاوز از این حد از اتصالات جدید جلوگیری می کند.• کاهش: حد توصیف کننده فرآیند را افزایش دهید.
چرخه حیات اتصال TCP
سرور متصل می شود و گوش می دهد
• سرور یک سوکت شنیداری ایجاد می کند و آن را به یک پورت متصل می کند.
• فراخوانی سیستم listen() را فراخوانی می کند تا سوکت را به عنوان غیرفعال و آماده پذیرش اتصالات علامت گذاری کند. (مثال: پورت 3000)
𝗦𝗬𝗡 𝗤𝘂𝗲𝘂𝗲
• هنگامی که یک کلاینت یک اتصال را آغاز می کند، دست دادن TCP شروع می شود:
- کلاینت یک بسته SYN (همگام سازی) را به سرور ارسال می کند.
- سرور با یک SYN-ACK (همگام سازی- تأیید) پاسخ می دهد.
- مشتری با یک ACK دست دادن را کامل می کند.
• قبل از اتمام دست دادن، اتصال در صف SYN قرار می گیرد.
• اتصالات در این صف در حالت نیمه باز هستند (SYN دریافت شده اما هنوز توسط مشتری تایید نشده است).
• اگر دست دادن کامل نشود (مثلاً به دلیل مهلت زمانی)، ورودی از صف SYN حذف می شود.
𝗔𝗰𝗰𝗲𝗽𝘁 𝗤𝘂𝗲𝘂𝗲
• هنگامی که دست دادن TCP کامل شد، اتصال از صف SYN به صف پذیرش منتقل می شود.
سپس سرور می تواند برای بازیابی اتصال، فراخوانی سیستمی () را فراخوانی کند.
𝗙𝗶𝗹𝗲 𝗗𝗲𝘀𝗰𝗿𝗶𝗽𝘁𝗼𝗿
𝘐𝘵'𝘴 𝘢𝘯 𝘪𝘯𝘵𝘦𝘨𝘦 𝘪𝘯𝘥𝘦𝘹 𝘵𝘰 𝘢𝘯 𝘦𝘯 𝘥𝘦𝘴𝘤𝘳𝘪𝘱𝘵𝘰𝘳 𝘵𝘢𝘣 𝘵𝘩𝘦 𝘰𝘱𝘦𝘳𝘢𝘵𝘪𝘯𝘨 𝘴𝘺𝘴 𝘛𝘩𝘪𝘴 𝘪𝘯𝘵𝘦𝘨𝘦𝘳 𝘳 𝘳𝘦𝘧𝘦𝘳𝘦𝘯𝘤𝘦 𝘵𝘰 𝘢 𝘴𝘰𝘤𝘬𝘦𝘵
• فراخوانی ()accept یک توصیفگر فایل جدید نشان دهنده اتصال کلاینت را برمی گرداند.
• برنامه سرور از این توصیفگر برای خواندن و نوشتن در سوکت مشتری استفاده می کند.
𝗖𝗼𝗻𝗻𝗲𝗰𝘁𝗶𝗼𝗻 𝗠𝗮𝗻𝗮𝗴𝗲𝗺𝗲𝗻
𝙎𝙔𝙉 𝙌𝙪𝙚𝙪𝙚 𝙊𝙫𝙚𝙧𝙛:
• اگر صف SYN پر باشد، تلاش های جدید برای اتصال حذف می شوند.
• کاهش: تنظیم پارامترهای هسته مانند 𝘯𝘦𝘵.𝘪𝘱𝘷4.𝘵𝘤𝘱𝘮𝘢𝘹𝘴𝘺𝘯_𝘣𝘢𝘤𝘬𝘭𝘰𝘨 یا از کوکی های SYN استفاده کنید.
𝗔𝗰𝗰𝗲𝗽𝘁 𝗤𝘂𝗲𝘂𝗲 🗢𝘃𝗲𝗿
• اگر صف پذیرش پر باشد، اتصالات جدید نادیده گرفته می شوند یا بازنشانی می شوند.
• کاهش: اندازه بک لاگ را در فراخوان listen() افزایش دهید و net.core.somaxconn را تنظیم کنید.
𝗙𝗶𝗹𝗲 𝗗𝗲𝘀𝗰𝗿𝗶𝗽𝘁𝗼𝗿 𝗘𝘅
• سیستم محدودیتی برای توصیفگرهای فایل باز دارد (ulimit -n یا /proc/sys/fs/file-max).
• تجاوز از این حد از اتصالات جدید جلوگیری می کند.
• کاهش: حد توصیف کننده فرآیند را افزایش دهید.