کتابخانه‌ی استاندارد · شبکه

اچ تی تی پی۲ net/http2

پروتکل HTTP/2 از پایه: قاب‌ها، فشرده‌سازی سرآیند HPACK و جریان‌ها.

واردسازی شبکه.اچ تی تی پی۲

این بسته HTTP/2 را در سطح پروتکل پیاده می‌کند: قاب‌ها را می‌سازد و می‌خواند، سرآیندها را با HPACK فشرده می‌کند و چند درخواست را هم‌زمان روی یک اتصال به شکل «جریان» پیش می‌برد. سرور وب یا کارخواه آماده نیست. برای سرور وب معمولی یا درخواست‌های تکی اچ تی تی پی را به کار ببرید که HTTP/1.1 حرف می‌زند؛ این بسته برای وقتی است که خود پروتکل را لازم دارید، مثلاً برای کار با سرویسی که فقط HTTP/2 دارد، آزمودن یک سرور یا فرستادن درخواست‌های زیاد روی یک اتصال.

روند کار: یک ترابری روی سوکت TCP یا TLS بسازید، با اتصال جدید اتصال بگیرید و دست‌دهی کنید. بعد کارخواه با ارسال سرآیندها درخواست می‌فرستد و با انتظار اتمام جریان پاسخ را در جریان با شناسه می‌خواند. روی TLS، کارخواه و سرور باید با ALPN روی h2 توافق کرده باشند.

کارهایی که بسته برایتان انجام می‌دهد و کارهایی که به عهده‌ی شماست:

  • به پینگ‌ها پاسخ می‌دهد، برای کنترل جریان به‌روزرسانی پنجره می‌فرستد، در ارسال داده منتظر جای خالی پنجره می‌ماند و فشار سرور (server push) را رد می‌کند.
  • شبه‌سرآیندها را خودتان می‌نویسید: :method، :scheme، :authority و :path در درخواست و :status در پاسخ، پیش از هر سرآیند معمولی.
  • بدنه‌ی هر جریان تا پایان آن جریان در حافظه و در data جمع می‌شود و جریان‌های تمام‌شده در اتصال می‌مانند، پس به جای نگه داشتن یک اتصال برای میلیون‌ها درخواست، گاهی اتصال تازه باز کنید.
  • هر اتصال اچ تی تی پی۲ مال یک نخ است؛ هیچ چیزی در آن قفل نمی‌شود.

چند درخواست روی یک اتصال

اصل HTTP/2 این است که یک اتصال چند درخواست را هم‌زمان می‌برد. هر درخواست یک جریان است با شناسه‌ای فرد که کارخواه انتخاب می‌کند (۱، ۳، ۵ و همین‌طور)، و فریم‌های جریان‌های مختلف در هر دو جهت می‌توانند لابه‌لای هم بیایند. کارخواه زیر پیش از خواندن هر چیزی سه درخواست می‌فرستد؛ سرور، که در همین برنامه است، به ترتیب وارونه پاسخ می‌دهد و باز هم هر پاسخ روی جریان درست می‌نشیند.

net-http2-multiplex.salam
واردسازی شبکه.اچ تی تی پی۲
واردسازی شبکه.تی سی پی
واردسازی فشرده سازی

ناپایا سرور من := تی سی پی.سرور {}

تابع پاسخ‌گو():
    سوکت := تی سی پی.پذیرش(سرور من)
    ناپایا اتصال := اچ تی تی پی۲.اتصال جدید(اچ تی تی پی۲.ترابری ساده(سوکت.توصیفگر)، درست)
    اگر وارونه اچ تی تی پی۲.دست‌دهی سرور(اتصال):
        برگشت
    پایان
    ناپایا شناسه‌ها := وکتور {} برگردان وکتور<صحیح>
    تا شناسه‌ها.طول() کوچکتر ۳:
        شناسه‌ها.بیفزا(اچ تی تی پی۲.انتظار سرآیند(اتصال، ۲۰))
    پایان
    ناپایا ش := شناسه‌ها.طول() - ۱
    تا ش بزرگتربرابر ۰:
        شناسه := شناسه‌ها.بگیر(ش)
        مسیر := اچ تی تی پی۲.دریافت سرآیند(اچ تی تی پی۲.جریان با شناسه(اتصال، شناسه).سرآیندها، ":path")
        ناپایا سرآیندها := اچ تی تی پی۲.فهرست سرآیندها {}
        اچ تی تی پی۲.افزودن سرآیند(سرآیندها، ":status"، "200")
        _ := اچ تی تی پی۲.ارسال سرآیندها(اتصال، شناسه، سرآیندها، نادرست)
        _ := اچ تی تی پی۲.ارسال داده(اتصال، شناسه، فشرده سازی.بافر از رشته("صفحه‌ی " + مسیر)، درست)
        ش -= ۱
    پایان
    _ := اچ تی تی پی۲.انتظار اتمام جریان(اتصال، ۰، ۵)
    اچ تی تی پی۲.بستن اتصال(اتصال)
پایان

تابع درخواست(اتصال &: اچ تی تی پی۲.اتصال اچ تی تی پی۲، مسیر: رشته): صحیح:
    شناسه := اچ تی تی پی۲.شناسه جریان بعدی(اتصال)
    ناپایا سرآیندها := اچ تی تی پی۲.فهرست سرآیندها {}
    اچ تی تی پی۲.افزودن سرآیند(سرآیندها، ":method"، "GET")
    اچ تی تی پی۲.افزودن سرآیند(سرآیندها، ":scheme"، "http")
    اچ تی تی پی۲.افزودن سرآیند(سرآیندها، ":path"، مسیر)
    اچ تی تی پی۲.افزودن سرآیند(سرآیندها، ":authority"، "127.0.0.1")
    _ := اچ تی تی پی۲.ارسال سرآیندها(اتصال، شناسه، سرآیندها، درست)
    برگشت شناسه
پایان

تابع ریشه:
    سرور من = تی سی پی.پیوند(۰)
    نخ := نخ‌ساز(پاسخ‌گو)
    سوکت := تی سی پی.شماره گیری("127.0.0.1"، تی سی پی.درگاه(سرور من))
    ناپایا اتصال := اچ تی تی پی۲.اتصال جدید(اچ تی تی پی۲.ترابری ساده(سوکت.توصیفگر)، نادرست)
    اگر وارونه اچ تی تی پی۲.دست‌دهی کارخواه(اتصال):
        سرچاپ "دست‌دهی ناموفق"
        برگشت ۱
    پایان
    ناپایا شناسه‌ها := وکتور {} برگردان وکتور<صحیح>
    هر نشانی در ["/a"، "/b"، "/c"]:
        شناسه‌ها.بیفزا(درخواست(اتصال، نشانی))
    پایان
    سرچاپ "سه درخواست فرستاده شد روی جریان‌های"، شناسه‌ها.بگیر(۰)، شناسه‌ها.بگیر(۱)، شناسه‌ها.بگیر(۲)
    هر شناسه در شناسه‌ها:
        _ := اچ تی تی پی۲.انتظار اتمام جریان(اتصال، شناسه، ۵۰)
        s := اچ تی تی پی۲.جریان با شناسه(اتصال، شناسه)
        سرچاپ "جریان"، شناسه، اچ تی تی پی۲.دریافت سرآیند(s.سرآیندها، ":status")، فشرده سازی.بافر به رشته(s.بدنه)
    پایان
    سرچاپ "اتصال‌های به کار رفته: ۱، جریان‌ها:"، اچ تی تی پی۲.تعداد جریان‌ها(اتصال)
    _ := اچ تی تی پی۲.ارسال خداحافظی(اتصال، اچ تی تی پی۲.کد بدون خطا، "")
    اچ تی تی پی۲.بستن اتصال(اتصال)
    نخ‌پیوند(نخ)
    تی سی پی.بستن سرور(سرور من)
    برگشت ۰
پایان
خروجیسه درخواست فرستاده شد روی جریان‌های 1 3 5 جریان 1 200 صفحه‌ی /a جریان 3 200 صفحه‌ی /b جریان 5 200 صفحه‌ی /c اتصال‌های به کار رفته: ۱، جریان‌ها: 3

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

HPACK چقدر صرفه‌جویی می‌کند

درخواست‌ها به یک سایت هر بار تقریباً همان سرآیندها را تکرار می‌کنند. HPACK هر سرآیند را یک بار می‌فرستد، آن را در جدولی که دو طرف هماهنگ نگه می‌دارند ذخیره می‌کند و پس از آن فقط شماره‌اش را می‌فرستد. درخواست نخست زیر به خاطر جدول ثابت و کد هافمن از متن HTTP/1.1 خودش کوچک‌تر است؛ درخواست دوم و سوم حدود یک چهارم اندازه‌اند، چون تقریباً همه چیز اکنون در جدول پویاست.

net-http2-hpack-savings.salam
واردسازی شبکه.اچ تی تی پی۲

تابع سرآیندهای درخواست(مسیر: رشته): اچ تی تی پی۲.فهرست سرآیندها:
    ناپایا سرآیندها := اچ تی تی پی۲.فهرست سرآیندها {}
    اچ تی تی پی۲.افزودن سرآیند(سرآیندها، ":method"، "GET")
    اچ تی تی پی۲.افزودن سرآیند(سرآیندها، ":scheme"، "https")
    اچ تی تی پی۲.افزودن سرآیند(سرآیندها، ":authority"، "shop.example.com")
    اچ تی تی پی۲.افزودن سرآیند(سرآیندها، ":path"، مسیر)
    اچ تی تی پی۲.افزودن سرآیند(سرآیندها، "user-agent"، "salam-client/1.0")
    اچ تی تی پی۲.افزودن سرآیند(سرآیندها، "accept"، "application/json")
    اچ تی تی پی۲.افزودن سرآیند حساس(سرآیندها، "authorization"، "Bearer eyJhbGciOiJIUzI1NiJ9.e30.x")
    برگشت سرآیندها
پایان

تابع اندازه متنی(سرآیندها: اچ تی تی پی۲.فهرست سرآیندها): صحیح:
    ناپایا اندازه := ۰
    هر مورد در سرآیندها.سرآیندها:
        اندازه += مورد.نام.طول() + مورد.مقدار.طول() + ۴
    پایان
    برگشت اندازه
پایان

تابع ریشه:
    ناپایا جدول := اچ تی تی پی۲.جدول پویا جدید(۴۰۹۶)
    هر مسیر در ["/cart"، "/cart/items"، "/checkout"]:
        سرآیندها := سرآیندهای درخواست(مسیر)
        بلوک := اچ تی تی پی۲.کدگذاری فهرست سرآیند(جدول، سرآیندها، درست)
        سرچاپ مسیر، "به شکل متن HTTP/1.1:"، اندازه متنی(سرآیندها)، "بایت، HPACK:"، بلوک.طول، "بایت، مدخل‌های جدول:"، اچ تی تی پی۲.تعداد جدول پویا(جدول)
    پایان
    سرچاپ "فقط هافمن، مقدار user-agent:"، "salam-client/1.0".طول()، "->"، اچ تی تی پی۲.طول کدشده متن("salam-client/1.0")
پایان
خروجی/cart به شکل متن HTTP/1.1: 180 بایت، HPACK: 76 بایت، مدخل‌های جدول: 4 /cart/items به شکل متن HTTP/1.1: 186 بایت، HPACK: 43 بایت، مدخل‌های جدول: 5 /checkout به شکل متن HTTP/1.1: 184 بایت، HPACK: 42 بایت، مدخل‌های جدول: 6 فقط هافمن، مقدار user-agent: 16 -> 11

سرآیند authorization با افزودن سرآیند حساس اضافه شده، پس هرگز در جدول نمی‌رود و هر بار کامل فرستاده می‌شود. این چند بایت هزینه دارد، ولی جلوی مهاجمی را می‌گیرد که می‌تواند روی سرآیندهای دیگر همان اتصال اثر بگذارد و با دیدن اندازه‌ی فشرده توکن را حدس بزند؛ حمله‌ای که به نام CRIME شناخته می‌شود.

HTTP/2 روی TLS به یک سرور واقعی

سرورهای اینترنت HTTP/2 را فقط روی TLS ارائه می‌کنند و فقط به کارخواهی که در دست‌دهی TLS آن را بخواهد. در پیکربندی tls مقدار alpn را h2 بگذارید، با اتصال امن وصل شوید و اتصال را با ترابری امن بپوشانید. اگر سرور h2 را انتخاب نکرده باشد، دست‌دهی کارخواه شکست می‌خورد و باید به HTTP/1.1 برگردید.

net-http2-tls-get.salam
واردسازی شبکه.اچ تی تی پی۲
واردسازی تی ال اس

تابع ریشه:
    میزبان := "www.cloudflare.com"
    ناپایا پیکربندی := تی ال اس.پیکربندی جدید(میزبان)
    پیکربندی.پروتکل برنامه = "h2"
    امن := تی ال اس.اتصال امن(میزبان، ۴۴۳، پیکربندی)
    اگر وارونه تی ال اس.اتصال معتبر(امن):
        سرچاپ "TLS ناموفق:"، تی ال اس.خطای اتصال(امن)
        برگشت ۱
    پایان
    ناپایا اتصال := اچ تی تی پی۲.اتصال جدید(اچ تی تی پی۲.ترابری امن(امن)، نادرست)
    اگر وارونه اچ تی تی پی۲.دست‌دهی کارخواه(اتصال):
        سرچاپ "سرور HTTP/2 را نپذیرفت"
        برگشت ۱
    پایان
    شناسه := اچ تی تی پی۲.شناسه جریان بعدی(اتصال)
    ناپایا سرآیندها := اچ تی تی پی۲.فهرست سرآیندها {}
    اچ تی تی پی۲.افزودن سرآیند(سرآیندها، ":method"، "HEAD")
    اچ تی تی پی۲.افزودن سرآیند(سرآیندها، ":scheme"، "https")
    اچ تی تی پی۲.افزودن سرآیند(سرآیندها، ":path"، "/")
    اچ تی تی پی۲.افزودن سرآیند(سرآیندها، ":authority"، میزبان)
    _ := اچ تی تی پی۲.ارسال سرآیندها(اتصال، شناسه، سرآیندها، درست)
    اگر اچ تی تی پی۲.انتظار اتمام جریان(اتصال، شناسه، ۱۰۰):
        جریان := اچ تی تی پی۲.جریان با شناسه(اتصال، شناسه)
        سرچاپ "وضعیت:"، اچ تی تی پی۲.دریافت سرآیند(جریان.سرآیندها، ":status")
        سرچاپ "سرور:"، اچ تی تی پی۲.دریافت سرآیند(جریان.سرآیندها، "server")
        سرچاپ "بایت‌های بدنه:"، جریان.بدنه.طول
    پایان
    اچ تی تی پی۲.بستن اتصال(اتصال)
    برگشت ۰
پایان

این برنامه به شبکه نیاز دارد، پس این‌جا فقط بررسی می‌شود. در برابر کلادفلر این را چاپ کرد:

وضعیت: 200
سرور: cloudflare
بایت‌های بدنه: 0

بدنه خالی است چون درخواست HEAD بود. با GET صفحه به شکل یک بافر در data جریان می‌رسد، پس از این‌که بسته به‌روزرسانی‌های پنجره را که کنترل جریان لازم دارد خودش فرستاده است.

گونه‌ها

جریان اچ تی تی پی Stream

ساختار جریان اچ تی تی پی
یک جریان: یک درخواست و پاسخش.
نامانگلیسیگونهتوضیح
شناسهidصحیح = 0شناسه؛ فرد برای جریان‌هایی که کارخواه باز می‌کند.
وضعیتstateصحیح = 0وضعیت، یکی از ثابت‌های جریان ....
پنجره فرستادنsend_windowصحیح = 65535پنجره‌ی فرستادن.
پنجره دریافتrecv_windowصحیح = 65535پنجره‌ی دریافت.
سرآیندهاheadersفهرست سرآیندهاسرآیندهای دریافت‌شده.
سرآیندهای پایانیtrailersفهرست سرآیندهاسرآیندهای پایانی دریافت‌شده.
بدنهdatacompress.ByteBufبدنه‌ی دریافت‌شده.
سرآیندها رسیدهgot_headersمنطقی = نادرستسرآیندها رسیده‌اند.
سرآیندهای پایانی رسیدهgot_trailersمنطقی = نادرستسرآیندهای پایانی رسیده‌اند.
انتهای جریانend_streamمنطقی = نادرستطرف مقابل جریان را تمام کرده.
بازنشانی‌شدهresetمنطقی = نادرستجریان با قاب بازنشانی بسته شد.
کد خطاerror_codeصحیح = 0کد خطای بازنشانی.
مشغولliveمنطقی = نادرستاین خانه‌ی جدول در استفاده است.
net-http2-Conn.salam
واردسازی شبکه.اچ تی تی پی۲
واردسازی شبکه.تی سی پی
واردسازی فشرده سازی

ناپایا سرور := تی سی پی.سرور {}

تابع پاسخ‌گو():
    ا := تی سی پی.پذیرش(سرور)
    ناپایا ک := اچ تی تی پی۲.اتصال جدید(اچ تی تی پی۲.ترابری ساده(ا.توصیفگر)، درست)
    اگر وارونه اچ تی تی پی۲.دست‌دهی سرور(ک):
        برگشت
    پایان
    شناسه := اچ تی تی پی۲.انتظار سرآیند(ک، ۲۰)
    ج := اچ تی تی پی۲.جریان با شناسه(ک، شناسه)
    ناپایا سر := اچ تی تی پی۲.فهرست سرآیندها {}
    اچ تی تی پی۲.افزودن سرآیند(سر، ":status"، "200")
    اچ تی تی پی۲.افزودن سرآیند(سر، "content-type"، "text/plain")
    _ := اچ تی تی پی۲.ارسال سرآیندها(ک، شناسه، سر، نادرست)
    _ := اچ تی تی پی۲.ارسال داده(ک، شناسه، فشرده سازی.بافر از رشته("سلام " + اچ تی تی پی۲.دریافت سرآیند(ج.سرآیندها، ":path"))، نادرست)
    ناپایا دنباله := اچ تی تی پی۲.فهرست سرآیندها {}
    اچ تی تی پی۲.افزودن سرآیند(دنباله، "x-done"، "1")
    _ := اچ تی تی پی۲.ارسال دنباله‌ها(ک، شناسه، دنباله)
    _ := اچ تی تی پی۲.انتظار اتمام جریان(ک، ۰، ۵)
    اچ تی تی پی۲.بستن اتصال(ک)
پایان

تابع ریشه:
    سرور = تی سی پی.پیوند(۰)
    ن := نخ‌ساز(پاسخ‌گو)
    ا := تی سی پی.شماره گیری("127.0.0.1"، تی سی پی.درگاه(سرور))
    ت := اچ تی تی پی۲.ترابری ساده(ا.توصیفگر)
    سرچاپ ت.سالم، ت.نوع == اچ تی تی پی۲.انتقال ساده
    ناپایا ک := اچ تی تی پی۲.اتصال جدید(ت، نادرست)
    سرچاپ اچ تی تی پی۲.دست‌دهی کارخواه(ک)، اچ تی تی پی۲.اتصال معتبر(ک)
    شناسه := اچ تی تی پی۲.شناسه جریان بعدی(ک)
    ناپایا سر := اچ تی تی پی۲.فهرست سرآیندها {}
    اچ تی تی پی۲.افزودن سرآیند(سر، ":method"، "GET")
    اچ تی تی پی۲.افزودن سرآیند(سر، ":scheme"، "http")
    اچ تی تی پی۲.افزودن سرآیند(سر، ":path"، "/books")
    اچ تی تی پی۲.افزودن سرآیند(سر، ":authority"، "127.0.0.1")
    سرچاپ شناسه، اچ تی تی پی۲.ارسال سرآیندها(ک، شناسه، سر، درست)
    سرچاپ اچ تی تی پی۲.انتظار اتمام جریان(ک، شناسه، ۲۰)
    ج := اچ تی تی پی۲.جریان با شناسه(ک، شناسه)
    سرچاپ اچ تی تی پی۲.دریافت سرآیند(ج.سرآیندها، ":status")، فشرده سازی.بافر به رشته(ج.بدنه)، ج.سرآیندهای پایانی رسیده، اچ تی تی پی۲.دریافت سرآیند(ج.سرآیندهای پایانی، "x-done")، ج.انتهای جریان
    سرچاپ اچ تی تی پی۲.تعداد جریان‌ها(ک) >= ۱، ک.تنظیمات طرف مقابل.بیشترین اندازه قاب
    _ := اچ تی تی پی۲.ارسال پینگ(ک، فشرده سازی.بافر از رشته("abcdefgh"))
    سرچاپ اچ تی تی پی۲.دریافت رویداد(ک) >= اچ تی تی پی۲.نتیجه اتصال
    _ := اچ تی تی پی۲.ارسال بازنشانی جریان(ک، اچ تی تی پی۲.شناسه جریان بعدی(ک)، اچ تی تی پی۲.کد لغو)
    سرچاپ اچ تی تی پی۲.ارسال خداحافظی(ک، اچ تی تی پی۲.کد بدون خطا، "")
    اچ تی تی پی۲.بستن اتصال(ک)
    نخ‌پیوند(ن)
    تی سی پی.بستن سرور(سرور)
پایان
خروجیtrue true true true 1 true true 200 سلام /books true 1 true true 16384 true true

جدول جریان‌ها StreamTable

ساختار جدول جریان‌ها
جدول جریان‌های یک اتصال.
نامانگلیسیگونهتوضیح
جریان‌هاitemsوکتور<جریان اچ تی تی پی>جریان‌ها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Conn.salam

اتصال اچ تی تی پی۲ Conn

ساختار اتصال اچ تی تی پی۲
یک اتصال HTTP/2 با جدول‌ها، تنظیمات و جریان‌هایش.
نامانگلیسیگونهتوضیح
ترابریtxترابریترابری زیرین.
سمت سرورis_serverمنطقی = نادرستاین سو سرور است.
جدول فرستادنencجدول پویاجدول HPACK برای فرستادن.
جدول دریافتdecجدول پویاجدول HPACK برای دریافت.
تنظیمات محلیlocalتنظیماتتنظیمات این سو.
تنظیمات طرف مقابلremoteتنظیماتتنظیمات طرف مقابل، پس از دست‌دهی.
شناسه بعدیnext_idصحیح = 1شناسه‌ی جریان بعدی.
جریان‌هاstreamsجدول جریان‌هاجریان‌ها.
پنجره فرستادنsend_windowصحیح = 65535پنجره‌ی فرستادن اتصال.
پنجره دریافتrecv_windowصحیح = 65535پنجره‌ی دریافت اتصال.
قاب خاتمهgoawayمنطقی = نادرستقاب پایان رسیده یا فرستاده شده.
آخرین کد خطاlast_errorصحیح = 0آخرین کد خطا.
سالمokمنطقی = نادرستاتصال سالم است.
جریان معوقpending_streamصحیح = 0جریانی که بلوک سرآیندش هنوز با قاب ادامه کامل نشده.
بلوک معوقpending_blockcompress.ByteBufبخش‌های رسیده‌ی آن بلوک.
انتهای جریان معوقpending_end_streamمنطقی = نادرستآن سرآیندها جریان را تمام می‌کنند.
پایانی معوقpending_trailersمنطقی = نادرستآن سرآیندها پایانی‌اند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Conn.salam

قاب Frame

ساختار قاب
یک قاب HTTP/2.
نامانگلیسیگونهتوضیح
نوعkindصحیح = 0نوع قاب، یکی از ثابت‌های قاب ....
پرچم‌هاflagsصحیح = 0پرچم‌ها.
شناسه جریانstream_idصحیح = 0شناسه‌ی جریان؛ صفر یعنی کل اتصال.
بارpayloadcompress.ByteBufبار قاب.
خوانده‌شدهokمنطقی = نادرستقاب درست خوانده شد.
net-http2-Frame.salam
واردسازی شبکه.اچ تی تی پی۲
واردسازی فشرده سازی

تابع ریشه:
    ناپایا ت := اچ تی تی پی۲.تنظیمات پیش‌فرض()
    سرچاپ ت.اندازه جدول سرآیند، ت.اندازه پنجره آغازین، ت.بیشترین اندازه قاب، ت.ارسال بی‌درخواست
    ق := اچ تی تی پی۲.ساخت قاب تنظیمات(ت)
    سرچاپ اچ تی تی پی۲.نام نوع قاب(ق.نوع)، ق.شناسه جریان، ق.بار.طول
    ت.بیشترین اندازه قاب = ۳۲۷۶۸
    سرچاپ اچ تی تی پی۲.اعمال تنظیمات(ت، اچ تی تی پی۲.ساخت قاب تنظیمات(اچ تی تی پی۲.تنظیمات پیش‌فرض()))، ت.بیشترین اندازه قاب
    تایید := اچ تی تی پی۲.ساخت تایید تنظیمات()
    سرچاپ اچ تی تی پی۲.قاب پرچم دارد(تایید، اچ تی تی پی۲.پرچم تایید)
    پ := اچ تی تی پی۲.ساخت به‌روزرسانی پنجره(۳، ۱۰۲۴)
    سرچاپ اچ تی تی پی۲.نام نوع قاب(پ.نوع)، اچ تی تی پی۲.مقدار افزایش پنجره(پ)
    ر := اچ تی تی پی۲.ساخت بازنشانی جریان(۵، اچ تی تی پی۲.کد لغو)
    سرچاپ اچ تی تی پی۲.کد خطای قاب(ر)، اچ تی تی پی۲.نام خطا(اچ تی تی پی۲.کد خطای قاب(ر))
    خ := اچ تی تی پی۲.ساخت خداحافظی(۷، اچ تی تی پی۲.کد بدون خطا، "bye")
    سرچاپ اچ تی تی پی۲.نام نوع قاب(خ.نوع)، اچ تی تی پی۲.کد خطای قاب(خ)
    پینگ := اچ تی تی پی۲.ساخت پینگ(فشرده سازی.بافر از رشته("12345678")، نادرست)
    سرچاپ اچ تی تی پی۲.نام نوع قاب(پینگ.نوع)، پینگ.بار.طول
    ناپایا د := اچ تی تی پی۲.قاب جدید(اچ تی تی پی۲.قاب داده، اچ تی تی پی۲.پرچم اتمام جریان، ۱)
    فشرده سازی.افزودن بایت‌ها(د.بار، "سلام" برگردان تهی*، ۸)
    ناپایا سالم := درست
    سرچاپ فشرده سازی.بافر به رشته(اچ تی تی پی۲.داده قاب(د، سالم))، سالم
    ب := اچ تی تی پی۲.کدگذاری قاب(د)
    سرچاپ ب.طول، فشرده سازی.دریافت بایت(ب، ۳)
    ناپایا س := اچ تی تی پی۲.قاب جدید(اچ تی تی پی۲.قاب سرصفحه‌ها، اچ تی تی پی۲.پرچم اتمام سرصفحه‌ها، ۱)
    فشرده سازی.افزودن بایت(س.بار، ۱۳۰)
    سرچاپ اچ تی تی پی۲.بلوک سرآیند قاب(س، سالم).طول، سالم
    ناپایا ع := فشرده سازی.بافر بایت جدید()
    اچ تی تی پی۲.درج تنظیم(ع، اچ تی تی پی۲.تنظیم بیشینه اندازه قاب، ۱۶۳۸۴)
    سرچاپ ع.طول
    اچ تی تی پی۲.آزادسازی قاب(د)
    سرچاپ اچ تی تی پی۲.قاب داده، اچ تی تی پی۲.قاب پینگ، اچ تی تی پی۲.کد خطای پروتکل، اچ تی تی پی۲.اندازه پیش‌فرض قاب، اچ تی تی پی۲.پنجره پیش‌فرض، اچ تی تی پی۲.سقف اندازه قاب
    سرچاپ اچ تی تی پی۲.نام نوع قاب(اچ تی تی پی۲.قاب اولویت)، اچ تی تی پی۲.نام نوع قاب(اچ تی تی پی۲.قاب بازنشانی جریان)، اچ تی تی پی۲.نام نوع قاب(اچ تی تی پی۲.قاب وعده ارسال)
    سرچاپ اچ تی تی پی۲.نام نوع قاب(اچ تی تی پی۲.قاب ترک اتصال)، اچ تی تی پی۲.نام نوع قاب(اچ تی تی پی۲.قاب به‌روزرسانی پنجره)، اچ تی تی پی۲.نام نوع قاب(اچ تی تی پی۲.قاب ادامه)
    سرچاپ اچ تی تی پی۲.تنظیم اندازه جدول سرصفحه، اچ تی تی پی۲.تنظیم فعال‌سازی ارسال، اچ تی تی پی۲.تنظیم بیشینه جریان‌های همزمان، اچ تی تی پی۲.تنظیم اندازه آغازین پنجره، اچ تی تی پی۲.تنظیم بیشینه اندازه فهرست سرصفحه
    سرچاپ اچ تی تی پی۲.نام خطا(اچ تی تی پی۲.کد خطای داخلی)، اچ تی تی پی۲.نام خطا(اچ تی تی پی۲.کد خطای کنترل جریان)، اچ تی تی پی۲.نام خطا(اچ تی تی پی۲.کد مهلت تنظیمات)، اچ تی تی پی۲.نام خطا(اچ تی تی پی۲.کد جریان بسته‌شده)
    سرچاپ اچ تی تی پی۲.نام خطا(اچ تی تی پی۲.کد خطای اندازه قاب)، اچ تی تی پی۲.نام خطا(اچ تی تی پی۲.کد جریان ردشده)، اچ تی تی پی۲.نام خطا(اچ تی تی پی۲.کد خطای فشرده‌سازی)، اچ تی تی پی۲.نام خطا(اچ تی تی پی۲.کد خطای اتصال)
    سرچاپ اچ تی تی پی۲.نام خطا(اچ تی تی پی۲.کد درخواست آرامش)، اچ تی تی پی۲.نام خطا(اچ تی تی پی۲.کد امنیت ناکافی)، اچ تی تی پی۲.نام خطا(اچ تی تی پی۲.کد نیاز به اچ‌تی‌تی‌پی۱۱)
    سرچاپ اچ تی تی پی۲.جریان بیکار، اچ تی تی پی۲.جریان باز، اچ تی تی پی۲.جریان نیمه‌بسته محلی، اچ تی تی پی۲.جریان نیمه‌بسته دور، اچ تی تی پی۲.وضعیت جریان بسته‌شده
    سرچاپ اچ تی تی پی۲.اندازه پیش‌فرض جدول، اچ تی تی پی۲.نتیجه خطا
پایان
خروجی4096 65535 16384 1 SETTINGS 0 24 true 16384 true WINDOW_UPDATE 1024 8 CANCEL GOAWAY 0 PING 8 سلام true 17 0 1 true 6 0 6 1 16384 65535 16777215 PRIORITY RST_STREAM PUSH_PROMISE GOAWAY WINDOW_UPDATE CONTINUATION 1 2 3 4 6 INTERNAL_ERROR FLOW_CONTROL_ERROR SETTINGS_TIMEOUT STREAM_CLOSED FRAME_SIZE_ERROR REFUSED_STREAM COMPRESSION_ERROR CONNECT_ERROR ENHANCE_YOUR_CALM INADEQUATE_SECURITY HTTP_1_1_REQUIRED 0 1 2 3 4 4096 -1
ساختار سرآیند
یک سرآیند.
نامانگلیسیگونهتوضیح
نامnameرشته = ""نام؛ در HTTP/2 همیشه با حروف کوچک.
مقدارvalueرشته = ""مقدار.
حساسsensitiveمنطقی = نادرستحساس است و هرگز در جدول HPACK نمی‌رود؛ برای توکن‌ها و کوکی‌ها.
net-http2-Hpack.salam
واردسازی شبکه.اچ تی تی پی۲
واردسازی فشرده سازی

تابع ریشه:
    ناپایا فهرست := اچ تی تی پی۲.فهرست سرآیندها {}
    اچ تی تی پی۲.افزودن سرآیند(فهرست، ":method"، "GET")
    اچ تی تی پی۲.افزودن سرآیند(فهرست، ":path"، "/")
    اچ تی تی پی۲.افزودن سرآیند(فهرست، "user-agent"، "salam")
    اچ تی تی پی۲.افزودن سرآیند حساس(فهرست، "authorization"، "Bearer x")
    سرچاپ اچ تی تی پی۲.تعداد سرآیندها(فهرست)، اچ تی تی پی۲.دریافت سرآیند(فهرست، ":path")، اچ تی تی پی۲.سرآیند دارد(فهرست، "cookie")
    ناپایا فرستنده := اچ تی تی پی۲.جدول پویا جدید(۴۰۹۶)
    ناپایا گیرنده := اچ تی تی پی۲.جدول پویا جدید(۴۰۹۶)
    بلوک := اچ تی تی پی۲.کدگذاری فهرست سرآیند(فرستنده، فهرست، درست)
    سرچاپ بلوک.طول، اچ تی تی پی۲.تعداد جدول پویا(فرستنده)، اچ تی تی پی۲.اندازه جدول پویا(فرستنده)
    ناپایا سالم := درست
    خوانده := اچ تی تی پی۲.کدگشایی فهرست سرآیند(گیرنده، بلوک، سالم)
    سرچاپ سالم، خوانده.سرآیندها.طول()، خوانده.سرآیندها[۲].نام، خوانده.سرآیندها[۲].مقدار، خوانده.سرآیندها[۳].حساس
    بلوک۲ := اچ تی تی پی۲.کدگذاری فهرست سرآیند(فرستنده، فهرست، درست)
    سرچاپ بلوک۲.طول < بلوک.طول
    ث := اچ تی تی پی۲.دریافت از جدول ثابت(۲)
    سرچاپ ث.نام، ث.مقدار، اچ تی تی پی۲.شمار جدول ایستای اچ‌پک، اچ تی تی پی۲.سربار مدخل اچ‌پک
    پ := اچ تی تی پی۲.دریافت از جدول پویا(گیرنده، ۱)
    سرچاپ پ.نام
    ناپایا دقیق := نادرست
    سرچاپ اچ تی تی پی۲.جستجوی جدول(گیرنده، ":method"، "GET"، دقیق)، دقیق
    سرچاپ اچ تی تی پی۲.دریافت از جدول(گیرنده، ۶۲، سالم).نام، سالم
    ناپایا ب := فشرده سازی.بافر بایت جدید()
    اچ تی تی پی۲.کدگذاری تغییر اندازه جدول(ب، فرستنده، ۲۵۶)
    اچ تی تی پی۲.تنظیم اندازه جدول(گیرنده، ۲۵۶)
    سرچاپ ب.طول، فرستنده.بیشترین اندازه، گیرنده.بیشترین اندازه
    ناپایا ب۲ := فشرده سازی.بافر بایت جدید()
    اچ تی تی پی۲.کدگذاری سرآیند(ب۲، فرستنده، اچ تی تی پی۲.سرآیند جدید("x-id"، "7")، نادرست)
    اچ تی تی پی۲.درج در جدول پویا(گیرنده، اچ تی تی پی۲.سرآیند حساس("k"، "v"))
    سرچاپ ب۲.طول، اچ تی تی پی۲.تعداد جدول پویا(گیرنده)
پایان
خروجی4 / false 17 1 47 true 4 user-agent salam true true :method GET 61 32 user-agent 2 true user-agent true 3 256 256 8 2

فهرست سرآیندها HeaderList

ساختار فهرست سرآیندها
فهرست سرآیندها، به همان ترتیب.
نامانگلیسیگونهتوضیح
سرآیندهاitemsوکتور<سرآیند>سرآیندها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Hpack.salam

جدول پویا DynTable

ساختار جدول پویا
جدول پویای HPACK که سرآیندهای فرستاده یا دریافت‌شده را نگه می‌دارد تا دفعه‌ی بعد فقط شماره‌شان فرستاده شود. هر سو جدول جدا دارد و دو طرف باید هم‌گام بمانند.
نامانگلیسیگونهتوضیح
مدخل‌هاitemsوکتور<سرآیند>مدخل‌ها.
جای تازه‌ترینheadصحیح = 0جای تازه‌ترین مدخل در حلقه.
اندازهsizeصحیح = 0اندازه‌ی فعلی بر حسب بایت، با سربار.
بیشترین اندازهmax_sizeصحیح = 4096بیشترین اندازه؛ مدخل‌های قدیمی بیرون رانده می‌شوند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Hpack.salam

جدول‌های هافمن HufTables

ساختار جدول‌های هافمن
جدول‌های داخلی کدگشای هافمن؛ یک بار ساخته و بعد دوباره به کار می‌روند.
نامانگلیسیگونهتوضیح
شمار کدهاcountsوکتور<صحیح>شمار کدها در هر طول.
نخستین کدهاfirstوکتور<صحیح>نخستین کد هر طول.
نمادهاsymsوکتور<صحیح>نمادها به ترتیب کد.
آمادهreadyمنطقی = نادرستجدول‌ها ساخته شده‌اند.
net-http2-Huffman.salam
واردسازی شبکه.اچ تی تی پی۲
واردسازی کدگذاری
واردسازی فشرده سازی

تابع ریشه:
    ب := اچ تی تی پی۲.کدگذاری متن هافمن("www.example.com")
    سرچاپ کدگذاری.کدگذاری شانزده(فشرده سازی.بافر به رشته(ب))
    سرچاپ اچ تی تی پی۲.طول کدشده متن("www.example.com")، "www.example.com".طول()
    ناپایا سالم := درست
    سرچاپ فشرده سازی.بافر به رشته(اچ تی تی پی۲.کدگشایی بافر هافمن(ب، سالم))، سالم
    متن := فشرده سازی.بافر از رشته("no-cache")
    سرچاپ اچ تی تی پی۲.طول کدشده هافمن(متن.داده، متن.طول)
    ناپایا خروجی := فشرده سازی.بافر بایت جدید()
    فشرده سازی.افزودن بایت(خروجی، ۰)
    اچ تی تی پی۲.کدگذاری هافمن(خروجی، متن.داده، متن.طول)
    سرچاپ فشرده سازی.بافر به رشته(اچ تی تی پی۲.کدگشایی هافمن(خروجی، ۱، خروجی.طول - ۱، سالم))، سالم
پایان
خروجیf1e3c2e5f23a6ba0ab90f4ff 12 15 www.example.com true 6 no-cache true

جعبه امن TlsBox

ساختار جعبه امن
ظرف داخلی اتصال‌های TLS که ترابری‌های امن به آن اشاره می‌کنند.
نامانگلیسیگونهتوضیح
اتصال‌هاitemsوکتوراتصال‌ها.
net-http2-TLS.salam
واردسازی شبکه.اچ تی تی پی۲
واردسازی شبکه.تی سی پی

تابع ریشه:
    امن := تی سی پی.شماره گیری امن("example.com"، ۴۴۳)
    ناپایا ک := اچ تی تی پی۲.اتصال جدید(اچ تی تی پی۲.ترابری امن(امن)، نادرست)
    سرچاپ اچ تی تی پی۲.دست‌دهی کارخواه(ک)، ک.ترابری.نوع == اچ تی تی پی۲.انتقال امن
    اچ تی تی پی۲.بستن اتصال(ک)
پایان

تنظیمات Settings

ساختار تنظیمات
تنظیمات یک سوی اتصال.
نامانگلیسیگونهتوضیح
اندازه جدول سرآیندheader_table_sizeصحیح = 4096اندازه‌ی جدول HPACK.
ارسال بی‌درخواستenable_pushصحیح = 1ارسال بی‌درخواست؛ ۱ یا ۰.
بیشترین جریان همزمانmax_concurrent_streamsصحیح = -1بیشترین جریان همزمان؛ ۱- یعنی بی‌حد.
اندازه پنجره آغازینinitial_window_sizeصحیح = 65535پنجره‌ی آغازین.
بیشترین اندازه قابmax_frame_sizeصحیح = 16384بیشترین اندازه‌ی قاب.
بیشترین اندازه سرآیندهاmax_header_list_sizeصحیح = -1بیشترین اندازه‌ی سرآیندها؛ ۱- یعنی بی‌حد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

ترابری Transport

ساختار ترابری
لایه‌ای که بایت‌ها را روی TCP یا TLS می‌فرستد.
نامانگلیسیگونهتوضیح
نوعkindصحیح = 0نوع ترابری.
توصیفگرfdصحیح۶۴ = -1توصیف‌گر سوکت.
شماره اتصال امنsec_idصحیح = -1شماره‌ی اتصال TLS در ظرف داخلی.
سالمokمنطقی = نادرستترابری سالم است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Conn.salam

پایاها و متغیرها

نتیجه خطا H2_POLL_ERROR

پایا نتیجه خطا: صحیح۳۲ = -1
نتیجه‌ی دریافت رویداد: خطا یا بسته شدن اتصال.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

نتیجه اتصال H2_POLL_CONNECTION

پایا نتیجه اتصال: صحیح۳۲ = 0
نتیجه‌ی دریافت رویداد: قابی برای کل اتصال رسید. عدد مثبت شناسه‌ی جریانی است که قابش رسیده.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Conn.salam

پیش‌درآمد اچ‌تی‌تی‌پی۲ H2_PREFACE

پایا پیش‌درآمد اچ‌تی‌تی‌پی۲: رشته = "PRI * HTTP/2.0

SM

"
رشته‌ای که کارخواه HTTP/2 پیش از هر چیز می‌فرستد؛ ۲۴ بایت.
net-http2-Transport.salam
واردسازی شبکه.اچ تی تی پی۲
واردسازی شبکه.تی سی پی
واردسازی فشرده سازی

ناپایا سرور := تی سی پی.سرور {}

تابع پاسخ‌گو():
    ا := تی سی پی.پذیرش(سرور)
    ناپایا ت := اچ تی تی پی۲.ترابری ساده(ا.توصیفگر)
    سرچاپ "سرور پیش‌درآمد:"، اچ تی تی پی۲.خواندن پیش‌درآمد(ت)
    ق := اچ تی تی پی۲.خواندن قاب(ت، اچ تی تی پی۲.اندازه پیش‌فرض قاب)
    سرچاپ "سرور قاب:"، ق.خوانده‌شده، اچ تی تی پی۲.نام نوع قاب(ق.نوع)، ق.شناسه جریان، فشرده سازی.بافر به رشته(ق.بار)
    اچ تی تی پی۲.بستن ترابری(ت)
پایان

تابع ریشه:
    سرور = تی سی پی.پیوند(۰)
    ن := نخ‌ساز(پاسخ‌گو)
    ا := تی سی پی.شماره گیری("127.0.0.1"، تی سی پی.درگاه(سرور))
    ناپایا ت := اچ تی تی پی۲.ترابری ساده(ا.توصیفگر)
    _ := اچ تی تی پی۲.نوشتن پیش‌درآمد(ت)
    ناپایا د := اچ تی تی پی۲.قاب جدید(اچ تی تی پی۲.قاب داده، ۰، ۳)
    فشرده سازی.افزودن بافر(د.بار، فشرده سازی.بافر از رشته("hi"))
    _ := اچ تی تی پی۲.نوشتن قاب(ت، د)
    نخ‌پیوند(ن)
    اچ تی تی پی۲.بستن ترابری(ت)
    تی سی پی.بستن سرور(سرور)
    سرچاپ اچ تی تی پی۲.پیش‌درآمد اچ‌تی‌تی‌پی۲.طول()
پایان
خروجیسرور پیش‌درآمد: true سرور قاب: true DATA 3 hi 24

قاب داده H2_DATA

پایا قاب داده: صحیح۳۲ = 0
قاب داده‌ی بدنه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

قاب سرصفحه‌ها H2_HEADERS

پایا قاب سرصفحه‌ها: صحیح۳۲ = 1
قاب سرآیندها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

قاب اولویت H2_PRIORITY

پایا قاب اولویت: صحیح۳۲ = 2
قاب اولویت؛ کنار گذاشته شده ولی هنوز خوانده می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

قاب بازنشانی جریان H2_RST_STREAM

پایا قاب بازنشانی جریان: صحیح۳۲ = 3
قاب بستن یک جریان با کد خطا.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

قاب تنظیمات H2_SETTINGS

پایا قاب تنظیمات: صحیح۳۲ = 4
قاب تنظیمات.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

قاب وعده ارسال H2_PUSH_PROMISE

پایا قاب وعده ارسال: صحیح۳۲ = 5
قاب وعده‌ی ارسال از سرور.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

قاب پینگ H2_PING

پایا قاب پینگ: صحیح۳۲ = 6
قاب پینگ برای سنجش زنده بودن اتصال.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

قاب ترک اتصال H2_GOAWAY

پایا قاب ترک اتصال: صحیح۳۲ = 7
قاب پایان اتصال.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

قاب به‌روزرسانی پنجره H2_WINDOW_UPDATE

پایا قاب به‌روزرسانی پنجره: صحیح۳۲ = 8
قاب افزایش پنجره‌ی کنترل جریان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

قاب ادامه H2_CONTINUATION

پایا قاب ادامه: صحیح۳۲ = 9
ادامه‌ی بلوک سرآیندی که در یک قاب جا نشده.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

پرچم‌های قاب H2_FLAG_…

پرچم‌های بایت پنجم قاب. معنای هر پرچم به نوع قاب بستگی دارد؛ برای همین پرچم اتمام جریان و پرچم تایید هر دو ۱ هستند، یکی برای قاب داده و سرآیند و دیگری برای تنظیمات و پینگ. با قاب پرچم دارد بررسی‌شان کنید.
نامانگلیسیمقدار
پرچم اتمام جریانH2_FLAG_END_STREAM1
پرچم تاییدH2_FLAG_ACK1
پرچم اتمام سرصفحه‌هاH2_FLAG_END_HEADERS4
پرچم لایه‌گذاریH2_FLAG_PADDED8
پرچم اولویتH2_FLAG_PRIORITY32

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

تنظیم اندازه جدول سرصفحه H2_SETTINGS_HEADER_TABLE_SIZE

پایا تنظیم اندازه جدول سرصفحه: صحیح۳۲ = 1
شناسه‌ی تنظیم: بیشترین اندازه‌ی جدول پویای HPACK.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

تنظیم فعال‌سازی ارسال H2_SETTINGS_ENABLE_PUSH

پایا تنظیم فعال‌سازی ارسال: صحیح۳۲ = 2
شناسه‌ی تنظیم: سرور اجازه‌ی ارسال بی‌درخواست دارد یا نه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

تنظیم بیشینه جریان‌های همزمان H2_SETTINGS_MAX_CONCURRENT_STREAMS

پایا تنظیم بیشینه جریان‌های همزمان: صحیح۳۲ = 3
شناسه‌ی تنظیم: بیشترین جریان همزمان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

تنظیم اندازه آغازین پنجره H2_SETTINGS_INITIAL_WINDOW_SIZE

پایا تنظیم اندازه آغازین پنجره: صحیح۳۲ = 4
شناسه‌ی تنظیم: اندازه‌ی آغازین پنجره‌ی هر جریان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

تنظیم بیشینه اندازه قاب H2_SETTINGS_MAX_FRAME_SIZE

پایا تنظیم بیشینه اندازه قاب: صحیح۳۲ = 5
شناسه‌ی تنظیم: بیشترین اندازه‌ی بار یک قاب.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

تنظیم بیشینه اندازه فهرست سرصفحه H2_SETTINGS_MAX_HEADER_LIST_SIZE

پایا تنظیم بیشینه اندازه فهرست سرصفحه: صحیح۳۲ = 6
شناسه‌ی تنظیم: بیشترین اندازه‌ی سرآیندهای یک درخواست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

کد بدون خطا H2_NO_ERROR

پایا کد بدون خطا: صحیح۳۲ = 0
کد خطا: بدون خطا؛ برای بستن عادی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

کد خطای پروتکل H2_PROTOCOL_ERROR

پایا کد خطای پروتکل: صحیح۳۲ = 1
کد خطا: خطای پروتکل.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

کد خطای داخلی H2_INTERNAL_ERROR

پایا کد خطای داخلی: صحیح۳۲ = 2
کد خطا: خطای داخلی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

کد خطای کنترل جریان H2_FLOW_CONTROL_ERROR

پایا کد خطای کنترل جریان: صحیح۳۲ = 3
کد خطا: نقض کنترل جریان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

کد مهلت تنظیمات H2_SETTINGS_TIMEOUT

پایا کد مهلت تنظیمات: صحیح۳۲ = 4
کد خطا: تایید تنظیمات به‌موقع نرسید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

کد جریان بسته‌شده H2_STREAM_CLOSED

پایا کد جریان بسته‌شده: صحیح۳۲ = 5
کد خطا: قاب روی جریان بسته رسید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

کد خطای اندازه قاب H2_FRAME_SIZE_ERROR

پایا کد خطای اندازه قاب: صحیح۳۲ = 6
کد خطا: اندازه‌ی قاب نادرست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

کد جریان ردشده H2_REFUSED_STREAM

پایا کد جریان ردشده: صحیح۳۲ = 7
کد خطا: جریان پیش از پردازش رد شد و می‌شود دوباره فرستاد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

کد لغو H2_CANCEL

پایا کد لغو: صحیح۳۲ = 8
کد خطا: جریان دیگر لازم نیست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

کد خطای فشرده‌سازی H2_COMPRESSION_ERROR

پایا کد خطای فشرده‌سازی: صحیح۳۲ = 9
کد خطا: خطای HPACK؛ اتصال دیگر قابل استفاده نیست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

کد خطای اتصال H2_CONNECT_ERROR

پایا کد خطای اتصال: صحیح۳۲ = 10
کد خطا: اتصال تونل CONNECT بسته شد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

کد درخواست آرامش H2_ENHANCE_YOUR_CALM

پایا کد درخواست آرامش: صحیح۳۲ = 11
کد خطا: طرف مقابل بیش از حد درخواست می‌فرستد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

کد امنیت ناکافی H2_INADEQUATE_SECURITY

پایا کد امنیت ناکافی: صحیح۳۲ = 12
کد خطا: امنیت TLS کافی نیست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

کد نیاز به اچ‌تی‌تی‌پی۱۱ H2_HTTP_1_1_REQUIRED

پایا کد نیاز به اچ‌تی‌تی‌پی۱۱: صحیح۳۲ = 13
کد خطا: درخواست را با HTTP/1.1 بفرستید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

اندازه پیش‌فرض قاب H2_DEFAULT_FRAME_SIZE

پایا اندازه پیش‌فرض قاب: صحیح۳۲ = 16384
اندازه‌ی پیش‌فرض بار قاب: ۱۶۳۸۴ بایت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

پنجره پیش‌فرض H2_DEFAULT_WINDOW

پایا پنجره پیش‌فرض: صحیح۳۲ = 65535
اندازه‌ی پیش‌فرض پنجره: ۶۵۵۳۵ بایت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

اندازه پیش‌فرض جدول H2_DEFAULT_TABLE_SIZE

پایا اندازه پیش‌فرض جدول: صحیح۳۲ = 4096
اندازه‌ی پیش‌فرض جدول HPACK: ۴۰۹۶ بایت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

سقف اندازه قاب H2_MAX_FRAME_LIMIT

پایا سقف اندازه قاب: صحیح۳۲ = 16777215
بزرگ‌ترین اندازه‌ی قابی که پروتکل اجازه می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

جریان بیکار H2_STREAM_IDLE

پایا جریان بیکار: صحیح۳۲ = 0
وضعیت جریان: هنوز باز نشده.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

جریان باز H2_STREAM_OPEN

پایا جریان باز: صحیح۳۲ = 1
وضعیت جریان: باز در هر دو سو.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

جریان نیمه‌بسته محلی H2_STREAM_HALF_CLOSED_LOCAL

پایا جریان نیمه‌بسته محلی: صحیح۳۲ = 2
وضعیت جریان: این سو دیگر نمی‌فرستد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

جریان نیمه‌بسته دور H2_STREAM_HALF_CLOSED_REMOTE

پایا جریان نیمه‌بسته دور: صحیح۳۲ = 3
وضعیت جریان: طرف مقابل دیگر نمی‌فرستد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

وضعیت جریان بسته‌شده H2_STREAM_CLOSED_STATE

پایا وضعیت جریان بسته‌شده: صحیح۳۲ = 4
وضعیت جریان: بسته.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

شمار جدول ایستای اچ‌پک HPACK_STATIC_COUNT

پایا شمار جدول ایستای اچ‌پک: صحیح۳۲ = 61
شمار مدخل‌های جدول ثابت HPACK، یعنی ۶۱. شماره‌های بزرگ‌تر به جدول پویا می‌رسند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Hpack.salam

سربار مدخل اچ‌پک HPACK_ENTRY_OVERHEAD

پایا سربار مدخل اچ‌پک: صحیح۳۲ = 32
سربار هر مدخل در حساب اندازه‌ی جدول پویا: ۳۲ بایت به‌علاوه‌ی طول نام و مقدار.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Hpack.salam

انتقال ساده H2_TRANSPORT_PLAIN

پایا انتقال ساده: صحیح۳۲ = 0
ترابری ساده‌ی TCP، یعنی h2c.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Conn.salam

انتقال امن H2_TRANSPORT_TLS

پایا انتقال امن: صحیح۳۲ = 1
ترابری امن TLS.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-TLS.salam

تابع‌ها

اتصال جدید NewConn

تابع اتصال جدید(t: ترابری، is_server: منطقی): اتصال اچ تی تی پی۲
اتصال تازه روی یک ترابری؛ پارامتر دوم می‌گوید این سو سرور است یا کارخواه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Conn.salam

دست‌دهی کارخواه ClientHandshake

تابع دست‌دهی کارخواه(c &: اتصال اچ تی تی پی۲): منطقی
پیش‌درآمد و تنظیمات را می‌فرستد و تنظیمات سرور را می‌خواند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Conn.salam

دست‌دهی سرور ServerHandshake

تابع دست‌دهی سرور(c &: اتصال اچ تی تی پی۲): منطقی
پیش‌درآمد کارخواه را می‌خواند و تنظیمات را رد و بدل می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Conn.salam

شناسه جریان بعدی NextStreamId

تابع شناسه جریان بعدی(c &: اتصال اچ تی تی پی۲): صحیح
شناسه‌ی جریان تازه را می‌دهد و شمارنده را جلو می‌برد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Conn.salam

جریان با شناسه StreamAt

تابع جریان با شناسه(c: اتصال اچ تی تی پی۲، id: صحیح): جریان اچ تی تی پی
جریان با این شناسه؛ اگر نباشد، جریان خالی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Conn.salam

تعداد جریان‌ها StreamCount

تابع تعداد جریان‌ها(c: اتصال اچ تی تی پی۲): صحیح
شمار جریان‌های اتصال.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Conn.salam

اتصال معتبر ConnOk

تابع اتصال معتبر(c: اتصال اچ تی تی پی۲): منطقی
اتصال هنوز قابل استفاده است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Conn.salam

ارسال سرآیندها SendHeaders

تابع ارسال سرآیندها(c &: اتصال اچ تی تی پی۲، stream_id: صحیح، hl: فهرست سرآیندها، end_stream: منطقی): منطقی
سرآیندها را روی جریان می‌فرستد؛ اگر درخواست بدنه ندارد، درست بدهید تا جریان همین‌جا تمام شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Conn.salam

ارسال دنباله‌ها SendTrailers

تابع ارسال دنباله‌ها(c &: اتصال اچ تی تی پی۲، stream_id: صحیح، hl: فهرست سرآیندها): منطقی
سرآیندهای پایانی را می‌فرستد و جریان را تمام می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Conn.salam

ارسال داده SendData

تابع ارسال داده(c &: اتصال اچ تی تی پی۲، stream_id: صحیح، body: compress.ByteBuf، end_stream: منطقی): منطقی
بدنه را می‌فرستد و آن را به اندازه‌ی قاب‌ها و پنجره تکه می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Conn.salam

ارسال بازنشانی جریان SendRstStream

تابع ارسال بازنشانی جریان(c &: اتصال اچ تی تی پی۲، stream_id: صحیح، error_code: صحیح): منطقی
جریان را با کد خطا می‌بندد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Conn.salam

ارسال خداحافظی SendGoAway

تابع ارسال خداحافظی(c &: اتصال اچ تی تی پی۲، error_code: صحیح، debug: رشته): منطقی
به طرف مقابل می‌گوید اتصال بسته می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Conn.salam

ارسال پینگ SendPing

تابع ارسال پینگ(c &: اتصال اچ تی تی پی۲، payload: compress.ByteBuf): منطقی
پینگ با ۸ بایت داده می‌فرستد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Conn.salam

دریافت رویداد Poll

تابع دریافت رویداد(c &: اتصال اچ تی تی پی۲): صحیح
یک قاب می‌خواند و پردازش می‌کند؛ شناسه‌ی جریان یا یکی از ثابت‌های نتیجه ... را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Conn.salam

انتظار اتمام جریان AwaitStreamEnd

تابع انتظار اتمام جریان(c &: اتصال اچ تی تی پی۲، stream_id: صحیح، max_frames: صحیح): منطقی
تا پایان جریان، یا حداکثر این تعداد قاب، قاب می‌خواند؛ اگر جریان تمام شد، درست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Conn.salam

انتظار سرآیند AwaitAnyHeaders

تابع انتظار سرآیند(c &: اتصال اچ تی تی پی۲، max_frames: صحیح): صحیح
تا رسیدن سرآیندهای یک جریان تازه قاب می‌خواند و شناسه‌اش را برمی‌گرداند؛ برای سرور.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Conn.salam

بستن اتصال CloseConn

تابع بستن اتصال(c &: اتصال اچ تی تی پی۲)
اتصال و ترابری را می‌بندد و حافظه را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Conn.salam

طول کدشده هافمن HuffmanEncodedLen

تابع طول کدشده هافمن(p: تهی*، n: صحیح): صحیح
طول بایت‌هایی که پس از کدگذاری هافمن HPACK به دست می‌آید؛ برای تصمیم اینکه فشرده‌سازی به‌صرفه است یا نه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Huffman.salam

طول کدشده متن HuffmanEncodedLenStr

تابع طول کدشده متن(s: رشته): صحیح
مثل تابع بالا، برای یک رشته.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Huffman.salam

کدگذاری هافمن HuffmanEncode

تابع کدگذاری هافمن(out &: compress.ByteBuf، p: تهی*، n: صحیح)
بایت‌ها را با کد هافمن HPACK به انتهای بافر می‌افزاید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Huffman.salam

کدگذاری متن هافمن HuffmanEncodeStr

تابع کدگذاری متن هافمن(s: رشته): compress.ByteBuf
رشته را با کد هافمن HPACK کدگذاری می‌کند و بافر تازه برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Huffman.salam

کدگشایی هافمن HuffmanDecode

تابع کدگشایی هافمن(src: compress.ByteBuf، from: صحیح، len: صحیح، ok &: منطقی): compress.ByteBuf
بخشی از بافر را از جای داده‌شده و به طول داده‌شده کدگشایی می‌کند؛ اگر داده خراب باشد، سالم نادرست می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Huffman.salam

کدگشایی بافر هافمن HuffmanDecodeBuf

تابع کدگشایی بافر هافمن(src: compress.ByteBuf، ok &: منطقی): compress.ByteBuf
کل بافر را کدگشایی می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Huffman.salam

نام نوع قاب FrameTypeName

تابع نام نوع قاب(kind: صحیح): رشته
نام انگلیسی نوع قاب، مثل DATA.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

نام خطا ErrorName

تابع نام خطا(code: صحیح): رشته
نام انگلیسی کد خطا، مثل CANCEL.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

سرآیند جدید NewHeader

تابع سرآیند جدید(name: رشته، value: رشته): سرآیند
سرآیند تازه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Hpack.salam

سرآیند حساس NewSensitiveHeader

تابع سرآیند حساس(name: رشته، value: رشته): سرآیند
سرآیند حساس تازه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Hpack.salam

افزودن سرآیند HeadersAdd

تابع افزودن سرآیند(hl &: فهرست سرآیندها، name: رشته، value: رشته)
سرآیندی به فهرست می‌افزاید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Hpack.salam

افزودن سرآیند حساس HeadersAddSensitive

تابع افزودن سرآیند حساس(hl &: فهرست سرآیندها، name: رشته، value: رشته)
سرآیند حساسی به فهرست می‌افزاید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Hpack.salam

دریافت سرآیند HeadersGet

تابع دریافت سرآیند(hl: فهرست سرآیندها، name: رشته): رشته
مقدار نخستین سرآیند با این نام؛ اگر نباشد، رشته‌ی خالی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Hpack.salam

سرآیند دارد HeadersHas

تابع سرآیند دارد(hl: فهرست سرآیندها، name: رشته): منطقی
فهرست این سرآیند را دارد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Hpack.salam

تعداد سرآیندها HeadersCount

تابع تعداد سرآیندها(hl: فهرست سرآیندها): صحیح
شمار سرآیندها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Hpack.salam

تنظیمات پیش‌فرض DefaultSettings

تابع تنظیمات پیش‌فرض(): تنظیمات
تنظیمات پیش‌فرض پروتکل.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

جدول پویا جدید NewDynTable

تابع جدول پویا جدید(max_size: صحیح): جدول پویا
جدول پویای خالی با بیشترین اندازه‌ی داده‌شده؛ معمولاً ۴۰۹۶.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Hpack.salam

تعداد جدول پویا DynCount

تابع تعداد جدول پویا(t: جدول پویا): صحیح
شمار مدخل‌های جدول پویا.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Hpack.salam

اندازه جدول پویا DynSize

تابع اندازه جدول پویا(t: جدول پویا): صحیح
اندازه‌ی فعلی جدول پویا بر حسب بایت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Hpack.salam

دریافت از جدول پویا DynGet

تابع دریافت از جدول پویا(t: جدول پویا، index: صحیح): سرآیند
مدخل جدول پویا با شماره‌ای از ۱؛ شماره‌ی ۱ تازه‌ترین مدخل است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Hpack.salam

درج در جدول پویا DynInsert

تابع درج در جدول پویا(t &: جدول پویا، h: سرآیند)
مدخلی را در جدول پویا می‌گذارد و اگر جا نباشد، قدیمی‌ترها را بیرون می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Hpack.salam

تنظیم اندازه جدول DynSetMaxSize

تابع تنظیم اندازه جدول(t &: جدول پویا، max_size: صحیح)
بیشترین اندازه‌ی جدول پویا را عوض می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Hpack.salam

دریافت از جدول ثابت StaticGet

تابع دریافت از جدول ثابت(index: صحیح): سرآیند
مدخل جدول ثابت HPACK با شماره‌ی ۱ تا ۶۱؛ مثلاً ۲ همان :method GET است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Hpack.salam

دریافت از جدول TableGet

تابع دریافت از جدول(t: جدول پویا، index: صحیح، ok &: منطقی): سرآیند
مدخل با شماره‌ی سراسری HPACK: ۱ تا ۶۱ از جدول ثابت، بزرگ‌ترها از جدول پویا.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Hpack.salam

جستجوی جدول TableFind

تابع جستجوی جدول(t: جدول پویا، name: رشته، value: رشته، exact &: منطقی): صحیح
شماره‌ی مدخلی را که با نام و مقدار جور است پیدا می‌کند؛ اگر فقط نام جور باشد، دقیق نادرست می‌شود. اگر نباشد، صفر.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Hpack.salam

کدگذاری سرآیند EncodeHeader

تابع کدگذاری سرآیند(out &: compress.ByteBuf، t &: جدول پویا، h: سرآیند، use_huffman: منطقی)
یک سرآیند را کدگذاری می‌کند و در صورت نیاز در جدول می‌گذارد. سرآیند حساس هرگز در جدول نمی‌رود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Hpack.salam

کدگذاری فهرست سرآیند EncodeHeaderList

تابع کدگذاری فهرست سرآیند(t &: جدول پویا، hl: فهرست سرآیندها، use_huffman: منطقی): compress.ByteBuf
فهرست سرآیندها را به یک بلوک HPACK تبدیل می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Hpack.salam

کدگذاری تغییر اندازه جدول EncodeTableSizeUpdate

تابع کدگذاری تغییر اندازه جدول(out &: compress.ByteBuf، t &: جدول پویا، new_size: صحیح)
دستور تغییر اندازه‌ی جدول را برای طرف مقابل می‌نویسد و اندازه‌ی جدول خودی را هم عوض می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Hpack.salam

کدگشایی فهرست سرآیند DecodeHeaderList

تابع کدگشایی فهرست سرآیند(t &: جدول پویا، block: compress.ByteBuf، ok &: منطقی): فهرست سرآیندها
بلوک HPACK را به فهرست سرآیندها برمی‌گرداند و جدول گیرنده را به‌روز می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Hpack.salam

ترابری ساده PlainTransport

تابع ترابری ساده(fd: صحیح۶۴): ترابری
ترابری ساده روی یک سوکت TCP باز.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Conn.salam

ترابری امن TLSTransport

تابع ترابری امن(c: tls.اتصال اچ تی تی پی۲): ترابری
ترابری امن روی یک اتصال TLS.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-TLS.salam

بستن ترابری CloseTransport

تابع بستن ترابری(t &: ترابری)
ترابری را می‌بندد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Transport.salam

قاب جدید NewFrame

تابع قاب جدید(kind: صحیح، flags: صحیح، stream_id: صحیح): قاب
قاب خالی با نوع، پرچم‌ها و شناسه‌ی جریان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

آزادسازی قاب FreeFrame

تابع آزادسازی قاب(f &: قاب)
حافظه‌ی بار قاب را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

قاب پرچم دارد FrameHasFlag

تابع قاب پرچم دارد(f: قاب، flag: صحیح): منطقی
قاب این پرچم را دارد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

کدگذاری قاب FrameEncode

تابع کدگذاری قاب(f: قاب): compress.ByteBuf
قاب را با سرآیند ۹ بایتی‌اش به بایت تبدیل می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

نوشتن قاب WriteFrame

تابع نوشتن قاب(t &: ترابری، f: قاب): منطقی
قاب را روی ترابری می‌نویسد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Transport.salam

خواندن قاب ReadFrame

تابع خواندن قاب(t &: ترابری، max_frame_size: صحیح): قاب
یک قاب از ترابری می‌خواند؛ قاب بزرگ‌تر از اندازه‌ی داده‌شده رد می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Transport.salam

نوشتن پیش‌درآمد WritePreface

تابع نوشتن پیش‌درآمد(t &: ترابری): منطقی
پیش‌درآمد را می‌فرستد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Transport.salam

خواندن پیش‌درآمد ReadPreface

تابع خواندن پیش‌درآمد(t &: ترابری): منطقی
پیش‌درآمد را می‌خواند و درستی‌اش را بررسی می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Transport.salam

بلوک سرآیند قاب HeaderBlockOf

تابع بلوک سرآیند قاب(f: قاب، ok &: منطقی): compress.ByteBuf
بلوک HPACK قاب سرآیند، بدون لایه‌گذاری و اولویت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

داده قاب DataOf

تابع داده قاب(f: قاب، ok &: منطقی): compress.ByteBuf
داده‌ی قاب داده، بدون لایه‌گذاری.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

ساخت قاب تنظیمات MakeSettingsFrame

تابع ساخت قاب تنظیمات(s: تنظیمات): قاب
قاب تنظیمات از روی ساختار تنظیمات.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

ساخت تایید تنظیمات MakeSettingsAck

تابع ساخت تایید تنظیمات(): قاب
قاب تایید تنظیمات.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

اعمال تنظیمات ApplySettings

تابع اعمال تنظیمات(s &: تنظیمات، f: قاب): منطقی
تنظیمات قاب را روی ساختار اعمال می‌کند؛ اگر مقدار نامعتبر باشد، نادرست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

ساخت به‌روزرسانی پنجره MakeWindowUpdate

تابع ساخت به‌روزرسانی پنجره(stream_id: صحیح، increment: صحیح): قاب
قاب افزایش پنجره.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

مقدار افزایش پنجره WindowIncrementOf

تابع مقدار افزایش پنجره(f: قاب): صحیح
مقدار افزایش در قاب پنجره.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

ساخت بازنشانی جریان MakeRstStream

تابع ساخت بازنشانی جریان(stream_id: صحیح، error_code: صحیح): قاب
قاب بازنشانی جریان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

کد خطای قاب ErrorCodeOf

تابع کد خطای قاب(f: قاب): صحیح
کد خطای قاب بازنشانی یا پایان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

ساخت خداحافظی MakeGoAway

تابع ساخت خداحافظی(last_stream_id: صحیح، error_code: صحیح، debug: رشته): قاب
قاب پایان با آخرین شناسه‌ی جریانی که پردازش شد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

ساخت پینگ MakePing

تابع ساخت پینگ(payload: compress.ByteBuf، ack: منطقی): قاب
قاب پینگ، یا پاسخ آن.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam

درج تنظیم PutSetting

تابع درج تنظیم(out &: compress.ByteBuf، id: صحیح، v: صحیح)
یک تنظیم شش‌بایتی را به بافر می‌افزاید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Frame.salam