http2 explained
  • English
    • Background
    • HTTP Today
    • Things done to overcome latency pains
    • Updating HTTP
    • http2 concepts
    • The http2 protocol
    • Extensions
    • An http2 world
    • http2 in Firefox
    • http2 in Chromium
    • http2 in curl
    • After http2
    • Further reading
    • Thanks
  • Español
    • Antecedentes
    • HTTP hoy
    • Estrategias para evitar los dolores de latencia
    • Actualizando HTTP
    • Conceptos de http2
    • El protocolo http2
    • Extensiones
    • Un mundo http2
    • http2 en Firefox
    • http2 en Chromium
    • http2 en curl
    • Después de http2
    • Otras lecturas
    • Agradecimientos
  • فارسی
    • مقدمه و معرفی
    • پیش‌زمینه
    • HTTP امروز
    • کارهایی که برای غلبه بر تأخیرها انجام شده
    • آپدیت‌کردن HTTP
    • مفاهیم http2
    • پرتکل http2
    • افزونه‌ها
    • دنیایی با http2
    • http2 در فایرفاکس
    • http2 در کرومیوم
    • http2 در curl
    • بعد از http2
    • خواندن بیشتر
    • تقدیر و تشکر
    • واژه‌نامه
  • Français
    • Avant-propos
    • HTTP aujourd'hui
    • Rustines pour s'accommoder de la latence
    • Mettre à jour HTTP
    • Concepts http2
    • Le protocole http2
    • Extensions
    • Le monde http2
    • http2 et Firefox
    • http2 et Chromium
    • http2 et curl
    • Après http2
    • Lecture complémentaire
    • Remerciements
  • Italiano
    • Background
    • HTTP oggi
    • Tecniche applicate al contrasto della latenza
    • Aggiornare HTTP
    • http2 a grandi linee
    • Il protocollo http2
    • Estensioni
    • Un mondo di http2
    • http2 in Firefox
    • http2 in Chromium
    • http2 in curl
    • Dopo http2
    • Altre letture
    • Riconoscimenti, Ringraziamenti
  • 日本語
    • 背景
    • HTTPの現状確認
    • レイテンシーの闇を克服せよ
    • もうやめて、HTTP 1.1のライフはゼロよ
    • http2のコンセプト
    • http2プロトコル
    • http2は拡張の夢を見る
    • http2化される世界
    • Firefoxにおけるhttp2
    • Chromiumにおけるhttp2
    • curlにおけるhttp2
    • http2の次にくるもの
    • 参考文献
    • 謝辞
  • 한국어
    • 배경
    • HTTP 현재
    • 대기시간의 고통을 극복하기 위해 한일
    • HTTP 업데이팅
    • http2 컨셉
    • http2 프로토콜 (번역되지 않은)
    • 연장선 (번역되지 않은)
    • http2 세계 (번역되지 않은)
    • Firefox에서의 http2
    • Chromium에서의 http2
    • curl에서의 http2
    • HTTP2 다음에 오는 것
    • 참조
    • 감사의 말
  • Português
    • Antecedentes
    • HTTP Hoje
    • Estratégias para evitar as dores da latência
    • Atualizando HTTP
    • Conceitos de http2
    • O protocolo http2
    • Extensões
    • Um mundo http2
    • http2 e Firefox
    • http2 e Chromium
    • http2 e curl
    • Após o http2
    • Outras leituras
    • Agradecimentos
  • русском
    • История
    • HTTP сегодня
    • Шаги, предпринятые для преодоления задержки
    • Обновление HTTP
    • Концепция http2
    • Протокол http2
    • Расширения
    • Мир http2
    • http2 в Firefox
    • http2 в Chromium
    • http2 в curl
    • После http2
    • Дальнейшее чтение
    • Благодарности
  • Svenska
    • Bakgrund
    • HTTP idag
    • Tricks för att komma över fördröjningssmärtor
    • Uppdatera HTTP
    • http2-koncept
    • http2-protokollet
    • Utökningar
    • En http2-värld
    • http2 i Firefox
    • http2 i Chromium
    • http2 i curl
    • Efter http2
    • Fortsatt läsning
    • Tack
  • Türkçe
    • Arkaplan
    • HTTP'nin Bugünü
    • Gecikmelerin üstesinden gelmek için yapılanlar
    • HTTP'nin güncellenmesi
    • http2 konseptleri
    • http2 protokolü
    • Uzantılar
    • http2 dünyası
    • Firefox'da http2
    • Chromium'da http2
    • curl'de http2
    • http2 sonrası
    • Daha fazla bilgi için
    • Teşekkürler
  • 中文
    • 背景
    • HTTP的现状
    • 那些年,克服延迟之道
    • 升级HTTP
    • http2的观念
    • http2协议
    • 扩展
    • http2的世界
    • Firefox里的http2
    • Chromium里的http2
    • Curl里的http2
    • 后http2时代
    • 扩展阅读
    • 致谢
Powered by GitBook
On this page
  • ۲. HTTP امروز
  • ۲.۱. HTTP 1.1 بسیار بزرگ است
  • ۲.۲. دنیایی از گزینه‌ها
  • ۲.۳. استفاده‌نکردن از ظرفیت TCP
  • ۲.۴. حجم مبادل‌ها و تعداد فایل‌ها
  • ۲.۵. تأخیرها
  • ۲.۶. انتخاب صف درست (Head-of-line blocking)

Was this helpful?

Export as PDF
  1. فارسی

HTTP امروز

۲. HTTP امروز

HTTP 1.1 تبدیل به پرتکلی شده که این روز‌ها، تقریبا برای همه‌چیز در اینترنت استفاده می‌شود. سرمایه‌گذاری‌های عظیمی در پرتکل‌ها و زیرساخت‌هایی که از HTTP 1.1 بهره می‌برند شده است، به دلیل این‌که اغلب اوقات، اجرا‌کردن چیزی روی HTTP راحت‌تر از ساختن چیزی از نو است.

۲.۱. HTTP 1.1 بسیار بزرگ است

هنگامی که HTTP ساخته شده و به دنیا عرضه شد، بسیاری آن را یک پرتکل ساده و سرراست یافتند، ولی زمان ثابت کرد که این دیدگاه نادرست است. HTTP 1.0 در استاندارد RFC 1945 تنها در ۶۰ صفحه توصیف شده است که در سال ۱۹۹۶ منتشر شد. RFC 2616 که HTTP 1.1 را توضیح می‌دهد، در یک رشد قابل‌توجه، به ۱۷۶ صفحه هم می‌رسد. هنوز هم هنگامی که در IETF روی استاندارد‌های مربوط به آن کار می‌کنیم، [ناچارا] آن را به ۶ سند، که تعداد صفحات آن‌ها روی هم بسیار بیشتری می‌شود، تقسیم کردیم که حاصل آن، استاندارد RFC 7230 و خانواده شد. به هر حال، HTTP 1.1 بزرگ است و دارای جزئیات و ظریف‌کاری‌های بسیار، و البته امکانات اختیاری است.

۲.۲. دنیایی از گزینه‌ها

طبیعت HTTP 1.1، داشتن جزئیات بسیار و گزینه‌های موجود برای افزونه‌های بعدی، تبدیل به یک اکوسیستم نرم‌افزاری شد که تقریبا هیچ پیاده‌سازی، همه‌چیز را پیاده‌سازی نمی‌کند، و حتی ممکن نیست که دقیقا بگوییم که این «همه‌چیز» چه چیزهایی هستند. این ویژگی باعث به‌وجودآمدن شرایطی شد که قابلیت‌هایی که در ابتدا، بسیار کم‌استفاده بودند، به ندرت پیاده‌سازی شدند و کسانی که این قابلیت‌ها را پیاده‌سازی کردند، متوجه شدند که کاربردهای بسیار کمی برای آن‌ها وجود دارد.

بعدها، این ویژگی‌ها باعث ایجاد ناهماهنگی بین کلاینت‌ها و سرورهایی که از این قابلیت‌ها استفاده می‌کردند شد. HTTP pipelining از نمونه‌های بارز این قابلیت‌ها است.

۲.۳. استفاده‌نکردن از ظرفیت TCP

HTTP 1.1 به سختی از همه‌ی مزایا، قدرت و کارایی TCP استفاده می‌کند. کلاینت‌های HTTP و مرورگرها باید در پی یافتن راه‌های خلاقانه برای کاهش زمان بارگذاری صفحات باشند.

تلاش‌های دیگری که در طول این سال‌ها به طور موازی پیگیری می‌شدند هم نشان داده‌اند که جایگزین‌کردن TCP کار راحتی نیست، به همین دلیل ما روی بهبود TCP و پرتکل‌های وابسته به آن کار می‌کنیم.

به عبارت دیگر، TCP می‌تواند به گونه‌ای استفاده شود که وقفه‌ها را کمتر کند یا از بازه‌های زمانی تلف‌شده برای ارسال و دریافت داده‌های بیشتری استفاده شود. قسمت‌های بعدی بعضی از این کاستی‌ها را نمایان می‌کنند.

۲.۴. حجم مبادل‌ها و تعداد فایل‌ها

وقتی به آمارهای امروزی درمورد پرطرفدارترین وب‌سایت‌ها و صفحه‌های اول آن‌ها نگاه می‌کنیم، یک الگوی مشخص را می‌توان برداشت کرد. در طول این سال‌ها، حجم داده‌هایی که باید برای بازکردن این صفحات مبادله کرد، به ۱.۹ مگابایت رسیده است. چیزی که دراین‌باره مهم‌تر است، این است که بیش از ۱۰۰ فایل مختلف برای نمایش هر صفحه لازم است.

همان‌طور که نمودار زیر نشان می‌دهد، این روند به همین منوال در حال پیش‌رفت است و کمتر نشانه‌ای از تغییر در آینده‌ای نزدیک به چشم می‌خورد. این نمودار، رشد اندازه‌ی داده‌های مبادله‌شده (با رنگ سبز) و میانگین تعداد درخواست‌ها (قرمز) را در وب‌سایت‌های پرطرفدار اینترنت نشان می‌دهد و این‌که این ارقام چگونه در یک بازه‌ی ۴ ساله تغییر کرده‌اند.

۲.۵. تأخیرها

HTTP 1.1 بسیار به تأخیر حساس است، می‌توان گفت بخشی از این حساسیت به دلیل این است که HTTP pipelining هنوز آن‌قدر مشکل دارد که اکثر کاربران نتوانند از آن استفاده کنند.

با این که شاهد رشد عظیمی در پهنای‌باند در‌دسترس مردم در چند سال اخیر بوده‌ایم، ولی به همان نسبت،، اقدامی برای کاهش این تأخیرها نشده است. ارتباطات با تأخیر بالا، مانند فناوری‌های کنونی موبایل، داشتن یک تجربه‌ی وب‌گردی خوب و سریع را سخت می‌کند، حتی اگر پهنای باند بسیار بالایی هم در اختیار داشته باشید.

مورد استفاده‌ی دیگری از تأخیرهای پایین، نوع‌های خاصی از ویدیو هستند، مانند ویدیوکنفرانس، گیمینگ و مشابه‌های آن که هیچ جریان از‌پیش‌ساخته‌ای برای ارسال وجود ندارند.

۲.۶. انتخاب صف درست (Head-of-line blocking)

HTTP pipelining یک راه برای فرستادن یک درخواست دیگر، در حالی که منتظر پاسخ درخواست دیگری هستیم، است. این مفهوم بسیار شبیه به صف‌های بانک یا سوپرمارکت است. شما نمی‌دانید که نفر اول صف یک آدم تر و فرز است یا یک آدم مزاحم که وقت زیادی را تلف می‌کند تا کارش را انجام دهد.

البته، شما می‌توانید صفی را انتخاب کنید که فکر می‌کنید سریع‌تر است یا حتی صف خودتان را تشکیل بدهید. ولی در نهایت، شما نمی‌توانید تصمیم نگیرید. و وقتی تصمیم گرفتید، نمی‌توانید تصمیم خود را عوض کنید.

تشکیل یک صف جدید با هدررفت منابع و کارایی همراه است، پس هنگامی که تعداد صف‌ها بیشتر می‌شود دیگر کارایی ندارد. در واقع، هیچ راه‌حل بی‌نقصی برای این مشکل وجود ندارد.

حتی امروزه هم بیشتر مرورگرهای دسکتاپ با HTTP pipelining به صورت غیرفعال عرضه می‌شوند.

Previousپیش‌زمینهNextکارهایی که برای غلبه بر تأخیرها انجام شده

Last updated 5 years ago

Was this helpful?

رشد اندازه‌ی مبادلات

جزئیات بیشتر درباره‌ی این موضوع را می‌توانید در بخوانید.

گزارش 264354 باگ‌زیلای فایرفاکس