The toy chunked example keeps its boundary narrow.

highlighted = computed this step

What this toy model checks

The trust boundary parses one GET request, one chunked response, two data chunks, one zero chunk, and the decoded body.

recompute chunked body\text{recompute chunked body}
Chunked honesty boundaryThe chunk sizes, decoded body, and terminator checks are recomputed from pinned response bytes.Chunked honesty boundary - GET /stream chunks decode to hi! (3 bytes)sectionnamevaluecheckrequest linemethodGETparsedrequest linepath/streamparsedrequest lineversionHTTP/1.1parsedheaderHostapi.exampleexactstatusversionHTTP/1.1parsedstatusstatus200 OKokheaderTransfer-EncodingchunkedchunkedheaderContent-Lengthabsentnot usedchunk 1size token2hex sizechunk 1decimal size2convertedchunk 1data displayhisafe display formchunk 1data hex6869pinned byteschunk 1roledatastream partchunk 2size token1hex sizechunk 2decimal size1convertedchunk 2data displayexclamation marksafe display formchunk 2data hex21pinned byteschunk 2roledatastream partchunk 3size token0hex sizechunk 3decimal size0convertedchunk 3data displayend markersafe display formchunk 3data hexno datapinned byteschunk 3roleendstream partdecoded bodydisplayhi!safe display formdecoded bodyexact hex686921pinned bytesdecoded bodybyte length3countedcheckfirst chunk bytes2chunk sizechecksecond chunk bytes1chunk sizecheckdecoded body bytes3sumcheckzero chunk endsyesterminatorcheckContent-Lengthabsentabsent

Honesty boundary

NOTE: toy HTTP chunked transfer only; not trailers, chunk extensions, compression, backpressure, partial reads, proxies, caches, TLS records, HTTP/2 or HTTP/3 framing, content sniffing, frameworks, or production server config.

toy chunked transfer only\text{toy chunked transfer only}
Chunked honesty boundaryThe chunk sizes, decoded body, and terminator checks are recomputed from pinned response bytes.Chunked honesty boundary - GET /stream chunks decode to hi! (3 bytes)sectionnamevaluecheckrequest linemethodGETparsedrequest linepath/streamparsedrequest lineversionHTTP/1.1parsedheaderHostapi.exampleexactstatusversionHTTP/1.1parsedstatusstatus200 OKokheaderTransfer-EncodingchunkedchunkedheaderContent-Lengthabsentnot usedchunk 1size token2hex sizechunk 1decimal size2convertedchunk 1data displayhisafe display formchunk 1data hex6869pinned byteschunk 1roledatastream partchunk 2size token1hex sizechunk 2decimal size1convertedchunk 2data displayexclamation marksafe display formchunk 2data hex21pinned byteschunk 2roledatastream partchunk 3size token0hex sizechunk 3decimal size0convertedchunk 3data displayend markersafe display formchunk 3data hexno datapinned byteschunk 3roleendstream partdecoded bodydisplayhi!safe display formdecoded bodyexact hex686921pinned bytesdecoded bodybyte length3countedcheckfirst chunk bytes2chunk sizechecksecond chunk bytes1chunk sizecheckdecoded body bytes3sumcheckzero chunk endsyesterminatorcheckContent-Lengthabsentabsent

No client compute

The page shows already validated rows. It does not parse chunk lines in browser code.

static validated rows\text{static validated rows}
Chunked honesty boundaryThe chunk sizes, decoded body, and terminator checks are recomputed from pinned response bytes.Chunked honesty boundary - GET /stream chunks decode to hi! (3 bytes)sectionnamevaluecheckrequest linemethodGETparsedrequest linepath/streamparsedrequest lineversionHTTP/1.1parsedheaderHostapi.exampleexactstatusversionHTTP/1.1parsedstatusstatus200 OKokheaderTransfer-EncodingchunkedchunkedheaderContent-Lengthabsentnot usedchunk 1size token2hex sizechunk 1decimal size2convertedchunk 1data displayhisafe display formchunk 1data hex6869pinned byteschunk 1roledatastream partchunk 2size token1hex sizechunk 2decimal size1convertedchunk 2data displayexclamation marksafe display formchunk 2data hex21pinned byteschunk 2roledatastream partchunk 3size token0hex sizechunk 3decimal size0convertedchunk 3data displayend markersafe display formchunk 3data hexno datapinned byteschunk 3roleendstream partdecoded bodydisplayhi!safe display formdecoded bodyexact hex686921pinned bytesdecoded bodybyte length3countedcheckfirst chunk bytes2chunk sizechecksecond chunk bytes1chunk sizecheckdecoded body bytes3sumcheckzero chunk endsyesterminatorcheckContent-Lengthabsentabsent

Summary

Chunked transfer can send body bytes in pieces, and a zero-size chunk marks the end.

zero chunk ends\text{zero chunk ends}
Chunked honesty boundaryThe chunk sizes, decoded body, and terminator checks are recomputed from pinned response bytes.Chunked honesty boundary - GET /stream chunks decode to hi! (3 bytes)sectionnamevaluecheckrequest linemethodGETparsedrequest linepath/streamparsedrequest lineversionHTTP/1.1parsedheaderHostapi.exampleexactstatusversionHTTP/1.1parsedstatusstatus200 OKokheaderTransfer-EncodingchunkedchunkedheaderContent-Lengthabsentnot usedchunk 1size token2hex sizechunk 1decimal size2convertedchunk 1data displayhisafe display formchunk 1data hex6869pinned byteschunk 1roledatastream partchunk 2size token1hex sizechunk 2decimal size1convertedchunk 2data displayexclamation marksafe display formchunk 2data hex21pinned byteschunk 2roledatastream partchunk 3size token0hex sizechunk 3decimal size0convertedchunk 3data displayend markersafe display formchunk 3data hexno datapinned byteschunk 3roleendstream partdecoded bodydisplayhi!safe display formdecoded bodyexact hex686921pinned bytesdecoded bodybyte length3countedcheckfirst chunk bytes2chunk sizechecksecond chunk bytes1chunk sizecheckdecoded body bytes3sumcheckzero chunk endsyesterminatorcheckContent-Lengthabsentabsent