HTTP چیست؟
HTTP (پروتکل انتقال ابرمتن) پروتکل انتقال لایه برنامه است که شبکه جهانی وب بر اساس آن بنا شده است. در ابتدا در اواخر دهه 80 به عنوان یک پروتکل مبتنی بر متن تک خطی تصور شد و نسخه اولیه آن به عنوان HTTP/0.9 مستند شد، اولین تکرار کامل آن (نسخه 1.0) در RFC 1945 در سال 1996 ایجاد شد.
با افزایش استفاده و انتظارات از اینترنت، نیاز به بهبود HTTP نیز افزایش یافت. نسخه 1.1 در RFC 2068 در سال 1997 و RFC 2616 در سال 1999، با RFC های بعدی (7230-7235) در سال 2014 – یک دهه و نیم بعد ثبت شد! – documenting message syntax/routing; semantics/content; conditional and range requests; caching; و authentication.
نسخه فعلی پروتکل HTTP/2 است. این پروتکل مبتنی بر پروژه SPDY گوگل است و اولین اصلاح اساسی پروتکل بود که در RFC 7540 در سال 2015 استاندارد شد و RFC 7541 فشرده سازی سرصفحه (HPACK) را در همان سال معرفی کرد.
تنها چهار سال پس از معرفی HTTP/2، یک استاندارد جدید مبتنی بر پروتکل آزمایشی QUIC گوگل شروع به ظهور کرد: HTTP/3. هدف آن افزایش سرعت و امنیت تعامل کاربران با وب سایت ها و API ها است.
در اکتبر 2020، قبل از ورود به مرحله RFC، اسنادی که HTTP/3 (و QUIC) را توصیف میکنند، وارد مرحله آخرین تماس IETF مرحله Internet-Draft شدند. با این حال، هنگامی که HTTP/3 در نهایت به عنوان یک استاندارد شناخته شد، آیا هنوز جایی برای HTTP/2 وجود دارد؟ این مقاله دو نسخه از پروتکل را تشریح و مقایسه میکند، و پیشنهاداتی را در مورد اینکه هر کدام برنامههای مناسب را پیدا میکنند، ارائه میکند.
HTTP/3 چیست؟
HTTP/3 سومین (و جدیدترین) نسل HTTP (پروتکل انتقال ابرمتن) است. این پروتکل اینترنتی در لایه برنامه استفاده می شود، جایی که به کاربران امکان تعامل با وب و منابع آن داده می شود. هدف HTTP/3 ارائه تجربه اینترنت سریعتر و کارآمدتر بدون به خطر انداختن امنیت است.
با نسل قبلی یعنی HTTP/2، کاربران و توسعه دهندگان فقط TCP/IP برای انتقال داده ها به طور قابل اعتماد داشتند. مشکل TCP این است که کلاینت و سرور باید یک سری از اتصالات SYN-ACK را برای مقداردهی اولیه درست انجام دهند. تنها پس از اتصال به handshake و TLS، مشتری و سرور می توانند داده ها را برای یکدیگر ارسال کنند.
با این فرآیند که حدود چهار “رفت و برگشت” از مشتری به سرور انجام می شود، کاربران هنگام دسترسی به اینترنت زمان بارگذاری کندتری را تجربه می کنند. HTTP/3 با ویژگی های جدید خود این مشکل را حل کرد.
برخی از ویژگی های کلیدی HTTP/3 عبارتند از:
HTTP/3 دارای رمزگذاری TLS 1.3 برای امنیت داخلی است
QPACK درخواست ها و هدرها را به جای HPACK فشرده می کند
اتصالات سریع و قابل اعتماد handshake را از طریق QUIC فراهم می کند
تمام هدرهای فریم و محموله ها (داده ها) تحت جریان هستند تا انتقال داده ها روان تر شود
HTTP/3 چگونه اتصالات سریع، قابل اعتماد و ایمن را فراهم می کند
یکی از مزایای HTTP/3 پشتیبانی آن از پروتکل اینترنت جدید است که به منظور جایگزینی اتصالات TCP، معروف به پروتکل QUIC است. با استفاده از QUIC، داده ها پس از یک بار هندشیک توسط مشتری و سرور ارسال و دریافت می شوند. این HANDSHAKE یک اتصال قابل اعتماد از هر دو طرف را فراهم می کند و به طور خودکار داده ها را رمزگذاری می کند زیرا HTTP/3 با رمزگذاری TLS 1.3 داخلی ارائه می شود.
یک مطالعه Request Metrics نشان میدهد که تکیه بر QUIC به جای TCP، راه سریعتر و کارآمدتری برای اولیهسازی اتصال و رمزگذاری دادهها فراهم میکند. این آزمایش نشان می دهد که هندشیک تکی QUIC در مقایسه با هندشیک سه طرفه به علاوه رمزگذاری TCP چقدر کارآمدتر است.
بنابراین چگونه می توان تنها از طریق فقط یک هندشیک یک اتصال سریع، مطمئن و مطمئن داشت؟
اجازه دهید ابتدا نحوه انتقال داده های HTTP/2 و HTTP/3 را برای پاسخ به سوال مقایسه کنیم.
همانطور که در تصویر بالا می بینید، HTTP/3 از اتصال UDP سریع اما غیرقابل اعتماد استفاده می کند. (برای کسانی که نمی دانند، UDP قابلیت اطمینان را فدای ایجاد یک اتصال سریع از طریق یک هندشیک یا یک رفت و برگشت می کند.)
برای مبارزه با مشکلات UDP، QUIC مالتی پلکس بومی را فراهم می کند و پروتکل های بررسی و بازیابی بسته را برای اتصال قابل اعتماد پیاده سازی می کند. در همان زمان، پروتکل خودکار TLS HTTP/3 رمزگذاری یکپارچه را بدون اضافه کردن یک رفت و برگشت بین کلاینت و سرور فراهم می کند.
با اتصال یکباره UDP، مالتی پلکس بومی QUIC، و اتصال خودکار TLS HTTP/3، اتصال سریع، قابل اعتماد و ایمن را دریافت می کنیم که در نهایت تجربه کاربری بهتری را ارائه می دهد.
HTTP/3 چقدر تاثیر خواهد داشت؟
ما ثابت کردهایم که HTTP/3 با ارائه یک اتصال اینترنتی سریعتر و کارآمدتر، تجربه شما را بهبود میبخشد. سوال این است که چقدر؟
مطالعه Request Metrics همچنین نشان داد که صفحات وب با استفاده از HTTP/2 و HTTP/3 چقدر کارآمد بارگذاری میشوند و به سرعت انتقال دادهها در سه وبسایت با اندازههای مختلف، از جمله یک سایت کوچک، یک سایت محتوا، و یک سایت تکصفحه توجه میکنند.
نتیجه این است:
سایت کوچک | سایت دارای محتوا | سایت تک صفحه ای | |
---|---|---|---|
HTTP/2 | 500ms | 1000ms | 600ms |
HTTP/3 | 100ms | 675ms | 300ms |
نتایج نشان می دهد که HTTP/3 در تمام سایت های آزمایشی بسیار سریعتر از HTTP/2 بوده است. برای مثال، در یک سایت کوچک، HTTP/3 به میزان 200 میلیثانیه سریعتر از HTTP/2، در یک سایت محتوایی 325 میلیثانیه و در یک سایت تک صفحهای 300 میلیثانیه سریعتر بود.
با استفاده از HTTP/3، کاربران می توانند به طور کلی انتظار کاهش قابل توجهی در تاخیر داشته باشند و تجربه مرور شما را سریعتر و قابل اطمینان تر کند بدون اینکه امنیت را به خطر بیندازد.
HTTP/3 برای جایگزینی HTTP/2 آماده است
به طور کلی، HTTP/3 استاندارد فعلی است که امروزه اجرا می شود. بنابراین، کاربران نهایی مجبور نیستند کاری انجام دهند تا از مزایای آن بهره مند شوند، زیرا احتمالاً قبلاً از آن استفاده می کنید. در واقع، ممکن است از پروتکل QUIC نیز استفاده کنید، زیرا گوگل قبلاً آن را بر روی اکثر برنامهها و سرویسهای وب خود اجرا کرده است.
مروری بر HTTP/2
HTTP/2 پسوند HTTP/1.1 است، نه جایگزینی برای آن. معنای برنامه یکسان باقی می ماند، با همان روش های HTTP، کدهای وضعیت، URI ها و فیلدهای هدر.
هر اتصال HTTP/2 به صورت HTTP/1.1 شروع می شود و اگر کلاینت از HTTP/2 پشتیبانی کند، اتصال ارتقا می یابد. HTTP/2 از یک اتصال TCP بین کلاینت و سرور استفاده می کند که در طول مدت تعامل باز می ماند.
HTTP/2 تعدادی ویژگی طراحی شده برای بهبود عملکرد معرفی کرد:
یک لایه قاب بندی باینری که یک جریان ارتباطی به هم پیوسته ایجاد می کند.
مالتی پلکس کامل به جای سفارش اجباری و در نتیجه مسدود کردن (به این معنی که می تواند از یک اتصال برای موازی سازی استفاده کند).
فشرده سازی هدر برای کاهش سربار.
پاسخهای فعال «هل» از سرورها به حافظه پنهان مشتری.
HTTP/2: مزایا و معایب
مزایا
- همه مرورگرها از پروتکل HTTP/2 از طریق HTTPS با نصب گواهی SSL پشتیبانی می کنند.
- HTTP/2 به مشتری این امکان را می دهد که تمام درخواست ها را همزمان از طریق یک اتصال TCP ارسال کند. از نظر تئوری، مشتری باید منابع را سریعتر دریافت کند.
- TCP یک پروتکل اتصال قابل اعتماد و پایدار است.
معایب
- درخواست های همزمان می تواند بار روی سرورها را افزایش دهد. سرورهای HTTP/2 میتوانند درخواستها را در دستههای بزرگ دریافت کنند، که میتواند منجر به اتمام زمان درخواستها شود. مشکل افزایش بار سرور را می توان با قرار دادن یک متعادل کننده بار یا یک سرور پراکسی حل کرد که می تواند درخواست ها را کاهش دهد.
- پشتیبانی سرور برای اولویت بندی HTTP/2 هنوز بالغ نشده است. پشتیبانی نرم افزاری هنوز در حال پیشرفت است. برخی از CDN ها یا متعادل کننده های بار ممکن است از اولویت بندی به درستی پشتیبانی نکنند.
- اجرای صحیح ویژگی فشار HTTP/2 می تواند مشکل باشد.
- HTTP/2 به انسداد سر خط HTTP پرداخت، اما مسدود کردن در سطح TCP همچنان میتواند مشکلاتی را ایجاد کند.
HTTP/2 برای چه مواردی مناسب است؟
HTTP/2 از تمام موارد استفاده از HTTP/1.x، هر جا که در مرورگرها اجرا شود، از جمله مرورگرهای وب دسکتاپ، مرورگرهای وب تلفن همراه، APIهای وب و سرورهای وب، پشتیبانی می کند. با این حال، می توان از آن در سرورهای پراکسی، سرورهای پروکسی معکوس، فایروال ها و شبکه های تحویل محتوا و در شرایط زیر استفاده کرد:
با برنامههایی که زمان پاسخدهی مهم نیست.
با برنامههای مهم زمانبندی، مانند پیامرسانی بیدرنگ یا برنامههای پخش جریانی، تنها در صورت استفاده از فناوریهای تطبیقی مناسب، مانند WebSockets، رویدادهای ارسال شده از سرور (SSE)، پیامرسانی انتشار-اشتراک (pub/sub).
جایی که اتصال قابل اعتماد مورد نیاز است (قدرت TCP)
با دستگاه های IoT محدود.
مروری بر HTTP/3
HTTP/3 اتصالات سریع، قابل اعتماد و ایمن را امکان پذیر می کند. حمل و نقل اینترنتی را به طور پیش فرض با استفاده از پروتکل QUIC گوگل رمزگذاری می کند.
HTTP/3: مزایا و معایب
مزایا
- معرفی پروتکل حمل و نقل جدید (متفاوت) QUIC که بر روی UDP اجرا می شود به معنای کاهش تأخیر هم از نظر تئوری و هم در حال حاضر تجربی است.
- از آنجایی که UDP بررسی و تصحیح خطا را در پشته پروتکل انجام نمی دهد، برای مواردی که این موارد یا مورد نیاز نیستند یا در برنامه اجرا می شوند، مناسب است. این بدان معناست که UDP از هرگونه سربار مرتبط اجتناب می کند. UDP اغلب در برنامههای حساس به زمان، مانند سیستمهای بلادرنگ استفاده میشود، که نمیتوانند منتظر ارسال مجدد بستهها بمانند و در نتیجه برخی بستههای رها شده را تحمل میکنند.
منفی
- انشعابات لایه حمل و نقل انتقال به HTTP/3 نه تنها شامل تغییر در لایه برنامه، بلکه تغییر در لایه انتقال زیرین نیز می شود. از این رو پذیرش HTTP/3 در مقایسه با نسخه قبلی خود کمی چالش برانگیزتر است.
- HTTP/3 هنوز استاندارد رسمی نشده است.
HTTP/3 برای چه مواردی مناسب است؟
برنامههای بیدرنگ مانند بازیهای آنلاین، مناقصه آگهی، و Voice over IP و جایی که از پروتکل جریانسازی زمان واقعی استفاده میشود.
اطلاعات پخش مانند بسیاری از انواع خدمات کشف و اطلاعات مشترک مانند پروتکل زمان دقیق و پروتکل اطلاعات مسیریابی. این به این دلیل است که UDP از چندپخشی پشتیبانی می کند.
اینترنت اشیا HTTP/3 می تواند مشکلات اتصال بی سیم از دست رفته را برای موارد استفاده از اینترنت اشیا به عنوان دستگاه های تلفن همراه که داده ها را از حسگرهای متصل جمع آوری می کنند، برطرف کند.
اطلاعات بزرگ. از آنجایی که HTTP/3 به اندازه کافی قوی می شود، سرویس های API میزبانی شده می توانند جریان داشته باشند و سپس با تبدیل داده ها به هوش تجاری، درآمد کسب کنند.
واقعیت مجازی مبتنی بر وب برنامه های کاربردی VR به پهنای باند بیشتری برای ارائه جزئیات پیچیده یک صحنه مجازی نیاز دارند و مطمئناً از مهاجرت به HTTP/3 با استفاده از QUIC سود خواهند برد.
Microservices: هندشیک سریعتر (یا بدون) به معنای عبور سریعتر شبکه میکروسرویس است.