فریم‌های HTTP/2

http2 http frames rfc 9113
20 آبان 1403

استاندارد HTTP/2 یکی از پیشرفت‌های مهم در دنیای وب است که با هدف ارتقاء عملکرد و امنیت ارتباطات وب ارائه شده‌است. یکی از مفاهیم کلیدی در HTTP/2، فریم‌ها هستند. فریم‌ها بلوک‌های کوچکی از داده‌های باینری‌اند که برای تبادل اطلاعات میان کلاینت و سرور استفاده می‌شوند. در این مقاله، به بررسی جزئیات فریم‌ها در پروتکل HTTP/2 می‌پردازیم.

در HTTP/2، تمام ارتباطات به صورت دو طرفه و در فریم‌های کوچک ارسال می‌شوند. این کار باعث بهبود سرعت و کارایی ارتباطات می‌شود زیرا امکان انتقال همزمان چندین نوع داده را فراهم می‌کند. این فریم‌ها به صورت باینری کدگذاری شده‌اند و هر کدام شامل یک هدر و یک بدنه هستند.

هر فریم یک نوع خاص دارد که توسط یک فیلد در هدر مشخص می‌شود. این نوع فریم‌ها شامل فریم‌های داده، هدر، تنظیمات، اولویت‌بندی و غیره می‌باشد. هرکدام از این فریم‌ها نقش خاصی در فرآیند تبادل داده‌ها ایفا می‌کنند. برای مثال، فریم‌های هدر اطلاعات متاداده درخواست و پاسخ را در برمی‌گیرند.

یکی از ویژگی‌های جالب فریم‌ها در HTTP/2، امکان ارسال فریم‌های اولویت‌بندی برای مدیریت جریان داده‌هاست. این نوع از فریم‌ها به کلاینت و سرور اجازه می‌دهند تا جریان‌ها را اولویت‌بندی کنند و به این ترتیب بهترین استفاده از پهنای باند شبکه صورت گیرد.

در ادامه، نمونه‌ای از یک فریم در پروتکل HTTP/2 نشان داده شده‌است. این مثال شامل ایجاد یک فریم هدر برای ارسال درخواست به سرور است، که می‌تواند برای درک بهتر نحوه عملکرد آن مفید باشد.


        <frame>
            <header>
                <type>1</type>
                <flags>END_HEADERS</flags>
                <stream_id>1</stream_id>
            </header>
            <payload>
                <path>/example</path>
                <method>GET</method>
            </payload>
        </frame>
    
line 1: <frame>   // در این خط، ما یک فریم جدید ایجاد می‌کنیم که شامل هدر و بدنه است.
line 2: <header>   // قسمت هدر فریم آغاز می‌شود.
line 3: <type>1</type>   // اینجا نوع فریم را مشخص می‌کنیم که 1 نماینده فریم هدر است.
line 4: <flags>END_HEADERS</flags>   // اشاره می‌کند که این فریم، هدر را به پایان می‌برد.
line 5: <stream_id>1</stream_id>   // شناسه جریان که نشان‌دهنده این درخواست خاص است.
line 6: </header>   // هدر به پایان می‌رسد.
line 7: <payload>   // بدنه فریم شامل اطلاعات واقعی درخواست می‌شود.
line 8: <path>/example</path>   // مسیری که درخواست به آن ارسال می‌شود.
line 9: <method>GET</method>   // روش HTTP که در اینجا GET است.
line 10: </payload>   // بدنه فریم به پایان می‌رسد.
line 11: </frame>   // فریم به پایان می‌رسد.

سوالات متداول

؟

فریم‌های HTTP/2 چیستند و چه نقشی دارند؟

؟

چرا HTTP/2 از فریم استفاده می کند؟

؟

چگونه می‌توان فریم‌های HTTP/2 را اولویت‌بندی کرد؟