Protoc...:Frame(3pm)

πŸ“¦
version 1.14 Β· 5 versions
, in fedora 43, fedora 44

✨ NOTES ✨

okay bestie, so this page is Protoc...:Frame(3pm) πŸ’– it lives in the User Contributed Perl Documentation, and honestly? it's just one big vibe check for HTTP/2 frames β€” which frame types are allowed to carry which flags, and whether they get to have a stream id. that's the whole thing. no cap. πŸ¦‹


πŸŽ€ Frame Types vs Flags and Stream ID πŸŽ€

the original says it plain: this table represents possible combinations of frame types and flags. and the last column? that's the Stream ID of frame types, where:

  • x β€” means sid >= 1 πŸ‘‘
  • 0 β€” means sid = 0 🌸

so first, the flag columns and their values, because you're gonna need these keys to read anything below:

  • END_STREAM β€” 0x1
  • ACK β€” 0x1
  • END_HEADERS β€” 0x4
  • PADDED β€” 0x8
  • PRIORITY β€” 0x20
  • and then a stream id (a value), which is that last column 🫢
yes, END_STREAM and ACK are both 0x1. that's not a typo, that's just how the table is, bestie. different flags, same bit. iconic behavior fr fr.

now the main event β€” every frame type, one by one, nothing skipped πŸ’…

  • DATA πŸ“ β€” flags it uses: END_STREAM (0x1), PADDED (0x8). flags it does not use: ACK (0x1), END_HEADERS (0x4), PRIORITY (0x20). stream id: x (so sid >= 1).
  • HEADERS ✨ β€” flags it uses: END_STREAM (0x1), END_HEADERS (0x4), PADDED (0x8), PRIORITY (0x20). flags it does not use: ACK (0x1). stream id: x (so sid >= 1). look at her, collecting flags like pokΓ©mon.
  • PRIORITY πŸ‘‘ β€” flags it uses: none of them. stream id: x (so sid >= 1).
  • RST_STREAM πŸ’€ β€” flags it uses: none of them. stream id: x (so sid >= 1).
  • SETTINGS πŸŽ€ β€” flags it uses: ACK (0x1). flags it does not use: END_STREAM (0x1), END_HEADERS (0x4), PADDED (0x8), PRIORITY (0x20). stream id: 0 (so sid = 0).
  • PUSH_PROMISE 🌈 β€” flags it uses: END_HEADERS (0x4), PADDED (0x8). flags it does not use: END_STREAM (0x1), ACK (0x1), PRIORITY (0x20). stream id: x (so sid >= 1).
  • PING πŸ¦‹ β€” flags it uses: ACK (0x1). flags it does not use: END_STREAM (0x1), END_HEADERS (0x4), PADDED (0x8), PRIORITY (0x20). stream id: 0 (so sid = 0).
  • GOAWAY πŸ™ˆ β€” flags it uses: none of them. stream id: 0 (so sid = 0).
  • WINDOW_UPDATE ⭐ β€” flags it uses: none of them. stream id: 0/x β€” yeah, either one, she's flexible like that.
  • CONTINUATION 🧚 β€” flags it uses: END_HEADERS (0x4), PADDED (0x8). flags it does not use: END_STREAM (0x1), ACK (0x1), PRIORITY (0x20). stream id: x (so sid >= 1).

and that's the whole table, translated but never diluted πŸ’œ every x, every 0, every 0/x, every hex value β€” all still exactly where they belong.

quick recap of the legend because repetition is self-care: x = sid >= 1, 0 = sid = 0. you got this. ✨

okay that's a wrap, my love 🫢 this was Protoc...:Frame(3pm) from the User Contributed Perl Documentation, sitting at perl v5.42.3, dated 2026-09-04. periodt. πŸ’…

πŸ“¦ where this page comes from