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

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

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

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

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

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

گونه‌ها

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

ساختار جریان اچ تی تی پی
یک جریان: یک درخواست و پاسخش.
نامانگلیسیگونهتوضیح
ididصحیح = 0شناسه؛ فرد برای جریان‌هایی که کارخواه باز می‌کند.
statestateصحیح = 0وضعیت، یکی از ثابت‌های جریان ....
send_windowsend_windowصحیح = 65535پنجره‌ی فرستادن.
recv_windowrecv_windowصحیح = 65535پنجره‌ی دریافت.
headersheadersفهرست سرآیندهاسرآیندهای دریافت‌شده.
trailerstrailersفهرست سرآیندهاسرآیندهای پایانی دریافت‌شده.
datadatacompress.ByteBufبدنه‌ی دریافت‌شده.
got_headersgot_headersمنطقی = نادرستسرآیندها رسیده‌اند.
got_trailersgot_trailersمنطقی = نادرستسرآیندهای پایانی رسیده‌اند.
end_streamend_streamمنطقی = نادرستطرف مقابل جریان را تمام کرده.
resetresetمنطقی = نادرستجریان با قاب بازنشانی بسته شد.
error_codeerror_codeصحیح = 0کد خطای بازنشانی.
liveliveمنطقی = نادرستاین خانه‌ی جدول در استفاده است.
net-http2-Conn.salam
واردسازی شبکه.اچ تی تی پی۲
واردسازی شبکه.تی سی پی شبکه
واردسازی فشرده سازی

ناپایا سرور := تی سی پی شبکه.سرور {}

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

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

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

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

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

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

ساختار اتصال اچ تی تی پی۲
یک اتصال HTTP/2 با جدول‌ها، تنظیمات و جریان‌هایش.
نامانگلیسیگونهتوضیح
txtxترابریترابری زیرین.
is_serveris_serverمنطقی = نادرستاین سو سرور است.
encencجدول پویاجدول HPACK برای فرستادن.
decdecجدول پویاجدول HPACK برای دریافت.
locallocalتنظیماتتنظیمات این سو.
remoteremoteتنظیماتتنظیمات طرف مقابل، پس از دست‌دهی.
next_idnext_idصحیح = 1شناسه‌ی جریان بعدی.
streamsstreamsجدول جریان‌هاجریان‌ها.
send_windowsend_windowصحیح = 65535پنجره‌ی فرستادن اتصال.
recv_windowrecv_windowصحیح = 65535پنجره‌ی دریافت اتصال.
goawaygoawayمنطقی = نادرستقاب پایان رسیده یا فرستاده شده.
last_errorlast_errorصحیح = 0آخرین کد خطا.
okokمنطقی = نادرستاتصال سالم است.
pending_streampending_streamصحیح = 0جریانی که بلوک سرآیندش هنوز با قاب ادامه کامل نشده.
pending_blockpending_blockcompress.ByteBufبخش‌های رسیده‌ی آن بلوک.
pending_end_streampending_end_streamمنطقی = نادرستآن سرآیندها جریان را تمام می‌کنند.
pending_trailerspending_trailersمنطقی = نادرستآن سرآیندها پایانی‌اند.

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

قاب Frame

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

روال ریشه:
    ناپایا ت := اچ تی تی پی۲.تنظیمات پیش‌فرض()
    سرچاپ ت.header_table_size، ت.initial_window_size، ت.max_frame_size، ت.enable_push
    ق := اچ تی تی پی۲.ساخت قاب تنظیمات(ت)
    سرچاپ اچ تی تی پی۲.نام نوع قاب(ق.kind)، ق.stream_id، ق.payload.len
    ت.max_frame_size = ۳۲۷۶۸
    سرچاپ اچ تی تی پی۲.اعمال تنظیمات(ت، اچ تی تی پی۲.ساخت قاب تنظیمات(اچ تی تی پی۲.تنظیمات پیش‌فرض()))، ت.max_frame_size
    تایید := اچ تی تی پی۲.ساخت تایید تنظیمات()
    سرچاپ اچ تی تی پی۲.قاب پرچم دارد(تایید، اچ تی تی پی۲.پرچم تایید)
    پ := اچ تی تی پی۲.ساخت به‌روزرسانی پنجره(۳، ۱۰۲۴)
    سرچاپ اچ تی تی پی۲.نام نوع قاب(پ.kind)، اچ تی تی پی۲.مقدار افزایش پنجره(پ)
    ر := اچ تی تی پی۲.ساخت بازنشانی جریان(۵، اچ تی تی پی۲.کد لغو)
    سرچاپ اچ تی تی پی۲.کد خطای قاب(ر)، اچ تی تی پی۲.نام خطا(اچ تی تی پی۲.کد خطای قاب(ر))
    خ := اچ تی تی پی۲.ساخت خداحافظی(۷، اچ تی تی پی۲.کد بدون خطا، "bye")
    سرچاپ اچ تی تی پی۲.نام نوع قاب(خ.kind)، اچ تی تی پی۲.کد خطای قاب(خ)
    پینگ := اچ تی تی پی۲.ساخت پینگ(فشرده سازی.بافر از رشته("12345678")، نادرست)
    سرچاپ اچ تی تی پی۲.نام نوع قاب(پینگ.kind)، پینگ.payload.len
    ناپایا د := اچ تی تی پی۲.قاب جدید(اچ تی تی پی۲.قاب داده، اچ تی تی پی۲.پرچم اتمام جریان، ۱)
    فشرده سازی.افزودن بایت‌ها(د.payload، "سلام" برگردان تهی*، ۸)
    ناپایا سالم := درست
    سرچاپ فشرده سازی.بافر به رشته(اچ تی تی پی۲.داده قاب(د، سالم))، سالم
    ب := اچ تی تی پی۲.کدگذاری قاب(د)
    سرچاپ ب.len، فشرده سازی.دریافت بایت(ب، ۳)
    ناپایا س := اچ تی تی پی۲.قاب جدید(اچ تی تی پی۲.قاب سرصفحه‌ها، اچ تی تی پی۲.پرچم اتمام سرصفحه‌ها، ۱)
    فشرده سازی.افزودن بایت(س.payload، ۱۳۰)
    سرچاپ اچ تی تی پی۲.بلوک سرآیند قاب(س، سالم).len، سالم
    ناپایا ع := فشرده سازی.بافر بایت جدید()
    اچ تی تی پی۲.درج تنظیم(ع، اچ تی تی پی۲.تنظیم بیشینه اندازه قاب، ۱۶۳۸۴)
    سرچاپ ع.len
    اچ تی تی پی۲.آزادسازی قاب(د)
    سرچاپ اچ تی تی پی۲.قاب داده، اچ تی تی پی۲.قاب پینگ، اچ تی تی پی۲.کد خطای پروتکل، اچ تی تی پی۲.اندازه پیش‌فرض قاب، اچ تی تی پی۲.پنجره پیش‌فرض، اچ تی تی پی۲.سقف اندازه قاب
    سرچاپ اچ تی تی پی۲.نام نوع قاب(اچ تی تی پی۲.قاب اولویت)، اچ تی تی پی۲.نام نوع قاب(اچ تی تی پی۲.قاب بازنشانی جریان)، اچ تی تی پی۲.نام نوع قاب(اچ تی تی پی۲.قاب وعده ارسال)
    سرچاپ اچ تی تی پی۲.نام نوع قاب(اچ تی تی پی۲.قاب ترک اتصال)، اچ تی تی پی۲.نام نوع قاب(اچ تی تی پی۲.قاب به‌روزرسانی پنجره)، اچ تی تی پی۲.نام نوع قاب(اچ تی تی پی۲.قاب ادامه)
    سرچاپ اچ تی تی پی۲.تنظیم اندازه جدول سرصفحه، اچ تی تی پی۲.تنظیم فعال‌سازی ارسال، اچ تی تی پی۲.تنظیم بیشینه جریان‌های همزمان، اچ تی تی پی۲.تنظیم اندازه آغازین پنجره، اچ تی تی پی۲.تنظیم بیشینه اندازه فهرست سرصفحه
    سرچاپ اچ تی تی پی۲.نام خطا(اچ تی تی پی۲.کد خطای داخلی)، اچ تی تی پی۲.نام خطا(اچ تی تی پی۲.کد خطای کنترل جریان)، اچ تی تی پی۲.نام خطا(اچ تی تی پی۲.کد مهلت تنظیمات)، اچ تی تی پی۲.نام خطا(اچ تی تی پی۲.کد جریان بسته‌شده)
    سرچاپ اچ تی تی پی۲.نام خطا(اچ تی تی پی۲.کد خطای اندازه قاب)، اچ تی تی پی۲.نام خطا(اچ تی تی پی۲.کد جریان ردشده)، اچ تی تی پی۲.نام خطا(اچ تی تی پی۲.کد خطای فشرده‌سازی)، اچ تی تی پی۲.نام خطا(اچ تی تی پی۲.کد خطای اتصال)
    سرچاپ اچ تی تی پی۲.نام خطا(اچ تی تی پی۲.کد درخواست آرامش)، اچ تی تی پی۲.نام خطا(اچ تی تی پی۲.کد امنیت ناکافی)، اچ تی تی پی۲.نام خطا(اچ تی تی پی۲.کد نیاز به اچ‌تی‌تی‌پی۱۱)
    سرچاپ اچ تی تی پی۲.جریان بیکار، اچ تی تی پی۲.جریان باز، اچ تی تی پی۲.جریان نیمه‌بسته محلی، اچ تی تی پی۲.جریان نیمه‌بسته دور، اچ تی تی پی۲.وضعیت جریان بسته‌شده
    سرچاپ اچ تی تی پی۲.اندازه پیش‌فرض جدول، اچ تی تی پی۲.نتیجه خطا
پایان
خروجی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
ساختار سرآیند
یک سرآیند.
نامانگلیسیگونهتوضیح
namenameرشته = ""نام؛ در HTTP/2 همیشه با حروف کوچک.
valuevalueرشته = ""مقدار.
sensitivesensitiveمنطقی = نادرستحساس است و هرگز در جدول HPACK نمی‌رود؛ برای توکن‌ها و کوکی‌ها.
net-http2-Hpack.salam
واردسازی شبکه.اچ تی تی پی۲
واردسازی فشرده سازی

روال ریشه:
    ناپایا فهرست := اچ تی تی پی۲.فهرست سرآیندها {}
    اچ تی تی پی۲.افزودن سرآیند(فهرست، ":method"، "GET")
    اچ تی تی پی۲.افزودن سرآیند(فهرست، ":path"، "/")
    اچ تی تی پی۲.افزودن سرآیند(فهرست، "user-agent"، "salam")
    اچ تی تی پی۲.افزودن سرآیند حساس(فهرست، "authorization"، "Bearer x")
    سرچاپ اچ تی تی پی۲.تعداد سرآیندها(فهرست)، اچ تی تی پی۲.دریافت سرآیند(فهرست، ":path")، اچ تی تی پی۲.سرآیند دارد(فهرست، "cookie")
    ناپایا فرستنده := اچ تی تی پی۲.جدول پویا جدید(۴۰۹۶)
    ناپایا گیرنده := اچ تی تی پی۲.جدول پویا جدید(۴۰۹۶)
    بلوک := اچ تی تی پی۲.کدگذاری فهرست سرآیند(فرستنده، فهرست، درست)
    سرچاپ بلوک.len، اچ تی تی پی۲.تعداد جدول پویا(فرستنده)، اچ تی تی پی۲.اندازه جدول پویا(فرستنده)
    ناپایا سالم := درست
    خوانده := اچ تی تی پی۲.کدگشایی فهرست سرآیند(گیرنده، بلوک، سالم)
    سرچاپ سالم، خوانده.items.طول()، خوانده.items[۲].name، خوانده.items[۲].value، خوانده.items[۳].sensitive
    بلوک۲ := اچ تی تی پی۲.کدگذاری فهرست سرآیند(فرستنده، فهرست، درست)
    سرچاپ بلوک۲.len < بلوک.len
    ث := اچ تی تی پی۲.دریافت از جدول ثابت(۲)
    سرچاپ ث.name، ث.value، اچ تی تی پی۲.شمار جدول ایستای اچ‌پک، اچ تی تی پی۲.سربار مدخل اچ‌پک
    پ := اچ تی تی پی۲.دریافت از جدول پویا(گیرنده، ۱)
    سرچاپ پ.name
    ناپایا دقیق := نادرست
    سرچاپ اچ تی تی پی۲.جستجوی جدول(گیرنده، ":method"، "GET"، دقیق)، دقیق
    سرچاپ اچ تی تی پی۲.دریافت از جدول(گیرنده، ۶۲، سالم).name، سالم
    ناپایا ب := فشرده سازی.بافر بایت جدید()
    اچ تی تی پی۲.کدگذاری تغییر اندازه جدول(ب، فرستنده، ۲۵۶)
    اچ تی تی پی۲.تنظیم اندازه جدول(گیرنده، ۲۵۶)
    سرچاپ ب.len، فرستنده.max_size، گیرنده.max_size
    ناپایا ب۲ := فشرده سازی.بافر بایت جدید()
    اچ تی تی پی۲.کدگذاری سرآیند(ب۲، فرستنده، اچ تی تی پی۲.سرآیند جدید("x-id"، "7")، نادرست)
    اچ تی تی پی۲.درج در جدول پویا(گیرنده، اچ تی تی پی۲.سرآیند حساس("k"، "v"))
    سرچاپ ب۲.len، اچ تی تی پی۲.تعداد جدول پویا(گیرنده)
پایان
خروجی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

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

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

جدول پویا DynTable

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

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

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

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

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

جعبه امن TlsBox

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

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

تنظیمات Settings

ساختار تنظیمات
تنظیمات یک سوی اتصال.
نامانگلیسیگونهتوضیح
header_table_sizeheader_table_sizeصحیح = 4096اندازه‌ی جدول HPACK.
enable_pushenable_pushصحیح = 1ارسال بی‌درخواست؛ ۱ یا ۰.
max_concurrent_streamsmax_concurrent_streamsصحیح = -1بیشترین جریان همزمان؛ ۱- یعنی بی‌حد.
initial_window_sizeinitial_window_sizeصحیح = 65535پنجره‌ی آغازین.
max_frame_sizemax_frame_sizeصحیح = 16384بیشترین اندازه‌ی قاب.
max_header_list_sizemax_header_list_sizeصحیح = -1بیشترین اندازه‌ی سرآیندها؛ ۱- یعنی بی‌حد.

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

ترابری Transport

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

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: 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
واردسازی شبکه.اچ تی تی پی۲
واردسازی شبکه.تی سی پی شبکه
واردسازی فشرده سازی

ناپایا سرور := تی سی پی شبکه.سرور {}

روال پاسخ‌گو():
    ا := تی سی پی شبکه.پذیرش(سرور)
    ناپایا ت := اچ تی تی پی۲.ترابری ساده(ا.fd)
    سرچاپ "سرور پیش‌درآمد:"، اچ تی تی پی۲.خواندن پیش‌درآمد(ت)
    ق := اچ تی تی پی۲.خواندن قاب(ت، اچ تی تی پی۲.اندازه پیش‌فرض قاب)
    سرچاپ "سرور قاب:"، ق.ok، اچ تی تی پی۲.نام نوع قاب(ق.kind)، ق.stream_id، فشرده سازی.بافر به رشته(ق.payload)
    اچ تی تی پی۲.بستن ترابری(ت)
پایان

روال ریشه:
    سرور = تی سی پی شبکه.پیوند(۰)
    ن := spawn(پاسخ‌گو)
    ا := تی سی پی شبکه.شماره گیری("127.0.0.1"، تی سی پی شبکه.درگاه(سرور))
    ناپایا ت := اچ تی تی پی۲.ترابری ساده(ا.fd)
    _ := اچ تی تی پی۲.نوشتن پیش‌درآمد(ت)
    ناپایا د := اچ تی تی پی۲.قاب جدید(اچ تی تی پی۲.قاب داده، ۰، ۳)
    فشرده سازی.افزودن بافر(د.payload، فشرده سازی.بافر از رشته("hi"))
    _ := اچ تی تی پی۲.نوشتن قاب(ت، د)
    join(ن)
    اچ تی تی پی۲.بستن ترابری(ت)
    تی سی پی شبکه.بستن سرور(سرور)
    سرچاپ اچ تی تی پی۲.پیش‌درآمد اچ‌تی‌تی‌پی۲.طول()
پایان
خروجیسرور پیش‌درآمد: 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

انتقال ساده H2_TRANSPORT_PLAIN

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

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

انتقال امن H2_TRANSPORT_TLS

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

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

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

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

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

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

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

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http2-Hpack.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

ترابری ساده 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

جدول پویا جدید 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