خط لوله اچ‌تی‌تی‌پی کیست؟ توضیح بده.
لوله گذاری HTTP یکی از ویژگی‌های HTTP/1.1 است که به چند درخواست HTTP اجازه می‌دهد تا به واسطه یک اتصال TCP بدون انتظار برای پاسخ‌های مربوطه ارسال شوند. HTTP/1.1 به سرورها نیاز دارد که به درخواست‌های خط لوله به درستی پاسخ بدهند، با پاسخ‌های غیر خط لوله اما معتبر حتی اگر سرور از لوله گذاری HTTP پشتیبانی نمی‌کند. برخلاف این تقاضا، اغلب سرورهای قدیمی HTTP/1.1 از لوله‌گذاری، درست پشتیبانی نمی‌کنند بنابراین اغلب مشتریان HTTP ناچار می‌شوند که از لوله‌گذاری HTTP استفاده نکنند.این تکنیک با مالتی پلکس کردن به واسطه HTTP/2 جایگزین شد، که توسط اغلب مرورگرهای مدرن پشتیبانی می‌شود.در HTTP/3، مالتی پلکس شدن به واسطه QUIC که جایگزین TCP می‌شود، صورت می‌گیرد. این امر زمان بارگذاری را بیشتر می‌کاهد، زیرا حتی اگر بعضی از بسته‌ها از بین بروند، هیچ انسداد سر خطی وجود ندارد.انگیزه و محدودیت.خط لوله شدن درخواست‌ها منجر به بهبود چشمگیر هنگام بارگذاری صفحات HTML، به خصوص در اتصالات با تأخیر زیاد مثل اتصالات اینترنت ماهواره ای می شود. بالا رفتن سرعت در اتصالات پهنای باند کمتر معلوم است، زیرا که محدودیت HTTP 1.1 هنوز لحاظ می‌شود: سرور باید پاسخ‌های خود را به همان ترتیبی که درخواست‌ها دریافت کرده‌اند ارسال کنند—بنابراین کل اتصال در ابتدا در ابتدا باقی می‌ماند و مسدود کردن HOL احتمال دارد رخ بدهد.عملیات ناهمزمان HTTP/2 و SPDY، راه حلی برای این امر است. تا سال ۲۰۱۷ بیشتر مرورگرها به صورت پیش فرض از HTTP/2 پشتیبانی می‌کردند که در عوض از Multiplexing استفاده می‌کرد.درخواست‌های غیرمستقیم مانند codice_1 نباید خط لوله شوند. درخواست‌های خواندن مثل codice_2 و codice_3 همواره می‌توانند خط لوله شوند. دنباله ای از باقی درخواست‌های بی قدرت، مانند codice_4 و codice_5 را می‌توان با توجه به این که آیا درخواست‌های موجود در دنباله به تأثیر سایرین وابسته است یا نیست، تنظیم شوند یا خیر.خط لوله HTTP به پشتیبانی از سرویس گیرنده و سرور نیاز دارد. سرورهای منطبق با HTTP/1.1 برای ایجاد پاسخ‌های معتبر، به درخواست‌های خط لوله مورد نیاز هستند. ولی ممکن است عملاً درخواست‌ها را هم‌زمان پردازش نکنند.اکثر مشکل‌های خط لوله در گره‌های میانی HTTP (هاپ به هاپ)، یعنی در سرورهای پراکسی، بخصوص در سرورهای پروکسی شفاف (اگر یکی از آن‌ها در امتداد زنجیره HTTP به درخواست‌های خط لوله، درست رسیدگی نکند، هیچ چیزی آن طور که باید کار نمی‌کند) رخ می‌دهد.استفاده از خط لوله با سرورهای پراکسی HTTP نیز اغلب توصیه نمی‌شود چون مشکل مسدود کردن HOL ممکن است واقعاً پاسخ‌های سرور پراکسی را کم کند (به دلیل اینکه پاسخ‌های سرور باید به ترتیب درخواست‌های دریافت‌شده باشد).برای مثال: اگر کلاینتی ۴ درخواست GET خط لوله را، به واسطه یک اتصال به یک پروکسی ارسال کند و اولین مورد در حافظه پنهان آن نباشد، پروکسی باید آن درخواست را به وب سرور مقصد ارسال کند. اگر سه درخواست زیر در حافظه پنهان آن پیدا شود، پروکسی باید منتظر جواب وب سرور باشد، و بعد باید آن را برای مشتری بفرستد و فقط پس از آن است که می‌تواند که سه جواب ذخیره شده را هم ارسال کند.اگر در عوض یک کلاینت چهار اتصال را به یک پروکسی باز کند و برای هر اتصال، یک درخواست GET ارسال کند (بدون استفاده از خط لوله)، پروکسی می‌تواند ۳ پاسخ ذخیره شده را، پیش از گرفتن پاسخ از سرور به صورت موازی برای مشتری ارسال کند و زمان تکمیل کلی را کم کند (زیرا درخواست‌ها به صورت موازی و بدون مشکل مسدود کردن سر خط) ارائه می‌شوند. این منفعت در جریان‌های چندگانه HTTP/2 نیز وجود دارد.وضعیت پیاده‌سازی.خط لوله، در HTTP/1.1 معرفی شد و در HTTP/1.0 حضور نداشت.همواره شکایت‌هایی در بارهٔ کار نکردن مرورگرها، سرورهای پروکسی و غیره در موقع استفاده از درخواست‌ها/پاسخ‌های خط‌بندی شده وجود داشته است، تا جایی که برای سال‌های زیادی (حداقل تا سال ۲۰۱۱) توسعه‌دهندگان نرم‌افزار، مهندسان، کارشناسان وب و غیره تلاش در جمع‌بندی داشتند. انواع متفاوتی از مشکل‌هایی که آن‌ها اشاره کردند، برای رفع مشکلات و ارائه توصیه‌هایی در مورد نحوه برخورد با خط لوله در وب باز.پیاده‌سازی در مرورگرهای وب.از بین همه مرورگرهای اصلی، فقط Opera دارای یک پیاده‌سازی کاملاً کارآمد بود که به صورت پیش فرض فعال بود. در باقی مرورگرها، خط لوله HTTP غیرفعال یا اجرا نشده بود.سایر پیاده‌سازی‌ها.کتابخانه libwww که توسط کنسرسیوم وب جهانی (W3C) ساخته شده، از زمان انتشار نسخه ۵٫۱ در ۱۸ فوریه ۱۹۹۷، از خط لوله پشتیبانی می‌کندباقی کتابخانه‌های توسعه برنامه که از خط لوله HTTP پشتیبانی می‌کنند عبارتند از:بعضی از برنامه‌های کاربردی دیگر که در حال حاضر از خط لوله بهره‌برداری می‌کنند عبارتند از:ابزارهای آزمایشی ای که از خط لوله HTTP پشتیبانی می‌کنند عبارتند از: