اتصال سمج (پروتکل انتقال ابرمتن)
ارتباطدهنده[1][2][3][4] سمج، اتصال پایا یا اتصال ماندگار (به انگلیسی: Persistent Connection) ایدهٔ استفاده از یک اتصال TCP برای ارسال و دریافت چندین درخواست و پاسخ HTTP میباشد. این ایده در مقابل حالتی که برای هر درخواست HTTP، یک اتصال TCP ایجاد شود، قرار میگیرد.
HTTP |
---|
روشهای درخواست |
زمینههای سرآیند |
|
کدهای وضعیت |
|
نحوه عملکرد
HTTP 1.0
در نسخهٔ اول از پروتکل انتقال ابرمتن هیچ تعریف رسمی برای استفاده از اتصال پایا وجود نداشت. این تعریف بعدها به این پروتکل افزوده شد. تمامی عوامل کابری که قابلیت اتصال پایا را دارا بودند، سرآیند زیر را به بستهٔ پاسخ میافزودند:
Connection: Keep-Alive
با ارسال این درخواست، در صورت پشتیبانی سرور از این نوع اتصال، در بستهٔ پاسخ نیز همین سرآیند افزوده میشود. این عمل به معنای موافقت سرور برای برقرار نگاه داشتن اتصال میباشد. بهاینترتیب، کلاینت بدون از بین بردن اتصال TCP میتوانست درخواست بعدی خود را ارسال نماید.
HTTP 1.1
در نسخهٔ ۱٫۱ تمامی اتصالها پایا محسوب میشوند مگر اینکه خلاف آن در بسته مشخص گردد.[4] اتصالهای پایا در این نسخه از پیام Keep-Alive که در نسخهٔ قبلی استفاده میشد، استفاده نمیکنند. البته مهلتِ ارسالِ درخواست بر روی اتصال قبلی نیز کم شده است. مثلاً در سرور آپاچی نسخهٔ ۲٫۰ این زمان ۱۵ ثانیه[5] و در نسخهٔ ۲٫۲ تنها ۵ ثانیه[6] تعریف شده است.
مزیتها
- امکان استفاده از لولهکشی HTTP فراهم میشود.
- نیازی به انجام عمل Handshaking نیست
- امکان گزارش خطاها بدون نیاز به بستن اتصال
براساس متن تعریف پروتکل انتقال ابرمتن (RFC 2616)[صفحه ۴۶] هیچ کاربری نباید بیش از ۲ اتصال همزمان به یک وب سرور یا پراکسی سرور ایجاد نماید. یک سرور پراکسی نیز تنها میتواند 2N اتصال به پراکسی سرور دیگر ایجاد نماید که N تعداد کاربران پراکسی سرور میباشد. این امر برای افزایش کارایی پروتکل انتقال ابرمتن لازم است تا جلوی ایجاد شلوغی در شبکه را بگیرد. در صورت پیادهسازی و استفاده صحیح از لولهکشی HTTP، اتصالهای بیشتر هیچ تأثیری در افزایش کارایی شبکه نخواهند داشت.
معایب
- امروزه با توجه به گسترش شبکههای پرسرعت، باز نگاه داشتن اتصال وبسرور (مثلاً به مدت ۵ ثانیه در آپاچی) بیشتر باعث کاهش کارایی شبکه میشود تا افزایش آن.[7]
- برای سرویسهایی که تکمنبعی میباشند مانند سرویس میزبانی عکس بازنگاهداشتن اتصال بعد از ارسال منبع تنها هدر دادن توان سرور است.
- در حالت ارتباطدهنده سمج، برنامهمیتواند این امکان را بهدستآورد که به طور مداوم گزارشات خود را باتوجه به بسته نشدن اتصال، ارسال نماید.[8]
استفاده در مرورگرها
مرورگر نت اسکیپ (از نسخهٔ ۴٫۰۵ به بعد) و مرورگر اینترنت اکسپلورر (از نسخهٔ ۴٬۰۱ به بعد) از اتصال پایا پشتیبانی میکنند.
مرورگر اینترنت اکسپلورر در نسخههای ۶ و ۷ از ۲ اتصال پایا استفاده میکند. اما از نسخهٔ ۸ تعداد اتصالات پایای استفاده شده به ۶ رسیده است.[9] اتصالات پایا بعد از ۶۰ ثانیه عدمِ فعالیت بسته خواهند شد. این مقدار از طریق رجیستری ویندوز قابل تنظیم است.
مرورگر فایرفاکس نیز از این نوع اتصال پشتیبانی میکند. تعداد اتصالات قابل تنظیم است. (برای هر سرور یا پراکسی سرور یا در کل) اتصالات پایا بعد از ۱۱۵ ثانیه عدمِ فعالیت بسته خواهند شد که البته این مقدار نیز قابل تنظیم است.[10]
مروگر اپرا از نسخهٔ ۴ از اتصالات پایا پشتیبانی میکند. تعداد اتصالات همزمان در این مرورگر قابل تنظیم میباشد. (برای هر سرور یا در کل)
جستارهای وابسته
منابع
- مشارکتکنندگان ویکیپدیا. «HTTP Persistent Connection». در دانشنامهٔ ویکیپدیای انگلیسی، بازبینیشده در ۱۳ اردیبهشت ۱۳۹۲.
- Zhou, Huan-Xiang (2008-11-05). "The debut of PMC Biophysics". PMC Biophysics. 1 (1). doi:10.1186/1757-5036-1-1. ISSN 1757-5036.
- یادکرد خالی (کمک)
- Zhou, Huan-Xiang (2008-11-05). "The debut of PMC Biophysics". PMC Biophysics. 1 (1). doi:10.1186/1757-5036-1-1. ISSN 1757-5036.
- «RFC 2616 - HTTP/1.1 Definition». IETF. تاریخ وارد شده در
|تاریخ=
را بررسی کنید (کمک) - . Apache 2 Documentation https://web.archive.org/web/20130503121401/http://httpd.apache.org/docs/2.0/mod/core.html#keepalivetimeout. بایگانیشده از اصلی در ۳ مه ۲۰۱۳. پارامتر
|عنوان= یا |title=
ناموجود یا خالی (کمک) - . Apache 2.2 Documentation http://httpd.apache.org/docs/2.2/mod/core.html#keepalivetimeout. پارامتر
|عنوان= یا |title=
ناموجود یا خالی (کمک) - «HTTP Keep Alive is now considered harmful». بایگانیشده از اصلی در ۲۶ اوت ۲۰۱۱.
- http://javabyab.com/7762/قابلیت-persistent-connection-پروتکل-http-چیست-مزایایی-دارد؟
- «IE8 Speeds things up».
- http://kb.mozillazine.org/Network.http.keep-alive.timeout. پارامتر
|عنوان= یا |title=
ناموجود یا خالی (کمک)