مسدود کننده سرِ صف TCP
Last updated
Last updated
ارتباطات HTTP/2 بر روی بستر TCP بنا شده و به نسبت نُسَخ قبلی از تعداد اتصالات بسیار کمتری استفاده میشود. TCP پروتکلی برای انتقالات قابل اعتماد است و میتوان آن را اساسا زنجیرهای خیالی میان دو ماشین در نظر گرفت. آنچه در انتهایی از شبکه قرار داده شده است به همان ترتیب به انتهای دیگر در شبکه میرسد - در نهایت (وگرنه ارتباط قطع میشود).
به کمک HTTP/2، مرورگرهای عادی دهها و صدها انتقال موازی را بر روی یک اتصال TCP انجام میدهند.
در صورتی که یک بسته از بین رفته باشد، و یا جایی در شبکه بین دو نقطه که توسط HTTP/2 صحبت میکنند گم شده باشد، به این معناست که کل اتصال TCP متوقف میشود تا زمانی که بستهی گم شده دوباره ارسال شود و راه خود را به سمت مقصد نهایی پیدا کند. از آنجایی که TCP این 'زنجیره' است، به این معنی است که اگر یک پیوند به طور ناگهانی از دست رفته باشد، همه چیز پس از آن پیوندِ از دست رفته باید در حالت انتظار باقی بماند.
یک تصویر با استفاده از استعاره زنجیرهای هنگام ارسال دو جریان بر روی این اتصال. جریان قرمز و جریان سبز:
این یک head-of-line block یا به اختصار HOL block مبتنی بر TCP (مسدود کننده سرِ صفِ TCP) میشود.
با افزایش درصد از دست رفتن بستهها، HTTP/2 ضعیف و ضعیفتر عمل میکند. در شرایطی با ۲٪ packet loss (که نشاندهندهی کیفیت بسیار پایین و وحشتناکی از شبکه است) آزمایش ثابت کرده است که کاربران HTTP/1 معمولاً از عملکرد بهتری برخوردار خواهند بود - چرا که آنان ۶ اتصال برای توزیع بستههای گم شده دارند. که البته همچنین به این معنی است که در صورت از دست رفتن بستهای، اتصال دیگر میتواند همچنان به کار خود ادامه دهد.
حل این مشکل با TCP اصلاً ساده نخواهد بود، البته اگر ممکن باشد.
به کمک QUIC همچنان اتصالی بین دو نقطه وجود دارد که ارتباط را ایمن و ارسال اطلاعات را معتبر و قابل اطمینان میسازد.
زمانی که دو جریان مختلف بر روی این اتصال ایجاد شود، آن دو به صورت مجزا دیده میشوند، به گونهای که اگر پیوندی برای یکی از دو جریان از دست رفته باشد، تنها آن جریان، آن زنجیرهی مشخص، باید منتظر بماند تا پیوند گم شده دوباره برای انتقال ارسال شود.
در اینجا به واسطهی تصویری با یک جریان زرد و یک جریان آبیِ ارسال شده بین دو نقطه توضیح داده شده است.