์ธํ„ฐ๋„ท ์—”์ง€๋‹ˆ์–ด๋ง ํƒœ์Šคํฌ ํฌ์Šค (IETF) M. Bishop, ํŽธ์ง‘์ž
์š”์ฒญ ์˜๊ฒฌ(Request for Comments): 9114 Akamai
๋ถ„๋ฅ˜: ํ‘œ์ค€ ํŠธ๋ž™ 2022๋…„ 6์›”
ISSN: 2070-1721

HTTP/3


์š”์•ฝ

QUIC ์ „์†ก ํ”„๋กœํ† ์ฝœ์€ ์ŠคํŠธ๋ฆผ ๋‹ค์ค‘ํ™”, ์ŠคํŠธ๋ฆผ๋ณ„ ํ๋ฆ„ ์ œ์–ด, ์ €์ง€์—ฐ ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ๊ณผ ๊ฐ™์ด HTTP ์ „์†ก์—์„œ ๋ฐ”๋žŒ์งํ•œ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ๋Š” QUIC ์œ„์—์„œ์˜ HTTP ์˜๋ฏธ ๋งคํ•‘์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ๋ฌธ์„œ๋Š” QUIC์— ์˜ํ•ด ํฌํ•จ๋œ HTTP/2 ๊ธฐ๋Šฅ๋“ค์„ ์‹๋ณ„ํ•˜๊ณ  HTTP/2 ํ™•์žฅ ๊ธฐ๋Šฅ์„ HTTP/3๋กœ ์ด์‹ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฉ”๋ชจ์˜ ์ƒํƒœ

์ด ๋ฌธ์„œ๋Š” ์ธํ„ฐ๋„ท ํ‘œ์ค€ ํŠธ๋ž™ ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์„œ๋Š” ์ธํ„ฐ๋„ท ์—”์ง€๋‹ˆ์–ด๋ง ํƒœ์Šคํฌ ํฌ์Šค(IETF)์˜ ์‚ฐ๋ฌผ์ž…๋‹ˆ๋‹ค. ์ด๋Š” IETF ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ํ•ฉ์˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๊ณต๊ฐœ ๊ฒ€ํ† ๋ฅผ ๊ฑฐ์ณค์œผ๋ฉฐ ์ธํ„ฐ๋„ท ์—”์ง€๋‹ˆ์–ด๋ง ์šด์˜ ๊ทธ๋ฃน(IESG)์— ์˜ํ•ด ์ถœํŒ ์Šน์ธ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ์ธํ„ฐ๋„ท ํ‘œ์ค€์— ๊ด€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๋Š” RFC 7841์˜ ์„น์…˜ 2์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์„œ์˜ ํ˜„์žฌ ์ƒํƒœ, ์ •์˜คํ‘œ ๋ฐ ํ”ผ๋“œ๋ฐฑ ์ œ๊ณต ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ •๋ณด๋Š” https://www.rfc-editor.org/info/rfc9114์—์„œ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Copyright Notice

Copyright (c) 2022 IETF Trust and the persons identified as the document authors. All rights reserved.

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.


1. ์†Œ๊ฐœ

HTTP ์˜๋ฏธ๋ก ([HTTP])์€ ์ธํ„ฐ๋„ท์—์„œ ๊ด‘๋ฒ”์œ„ํ•œ ์„œ๋น„์Šค์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜๋ฏธ๋ก ์€ ๋ณดํ†ต HTTP/1.1 ๋ฐ HTTP/2์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. HTTP/1.1์€ ๋‹ค์–‘ํ•œ ์ „์†ก ๋ฐ ์„ธ์…˜ ๊ณ„์ธต ์œ„์—์„œ ์‚ฌ์šฉ๋˜์–ด ์™”๊ณ , HTTP/2๋Š” ์ฃผ๋กœ TLS ์œ„์˜ TCP์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜์–ด ์™”์Šต๋‹ˆ๋‹ค. HTTP/3์€ ๋™์ผํ•œ ์˜๋ฏธ๋ก ์„ ์ƒˆ๋กœ์šด ์ „์†ก ํ”„๋กœํ† ์ฝœ์ธ QUIC ์œ„์—์„œ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

1.1. HTTP์˜ ์ด์ „ ๋ฒ„์ „

HTTP/1.1 ([HTTP/1.1])์€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ ํ…์ŠคํŠธ ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ HTTP ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ตํ™˜์€ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ฉ”์‹œ์ง€ ํฌ๋งท์— ๊ณต๋ฐฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ํŒŒ์‹ฑ ๋ณต์žก์„ฑ๊ณผ ๋ณ€ํ˜•๋œ ๋™์ž‘์— ๋Œ€ํ•œ ๊ณผ๋„ํ•œ ๊ด€์šฉ์œผ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.

HTTP/1.1์—๋Š” ๋‹ค์ค‘ํ™” ๊ณ„์ธต์ด ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ์—ฌ๋Ÿฌ TCP ์—ฐ๊ฒฐ์ด ๋ณ‘๋ ฌ๋กœ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์ž์ฃผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ TCP๊ฐ€ ์—ฌ๋Ÿฌ ์—ฐ๊ฒฐ ๊ฐ„์— ํ˜ผ์žก ์ œ์–ด๋ฅผ ๊ณต์œ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Š” ํ˜ผ์žก ์ œ์–ด ๋ฐ ๋„คํŠธ์›Œํฌ ํšจ์œจ์„ฑ์— ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค.

HTTP/2 ([HTTP/2])๋Š” ์ „์†ก ๊ณ„์ธต์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์ง€์—ฐ ์‹œ๊ฐ„์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์ด์ง„ ํ”„๋ ˆ์ด๋ฐ ๋ฐ ๋‹ค์ค‘ํ™” ๊ณ„์ธต์„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ HTTP/2์˜ ๋ณ‘๋ ฌ์  ๋‹ค์ค‘ํ™” ํŠน์„ฑ์€ TCP์˜ ์†์‹ค ๋ณต๊ตฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ๋ณด์ด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ํŒจํ‚ท ์†์‹ค์ด๋‚˜ ์žฌ์ •๋ ฌ์ด ๋ฐœ์ƒํ•˜๋ฉด ํ•ด๋‹น ์†์‹ค ํŒจํ‚ท๊ณผ ์ง์ ‘์ ์ธ ๊ด€๋ จ์ด ์—†๋Š” ํ™œ์„ฑ ํŠธ๋žœ์žญ์…˜๋“ค๋„ ์ •์ง€(stall)๋ฅผ ๊ฒช๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

1.2. QUIC๋กœ์˜ ์œ„์ž„

QUIC ์ „์†ก ํ”„๋กœํ† ์ฝœ์€ HTTP/2 ํ”„๋ ˆ์ด๋ฐ ๊ณ„์ธต์ด ์ œ๊ณตํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•œ ์ŠคํŠธ๋ฆผ ๋‹ค์ค‘ํ™” ๋ฐ ์ŠคํŠธ๋ฆผ๋ณ„ ํ๋ฆ„ ์ œ์–ด๋ฅผ ํ†ตํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆผ ์ˆ˜์ค€์˜ ์‹ ๋ขฐ์„ฑ(reliability)๊ณผ ์—ฐ๊ฒฐ ์ „์ฒด์— ๋Œ€ํ•œ ํ˜ผ์žก ์ œ์–ด๋ฅผ ์ œ๊ณตํ•จ์œผ๋กœ์จ, QUIC๋Š” TCP ๋งคํ•‘๊ณผ ๋น„๊ตํ•˜์—ฌ HTTP ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. QUIC์€ ๋˜ํ•œ ์ „์†ก ๊ณ„์ธต์—์„œ TLS 1.3([TLS])์„ ํ†ตํ•ฉํ•˜์—ฌ, TCP ์œ„์—์„œ TLS๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•œ ๊ธฐ๋ฐ€์„ฑ ๋ฐ ๋ฌด๊ฒฐ์„ฑ์„ ์ œ๊ณตํ•˜๋ฉด์„œ TCP Fast Open([TFO])์˜ ํ–ฅ์ƒ๋œ ์—ฐ๊ฒฐ ์„ค์ • ์ง€์—ฐ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์„œ๋Š” QUIC ์ „์†ก ํ”„๋กœํ† ์ฝœ ์œ„์—์„œ์˜ HTTP ์˜๋ฏธ๋ก  ๋งคํ•‘์ธ HTTP/3๋ฅผ ์ •์˜ํ•˜๋ฉฐ, ์„ค๊ณ„๋Š” HTTP/2์— ํฌ๊ฒŒ ์˜์กดํ•ฉ๋‹ˆ๋‹ค. HTTP/3๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ธฐ๋ฐ€์„ฑ๊ณผ ๋ฌด๊ฒฐ์„ฑ ๋ณดํ˜ธ, ํ”ผ์–ด ์ธ์ฆ, ๊ทธ๋ฆฌ๊ณ  ์ŠคํŠธ๋ฆผ๋ณ„๋กœ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๊ณ  ์ˆœ์„œํ™”๋œ ์ „๋‹ฌ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด QUIC์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆผ ์ˆ˜๋ช… ๋ฐ ํ๋ฆ„ ์ œ์–ด ๋ฌธ์ œ๋ฅผ QUIC์— ์œ„์ž„ํ•˜๋Š” ๋™์•ˆ์—๋„, ๊ฐ ์ŠคํŠธ๋ฆผ์—์„œ๋Š” HTTP/2 ํ”„๋ ˆ์ด๋ฐ๊ณผ ์œ ์‚ฌํ•œ ์ด์ง„ ํ”„๋ ˆ์ด๋ฐ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ HTTP/2 ๊ธฐ๋Šฅ์€ QUIC์— ์˜ํ•ด ํฌํ•จ(subsumed)๋˜๋ฉฐ, ๋‹ค๋ฅธ ๊ธฐ๋Šฅ๋“ค์€ QUIC ์œ„์— ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.

QUIC์€ [QUIC-TRANSPORT]์—์„œ ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค. HTTP/2์˜ ์ „์ฒด ์„ค๋ช…์€ [HTTP/2]๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.


2. HTTP/3 ํ”„๋กœํ† ์ฝœ ๊ฐœ์š”

HTTP/3๋Š” QUIC ์ „์†ก ํ”„๋กœํ† ์ฝœ๊ณผ HTTP/2์™€ ์œ ์‚ฌํ•œ ๋‚ด๋ถ€ ํ”„๋ ˆ์ด๋ฐ ๊ณ„์ธต์„ ์‚ฌ์šฉํ•˜์—ฌ HTTP ์˜๋ฏธ๋ก ์„ ์œ„ํ•œ ์ „์†ก์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํŠน์ • ์—”๋“œํฌ์ธํŠธ์— HTTP/3 ์„œ๋ฒ„๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜๋ฉด QUIC ์—ฐ๊ฒฐ์„ ์—ฝ๋‹ˆ๋‹ค. QUIC์€ ํ”„๋กœํ† ์ฝœ ํ˜‘์ƒ, ์ŠคํŠธ๋ฆผ ๊ธฐ๋ฐ˜ ๋‹ค์ค‘ํ™” ๋ฐ ํ๋ฆ„ ์ œ์–ด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. HTTP/3 ์—”๋“œํฌ์ธํŠธ์˜ ๊ฒ€์ƒ‰์€ ์„น์…˜ 3.1์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ ์ŠคํŠธ๋ฆผ ๋‚ด์—์„œ HTTP/3 ํ†ต์‹ ์˜ ๊ธฐ๋ณธ ๋‹จ์œ„๋Š” ํ”„๋ ˆ์ž„(์„น์…˜ 7.2)์ž…๋‹ˆ๋‹ค. ๊ฐ ํ”„๋ ˆ์ž„ ์œ ํ˜•์€ ์„œ๋กœ ๋‹ค๋ฅธ ๋ชฉ์ ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, HEADERS ๋ฐ DATA ํ”„๋ ˆ์ž„์€ HTTP ์š”์ฒญ๊ณผ ์‘๋‹ต์˜ ๊ธฐ์ดˆ๋ฅผ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค(์„น์…˜ 4.1). ์—ฐ๊ฒฐ ์ „์ฒด์— ์ ์šฉ๋˜๋Š” ํ”„๋ ˆ์ž„์€ ์ „์šฉ ์ œ์–ด ์ŠคํŠธ๋ฆผ์—์„œ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

์š”์ฒญ์˜ ๋‹ค์ค‘ํ™”๋Š” QUIC ์ŠคํŠธ๋ฆผ ์ถ”์ƒํ™”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋˜๋ฉฐ, ์ด๋Š” ์„น์…˜ 2์™€ [QUIC-TRANSPORT]์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์š”์ฒญ-์‘๋‹ต ์Œ์€ ๋‹จ์ผ QUIC ์ŠคํŠธ๋ฆผ์„ ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆผ๋“ค์€ ์„œ๋กœ ๋…๋ฆฝ์ ์ด๋ฏ€๋กœ, ํ•˜๋‚˜์˜ ์ŠคํŠธ๋ฆผ์ด ์ฐจ๋‹จ๋˜๊ฑฐ๋‚˜ ํŒจํ‚ท ์†์‹ค์„ ๊ฒช๋”๋ผ๋„ ๋‹ค๋ฅธ ์ŠคํŠธ๋ฆผ์˜ ์ง„ํ–‰์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์„œ๋ฒ„ ํ‘ธ์‹œ๋Š” HTTP/2([HTTP/2])์—์„œ ๋„์ž…๋œ ์ƒํ˜ธ์ž‘์šฉ ๋ชจ๋“œ๋กœ์„œ, ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•ด๋‹น ์š”์ฒญ์„ ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜์—ฌ ์š”์ฒญ-์‘๋‹ต ๊ตํ™˜์„ ํด๋ผ์ด์–ธํŠธ๋กœ ํ‘ธ์‹œํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ž ์žฌ์  ์ง€์—ฐ ๊ฐœ์„ ์„ ์œ„ํ•ด ๋„คํŠธ์›Œํฌ ์‚ฌ์šฉ์„ ๊ฑฐ๋ž˜(trade-off)ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„ ํ‘ธ์‹œ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด PUSH_PROMISE, MAX_PUSH_ID, ๋ฐ CANCEL_PUSH์™€ ๊ฐ™์€ ์—ฌ๋Ÿฌ HTTP/3 ํ”„๋ ˆ์ž„์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

HTTP/2์—์„œ์™€ ๊ฐ™์ด ์š”์ฒญ ๋ฐ ์‘๋‹ต ํ•„๋“œ๋Š” ์ „์†ก์„ ์œ„ํ•ด ์••์ถ•๋ฉ๋‹ˆ๋‹ค. HPACK([HPACK])์€ ์••์ถ•๋œ ํ•„๋“œ ์„น์…˜์˜ ์ˆœ์ฐจ์  ์ „์†ก์— ์˜์กดํ•˜๋Š”๋ฐ(์ด๋Š” QUIC์ด ๋ณด์žฅํ•˜์ง€ ์•Š๋Š” ํŠน์„ฑ), HTTP/3๋Š” HPACK์„ QPACK([QPACK])์œผ๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. QPACK์€ ํ•„๋“œ ํ…Œ์ด๋ธ” ์ƒํƒœ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•ด ๋ณ„๋„์˜ ๋‹จ๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ์„ ์‚ฌ์šฉํ•˜๊ณ , ์ธ์ฝ”๋”ฉ๋œ ํ•„๋“œ ์„น์…˜์€ ํ…Œ์ด๋ธ”์„ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ  ๊ทธ ์ƒํƒœ๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.

2.1. ๋ฌธ์„œ ๊ตฌ์„ฑ

๋‹ค์Œ ์„น์…˜๋“ค์€ HTTP/3 ์—ฐ๊ฒฐ์˜ ์ˆ˜๋ช… ์ฃผ๊ธฐ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๊ฐœ์š”๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:

์™€์ด์–ด ํ”„๋กœํ† ์ฝœ์˜ ์„ธ๋ถ€์‚ฌํ•ญ๊ณผ ์ „์†ก๊ณผ์˜ ์ƒํ˜ธ์ž‘์šฉ์€ ์ดํ›„ ์„น์…˜๋“ค์—์„œ ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค:

์ถ”๊ฐ€ ์ž์›์€ ๋ฌธ์„œ์˜ ๋งˆ์ง€๋ง‰ ์„น์…˜๋“ค์— ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค:

  • "HTTP/3 ํ™•์žฅ" (์„น์…˜ 9)์€ ํ–ฅํ›„ ๋ฌธ์„œ์—์„œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์–ด๋–ป๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  • HTTP/2์™€ HTTP/3 ๊ฐ„์˜ ๋ณด๋‹ค ์ž์„ธํ•œ ๋น„๊ต๋Š” ๋ถ€๋ก A์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2.2. ๊ด€๋ก€ ๋ฐ ์šฉ์–ด

์ด ๋ฌธ์„œ์—์„œ ํ‚ค์›Œ๋“œ "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", ๋ฐ "OPTIONAL"์€ ๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒฝ์šฐ์— ํ•œํ•ด BCP 14์˜ [RFC2119] ๋ฐ [RFC8174]์— ์„ค๋ช…๋œ ๋Œ€๋กœ ํ•ด์„๋ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์„œ๋Š” [QUIC-TRANSPORT]์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ€๋ณ€ ๊ธธ์ด ์ •์ˆ˜ ์ธ์ฝ”๋”ฉ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์šฉ์–ด๋“ค์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค:

์ค‘๋‹จ(abort):
์˜ค๋ฅ˜ ์ƒํƒœ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ๊ฒฐ ๋˜๋Š” ์ŠคํŠธ๋ฆผ์˜ ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ์ข…๋ฃŒ์ž…๋‹ˆ๋‹ค.
ํด๋ผ์ด์–ธํŠธ(client):
HTTP/3 ์—ฐ๊ฒฐ์„ ์‹œ์ž‘ํ•˜๋Š” ์—”๋“œํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” HTTP ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  HTTP ์‘๋‹ต์„ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.
์—ฐ๊ฒฐ(connection):
QUIC์„ ์ „์†ก ํ”„๋กœํ† ์ฝœ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋‘ ์—”๋“œํฌ์ธํŠธ ๊ฐ„์˜ ์ „์†ก ๊ณ„์ธต ์—ฐ๊ฒฐ์ž…๋‹ˆ๋‹ค.
์—ฐ๊ฒฐ ์˜ค๋ฅ˜(connection error)
:
์ „์ฒด HTTP/3 ์—ฐ๊ฒฐ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.
์—”๋“œํฌ์ธํŠธ(endpoint):
์—ฐ๊ฒฐ์˜ ํด๋ผ์ด์–ธํŠธ ๋˜๋Š” ์„œ๋ฒ„ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.
ํ”„๋ ˆ์ž„(frame):
ํ—ค๋”์™€ ํ”„๋ ˆ์ž„ ์œ ํ˜•์— ๋”ฐ๋ผ ๊ตฌ์กฐํ™”๋œ ๊ฐ€๋ณ€ ๊ธธ์ด ๋ฐ”์ดํŠธ ์‹œํ€€์Šค๋กœ ๊ตฌ์„ฑ๋œ HTTP/3์—์„œ ์ŠคํŠธ๋ฆผ์ƒ์˜ ๊ฐ€์žฅ ์ž‘์€ ํ†ต์‹  ๋‹จ์œ„์ž…๋‹ˆ๋‹ค.
์ด ๋ฌธ์„œ์™€ [QUIC-TRANSPORT] ๋ชจ๋‘์— "ํ”„๋ ˆ์ž„"์ด๋ผ ๋ถˆ๋ฆฌ๋Š” ํ”„๋กœํ† ์ฝœ ์š”์†Œ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. [QUIC-TRANSPORT]์˜ ํ”„๋ ˆ์ž„์ด ์ฐธ์กฐ๋  ๋•Œ๋Š” ํ”„๋ ˆ์ž„ ์ด๋ฆ„ ์•ž์— "QUIC"์ด ๋ถ™์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, "QUIC CONNECTION_CLOSE frames". ์ด ์ ‘๋‘์‚ฌ๊ฐ€ ์—†๋Š” ์ฐธ์กฐ๋Š” ์„น์…˜ 7.2์—์„œ ์ •์˜๋œ ํ”„๋ ˆ์ž„์„ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.
HTTP/3 ์—ฐ๊ฒฐ(HTTP/3 connection):
ํ˜‘์ƒ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœํ† ์ฝœ์ด HTTP/3์ธ QUIC ์—ฐ๊ฒฐ์ž…๋‹ˆ๋‹ค.
ํ”ผ์–ด(peer):
์—”๋“œํฌ์ธํŠธ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋…ผํ•  ๋•Œ "ํ”ผ์–ด"๋Š” ๋…ผ์˜์˜ ์ฃผ์š” ๋Œ€์ƒ์—์„œ ์›๊ฒฉ์— ์žˆ๋Š” ์—”๋“œํฌ์ธํŠธ๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.
์ˆ˜์‹ ์ž(receiver):
ํ”„๋ ˆ์ž„์„ ์ˆ˜์‹ ํ•˜๋Š” ์—”๋“œํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค.
์†ก์‹ ์ž(sender):
ํ”„๋ ˆ์ž„์„ ์ „์†กํ•˜๋Š” ์—”๋“œํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค.
์„œ๋ฒ„(server):
HTTP/3 ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฝํ•˜๋Š” ์—”๋“œํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” HTTP ์š”์ฒญ์„ ์ˆ˜์‹ ํ•˜๊ณ  HTTP ์‘๋‹ต์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
์ŠคํŠธ๋ฆผ(stream):
QUIC ์ „์†ก์ด ์ œ๊ณตํ•˜๋Š” ์–‘๋ฐฉํ–ฅ ๋˜๋Š” ๋‹จ๋ฐฉํ–ฅ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์ž…๋‹ˆ๋‹ค. HTTP/3 ์—ฐ๊ฒฐ ๋‚ด์˜ ๋ชจ๋“  ์ŠคํŠธ๋ฆผ์€ "HTTP/3 ์ŠคํŠธ๋ฆผ"์œผ๋กœ ๊ฐ„์ฃผ๋  ์ˆ˜ ์žˆ์ง€๋งŒ, HTTP/3 ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ์ŠคํŠธ๋ฆผ ์œ ํ˜•์ด ์ •์˜๋ฉ๋‹ˆ๋‹ค.
์ŠคํŠธ๋ฆผ ์˜ค๋ฅ˜(stream error)
:
๊ฐœ๋ณ„ ์ŠคํŠธ๋ฆผ์ƒ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜์ค€ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.

"์ฝ˜ํ…์ธ (content)"๋ผ๋Š” ์šฉ์–ด๋Š” RFC 9110์˜ ์„น์…˜ 6.4์—์„œ ์ •์˜๋ฉ๋‹ˆ๋‹ค ([HTTP]).

๋งˆ์ง€๋ง‰์œผ๋กœ, "๋ฆฌ์†Œ์Šค(resource)", "๋ฉ”์‹œ์ง€(message)", "์œ ์ € ์—์ด์ „ํŠธ(user agent)", "์˜ค๋ฆฌ์ง„ ์„œ๋ฒ„(origin server)", "๊ฒŒ์ดํŠธ์›จ์ด(gateway)", "์ค‘๊ณ„์ž(intermediary)", "ํ”„๋ก์‹œ(proxy)", ๋ฐ "ํ„ฐ๋„(tunnel)"์ด๋ผ๋Š” ์šฉ์–ด๋“ค์€ RFC 9110์˜ ์„น์…˜ 3์—์„œ ์ •์˜๋ฉ๋‹ˆ๋‹ค ([HTTP]).

์ด ๋ฌธ์„œ์˜ ํŒจํ‚ท ๋‹ค์ด์–ด๊ทธ๋žจ์€ ํ•„๋“œ์˜ ์ˆœ์„œ์™€ ํฌ๊ธฐ๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด RFC 9000์˜ ์„น์…˜ 1.3์— ์ •์˜๋œ ํ˜•์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค ([QUIC-TRANSPORT]).


3. ์—ฐ๊ฒฐ ์„ค์ • ๋ฐ ๊ด€๋ฆฌ

3.1. HTTP/3 ์—”๋“œํฌ์ธํŠธ ๊ฒ€์ƒ‰

HTTP๋Š” ๊ถŒํ•œ ์žˆ๋Š” ์‘๋‹ต(authoritative response)์ด๋ผ๋Š” ๊ฐœ๋…์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค: ์ด๋Š” ์‘๋‹ต ์‹œ์ ์— ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค์˜ ์ƒํƒœ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์›๋ณธ URI ๋‚ด์— ์‹๋ณ„๋œ ์˜ค๋ฆฌ์ง„ ์„œ๋ฒ„์— ์˜ํ•ด(๋˜๋Š” ๊ทธ ์ง€์‹œ์— ๋”ฐ๋ผ) ํ•ด๋‹น ์š”์ฒญ์— ๋Œ€ํ•ด ๊ฐ€์žฅ ์ ์ ˆํ•˜๋‹ค๊ณ  ํŒ๋‹จ๋œ ์‘๋‹ต์ž…๋‹ˆ๋‹ค. HTTP URI์— ๋Œ€ํ•œ ๊ถŒํ•œ ์žˆ๋Š” ์„œ๋ฒ„๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์€ RFC 9110 ์„น์…˜ 4.3์— ๋…ผ์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค ([HTTP]).

"https" ์Šคํ‚ด์€ ๊ถŒํ•œ(authority)์„ URI์˜ ๊ถŒํ•œ ๊ตฌ์„ฑ์š”์†Œ๋กœ ์‹๋ณ„๋œ ํ˜ธ์ŠคํŠธ์— ๋Œ€ํ•ด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํŒ๋‹จํ•˜๋Š” ์ธ์ฆ์„œ์˜ ์†Œ์œ ์™€ ์—ฐ๊ด€์‹œํ‚ต๋‹ˆ๋‹ค. TLS ํ•ธ๋“œ์…ฐ์ดํฌ์—์„œ ์„œ๋ฒ„ ์ธ์ฆ์„œ๋ฅผ ์ˆ˜์‹ ํ•œ ํ›„, ํด๋ผ์ด์–ธํŠธ๋Š” RFC 9110 ์„น์…˜ 4.3.4์— ์„ค๋ช…๋œ ์ ˆ์ฐจ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฆ์„œ๊ฐ€ URI์˜ ์˜ค๋ฆฌ์ง„ ์„œ๋ฒ„์™€ ์ˆ˜๋ฝ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ผ์น˜ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ์ธ์ฆ์„œ๊ฐ€ URI์˜ ์˜ค๋ฆฌ์ง„ ์„œ๋ฒ„์™€ ๊ด€๋ จํ•˜์—ฌ ๊ฒ€์ฆ๋  ์ˆ˜ ์—†๋‹ค๋ฉด, ํด๋ผ์ด์–ธํŠธ๋Š” ํ•ด๋‹น ์„œ๋ฒ„๋ฅผ ๊ทธ ์˜ค๋ฆฌ์ง„์— ๋Œ€ํ•ด ๊ถŒํ•œ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT).

ํด๋ผ์ด์–ธํŠธ๋Š” ํ˜ธ์ŠคํŠธ ์‹๋ณ„์ž๋ฅผ IP ์ฃผ์†Œ๋กœ ํ•ด์„ํ•˜๊ณ  ํ•ด๋‹น ์ฃผ์†Œ์˜ ์ง€์ •๋œ ํฌํŠธ๋กœ QUIC ์—ฐ๊ฒฐ์„ ์„ค์ •(์œ„์—์„œ ์„ค๋ช…ํ•œ ์„œ๋ฒ„ ์ธ์ฆ์„œ ๊ฒ€์ฆ ํฌํ•จ)ํ•œ ๋’ค, ํ•ด๋‹น ๋ณด์•ˆ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด URI๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” HTTP/3 ์š”์ฒญ ๋ฉ”์‹œ์ง€๋ฅผ ์„œ๋ฒ„๋กœ ์ „์†กํ•จ์œผ๋กœ์จ "https" URI์— ์žˆ๋Š” ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผ์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY). HTTP/3๋ฅผ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค๋ฅธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ํ•œ, ํ† ํฐ "h3"๋Š” TLS ํ•ธ๋“œ์…ฐ์ดํฌ ๋™์•ˆ์˜ Application-Layer Protocol Negotiation(ALPN; [RFC7301]) ํ™•์žฅ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์—ฐ๊ฒฐ ๋ฌธ์ œ(์˜ˆ: UDP ์ฐจ๋‹จ)๋Š” QUIC ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ ์‹คํŒจ๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค; ์ด ๊ฒฝ์šฐ ํด๋ผ์ด์–ธํŠธ๋Š” TCP ๊ธฐ๋ฐ˜ ๋ฒ„์ „์˜ HTTP๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(SHOULD).

์„œ๋ฒ„๋Š” ์ž„์˜์˜ UDP ํฌํŠธ์—์„œ HTTP/3๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY); ๋Œ€์ฒด ์„œ๋น„์Šค ๊ด‘๊ณ ๋Š” ํ•ญ์ƒ ๋ช…์‹œ์ ์ธ ํฌํŠธ๋ฅผ ํฌํ•จํ•˜๋ฉฐ, URI๋Š” ๋ช…์‹œ์  ํฌํŠธ ๋˜๋Š” ์Šคํ‚ด๊ณผ ์—ฐ๊ด€๋œ ๊ธฐ๋ณธ ํฌํŠธ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

3.1.1. HTTP ๋Œ€์ฒด ์„œ๋น„์Šค

HTTP ์˜ค๋ฆฌ์ง„์€ Alt-Svc HTTP ์‘๋‹ต ํ—ค๋” ํ•„๋“œ ๋˜๋Š” HTTP/2 ALTSVC ํ”„๋ ˆ์ž„([ALTSVC])์„ ํ†ตํ•ด "h3" ALPN ํ† ํฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋™๋“ฑํ•œ HTTP/3 ์—”๋“œํฌ์ธํŠธ์˜ ๊ฐ€์šฉ์„ฑ์„ ๊ด‘๊ณ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์˜ค๋ฆฌ์ง„์€ HTTP ์‘๋‹ต์— ๋‹ค์Œ ํ—ค๋” ํ•„๋“œ๋ฅผ ํฌํ•จํ•˜์—ฌ ๋™์ผํ•œ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์—์„œ UDP ํฌํŠธ 50781์—์„œ HTTP/3๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•จ์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

Alt-Svc: h3=":50781"

HTTP/3 ์ง€์›์„ ๋‚˜ํƒ€๋‚ด๋Š” Alt-Svc ๋ ˆ์ฝ”๋“œ๋ฅผ ์ˆ˜์‹ ํ•˜๋ฉด, ํด๋ผ์ด์–ธํŠธ๋Š” ํ‘œ์‹œ๋œ ํ˜ธ์ŠคํŠธ ๋ฐ ํฌํŠธ๋กœ QUIC ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฆฝํ•˜๋ ค๊ณ  ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY); ์ด ์—ฐ๊ฒฐ์ด ์„ฑ๊ณตํ•˜๋ฉด, ํด๋ผ์ด์–ธํŠธ๋Š” ์ด ๋ฌธ์„œ์— ์„ค๋ช…๋œ ๋งคํ•‘์„ ์‚ฌ์šฉํ•˜์—ฌ HTTP ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3.1.2. ๊ธฐํƒ€ ์Šคํ‚ด

HTTP๋Š” ์ „์†ก ํ”„๋กœํ† ์ฝœ๊ณผ ๋…๋ฆฝ์ ์ด์ง€๋งŒ, "http" ์Šคํ‚ด์€ ๊ถŒํ•œ์„ ํ•ด๋‹น ๊ถŒํ•œ ๊ตฌ์„ฑ์š”์†Œ์— ์‹๋ณ„๋œ ํ˜ธ์ŠคํŠธ์˜ ์ง€์ •๋œ ํฌํŠธ์—์„œ TCP ์—ฐ๊ฒฐ์„ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ๊ณผ ์—ฐ๊ด€์‹œํ‚ต๋‹ˆ๋‹ค. HTTP/3๋Š” TCP๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, "http" URI๋กœ ์‹๋ณ„๋œ ๋ฆฌ์†Œ์Šค์˜ ๊ถŒํ•œ ์žˆ๋Š” ์„œ๋ฒ„์— ๋Œ€ํ•œ ์ง์ ‘ ์•ก์„ธ์Šค์—๋Š” HTTP/3์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ [ALTSVC]์™€ ๊ฐ™์€ ํ”„๋กœํ† ์ฝœ ํ™•์žฅ์€ ๊ถŒํ•œ ์žˆ๋Š” ์„œ๋ฒ„๊ฐ€ ๋˜ํ•œ ๊ถŒํ•œ์„ ๊ฐ€์ง€๋ฉฐ HTTP/3์„ ํ†ตํ•ด ์ ‘๊ทผ ๊ฐ€๋Šฅํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ์„œ๋น„์Šค๋ฅผ ์‹๋ณ„ํ•˜๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

"https"๊ฐ€ ์•„๋‹Œ ์Šคํ‚ด์„ ๊ฐ€์ง„ ์˜ค๋ฆฌ์ง„์— ๋Œ€ํ•ด ์š”์ฒญ์„ ํ•˜๊ธฐ ์ „์—, ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๊ฐ€ ํ•ด๋‹น ์Šคํ‚ด์„ ์ œ๊ณตํ•  ์˜์‚ฌ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). "http" ์Šคํ‚ด์„ ๊ฐ€์ง„ ์˜ค๋ฆฌ์ง„์— ๋Œ€ํ•ด ์ด๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์‹คํ—˜์  ๋ฐฉ๋ฒ•์€ [RFC8164]์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ–ฅํ›„ ๋‹ค์–‘ํ•œ ์Šคํ‚ด์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์ •์˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3.2. ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ

HTTP/3๋Š” ๊ธฐ๋ณธ ์ „์†ก์œผ๋กœ QUIC ๋ฒ„์ „ 1์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. HTTP/3์™€ ํ•จ๊ป˜ ๋‹ค๋ฅธ QUIC ์ „์†ก ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ํ–ฅํ›„ ๊ทœ๊ฒฉ์—์„œ ์ •์˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY).

QUIC ๋ฒ„์ „ 1์€ ํ•ธ๋“œ์…ฐ์ดํฌ ํ”„๋กœํ† ์ฝœ๋กœ TLS ๋ฒ„์ „ 1.3 ์ด์ƒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. HTTP/3 ํด๋ผ์ด์–ธํŠธ๋Š” TLS ํ•ธ๋“œ์…ฐ์ดํฌ ๋™์•ˆ ๋Œ€์ƒ ํ˜ธ์ŠคํŠธ๋ฅผ ์„œ๋ฒ„์— ํ‘œ์‹œํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ์„œ๋ฒ„๊ฐ€ ๋„๋ฉ”์ธ ์ด๋ฆ„์œผ๋กœ ์‹๋ณ„๋˜๋Š” ๊ฒฝ์šฐ([DNS-TERMS]), ํด๋ผ์ด์–ธํŠธ๋Š” ๋Œ€์ƒ ํ˜ธ์ŠคํŠธ๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด Server Name Indication(SNI; [RFC6066]) TLS ํ™•์žฅ์„ ๋ณด๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST), ๋Œ€์ฒด ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ํ•œ.

QUIC ์—ฐ๊ฒฐ์€ [QUIC-TRANSPORT]์— ์„ค๋ช…๋œ ๋Œ€๋กœ ์ˆ˜๋ฆฝ๋ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ ๋™์•ˆ HTTP/3 ์ง€์›์€ TLS ํ•ธ๋“œ์…ฐ์ดํฌ์—์„œ ALPN ํ† ํฐ "h3"๋ฅผ ์„ ํƒํ•จ์œผ๋กœ์จ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ํ•ธ๋“œ์…ฐ์ดํฌ์—์„œ ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ์— ๋Œ€ํ•œ ์ง€์›์ด ์ œ๊ณต๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY).

ํ•ต์‹ฌ QUIC ํ”„๋กœํ† ์ฝœ๊ณผ ๊ด€๋ จ๋œ ์—ฐ๊ฒฐ ์ˆ˜์ค€ ์˜ต์…˜์€ ์ดˆ๊ธฐ ์•”ํ˜ธํ™” ํ•ธ๋“œ์…ฐ์ดํฌ์—์„œ ์„ค์ •๋˜๋Š” ๋ฐ˜๋ฉด, HTTP/3์— ํŠน์ •ํ•œ ์„ค์ •์€ SETTINGS ํ”„๋ ˆ์ž„์—์„œ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. QUIC ์—ฐ๊ฒฐ์ด ์„ค์ •๋œ ํ›„, ๊ฐ ์—”๋“œํฌ์ธํŠธ๋Š” ์ž์‹ ์˜ HTTP ์ œ์–ด ์ŠคํŠธ๋ฆผ์˜ ์ดˆ๊ธฐ ํ”„๋ ˆ์ž„์œผ๋กœ SETTINGS ํ”„๋ ˆ์ž„์„ ๋ณด๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

3.3. ์—ฐ๊ฒฐ ์žฌ์‚ฌ์šฉ

HTTP/3 ์—ฐ๊ฒฐ์€ ์—ฌ๋Ÿฌ ์š”์ฒญ์— ๊ฑธ์ณ ์ง€์†๋ฉ๋‹ˆ๋‹ค. ์ตœ์ƒ์˜ ์„ฑ๋Šฅ์„ ์œ„ํ•ด, ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์™€์˜ ์ถ”๊ฐ€ ํ†ต์‹ ์ด ํ•„์š” ์—†๋‹ค๊ณ  ํŒ๋‹จ๋  ๋•Œ(์˜ˆ: ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ์›นํŽ˜์ด์ง€์—์„œ ๋– ๋‚  ๋•Œ)๊นŒ์ง€ ์—ฐ๊ฒฐ์„ ๋‹ซ์ง€ ์•Š๋Š” ๊ฒƒ์ด ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค. ๋˜๋Š” ์„œ๋ฒ„๊ฐ€ ์—ฐ๊ฒฐ์„ ๋‹ซ์„ ๋•Œ๊นŒ์ง€ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

์„œ๋ฒ„ ์—”๋“œํฌ์ธํŠธ์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์ด ์กด์žฌํ•˜๋ฉด, ์ด ์—ฐ๊ฒฐ์€ ์—ฌ๋Ÿฌ ๋‹ค๋ฅธ URI ๊ถŒํ•œ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๊ฐ€์ง„ ์š”์ฒญ๋“ค์— ๋Œ€ํ•ด ์žฌ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY). ์ƒˆ๋กœ์šด ์˜ค๋ฆฌ์ง„์— ๋Œ€ํ•ด ๊ธฐ์กด ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด, ํด๋ผ์ด์–ธํŠธ๋Š” ์ƒˆ ์˜ค๋ฆฌ์ง„ ์„œ๋ฒ„์— ๋Œ€ํ•ด ์„œ๋ฒ„๊ฐ€ ์ œ์‹œํ•œ ์ธ์ฆ์„œ๋ฅผ RFC 9110 ์„น์…˜ 4.3.4์— ์„ค๋ช…๋œ ์ ˆ์ฐจ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒ€์ฆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ์ด๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„ ์ธ์ฆ์„œ์™€ ํ•ด๋‹น ์ธ์ฆ์„œ๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ๋ณด์œ ํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค; ์ด๋ฅผ ๋ณด์œ ํ•˜์ง€ ์•Š๋Š” ํด๋ผ์ด์–ธํŠธ๋Š” ์ถ”๊ฐ€ ์˜ค๋ฆฌ์ง„์— ๋Œ€ํ•ด ์—ฐ๊ฒฐ์„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ์ด์œ ๋กœ๋“  ์ธ์ฆ์„œ๊ฐ€ ์ƒˆ ์˜ค๋ฆฌ์ง„์— ๋Œ€ํ•ด ์ˆ˜๋ฝ๋  ์ˆ˜ ์—†๋‹ค๋ฉด, ํ•ด๋‹น ์—ฐ๊ฒฐ์€ ์žฌ์‚ฌ์šฉ๋˜์–ด์„œ๋Š” ์•ˆ ๋˜๋ฉฐ(MUST NOT) ์ƒˆ ์˜ค๋ฆฌ์ง„์— ๋Œ€ํ•ด ์ƒˆ๋กœ์šด ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฆฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(SHOULD). ์ธ์ฆ์„œ ๊ฒ€์ฆ ์‹คํŒจ์˜ ์ด์œ ๊ฐ€ ์—ฐ๊ฒฐ์— ์ด๋ฏธ ์—ฐ๊ด€๋œ ๋‹ค๋ฅธ ์˜ค๋ฆฌ์ง„๋“ค์—๋„ ์ ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ, ํด๋ผ์ด์–ธํŠธ๋Š” ํ•ด๋‹น ์˜ค๋ฆฌ์ง„๋“ค์— ๋Œ€ํ•ด ์„œ๋ฒ„ ์ธ์ฆ์„œ๋ฅผ ๋‹ค์‹œ ๊ฒ€์ฆํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•ฉ๋‹ˆ๋‹ค(SHOULD). ์˜ˆ๋ฅผ ๋“ค์–ด, ์ธ์ฆ์„œ๊ฐ€ ๋งŒ๋ฃŒ๋˜์—ˆ๊ฑฐ๋‚˜ ํ์ง€๋œ ๊ฒฝ์šฐ, ์ด๋Š” ํ•ด๋‹น ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ถŒํ•œ์„ ์„ค์ •ํ•œ ๋‹ค๋ฅธ ๋ชจ๋“  ์˜ค๋ฆฌ์ง„์„ ๋ฌดํšจํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๋Š” URI, ์„ ํƒ๋œ ๋Œ€์ฒด ์„œ๋น„์Šค([ALTSVC]), ๊ตฌ์„ฑ๋œ ํ”„๋ก์‹œ ๋˜๋Š” ์ด๋“ค ์ค‘ ์–ด๋А ๊ฒƒ์˜ ์ด๋ฆ„ ํ•ด์„์—์„œ ํŒŒ์ƒ๋  ์ˆ˜ ์žˆ๋Š” ํŠน์ • IP ์ฃผ์†Œ์™€ UDP ํฌํŠธ์— ๋Œ€ํ•ด ๋‘ ๊ฐœ ์ด์ƒ์˜ HTTP/3 ์—ฐ๊ฒฐ์„ ์—ด์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(SHOULD NOT). ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ „์†ก ๋˜๋Š” TLS ๊ตฌ์„ฑ์œผ๋กœ ๋™์ผํ•œ IP ์ฃผ์†Œ์™€ UDP ํฌํŠธ์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ HTTP/3 ์—ฐ๊ฒฐ์„ ์—ด ์ˆ˜ ์žˆ์ง€๋งŒ(MAY), ๋™์ผํ•œ ๊ตฌ์„ฑ์œผ๋กœ ์—ฌ๋Ÿฌ ์—ฐ๊ฒฐ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ํ”ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(SHOULD).

์„œ๋ฒ„๋Š” ๊ฐ€๋Šฅํ•œ ํ•œ ์˜ค๋ž˜ ์—ด๋ฆฐ HTTP/3 ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋˜์ง€๋งŒ, ํ•„์š”ํ•˜๋‹ค๋ฉด ์œ ํœด ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋А ์ชฝ ์—”๋“œํฌ์ธํŠธ๊ฐ€ HTTP/3 ์—ฐ๊ฒฐ์„ ๋‹ซ๊ธฐ๋กœ ์„ ํƒํ•˜๋ฉด, ์ข…๋ฃŒํ•˜๋Š” ์—”๋“œํฌ์ธํŠธ๋Š” ๋จผ์ € GOAWAY ํ”„๋ ˆ์ž„(์„น์…˜ 5.2)์„ ๋ณด๋‚ด์–ด ์–‘ ์—”๋“œํฌ์ธํŠธ๊ฐ€ ์ด์ „์— ์ „์†ก๋œ ํ”„๋ ˆ์ž„๋“ค์ด ์ฒ˜๋ฆฌ๋˜์—ˆ๋Š”์ง€ ์‹ ๋ขฐ์„ฑ ์žˆ๊ฒŒ ํŒ๋‹จํ•˜๊ณ  ํ•„์š”ํ•œ ๋‚จ์€ ์ž‘์—…์„ ์ •์ƒ์ ์œผ๋กœ ์™„๋ฃŒํ•˜๊ฑฐ๋‚˜ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(SHOULD).

ํŠน์ • ์˜ค๋ฆฌ์ง„์— ๋Œ€ํ•ด ํด๋ผ์ด์–ธํŠธ๊ฐ€ HTTP/3 ์—ฐ๊ฒฐ์„ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ์›์น˜ ์•Š๋Š” ์„œ๋ฒ„๋Š” ํ•ด๋‹น ์š”์ฒญ์— ๋Œ€ํ•ด 421(์ž˜๋ชป๋œ ๋Œ€์ƒ ์š”์ฒญ, Misdirected Request) ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ์‘๋‹ต์œผ๋กœ ๋ณด๋‚ด์–ด ์ž์‹ ์ด ๊ทธ ์š”์ฒญ์— ๋Œ€ํ•ด ๊ถŒํ•œ์ด ์—†์Œ์„ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค; ์ž์„ธํ•œ ๋‚ด์šฉ์€ RFC 9110 ์„น์…˜ 7.4๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค ([HTTP]).


4. HTTP/3์—์„œ HTTP ์˜๋ฏธ ํ‘œํ˜„

4.1. HTTP ๋ฉ”์‹œ์ง€ ํ”„๋ ˆ์ด๋ฐ

ํด๋ผ์ด์–ธํŠธ๋Š” request stream์—์„œ HTTP ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์ด๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‹œ์ž‘ํ•˜๋Š” ์–‘๋ฐฉํ–ฅ QUIC ์ŠคํŠธ๋ฆผ์ž…๋‹ˆ๋‹ค; ์„น์…˜ 6.1์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์ฃผ์–ด์ง„ ์ŠคํŠธ๋ฆผ์—์„œ ๋‹จ ํ•˜๋‚˜์˜ ์š”์ฒญ๋งŒ ์ „์†กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ์„œ๋ฒ„๋Š” ๊ฐ™์€ ์ŠคํŠธ๋ฆผ์—์„œ 0๊ฐœ ์ด์ƒ์˜ ์ค‘๊ฐ„(interim) HTTP ์‘๋‹ต์„ ์ „์†กํ•œ ๋’ค, ์•„๋ž˜์— ์ƒ์„ธํžˆ ์„ค๋ช…๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋‹จ ํ•˜๋‚˜์˜ ์ตœ์ข… HTTP ์‘๋‹ต์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์ค‘๊ฐ„ ๋ฐ ์ตœ์ข… HTTP ์‘๋‹ต์— ๋Œ€ํ•œ ์„ค๋ช…์€ RFC 9110 ์„น์…˜ 15์„ ์ฐธ๊ณ ํ•˜์‹ญ์‹œ์˜ค.

ํ‘ธ์‹œ๋œ ์‘๋‹ต์€ ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘ํ•œ ๋‹จ๋ฐฉํ–ฅ QUIC ์ŠคํŠธ๋ฆผ์—์„œ ์ „์†ก๋ฉ๋‹ˆ๋‹ค; ์„น์…˜ 6.2.2๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ์„œ๋ฒ„๋Š” ํ‘œ์ค€ ์‘๋‹ต๊ณผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ 0๊ฐœ ์ด์ƒ์˜ ์ค‘๊ฐ„ ์‘๋‹ต์„ ๋ณด๋‚ด๊ณ  ์ด์–ด์„œ ๋‹จ ํ•˜๋‚˜์˜ ์ตœ์ข… ์‘๋‹ต์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ํ‘ธ์‹œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„น์…˜ 4.6์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์–ด์ง„ ์ŠคํŠธ๋ฆผ์—์„œ ๋‹ค์ˆ˜์˜ ์š”์ฒญ ์ˆ˜์‹  ๋˜๋Š” ์ตœ์ข… ์‘๋‹ต ๋’ค์— ์ถ”๊ฐ€ HTTP ์‘๋‹ต์ด ์ˆ˜์‹ ๋˜๋Š” ๊ฒฝ์šฐ๋Š” malformed๋กœ ์ทจ๊ธ‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

HTTP ๋ฉ”์‹œ์ง€(์š”์ฒญ ๋˜๋Š” ์‘๋‹ต)๋Š” ๋‹ค์Œ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค:

  1. ๋ฉ”์‹œ์ง€ ์ œ์–ด ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๋Š” ํ—ค๋” ์„น์…˜์œผ๋กœ, ๋‹จ์ผ HEADERS ํ”„๋ ˆ์ž„์œผ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค,
  2. ์„ ํƒ์ ์œผ๋กœ, ์ฝ˜ํ…์ธ ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ์ผ๋ จ์˜ DATA ํ”„๋ ˆ์ž„์œผ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค, ๊ทธ๋ฆฌ๊ณ 
  3. ์„ ํƒ์ ์œผ๋กœ, ํŠธ๋ ˆ์ผ๋Ÿฌ ์„น์…˜์ด ์žˆ์„ ๊ฒฝ์šฐ ๋‹จ์ผ HEADERS ํ”„๋ ˆ์ž„์œผ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.

ํ—ค๋” ๋ฐ ํŠธ๋ ˆ์ผ๋Ÿฌ ์„น์…˜์€ RFC 9110 ์„น์…˜ 6.3 ๋ฐ ์„น์…˜ 6.5์— ์„ค๋ช…๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ฝ˜ํ…์ธ ๋Š” ์„น์…˜ 6.4์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ž˜๋ชป๋œ ํ”„๋ ˆ์ž„ ์‹œํ€€์Šค ์ˆ˜์‹ ์€ connection error ์œ ํ˜• H3_FRAME_UNEXPECTED๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ํŠนํžˆ, ์–ด๋–ค DATA ํ”„๋ ˆ์ž„์ด ์–ด๋– ํ•œ HEADERS ํ”„๋ ˆ์ž„ ์ „์— ์˜ค๊ฑฐ๋‚˜, ํŠธ๋ ˆ์ผ๋ง HEADERS ํ”„๋ ˆ์ž„ ๋’ค์— HEADERS ๋˜๋Š” DATA ํ”„๋ ˆ์ž„์ด ์˜ค๋Š” ๊ฒฝ์šฐ๋Š” ๋ฌดํšจ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„ ์œ ํ˜•, ํŠนํžˆ ์•Œ๋ ค์ง€์ง€ ์•Š์€ ํ”„๋ ˆ์ž„ ์œ ํ˜•์€ ์ž์ฒด ๊ทœ์น™์— ๋”ฐ๋ผ ํ—ˆ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค; ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„น์…˜ 9๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์„œ๋ฒ„๋Š” ์‘๋‹ต ๋ฉ”์‹œ์ง€์˜ ํ”„๋ ˆ์ž„๋“ค ์ด์ „, ์ดํ›„ ๋˜๋Š” ๊ต์ฐจ๋กœ ํ•˜๋‚˜ ์ด์ƒ ์˜ PUSH_PROMISE ํ”„๋ ˆ์ž„์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY). ์ด๋Ÿฌํ•œ PUSH_PROMISE ํ”„๋ ˆ์ž„์€ ์‘๋‹ต์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค; ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„น์…˜ 4.6์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. PUSH_PROMISE ํ”„๋ ˆ์ž„์€ push streams์—์„œ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค; ๋งŒ์•ฝ ํ‘ธ์‹œ๋œ ์‘๋‹ต์ด PUSH_PROMISE ํ”„๋ ˆ์ž„์„ ํฌํ•จํ•˜๋ฉด ์ด๋Š” connection error ์œ ํ˜• H3_FRAME_UNEXPECTED๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

์•Œ๋ ค์ง€์ง€ ์•Š์€ ์œ ํ˜•์˜ ํ”„๋ ˆ์ž„(์„น์…˜ 9), ์˜ˆ์•ฝ๋œ ํ”„๋ ˆ์ž„(์„น์…˜ 7.2.8)์„ ํฌํ•จํ•˜์—ฌ, ์ด๋Ÿฌํ•œ ํ”„๋ ˆ์ž„๋“ค์€ ์š”์ฒญ ๋˜๋Š” push stream์—์„œ ๋‹ค๋ฅธ ์ด ์ ˆ์—์„œ ์„ค๋ช…๋œ ํ”„๋ ˆ์ž„๋“ค ์ด์ „, ์ดํ›„ ๋˜๋Š” ๊ต์ฐจ๋กœ ์ „์†ก๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY).

HEADERS ๋ฐ PUSH_PROMISE ํ”„๋ ˆ์ž„์€ QPACK ๋™์  ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์—…๋ฐ์ดํŠธ๋Š” ๋ฉ”์‹œ์ง€ ๊ตํ™˜์˜ ์ง์ ‘์ ์ธ ์ผ๋ถ€๋Š” ์•„๋‹ˆ์ง€๋งŒ, ๋ฉ”์‹œ์ง€๋ฅผ ์†Œ๋น„ํ•˜๊ธฐ ์ „์— ์ˆ˜์‹  ๋ฐ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„น์…˜ 4.2๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

Transfer codings(์ž์„ธํ•œ ๋‚ด์šฉ์€ RFC 9112 ์„น์…˜ 7)์€ HTTP/3์— ๋Œ€ํ•ด ์ •์˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค; Transfer-Encoding ํ—ค๋” ํ•„๋“œ๋Š” ์‚ฌ์šฉ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT).

์‘๋‹ต์€ ์˜ค์ง ํ•˜๋‚˜ ์ด์ƒ์˜ ์ค‘๊ฐ„ ์‘๋‹ต(1xx; RFC 9110 ์„น์…˜ 15.2 ์ฐธ์กฐ)์ด ๋™์ผํ•œ ์š”์ฒญ์— ๋Œ€ํ•œ ์ตœ์ข… ์‘๋‹ต์— ์•ž์„ค ๋•Œ์—๋งŒ ์—ฌ๋Ÿฌ ๋ฉ”์‹œ์ง€๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY). ์ค‘๊ฐ„ ์‘๋‹ต์—๋Š” ์ฝ˜ํ…์ธ ๋‚˜ ํŠธ๋ ˆ์ผ๋Ÿฌ ์„น์…˜์ด ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

HTTP ์š”์ฒญ/์‘๋‹ต ๊ตํ™˜์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‹œ์ž‘ํ•œ ์–‘๋ฐฉํ–ฅ QUIC ์ŠคํŠธ๋ฆผ์„ ์™„์ „ํžˆ ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค. ์š”์ฒญ์„ ์ „์†กํ•œ ํ›„, ํด๋ผ์ด์–ธํŠธ๋Š” ์ „์†ก์„ ์œ„ํ•œ ์ŠคํŠธ๋ฆผ์„ ๋‹ซ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). CONNECT ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ (์„น์…˜ 4.4 ์ฐธ์กฐ), ํด๋ผ์ด์–ธํŠธ๋Š” ์‘๋‹ต์„ ์ˆ˜์‹ ํ•˜๋Š” ๊ฒƒ์„ ์ŠคํŠธ๋ฆผ ๋‹ซ๊ธฐ ์กฐ๊ฑด์œผ๋กœ ์‚ผ์•„์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT). ์„œ๋ฒ„๋Š” ์ตœ์ข… ์‘๋‹ต์„ ์ „์†กํ•œ ํ›„ ์ „์†ก์„ ์œ„ํ•œ ์ŠคํŠธ๋ฆผ์„ ๋‹ซ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ์ด ์‹œ์ ์—์„œ QUIC ์ŠคํŠธ๋ฆผ์€ ์™„์ „ํžˆ ๋‹ซํž™๋‹ˆ๋‹ค.

์ŠคํŠธ๋ฆผ์ด ๋‹ซํžˆ๋ฉด ์ด๋Š” ์ตœ์ข… HTTP ๋ฉ”์‹œ์ง€์˜ ๋์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋ฉ”์‹œ์ง€๋Š” ํฌ๊ฑฐ๋‚˜ ๋ฌดํ•œํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์—”๋“œํฌ์ธํŠธ๋Š” ๋ฉ”์‹œ์ง€์˜ ์ผ๋ถ€๊ฐ€ ๋„์ฐฉํ•˜์—ฌ ์ง„ํ–‰์— ์ถฉ๋ถ„ํ•  ๋•Œ ๋ถ€๋ถ„ HTTP ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD). ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‹œ์ž‘ํ•œ ์ŠคํŠธ๋ฆผ์ด HTTP ๋ฉ”์‹œ์ง€๋ฅผ ์™„์ „ํ•˜๊ฒŒ ์ œ๊ณตํ•  ๋งŒํผ ์ข…๋ฃŒ๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์ข…๋ฃŒ๋˜๋ฉด, ์„œ๋ฒ„๋Š” ์‘๋‹ต ์ŠคํŠธ๋ฆผ์„ ์˜ค๋ฅ˜ ์ฝ”๋“œ H3_REQUEST_INCOMPLETE๋กœ ์ค‘๋‹จ(abort)ํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD).

์„œ๋ฒ„๋Š” ์š”์ฒญ์˜ ์•„์ง ์ „์†ก๋˜์ง€ ์•Š์€ ๋ถ€๋ถ„์— ์˜์กดํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ „์ฒด ์š”์ฒญ์„ ๋ณด๋‚ด๊ธฐ ์ „์— ์™„์ „ํ•œ ์‘๋‹ต์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ๋‚˜๋จธ์ง€ ์š”์ฒญ์„ ๋ฐ›์„ ํ•„์š”๊ฐ€ ์—†์„ ๋•Œ์—๋Š”, ์š”์ฒญ ์ŠคํŠธ๋ฆผ์˜ ์ฝ๊ธฐ๋ฅผ ์ค‘๋‹จ(abort)ํ•˜๊ณ (request stream), ์™„์ „ํ•œ ์‘๋‹ต์„ ์ „์†กํ•˜๊ณ  ์ „์†ก ์ธก ์ŠคํŠธ๋ฆผ์„ ์ •์ƒ์ ์œผ๋กœ ๋‹ซ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „์†ก ์ค‘์ง€๋ฅผ ์š”์ฒญํ•  ๋•Œ์—๋Š” ์˜ค๋ฅ˜ ์ฝ”๋“œ H3_NO_ERROR๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD). ํด๋ผ์ด์–ธํŠธ๋Š” ์š”์ฒญ์ด ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฒŒ ์ค‘๋‹จ๋˜์—ˆ๋‹ค๊ณ  ํ•ด์„œ ์™„์ „ํ•œ ์‘๋‹ต์„ ํ๊ธฐํ•ด์„œ๋Š” ์•ˆ ๋˜๋ฉฐ(MUST NOT), ๋‹ค๋ฅธ ์ด์œ ๋กœ ์–ธ์ œ๋“  ์‘๋‹ต์„ ํ๊ธฐํ•  ์ˆ˜๋Š” ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ๋ถ€๋ถ„์  ๋˜๋Š” ์™„์ „ํ•œ ์‘๋‹ต์„ ์ „์†กํ–ˆ์ง€๋งŒ ์š”์ฒญ ์ฝ๊ธฐ๋ฅผ ์ค‘๋‹จํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, ํด๋ผ์ด์–ธํŠธ๋Š” ์š”์ฒญ์˜ ์ฝ˜ํ…์ธ  ์ „์†ก์„ ๊ณ„์†ํ•˜๊ณ  ์ŠคํŠธ๋ฆผ์„ ์ •์ƒ์ ์œผ๋กœ ๋‹ซ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค(SHOULD).

4.1.1. ์š”์ฒญ ์ทจ์†Œ ๋ฐ ๊ฑฐ๋ถ€

ํ•œ๋ฒˆ request stream์ด ์—ด๋ฆฌ๋ฉด, ํ•ด๋‹น ์š”์ฒญ์€ ์–ด๋А ์—”๋“œํฌ์ธํŠธ์— ์˜ํ•ด์„œ๋“  ์ทจ์†Œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY). ํด๋ผ์ด์–ธํŠธ๋Š” ์‘๋‹ต์ด ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์„ ๋•Œ ์š”์ฒญ์„ ์ทจ์†Œํ•˜๊ณ , ์„œ๋ฒ„๋Š” ์‘๋‹ตํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์‘๋‹ตํ•˜์ง€ ์•Š๊ธฐ๋กœ ๊ฒฐ์ •ํ•  ๋•Œ ์š”์ฒญ์„ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•˜๋ฉด ์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ์ด๋ฏธ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์‹œ์ž‘ํ•œ ๊ฒฝ์šฐ์—๋„ ์š”์ฒญ์„ ์ทจ์†Œํ•˜๋Š” ๋Œ€์‹  ์ ์ ˆํ•œ ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ง„ HTTP ์‘๋‹ต์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(RECOMMENDED).

๊ตฌํ˜„์ฒด๋Š” ์ŠคํŠธ๋ฆผ์˜ ์•„์ง ์—ด๋ฆฐ ๋ฐฉํ–ฅ์„ ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฒŒ ์ข…๋ฃŒํ•จ์œผ๋กœ์จ ์š”์ฒญ์„ ์ทจ์†Œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(SHOULD). ์ด๋ฅผ ์œ„ํ•ด ๊ตฌํ˜„์ฒด๋Š” ์ŠคํŠธ๋ฆผ์˜ ์ „์†ก ๋ถ€๋ถ„์„ ๋ฆฌ์…‹ํ•˜๊ณ  ์ˆ˜์‹  ๋ถ€๋ถ„์—์„œ๋Š” ์ฝ๊ธฐ๋ฅผ ์ค‘๋‹จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค; ๊ด€๋ จ ๋‚ด์šฉ์€ RFC 9000 ์„น์…˜ 2.4๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์„œ๋ฒ„๊ฐ€ ์–ด๋–ค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฒ˜๋ฆฌ๋„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ  ์š”์ฒญ์„ ์ทจ์†Œํ•  ๋•Œ, ๊ทธ ์š”์ฒญ์€ "rejected"๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ์‘๋‹ต ์ŠคํŠธ๋ฆผ์„ ์˜ค๋ฅ˜ ์ฝ”๋“œ H3_REQUEST_REJECTED๋กœ ์ค‘๋‹จ(abort)ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(SHOULD). ์—ฌ๊ธฐ์„œ "processed"๋Š” ์ŠคํŠธ๋ฆผ์˜ ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ์œ„ ์†Œํ”„ํŠธ์›จ์–ด ๊ณ„์ธต์œผ๋กœ ์ „๋‹ฌ๋˜์–ด ๊ทธ๋กœ ์ธํ•ด ์–ด๋–ค ๋™์ž‘์ด ๋ฐœ์ƒํ–ˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๊ฐ€ ๊ฑฐ๋ถ€ํ•œ ์š”์ฒญ์„ ๋งˆ์น˜ ์ „ํ˜€ ์ „์†ก๋˜์ง€ ์•Š์•˜๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ์ทจ๊ธ‰ํ•˜์—ฌ ๋‚˜์ค‘์— ์žฌ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„œ๋ฒ„๋Š” ๋ถ€๋ถ„์  ๋˜๋Š” ์ „๋ถ€ ์ฒ˜๋ฆฌ๋œ ์š”์ฒญ์— ๋Œ€ํ•ด H3_REQUEST_REJECTED ์˜ค๋ฅ˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT). ์„œ๋ฒ„๊ฐ€ ๋ถ€๋ถ„ ์ฒ˜๋ฆฌ ํ›„ ์‘๋‹ต์„ ํฌ๊ธฐํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์‘๋‹ต ์ŠคํŠธ๋ฆผ์„ ์˜ค๋ฅ˜ ์ฝ”๋“œ H3_REQUEST_CANCELLED๋กœ ์ค‘๋‹จํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD).

ํด๋ผ์ด์–ธํŠธ๋Š” ์š”์ฒญ์„ ์ทจ์†Œํ•  ๋•Œ ์˜ค๋ฅ˜ ์ฝ”๋“œ H3_REQUEST_CANCELLED์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD). ์ด ์˜ค๋ฅ˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜์‹ ํ•˜๋ฉด ์„œ๋ฒ„๋Š” ์–ด๋–ค ์ฒ˜๋ฆฌ๋„ ์ˆ˜ํ–‰๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์‘๋‹ต์„ H3_REQUEST_REJECTED๋กœ ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฒŒ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY). ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ ์ŠคํŠธ๋ฆผ์˜ ์ข…๋ฃŒ๋ฅผ ์ด ์˜ค๋ฅ˜ ์ฝ”๋“œ๋กœ ์š”์ฒญํ•˜์ง€ ์•Š๋Š” ํ•œ H3_REQUEST_REJECTED ์˜ค๋ฅ˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT).

์ŠคํŠธ๋ฆผ์ด ์™„์ „ํ•œ ์‘๋‹ต์„ ๋ฐ›์€ ํ›„ ์ทจ์†Œ๋˜๋ฉด, ํด๋ผ์ด์–ธํŠธ๋Š” ์ทจ์†Œ๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ์‘๋‹ต์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY). ๊ทธ๋Ÿฌ๋‚˜ ์ŠคํŠธ๋ฆผ์ด ๋ถ€๋ถ„ ์‘๋‹ต์„ ๋ฐ›์€ ํ›„ ์ทจ์†Œ๋˜๋ฉด ํ•ด๋‹น ์‘๋‹ต์€ ์‚ฌ์šฉ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(SHOULD NOT). GET, PUT, DELETE์™€ ๊ฐ™์€ ๋ฉฑ๋“ฑ(idempotent) ๋™์ž‘๋งŒ ์•ˆ์ „ํ•˜๊ฒŒ ์žฌ์‹œ๋„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค; ํด๋ผ์ด์–ธํŠธ๋Š” ์š”์ฒญ ๋ฉ”์„œ๋“œ์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ์š”์ฒญ ์˜๋ฏธ๊ฐ€ ๋ฉฑ๋“ฑ์ž„์„ ๋…๋ฆฝ์ ์œผ๋กœ ์•Œ๊ฑฐ๋‚˜ ์›๋ž˜ ์š”์ฒญ์ด ๊ฒฐ์ฝ” ์ ์šฉ๋˜์ง€ ์•Š์•˜์Œ์„ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋‹จ์ด ์—†๋Š” ํ•œ ๋น„๋ฉฑ๋“ฑ ์š”์ฒญ์„ ์ž๋™์œผ๋กœ ์žฌ์‹œ๋„ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(SHOULD NOT). ์ž์„ธํ•œ ๋‚ด์šฉ์€ RFC 9110 ์„น์…˜ 9.2.2๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

4.1.2. ํ˜•์‹์ด ์ž˜๋ชป๋œ ์š”์ฒญ ๋ฐ ์‘๋‹ต

ํ˜•์‹์ด ์ž˜๋ชป๋œ ์š”์ฒญ ๋˜๋Š” ์‘๋‹ต์ด๋ž€, ํ”„๋ ˆ์ž„ ์‹œํ€€์Šค ์ž์ฒด๋Š” ์œ ํšจํ•˜์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ๋ฌดํšจ์ธ ๊ฒฝ์šฐ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค:

  • ๊ธˆ์ง€๋œ ํ•„๋“œ ๋˜๋Š” ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ์˜ ์กด์žฌ,
  • ํ•„์ˆ˜ ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ์˜ ๋ถ€์žฌ,
  • ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ์˜ ์ž˜๋ชป๋œ ๊ฐ’,
  • ํ•„๋“œ ๋’ค์— ์˜ค๋Š” ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ,
  • ์ž˜๋ชป๋œ HTTP ๋ฉ”์‹œ์ง€ ์ˆœ์„œ,
  • ๋Œ€๋ฌธ์ž ํ•„๋“œ ์ด๋ฆ„ ํฌํ•จ, ๋˜๋Š”
  • ํ•„๋“œ ์ด๋ฆ„ ๋˜๋Š” ๊ฐ’์— ์ž˜๋ชป๋œ ๋ฌธ์ž ํฌํ•จ.

Content-Length ํ—ค๋” ํ•„๋“œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ(์ž์„ธํ•œ ๋‚ด์šฉ์€ RFC 9110 ์„น์…˜ 8.6) ์ฝ˜ํ…์ธ ๋ฅผ ๊ฐ€์ง„ ๊ฒƒ์œผ๋กœ ์ •์˜๋œ ์š”์ฒญ ๋˜๋Š” ์‘๋‹ต์€, ์ˆ˜์‹ ๋œ DATA ํ”„๋ ˆ์ž„ ๊ธธ์ด์˜ ํ•ฉ์ด Content-Length ํ—ค๋” ๊ฐ’๊ณผ ๊ฐ™์ง€ ์•Š์œผ๋ฉด ํ˜•์‹์ด ์ž˜๋ชป๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ์ฝ˜ํ…์ธ ๋ฅผ ๊ฒฐ์ฝ” ๊ฐ€์ง€์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ์ •์˜๋œ ์‘๋‹ต์€ Content-Length๊ฐ€ ์กด์žฌํ•˜๋”๋ผ๋„ DATA ํ”„๋ ˆ์ž„์— ์ฝ˜ํ…์ธ ๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š๋Š” ํ•œ ๋น„์ œ๋กœ Content-Length ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

HTTP ์š”์ฒญ ๋˜๋Š” ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ค‘๊ฐœ์ž(ํ„ฐ๋„๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ๋ชจ๋“  ์ค‘๊ฐœ์ž)๋Š” ํ˜•์‹์ด ์ž˜๋ชป๋œ ์š”์ฒญ ๋˜๋Š” ์‘๋‹ต์„ ์ „๋‹ฌํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT). ๊ฐ์ง€๋œ ํ˜•์‹์ด ์ž˜๋ชป๋œ ์š”์ฒญ ๋˜๋Š” ์‘๋‹ต์€ ์ŠคํŠธ๋ฆผ ์˜ค๋ฅ˜(stream error) ์œ ํ˜• H3_MESSAGE_ERROR๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

ํ˜•์‹์ด ์ž˜๋ชป๋œ ์š”์ฒญ์˜ ๊ฒฝ์šฐ, ์„œ๋ฒ„๋Š” ์ŠคํŠธ๋ฆผ์„ ๋‹ซ๊ฑฐ๋‚˜ ๋ฆฌ์…‹ํ•˜๊ธฐ ์ „์— ์˜ค๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” HTTP ์‘๋‹ต์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY). ํด๋ผ์ด์–ธํŠธ๋Š” ํ˜•์‹์ด ์ž˜๋ชป๋œ ์‘๋‹ต์„ ์ˆ˜๋ฝํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT). ์ด๋Ÿฌํ•œ ์š”๊ตฌ์‚ฌํ•ญ์€ HTTP์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ ์ผ๋ฐ˜์ ์ธ ๊ณต๊ฒฉ ์œ ํ˜•์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋ฉฐ, ๊ด€๋Œ€ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋ฉด ๊ตฌํ˜„์ฒด๊ฐ€ ์ทจ์•ฝํ•ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์˜๋„์ ์œผ๋กœ ์—„๊ฒฉํ•˜๊ฒŒ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

4.2. HTTP ํ•„๋“œ

HTTP ๋ฉ”์‹œ์ง€๋Š” "HTTP ํ•„๋“œ"๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์ผ๋ จ์˜ ํ‚ค-๊ฐ’ ์Œ์œผ๋กœ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค; ์„น์…˜ 6.3 ๋ฐ ์„น์…˜ 6.5๋ฅผ [HTTP]์—์„œ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ๋“ฑ๋ก๋œ HTTP ํ•„๋“œ์˜ ๋ชฉ๋ก์€ <https://www.iana.org/assignments/http-fields/>์— ๋ณด๊ด€๋œ "Hypertext Transfer Protocol (HTTP) Field Name Registry"๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. HTTP/2์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, HTTP/3์—์„œ๋Š” ํ•„๋“œ ์ด๋ฆ„์— ์‚ฌ์šฉ๋˜๋Š” ๋ฌธ์ž, Connection ํ—ค๋” ํ•„๋“œ ๋ฐ ์˜์‚ฌ-ํ—ค๋”(pseudo-header) ํ•„๋“œ์˜ ์‚ฌ์šฉ๊ณผ ๊ด€๋ จ๋œ ์ถ”๊ฐ€์ ์ธ ๊ณ ๋ ค์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•„๋“œ ์ด๋ฆ„์€ ASCII ๋ฌธ์ž ํ•˜์œ„ ์ง‘ํ•ฉ์„ ํฌํ•จํ•˜๋Š” ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค. HTTP ํ•„๋“œ ์ด๋ฆ„๊ณผ ๊ฐ’์˜ ์†์„ฑ์€ RFC 9110 ์„น์…˜ 5.1์— ๋” ์ž์„ธํžˆ ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•„๋“œ ์ด๋ฆ„์˜ ๋ฌธ์ž๋Š” ์ธ์ฝ”๋”ฉํ•˜๊ธฐ ์ „์— ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ํ•„๋“œ ์ด๋ฆ„์— ๋Œ€๋ฌธ์ž๊ฐ€ ํฌํ•จ๋œ ์š”์ฒญ ๋˜๋Š” ์‘๋‹ต์€ malformed๋กœ ์ทจ๊ธ‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

HTTP/3๋Š” Connection ํ—ค๋” ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐ-ํŠน์ • ํ•„๋“œ๋ฅผ ๋‚˜ํƒ€๋‚ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค; ์ด ํ”„๋กœํ† ์ฝœ์—์„œ๋Š” ์—ฐ๊ฒฐ-ํŠน์ • ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค๋ฅธ ์ˆ˜๋‹จ์œผ๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ์—”๋“œํฌ์ธํŠธ๋Š” ์—ฐ๊ฒฐ-ํŠน์ • ํ•„๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” HTTP/3 ํ•„๋“œ ์„น์…˜์„ ์ƒ์„ฑํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT); ์—ฐ๊ฒฐ-ํŠน์ • ํ•„๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” ๋ชจ๋“  ๋ฉ”์‹œ์ง€๋Š” malformed๋กœ ์ทจ๊ธ‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

์˜ˆ์™ธ๋Š” TE ํ—ค๋” ํ•„๋“œ๋ฟ์ด๋ฉฐ, ์ด๋Š” HTTP/3 ์š”์ฒญ ํ—ค๋”์— ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY). ์ด ํ•„๋“œ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ "trailers" ์ด์™ธ์˜ ๊ฐ’์„ ํฌํ•จํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT).

HTTP/1.x ๋ฉ”์‹œ์ง€๋ฅผ HTTP/3๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ค‘๊ฐœ์ž๋Š” RFC 9110 ์„น์…˜ 7.6.1์—์„œ ๋…ผ์˜๋œ ๋Œ€๋กœ ์—ฐ๊ฒฐ-ํŠน์ • ํ—ค๋” ํ•„๋“œ๋ฅผ ์ œ๊ฑฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST); ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‹ค๋ฅธ HTTP/3 ์—”๋“œํฌ์ธํŠธ์— ์˜ํ•ด ๊ทธ๋“ค์˜ ๋ฉ”์‹œ์ง€๋Š” malformed๋กœ ์ฒ˜๋ฆฌ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

4.2.1. ํ•„๋“œ ์••์ถ•

[QPACK]์€ HPACK์˜ ๋ณ€ํ˜•์„ ์„ค๋ช…ํ•˜๋ฉฐ, ์ด๋Š” ์ธ์ฝ”๋”๊ฐ€ ์••์ถ•์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” head-of-line blocking์˜ ์ •๋„๋ฅผ ์–ด๋А ์ •๋„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ธ์ฝ”๋”๊ฐ€ ์••์ถ• ํšจ์œจ์„ฑ๊ณผ ์ง€์—ฐ ์‹œ๊ฐ„ ๊ฐ„์˜ ๊ท ํ˜•์„ ๋งž์ถœ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. HTTP/3๋Š” ํ—ค๋” ๋ฐ ํŠธ๋ ˆ์ผ๋Ÿฌ ์„น์…˜(ํ—ค๋” ์„น์…˜์— ์žˆ๋Š” ์ œ์–ด ๋ฐ์ดํ„ฐ ํฌํ•จ)์„ ์••์ถ•ํ•˜๊ธฐ ์œ„ํ•ด QPACK์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋” ๋‚˜์€ ์••์ถ• ํšจ์œจ์„ ํ—ˆ์šฉํ•˜๊ธฐ ์œ„ํ•ด Cookie ํ—ค๋” ํ•„๋“œ([COOKIES])๋Š” ์••์ถ• ์ „์— ํ•˜๋‚˜ ์ด์ƒ์˜ cookie-pair๋ฅผ ํฌํ•จํ•˜๋Š” ๋ณ„๋„์˜ ํ•„๋“œ ๋ผ์ธ๋“ค๋กœ ๋ถ„ํ• ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY). ์••์ถ• ํ•ด์ œ๋œ ํ•„๋“œ ์„น์…˜์ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ cookie ํ•„๋“œ ๋ผ์ธ์„ ํฌํ•จํ•˜๋Š” ๊ฒฝ์šฐ, ์ด๋“ค์€ HTTP/2 ๋˜๋Š” HTTP/3 ์ด์™ธ์˜ ์ปจํ…์ŠคํŠธ(์˜ˆ: HTTP/1.1 ์—ฐ๊ฒฐ ๋˜๋Š” ์ผ๋ฐ˜ HTTP ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜)์— ์ „๋‹ฌ๋˜๊ธฐ ์ „์— "; "(ASCII 0x3b, 0x20)์˜ 2๋ฐ”์ดํŠธ ๊ตฌ๋ถ„์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹จ์ผ ๋ฐ”์ดํŠธ ๋ฌธ์ž์—ด๋กœ ์—ฐ๊ฒฐ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

4.2.2. ํ—ค๋” ํฌ๊ธฐ ์ œ์•ฝ

HTTP/3 ๊ตฌํ˜„์ฒด๋Š” ๊ฐœ๋ณ„ HTTP ๋ฉ”์‹œ์ง€์—์„œ ์ˆ˜์šฉํ•  ์ตœ๋Œ€ ํ—ค๋” ํฌ๊ธฐ์— ๋Œ€ํ•œ ์ œํ•œ์„ ๋‘˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY). ์„œ๋ฒ„๊ฐ€ ์ฒ˜๋ฆฌํ•˜๊ธฐ์— ๋„ˆ๋ฌด ํฐ ํ—ค๋” ์„น์…˜์„ ์ˆ˜์‹ ํ•˜๋ฉด HTTP 431 (Request Header Fields Too Large) ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค([RFC6585]). ํด๋ผ์ด์–ธํŠธ๋Š” ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ์‘๋‹ต์„ ํ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•„๋“œ ๋ชฉ๋ก์˜ ํฌ๊ธฐ๋Š” ์ด๋ฆ„๊ณผ ๊ฐ’์˜ ๋ฐ”์ดํŠธ ๊ธธ์ด ๋ฐ ๊ฐ ํ•„๋“œ์— ๋Œ€ํ•ด 32๋ฐ”์ดํŠธ์˜ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ํฌํ•จํ•œ ๋น„์••์ถ•๋œ ํ•„๋“œ ํฌ๊ธฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.

๊ตฌํ˜„์ฒด๊ฐ€ ํ”ผ์–ด์—๊ฒŒ ์ด ์ œํ•œ์„ ์•Œ๋ฆฌ๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ, ์ด๋Š” SETTINGS_MAX_FIELD_SECTION_SIZE ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋ฐ”์ดํŠธ ์ˆ˜๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ˆ˜์‹ ํ•œ ๊ตฌํ˜„์ฒด๋Š” ํ‘œ์‹œ๋œ ํฌ๊ธฐ๋ฅผ ์ดˆ๊ณผํ•˜๋Š” HTTP ๋ฉ”์‹œ์ง€ ํ—ค๋”๋ฅผ ์ „์†กํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(SHOULD NOT), ํ”ผ์–ด๊ฐ€ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ HTTP ๋ฉ”์‹œ์ง€๋Š” ์˜ค๋ฆฌ์ง„ ์„œ๋ฒ„์— ๋„๋‹ฌํ•˜๊ธฐ ์ „์— ํ•˜๋‚˜ ์ด์ƒ์˜ ์ค‘๊ฐœ์ž๋ฅผ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค; ์ž์„ธํ•œ ๋‚ด์šฉ์€ RFC 9110 ์„น์…˜ 3.7์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ์ด ์ œํ•œ์€ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ ๊ตฌํ˜„์ฒด์— ์˜ํ•ด ๋ณ„๋„๋กœ ์ ์šฉ๋˜๋ฏ€๋กœ, ์ด ์ œํ•œ๋ณด๋‹ค ์ž‘์€ ๋ฉ”์‹œ์ง€๋ผ๋„ ์ˆ˜๋ฝ๋œ๋‹ค๊ณ  ๋ณด์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

4.3. HTTP ์ œ์–ด ๋ฐ์ดํ„ฐ

HTTP/2์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, HTTP/3๋Š” ํ•„๋“œ ์ด๋ฆ„์ด : ๋ฌธ์ž(ASCII 0x3a)๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ผ๋ จ์˜ ์˜์‚ฌ-ํ—ค๋”(pseudo-header) ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ๋Š” ๋ฉ”์‹œ์ง€ ์ œ์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค; ์ž์„ธํ•œ ๋‚ด์šฉ์€ RFC 9110 ์„น์…˜ 6.2๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ๋Š” HTTP ํ•„๋“œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์—”๋“œํฌ์ธํŠธ๋Š” ์ด ๋ฌธ์„œ์— ์ •์˜๋œ ๊ฒƒ ์ด์™ธ์˜ ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ๋ฅผ ์ƒ์„ฑํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT). ๊ทธ๋Ÿฌ๋‚˜ ํ™•์žฅ์œผ๋กœ ์ด ์ œํ•œ์˜ ์ˆ˜์ •์ด ํ˜‘์ƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค; ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„น์…˜ 9๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ๋Š” ์ •์˜๋œ ๋ฌธ๋งฅ์—์„œ๋งŒ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค. ์š”์ฒญ์— ๋Œ€ํ•ด ์ •์˜๋œ ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ๋Š” ์‘๋‹ต์— ๋‚˜ํƒ€๋‚˜๋ฉด ์•ˆ ๋˜๋ฉฐ(MUST NOT), ์‘๋‹ต์— ๋Œ€ํ•ด ์ •์˜๋œ ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ๋Š” ์š”์ฒญ์— ๋‚˜ํƒ€๋‚˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT). ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ๋Š” ํŠธ๋ ˆ์ผ๋Ÿฌ ์„น์…˜์— ๋‚˜ํƒ€๋‚˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT). ์—”๋“œํฌ์ธํŠธ๋Š” ์ •์˜๋˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” ์š”์ฒญ ๋˜๋Š” ์‘๋‹ต์„ malformed๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

๋ชจ๋“  ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ๋Š” ์ผ๋ฐ˜ ํ—ค๋” ํ•„๋“œ๋ณด๋‹ค ๋จผ์ € ํ—ค๋” ์„น์…˜์— ๋‚˜ํƒ€๋‚˜์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ์ผ๋ฐ˜ ํ—ค๋” ํ•„๋“œ ์ดํ›„์— ๋‚˜ํƒ€๋‚˜๋Š” ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” ์š”์ฒญ ๋˜๋Š” ์‘๋‹ต์€ malformed๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

4.3.1. ์š”์ฒญ ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ

์š”์ฒญ์— ๋Œ€ํ•ด ๋‹ค์Œ ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ๋“ค์ด ์ •์˜๋ฉ๋‹ˆ๋‹ค:

":method":
HTTP ๋ฉ”์„œ๋“œ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค(RFC 9110 ์„น์…˜ 9 ์ฐธ์กฐ).
":scheme":
๋Œ€์ƒ URI์˜ ์Šคํ‚ด ๋ถ€๋ถ„์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค(RFC 3986 ์„น์…˜ 3.1 ์ฐธ์กฐ).
:scheme ์˜์‚ฌ-ํ—ค๋”๋Š” "http"์™€ "https"๋กœ ์ œํ•œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ”„๋ก์‹œ๋‚˜ ๊ฒŒ์ดํŠธ์›จ์ด๋Š” ๋น„-HTTP ์Šคํ‚ด์— ๋Œ€ํ•œ ์š”์ฒญ์„ ๋ฒˆ์—ญํ•˜์—ฌ HTTP๋ฅผ ์‚ฌ์šฉํ•ด ๋น„-HTTP ์„œ๋น„์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
"https" ์ด์™ธ์˜ ์Šคํ‚ด ์‚ฌ์šฉ์— ๊ด€ํ•œ ์ง€์นจ์€ ์„น์…˜ 3.1.2๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
":authority":
๋Œ€์ƒ URI์˜ authority ๋ถ€๋ถ„์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค(RFC 3986 ์„น์…˜ 3.2 ์ฐธ์กฐ). "http" ๋˜๋Š” "https" ์Šคํ‚ด์„ ๊ฐ€์ง„ URI์˜ ๊ฒฝ์šฐ, ์ด authority๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” userinfo ํ•˜์œ„ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ํฌํ•จํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT).
HTTP/1.1 ์š”์ฒญ ์ค„์„ ์ •ํ™•ํžˆ ์žฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด, ์ด ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ๋Š” ๋ฉ”์„œ๋“œ๋ณ„ ํ˜•์‹์˜ ์š”์ฒญ-ํƒ€๊นƒ์„ ๊ฐ€์ง„ HTTP/1.1 ์š”์ฒญ์„ ๋ฒˆ์—ญํ•  ๋•Œ ์ƒ๋žต๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST); ์ž์„ธํ•œ ๋‚ด์šฉ์€ RFC 9110 ์„น์…˜ 7.1์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. HTTP/3 ์š”์ฒญ์„ ์ง์ ‘ ์ƒ์„ฑํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ๋Š” Host ํ—ค๋” ํ•„๋“œ ๋Œ€์‹  :authority ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD). HTTP/3 ์š”์ฒญ์„ HTTP/1.1์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ค‘๊ฐœ์ž๋Š” ์š”์ฒญ์— Host ํ•„๋“œ๊ฐ€ ์—†์œผ๋ฉด :authority ์˜์‚ฌ-ํ—ค๋” ๊ฐ’์„ ๋ณต์‚ฌํ•˜์—ฌ Host ํ•„๋“œ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).
":path":
๋Œ€์ƒ URI์˜ ๊ฒฝ๋กœ ๋ฐ ์ฟผ๋ฆฌ ๋ถ€๋ถ„์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค("path-absolute" ์ƒ์„ฑ๋ฌผ๊ณผ ์„ ํƒ์ ์œผ๋กœ ?(ASCII 0x3f) ๋’ค์˜ "query" ์ƒ์„ฑ๋ฌผ; RFC 3986์˜ ์„น์…˜ 3.3 ๋ฐ 3.4 ์ฐธ์กฐ).
"http" ๋˜๋Š” "https" URI์˜ ๊ฒฝ์šฐ ์ด ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ๋Š” ๋น„์–ด ์žˆ์„ ์ˆ˜ ์—†์œผ๋ฉฐ, ๊ฒฝ๋กœ ๊ตฌ์„ฑ์š”์†Œ๊ฐ€ ์—†๋Š” "http" ๋˜๋Š” "https" URI๋Š” /(ASCII 0x2f)๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ๊ฒฝ๋กœ ๊ตฌ์„ฑ์š”์†Œ๊ฐ€ ์—†๋Š” OPTIONS ์š”์ฒญ์€ :path ์˜์‚ฌ-ํ—ค๋”์— *(ASCII 0x2a)๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  HTTP/3 ์š”์ฒญ์€ :method, :scheme, :path ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ๋ฅผ ์ •ํ™•ํžˆ ํ•˜๋‚˜์”ฉ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST), CONNECT ์š”์ฒญ์˜ ๊ฒฝ์šฐ๋Š” ์˜ˆ์™ธ์ž…๋‹ˆ๋‹ค; ์„น์…˜ 4.4๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

:scheme ์˜์‚ฌ-ํ—ค๋”๊ฐ€ ๊ถŒํ•œ(authority) ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ํ•„์ˆ˜๋กœ ๊ฐ€์ง€๋Š” ์Šคํ‚ด(์˜ˆ: "http", "https")์„ ์‹๋ณ„ํ•˜๋Š” ๊ฒฝ์šฐ, ์š”์ฒญ์€ :authority ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ ๋˜๋Š” Host ํ—ค๋” ํ•„๋“œ ์ค‘ ํ•˜๋‚˜๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST) . ์ด๋Ÿฌํ•œ ํ•„๋“œ๊ฐ€ ์กด์žฌํ•  ๊ฒฝ์šฐ ๋น„์–ด ์žˆ์–ด์„œ๋Š” ์•ˆ ๋˜๋ฉฐ(MUST NOT), ๋‘ ํ•„๋“œ๊ฐ€ ๋ชจ๋‘ ์กด์žฌํ•œ๋‹ค๋ฉด ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ์Šคํ‚ด์ด ๊ถŒํ•œ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ํ•„์ˆ˜๋กœ ๊ฐ–์ง€ ์•Š์œผ๋ฉฐ ์š”์ฒญ ํƒ€๊นƒ์— ์ œ๊ณต๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, ์š”์ฒญ์€ :authority ์˜์‚ฌ-ํ—ค๋” ๋˜๋Š” Host ํ—ค๋”๋ฅผ ํฌํ•จํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT).

ํ•„์ˆ˜ ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ๋ฅผ ์ƒ๋žตํ•˜๊ฑฐ๋‚˜ ํ•ด๋‹น ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ์— ์ž˜๋ชป๋œ ๊ฐ’์„ ํฌํ•จํ•˜๋Š” HTTP ์š”์ฒญ์€ malformed์ž…๋‹ˆ๋‹ค.

HTTP/3๋Š” HTTP/1.1 ์š”์ฒญ ์ค„์— ํฌํ•จ๋œ ๋ฒ„์ „ ์‹๋ณ„์ž๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. HTTP/3 ์š”์ฒญ์€ ๋ฌต์‹œ์ ์œผ๋กœ "3.0" ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

4.3.2. ์‘๋‹ต ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ

์‘๋‹ต์— ๋Œ€ํ•ด์„œ๋Š” HTTP ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋‹จ์ผ ":status" ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ๊ฐ€ ์ •์˜๋ฉ๋‹ˆ๋‹ค; ์ž์„ธํ•œ ๋‚ด์šฉ์€ RFC 9110 ์„น์…˜ 15๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ์ด ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ๋Š” ๋ชจ๋“  ์‘๋‹ต์— ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST); ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์‘๋‹ต์€ malformed์ž…๋‹ˆ๋‹ค.

HTTP/3๋Š” HTTP/1.1 ์ƒํƒœ ์ค„์— ํฌํ•จ๋œ ๋ฒ„์ „์ด๋‚˜ ์ด์œ  ๊ตฌ๋ฌธ(reason phrase)์„ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. HTTP/3 ์‘๋‹ต์€ ๋ฌต์‹œ์ ์œผ๋กœ "3.0" ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

4.4. CONNECT ๋ฉ”์„œ๋“œ

CONNECT ๋ฉ”์„œ๋“œ๋Š” ์ˆ˜์‹ ์ž๊ฐ€ ์š”์ฒญ-ํƒ€๊นƒ์œผ๋กœ ์‹๋ณ„๋œ ๋Œ€์ƒ ์˜ค๋ฆฌ์ง„ ์„œ๋ฒ„์— ๋Œ€ํ•ด ํ„ฐ๋„์„ ์„ค์ •ํ•˜๋„๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค; ์ž์„ธํ•œ ๋‚ด์šฉ์€ RFC 9110 ์„น์…˜ 9.3.6๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ์ฃผ๋กœ HTTP ํ”„๋ก์‹œ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜์–ด ์˜ค๋ฆฌ์ง„ ์„œ๋ฒ„์™€ TLS ์„ธ์…˜์„ ์„ค์ •ํ•˜๊ณ  "https" ๋ฆฌ์†Œ์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

HTTP/1.x์—์„œ๋Š” CONNECT๊ฐ€ ์ „์ฒด HTTP ์—ฐ๊ฒฐ์„ ์›๊ฒฉ ํ˜ธ์ŠคํŠธ๋กœ์˜ ํ„ฐ๋„๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. HTTP/2 ๋ฐ HTTP/3์—์„œ๋Š” CONNECT ๋ฉ”์„œ๋“œ๊ฐ€ ๋‹จ์ผ ์ŠคํŠธ๋ฆผ์„ ํ†ตํ•ด ํ„ฐ๋„์„ ์„ค์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

CONNECT ์š”์ฒญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ์„ฑ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST):

  • :method ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ๋Š” "CONNECT"๋กœ ์„ค์ •๋œ๋‹ค
  • :scheme ๋ฐ :path ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ๋Š” ์ƒ๋žต๋œ๋‹ค
  • :authority ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ๋Š” ์—ฐ๊ฒฐํ•  ํ˜ธ์ŠคํŠธ์™€ ํฌํŠธ๋ฅผ ํฌํ•จํ•œ๋‹ค(์ด๋Š” CONNECT ์š”์ฒญ์˜ authority-form ์š”์ฒญ-ํƒ€๊นƒ์— ํ•ด๋‹น).

request stream์€ ์ „์†ก์ด ์ข…๋ฃŒ๋œ ํ›„์—๋„ ์ „์†ก๋  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ธฐ ์œ„ํ•ด ์š”์ฒญ์˜ ๋์—์„œ ์—ด๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ทœ์น™์„ ์ค€์ˆ˜ํ•˜์ง€ ์•Š๋Š” CONNECT ์š”์ฒญ์€ malformed์ž…๋‹ˆ๋‹ค.

CONNECT๋ฅผ ์ง€์›ํ•˜๋Š” ํ”„๋ก์‹œ๋Š” :authority ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ์— ์‹๋ณ„๋œ ์„œ๋ฒ„์— TCP ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค([RFC0793]). ์ด ์—ฐ๊ฒฐ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์„ค์ •๋˜๋ฉด, ํ”„๋ก์‹œ๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ 2xx ๊ณ„์—ด ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•œ HEADERS ํ”„๋ ˆ์ž„์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค(์ž์„ธํ•œ ๋‚ด์šฉ์€ RFC 9110 ์„น์…˜ 15.3).

์ŠคํŠธ๋ฆผ์˜ ๋ชจ๋“  DATA ํ”„๋ ˆ์ž„์€ TCP ์—ฐ๊ฒฐ์—์„œ ์ „์†ก๋˜๊ฑฐ๋‚˜ ์ˆ˜์‹ ๋œ ๋ฐ์ดํ„ฐ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ „์†กํ•œ DATA ํ”„๋ ˆ์ž„์˜ ํŽ˜์ด๋กœ๋“œ๋Š” ํ”„๋ก์‹œ๊ฐ€ TCP ์„œ๋ฒ„๋กœ ์ „์†กํ•˜๊ณ , TCP ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ˆ˜์‹ ๋œ ๋ฐ์ดํ„ฐ๋Š” ํ”„๋ก์‹œ๊ฐ€ DATA ํ”„๋ ˆ์ž„์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ํŒจํ‚ค์ง•ํ•˜์—ฌ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. TCP ์„ธ๊ทธ๋จผํŠธ์˜ ํฌ๊ธฐ ๋ฐ ์ˆ˜๊ฐ€ HTTP DATA ๋˜๋Š” QUIC STREAM ํ”„๋ ˆ์ž„์˜ ํฌ๊ธฐ ๋ฐ ์ˆ˜์™€ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งคํ•‘๋œ๋‹ค๊ณ  ๋ณด์žฅ๋˜์ง€ ์•Š์Œ์„ ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค.

CONNECT ๋ฉ”์„œ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์ŠคํŠธ๋ฆผ์—์„œ ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ DATA ํ”„๋ ˆ์ž„๋ฟ์ž…๋‹ˆ๋‹ค. ํ™•์žฅ ํ”„๋ ˆ์ž„์€ ํ™•์žฅ ์ •์˜์—์„œ ๋ช…์‹œ์ ์œผ๋กœ ํ—ˆ์šฉ๋˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY). ๋‹ค๋ฅธ ์•Œ๋ ค์ง„ ํ”„๋ ˆ์ž„ ์œ ํ˜•์˜ ์ˆ˜์‹ ์€ connection error ์œ ํ˜• H3_FRAME_UNEXPECTED๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

TCP ์—ฐ๊ฒฐ์€ ์–ด๋А ํ”ผ์–ด์— ์˜ํ•ด์„œ๋“  ๋‹ซํž ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ request stream์„ ์ข…๋ฃŒํ•˜๋ฉด(์ฆ‰, ํ”„๋ก์‹œ์—์„œ ์ˆ˜์‹  ์ŠคํŠธ๋ฆผ์ด "Data Recvd" ์ƒํƒœ์— ๋“ค์–ด๊ฐ), ํ”„๋ก์‹œ๋Š” TCP ์„œ๋ฒ„์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์—์„œ FIN ๋น„ํŠธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ก์‹œ๊ฐ€ FIN ๋น„ํŠธ๊ฐ€ ์„ค์ •๋œ ํŒจํ‚ท์„ ์ˆ˜์‹ ํ•˜๋ฉด, ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ด๋Š” ์ „์†ก ์ŠคํŠธ๋ฆผ์„ ๋‹ซ์Šต๋‹ˆ๋‹ค. ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐ˜์ชฝ ๋‹ซํžŒ TCP ์—ฐ๊ฒฐ์€ ๋ฌดํšจ๋Š” ์•„๋‹ˆ์ง€๋งŒ ์ข…์ข… ์„œ๋ฒ„์—์„œ ์ œ๋Œ€๋กœ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ํด๋ผ์ด์–ธํŠธ๋Š” CONNECT ๋Œ€์ƒ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ๋™์•ˆ ์ „์†ก์„ ์œ„ํ•œ ์ŠคํŠธ๋ฆผ์„ ๋‹ซ์•„์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(SHOULD NOT).

TCP connection error๋Š” ์ŠคํŠธ๋ฆผ์„ ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฒŒ ์ข…๋ฃŒํ•จ์œผ๋กœ์จ ์‹ ํ˜ธ๋ฉ๋‹ˆ๋‹ค. ํ”„๋ก์‹œ๋Š” RST ๋น„ํŠธ๊ฐ€ ์„ค์ •๋œ TCP ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” ๊ฒƒ์„ ํฌํ•จํ•œ TCP ์—ฐ๊ฒฐ์˜ ๋ชจ๋“  ์˜ค๋ฅ˜๋ฅผ stream error ์œ ํ˜• H3_CONNECT_ERROR๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ํ”„๋ก์‹œ๊ฐ€ ์ŠคํŠธ๋ฆผ ๋˜๋Š” QUIC ์—ฐ๊ฒฐ์—์„œ ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ํ•˜๋ฉด TCP ์—ฐ๊ฒฐ์„ ๋‹ซ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ํ”„๋ก์‹œ๊ฐ€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ŠคํŠธ๋ฆผ์„ ๋ฆฌ์…‹ํ•˜๊ฑฐ๋‚˜ ์ŠคํŠธ๋ฆผ์—์„œ ์ฝ๊ธฐ๋ฅผ ์ค‘๋‹จํ•œ ๊ฒƒ์„ ๊ฐ์ง€ํ•˜๋ฉด TCP ์—ฐ๊ฒฐ์„ ๋‹ซ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ์ŠคํŠธ๋ฆผ์ด ๋ฆฌ์…‹๋˜๊ฑฐ๋‚˜ ์ฝ๊ธฐ๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ์˜ํ•ด ์ค‘๋‹จ๋œ ๊ฒฝ์šฐ, ํ”„๋ก์‹œ๋Š” ์ŠคํŠธ๋ฆผ์˜ ๋‹ค๋ฅธ ๋ฐฉํ–ฅ์— ๋Œ€ํ•ด์„œ๋„ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์–‘ ๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ์ด ์ทจ์†Œ๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD). ๋ชจ๋“  ๊ฒฝ์šฐ์—, ๊ธฐ๋ฐ˜ TCP ๊ตฌํ˜„์ด ํ—ˆ์šฉํ•œ๋‹ค๋ฉด ํ”„๋ก์‹œ๋Š” RST ๋น„ํŠธ๊ฐ€ ์„ค์ •๋œ TCP ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD).

CONNECT๋Š” ์ž„์˜์˜ ์„œ๋ฒ„๋กœ ํ„ฐ๋„์„ ์ƒ์„ฑํ•˜๋ฏ€๋กœ, CONNECT๋ฅผ ์ง€์›ํ•˜๋Š” ํ”„๋ก์‹œ๋Š” ๊ทธ ์‚ฌ์šฉ์„ ์•Œ๋ ค์ง„ ํฌํŠธ ์ง‘ํ•ฉ์ด๋‚˜ ์•ˆ์ „ํ•œ ์š”์ฒญ ๋Œ€์ƒ ๋ชฉ๋ก์œผ๋กœ ์ œํ•œํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD); ์ž์„ธํ•œ ๋‚ด์šฉ์€ RFC 9110 ์„น์…˜ 9.3.6์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

4.5. HTTP ์—…๊ทธ๋ ˆ์ด๋“œ

HTTP/3๋Š” HTTP Upgrade ๋ฉ”์ปค๋‹ˆ์ฆ˜(RFC 9110 ์„น์…˜ 7.8)์ด๋‚˜ 101 (Switching Protocols) ์ •๋ณด ์ƒํƒœ ์ฝ”๋“œ(RFC 9110 ์„น์…˜ 15.2.2)๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

4.6. ์„œ๋ฒ„ ํ‘ธ์‹œ

์„œ๋ฒ„ ํ‘ธ์‹œ๋Š” ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•ด๋‹น ์š”์ฒญ์„ ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜์—ฌ ์š”์ฒญ-์‘๋‹ต ๊ตํ™˜์„ ํด๋ผ์ด์–ธํŠธ๋กœ ํ‘ธ์‹œํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ์ƒํ˜ธ์ž‘์šฉ ๋ชจ๋“œ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์ž ์žฌ์  ์ง€์—ฐ ๊ฐœ์„ ์„ ์œ„ํ•ด ๋„คํŠธ์›Œํฌ ์‚ฌ์šฉ์„ ๊ฑฐ๋ž˜(trade-off)ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. HTTP/3์˜ ์„œ๋ฒ„ ํ‘ธ์‹œ๋Š” RFC 9113 ์„น์…˜ 8.2์— ์„ค๋ช…๋œ ๋‚ด์šฉ๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ์„œ๋ฒ„ ํ‘ธ์‹œ์—๋Š” ์„œ๋ฒ„๊ฐ€ ํ• ๋‹นํ•˜๋Š” ๊ณ ์œ ํ•œ push ID๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. push ID๋Š” HTTP/3 ์—ฐ๊ฒฐ ์ˆ˜๋ช… ๋™์•ˆ ๋‹ค์–‘ํ•œ ๋ฌธ๋งฅ์—์„œ ํ‘ธ์‹œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

push ID ๊ณต๊ฐ„์€ 0์—์„œ ์‹œ์ž‘ํ•˜์—ฌ MAX_PUSH_ID ํ”„๋ ˆ์ž„์œผ๋กœ ์„ค์ •๋œ ์ตœ๋Œ€๊ฐ’์œผ๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค. ํŠนํžˆ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ MAX_PUSH_ID ํ”„๋ ˆ์ž„์„ ์ „์†กํ•œ ์ดํ›„์—์•ผ ์„œ๋ฒ„๋Š” ํ‘ธ์‹œ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๊ฐ€ ์•ฝ์†ํ•  ์ˆ˜ ์žˆ๋Š” ํ‘ธ์‹œ ์ˆ˜๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด MAX_PUSH_ID ํ”„๋ ˆ์ž„์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ์ˆœ์ฐจ์ ์œผ๋กœ push ID๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD). ํด๋ผ์ด์–ธํŠธ๋Š” push stream์„ ์ˆ˜์‹ ํ–ˆ์„ ๋•Œ, ์•„์ง MAX_PUSH_ID ํ”„๋ ˆ์ž„์ด ์ „์†ก๋˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ์ŠคํŠธ๋ฆผ์ด ์ตœ๋Œ€ push ID๋ณด๋‹ค ํฐ push ID๋ฅผ ์ฐธ์กฐํ•˜๋ฉด ์ด๋ฅผ connection error ์œ ํ˜• H3_ID_ERROR๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

push ID๋Š” ์š”์ฒญ ๋ฉ”์‹œ์ง€์˜ ์ œ์–ด ๋ฐ์ดํ„ฐ์™€ ํ—ค๋” ํ•„๋“œ๋ฅผ ์šด๋ฐ˜ํ•˜๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ PUSH_PROMISE ํ”„๋ ˆ์ž„์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ”„๋ ˆ์ž„์€ ํ‘ธ์‹œ๋ฅผ ์ƒ์„ฑํ•œ request stream์—์„œ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์„œ๋ฒ„ ํ‘ธ์‹œ๋ฅผ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ๊ณผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ push ID๊ฐ€ ์—ฌ๋Ÿฌ request streams์—์„œ ์•ฝ์†๋  ๋•Œ, ์••์ถ• ํ•ด์ œ๋œ ์š”์ฒญ ํ•„๋“œ ์„น์…˜์€ ๋™์ผํ•œ ์ˆœ์„œ๋กœ ๋™์ผํ•œ ํ•„๋“œ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•˜๋ฉฐ ๊ฐ ํ•„๋“œ์˜ ์ด๋ฆ„๊ณผ ๊ฐ’์€ ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

๊ทธ ํ›„ push ID๋Š” ํ•ด๋‹น ์•ฝ์†์„ ์ตœ์ข…์ ์œผ๋กœ ์ดํ–‰ํ•˜๋Š” push stream์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น push stream์€ ์ž์‹ ์ด ์ดํ–‰ํ•˜๋Š” ์•ฝ์†์˜ push ID๋ฅผ ์‹๋ณ„ํ•˜๊ณ , ์ดํ›„ ์„น์…˜ 4.1์— ์„ค๋ช…๋œ ๋Œ€๋กœ ์•ฝ์†๋œ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ push ID๋Š” CANCEL_PUSH ํ”„๋ ˆ์ž„์—์„œ๋„ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค; ์„น์…˜ 7.2.3 ์ฐธ์กฐ. ํด๋ผ์ด์–ธํŠธ๋Š” ์ด ํ”„๋ ˆ์ž„์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ฝ์†๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ ์ž ํ•˜์ง€ ์•Š์Œ์„ ํ‘œ์‹œํ•˜๊ณ , ์„œ๋ฒ„๋Š” ์ด์ „ ์•ฝ์†์„ ์ดํ–‰ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž„์„ ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•ด ์ด ํ”„๋ ˆ์ž„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ์š”์ฒญ์„ ํ‘ธ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ๋‹ค์Œ ์†์„ฑ์„ ๊ฐ€์ง„ ์š”์ฒญ์„ ํ‘ธ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY):

  • ์บ์‹œ ๊ฐ€๋Šฅ(cacheable); RFC 9110 ์„น์…˜ 9.2.3 ์ฐธ์กฐ
  • ์•ˆ์ „(safe); RFC 9110 ์„น์…˜ 9.2.1 ์ฐธ์กฐ
  • ์š”์ฒญ ์ฝ˜ํ…์ธ ๋‚˜ ํŠธ๋ ˆ์ผ๋Ÿฌ ์„น์…˜์„ ํฌํ•จํ•˜์ง€ ์•Š์Œ

์„œ๋ฒ„๋Š” ์ž์‹ ์ด ๊ถŒํ•œ์„ ๊ฐ€์ง€๋Š” :authority ์˜์‚ฌ-ํ—ค๋” ํ•„๋“œ ๊ฐ’์„ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์•„์ง ํ‘ธ์‹œ๋œ ์š”์ฒญ์œผ๋กœ ํ‘œ์‹œ๋œ ์˜ค๋ฆฌ์ง„์— ๋Œ€ํ•ด ์—ฐ๊ฒฐ์„ ๊ฒ€์ฆํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ํด๋ผ์ด์–ธํŠธ๋Š” ํ•ด๋‹น ์˜ค๋ฆฌ์ง„์— ๋Œ€ํ•ด ์š”์ฒญ์„ ์ „์†กํ•˜๊ธฐ ์ „์— ์ˆ˜ํ–‰ํ•  ๊ฒƒ๊ณผ ๋™์ผํ•œ ๊ฒ€์ฆ ์ ˆ์ฐจ๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์„น์…˜ 3.3 ์ฐธ์กฐ). ์ด ๊ฒ€์ฆ์ด ์‹คํŒจํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” ํ•ด๋‹น ์˜ค๋ฆฌ์ง„์— ๋Œ€ํ•ด ์„œ๋ฒ„๋ฅผ ๊ถŒํ•œ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT).

ํด๋ผ์ด์–ธํŠธ๋Š” ์บ์‹œ ๋ถˆ๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์•ˆ์ „์„ฑ์ด ์•Œ๋ ค์ง€์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ์š”์ฒญ ์ฝ˜ํ…์ธ ๊ฐ€ ์žˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š”, ๋˜๋Š” ์„œ๋ฒ„๋ฅผ ํ•ด๋‹น ์˜ค๋ฆฌ์ง„์— ๋Œ€ํ•ด ๊ถŒํ•œ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ์—ฌ๊ธฐ์ง€ ์•Š๋Š” ์š”์ฒญ์„ ์ „๋‹ฌํ•˜๋Š” PUSH_PROMISE ํ”„๋ ˆ์ž„์„ ์ˆ˜์‹ ํ•˜๋ฉด CANCEL_PUSH ํ”„๋ ˆ์ž„์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD). ํ•ด๋‹นํ•˜๋Š” ์‘๋‹ต์€ ์‚ฌ์šฉ๋˜๊ฑฐ๋‚˜ ์บ์‹œ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT).

๊ฐ ํ‘ธ์‹œ๋œ ์‘๋‹ต์€ ํ•˜๋‚˜ ์ด์ƒ์˜ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ๊ณผ ์—ฐ๊ด€๋ฉ๋‹ˆ๋‹ค. ํ‘ธ์‹œ๋Š” ํ•ด๋‹น request stream์—์„œ PUSH_PROMISE ํ”„๋ ˆ์ž„์ด ์ˆ˜์‹ ๋œ ์š”์ฒญ๊ณผ ์—ฐ๊ด€๋ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ์„œ๋ฒ„ ํ‘ธ์‹œ๋Š” ๋™์ผํ•œ push ID๋ฅผ ๊ฐ€์ง„ PUSH_PROMISE ํ”„๋ ˆ์ž„์„ ์—ฌ๋Ÿฌ request streams์—์„œ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ๊ณผ ์—ฐ๊ด€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์—ฐ๊ด€์€ ํ”„๋กœํ† ์ฝœ์˜ ๋™์ž‘์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์ง€๋งŒ, ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ๊ฐ€ ํ‘ธ์‹œ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ• ์ง€ ๊ฒฐ์ •ํ•  ๋•Œ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY).

PUSH_PROMISE ํ”„๋ ˆ์ž„์˜ ์‘๋‹ต ๋‚ด ํŠน์ • ๋ถ€๋ถ„๊ณผ์˜ ์ˆœ์„œ ์ง€์ •์€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ์•ฝ์†๋œ ์‘๋‹ต์„ ์ฐธ์กฐํ•˜๋Š” HEADERS ๋˜๋Š” DATA ํ”„๋ ˆ์ž„์„ ๋ณด๋‚ด๊ธฐ ์ „์— PUSH_PROMISE ํ”„๋ ˆ์ž„์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD). ์ด๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๊ฐ€ ํ‘ธ์‹œํ•  ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ•  ๊ฐ€๋Šฅ์„ฑ์„ ์ค„์ž…๋‹ˆ๋‹ค.

์žฌ์ •๋ ฌ๋กœ ์ธํ•ด push stream ๋ฐ์ดํ„ฐ๊ฐ€ ๊ด€๋ จ PUSH_PROMISE ํ”„๋ ˆ์ž„๋ณด๋‹ค ๋จผ์ € ๋„์ฐฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์•„์ง ์•Œ๋ ค์ง€์ง€ ์•Š์€ push ID๋ฅผ ๊ฐ€์ง„ ์ƒˆ push stream์„ ์ˆ˜์‹ ํ•˜๋ฉด, ๊ด€๋ จ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ๊ณผ ํ‘ธ์‹œ๋œ ์š”์ฒญ ํ—ค๋” ํ•„๋“œ๋Š” ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์ผ์น˜ํ•˜๋Š” PUSH_PROMISE ํ”„๋ ˆ์ž„์„ ๊ธฐ๋Œ€ํ•˜๋ฉฐ ์ŠคํŠธ๋ฆผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฒ„ํผ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์ŠคํŠธ๋ฆผ ํ๋ฆ„ ์ œ์–ด(RFC 9000 ์„น์…˜ 4.1)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„๊ฐ€ ํ‘ธ์‹œ ์ŠคํŠธ๋ฆผ์— ์ปค๋ฐ‹ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์–‘์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ํ•ฉ๋ฆฌ์ ์ธ ์‹œ๊ฐ„ ๋‚ด์— ๋Œ€์‘ํ•˜๋Š” PUSH_PROMISE ํ”„๋ ˆ์ž„์ด ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์œผ๋ฉด push streams์—์„œ์˜ ์ฝ๊ธฐ๋ฅผ ์ค‘๋‹จํ•˜๊ณ  ์ด๋ฏธ ์ฝ์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ๊ธฐํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD).

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ‘ธ์‹œ๋ฅผ ์ทจ์†Œํ•œ ์ดํ›„์— push stream ๋ฐ์ดํ„ฐ๊ฐ€ ๋„์ฐฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ํด๋ผ์ด์–ธํŠธ๋Š” ์˜ค๋ฅ˜ ์ฝ”๋“œ H3_REQUEST_CANCELLED๋กœ ์ŠคํŠธ๋ฆผ ์ฝ๊ธฐ๋ฅผ ์ค‘๋‹จ(abort)ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์„œ๋ฒ„์—๊ฒŒ ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜์ง€ ๋ง ๊ฒƒ์„ ์š”์ฒญํ•˜๋ฉฐ ์ˆ˜์‹  ์‹œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๊ฐ€ ํ๊ธฐ๋  ๊ฒƒ์ž„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์บ์‹œ ๊ฐ€๋Šฅ(์ž์„ธํ•œ ๋‚ด์šฉ์€ RFC 9111 ์„น์…˜ 3)ํ•œ ํ‘ธ์‹œ๋œ ์‘๋‹ต์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ HTTP ์บ์‹œ๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒฝ์šฐ ํด๋ผ์ด์–ธํŠธ์— ์˜ํ•ด ์ €์žฅ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ‘ธ์‹œ๋œ ์‘๋‹ต์€ ์ˆ˜์‹  ์‹œ์ ์— ์˜ค๋ฆฌ์ง„ ์„œ๋ฒ„์—์„œ ์„ฑ๊ณต์ ์œผ๋กœ ๊ฒ€์ฆ๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค(์˜ˆ: "no-cache" ์บ์‹œ ์‘๋‹ต ์ง€์‹œ์ž๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ; RFC 9111 ์„น์…˜ 5.2.2.4 ์ฐธ์กฐ).

์บ์‹œ ๋ถˆ๊ฐ€ํ•œ ํ‘ธ์‹œ๋œ ์‘๋‹ต์€ ์–ด๋–ค HTTP ์บ์‹œ์— ์˜ํ•ด์„œ๋„ ์ €์žฅ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT). ๊ทธ๋Ÿฌ๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋ณ„๋„๋กœ ์ œ๊ณต๋  ์ˆ˜๋Š” ์žˆ์Šต๋‹ˆ๋‹ค(MAY).


5. ์—ฐ๊ฒฐ ์ข…๋ฃŒ

์ผ๋‹จ ์ˆ˜๋ฆฝ๋˜๋ฉด, HTTP/3 ์—ฐ๊ฒฐ์€ ์—ฐ๊ฒฐ์ด ๋‹ซํž ๋•Œ๊นŒ์ง€ ์—ฌ๋Ÿฌ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์˜ค๋žœ ๊ธฐ๊ฐ„์— ๊ฑธ์ณ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ์ข…๋ฃŒ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5.1. ์œ ํœด ์—ฐ๊ฒฐ

๊ฐ QUIC ์—”๋“œํฌ์ธํŠธ๋Š” ํ•ธ๋“œ์…ฐ์ดํฌ ๋™์•ˆ ์œ ํœด ํƒ€์ž„์•„์›ƒ์„ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค. QUIC ์—ฐ๊ฒฐ์ด ์ด ๊ธฐ๊ฐ„๋ณด๋‹ค ์˜ค๋ž˜ ์œ ํœด ์ƒํƒœ(ํŒจํ‚ท ์ˆ˜์‹  ์—†์Œ)๋กœ ์œ ์ง€๋˜๋ฉด, ํ”ผ์–ด๋Š” ํ•ด๋‹น ์—ฐ๊ฒฐ์ด ๋‹ซํžŒ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค. HTTP/3 ๊ตฌํ˜„์ฒด๋Š” ๊ธฐ์กด ์—ฐ๊ฒฐ์ด QUIC ํ•ธ๋“œ์…ฐ์ดํฌ ๋™์•ˆ ํ˜‘์ƒ๋œ ์œ ํœด ํƒ€์ž„์•„์›ƒ๋ณด๋‹ค ์˜ค๋ž˜ ์œ ํœด ์ƒํƒœ์˜€์„ ๊ฒฝ์šฐ ์ƒˆ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด HTTP/3 ์—ฐ๊ฒฐ์„ ์—ด์–ด์•ผ ํ•˜๋ฉฐ, ์œ ํœด ํƒ€์ž„์•„์›ƒ์— ์ ‘๊ทผํ•˜๊ณ  ์žˆ์„ ๊ฒฝ์šฐ์—๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(SHOULD); ๊ด€๋ จ ๋‚ด์šฉ์€ QUIC-TRANSPORT์˜ ์„น์…˜ 10.1์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

HTTP ํด๋ผ์ด์–ธํŠธ๋Š” ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์ด๋‚˜ ์„œ๋ฒ„ ํ‘ธ์‹œ๊ฐ€ ๋‚จ์•„ ์žˆ๋Š” ๋™์•ˆ ์ „์†ก์ด ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ด ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค(์ž์„ธํ•œ ๋‚ด์šฉ์€ QUIC-TRANSPORT ์„น์…˜ 10.1.2 ์ฐธ์กฐ). ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‘๋‹ต์„ ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š์„ ๋•Œ๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š” ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์œ ํœด ์—ฐ๊ฒฐ์ด ํƒ€์ž„์•„์›ƒ๋˜๊ฒŒ ๋†”๋‘๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ์ดํŠธ์›จ์ด๋Š” ์„œ๋ฒ„์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ ์„ค์ • ์ง€์—ฐ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”๋ฅผ ์˜ˆ์ƒํ•˜์—ฌ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY). ์„œ๋ฒ„๋Š” ์ ๊ทน์ ์œผ๋กœ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(SHOULD NOT).

5.2. ์—ฐ๊ฒฐ ์…ง๋‹ค์šด

์—ฐ๊ฒฐ์ด ์œ ํœด ์ƒํƒœ๊ฐ€ ์•„๋‹ ๋•Œ์—๋„, ์–ด๋А ํ•œ์ชฝ ์—”๋“œํฌ์ธํŠธ๋Š” ์—ฐ๊ฒฐ ์‚ฌ์šฉ์„ ์ค‘๋‹จํ•˜๊ณ  ์ •์ƒ์ ์ธ ์—ฐ๊ฒฐ ์ข…๋ฃŒ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—”๋“œํฌ์ธํŠธ๋Š” GOAWAY ํ”„๋ ˆ์ž„์„ ์ „์†กํ•˜์—ฌ HTTP/3 ์—ฐ๊ฒฐ์˜ ์ •์ƒ ์ข…๋ฃŒ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. GOAWAY ํ”„๋ ˆ์ž„์—๋Š” ์ˆ˜์‹ ์ž์—๊ฒŒ ์ด ์—ฐ๊ฒฐ์—์„œ ์ฒ˜๋ฆฌ๋˜์—ˆ๊ฑฐ๋‚˜ ์ฒ˜๋ฆฌ๋˜์—ˆ์„ ์ˆ˜ ์žˆ๋Š” ์š”์ฒญ ๋˜๋Š” ํ‘ธ์‹œ์˜ ๋ฒ”์œ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์‹๋ณ„์ž๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‹œ์ž‘ํ•œ ์–‘๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ ID๋ฅผ, ํด๋ผ์ด์–ธํŠธ๋Š” push ID๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ํ‘œ์‹œ๋œ ์‹๋ณ„์ž ์ด์ƒ์ธ ์š”์ฒญ์ด๋‚˜ ํ‘ธ์‹œ๋Š” GOAWAY๋ฅผ ๋ณด๋‚ธ ์ธก์—์„œ ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค(์„น์…˜ 4.1.1 ์ฐธ์กฐ). ์ฒ˜๋ฆฌ๋œ ์š”์ฒญ์ด๋‚˜ ํ‘ธ์‹œ๊ฐ€ ์—†๋‹ค๋ฉด ์ด ์‹๋ณ„์ž๋Š” 0์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY).

GOAWAY ํ”„๋ ˆ์ž„์— ํฌํ•จ๋œ ์ •๋ณด๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ HTTP/3 ์—ฐ๊ฒฐ ์ข…๋ฃŒ ์ด์ „์— ์–ด๋–ค ์š”์ฒญ์ด๋‚˜ ํ‘ธ์‹œ๊ฐ€ ์ˆ˜๋ฝ๋˜์—ˆ๋Š”์ง€ ํ•ฉ์˜ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค. GOAWAY ํ”„๋ ˆ์ž„์„ ์ „์†กํ•œ ํ›„, ํ•ด๋‹น ์—”๋“œํฌ์ธํŠธ๋Š” ์˜ํ–ฅ์„ ๋ฐ›๋Š” ์ŠคํŠธ๋ฆผ์˜ ์ „์†ก ์ƒํƒœ๋ฅผ ์ •๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ‘œ์‹œ๋œ ์‹๋ณ„์ž๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ์‹๋ณ„์ž๋ฅผ ๊ฐ€์ง„ ๋ชจ๋“  ์š”์ฒญ์ด๋‚˜ ํ‘ธ์‹œ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ทจ์†Œ(์„น์…˜ 4.1.1 ๋ฐ ์„น์…˜ 7.2.3 ์ฐธ์กฐ)ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(SHOULD). ๋” ๋งŽ์€ ์š”์ฒญ์ด๋‚˜ ํ‘ธ์‹œ๊ฐ€ ๋„์ฐฉํ•˜๋Š” ๋™์•ˆ์—๋„ ์ด๋ฅผ ๊ณ„์† ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(SHOULD).

์—”๋“œํฌ์ธํŠธ๋Š” ํ”ผ์–ด๋กœ๋ถ€ํ„ฐ GOAWAY ํ”„๋ ˆ์ž„์„ ์ˆ˜์‹ ํ•œ ํ›„์—๋Š” ํ•ด๋‹น ์—ฐ๊ฒฐ์—์„œ ์ƒˆ๋กœ์šด ์š”์ฒญ์„ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ํ‘ธ์‹œ๋ฅผ ์•ฝ์†ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT). ํด๋ผ์ด์–ธํŠธ๋Š” ์ถ”๊ฐ€ ์š”์ฒญ์„ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด ์ƒˆ ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฆฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY).

์ผ๋ถ€ ์š”์ฒญ์ด๋‚˜ ํ‘ธ์‹œ๋Š” ์ด๋ฏธ ์ „์†ก ์ค‘์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • GOAWAY ํ”„๋ ˆ์ž„์„ ์ˆ˜์‹ ํ–ˆ์„ ๋•Œ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋ฏธ GOAWAY ํ”„๋ ˆ์ž„์— ํฌํ•จ๋œ ์‹๋ณ„์ž๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ์ŠคํŠธ๋ฆผ ID๋กœ ์š”์ฒญ์„ ๋ณด๋ƒˆ๋‹ค๋ฉด, ํ•ด๋‹น ์š”์ฒญ์€ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ์š”์ฒญ์„ ๋‹ค๋ฅธ HTTP ์—ฐ๊ฒฐ์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ ์žฌ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ์žฌ์‹œ๋„ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์„œ๋ฒ„๊ฐ€ ์—ฐ๊ฒฐ์„ ๋‹ซ์„ ๋•Œ ์ง„ํ–‰ ์ค‘์ธ ๋ชจ๋“  ์š”์ฒญ์„ ์žƒ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

    GOAWAY ํ”„๋ ˆ์ž„์— ์žˆ๋Š” ์ŠคํŠธ๋ฆผ ID๋ณด๋‹ค ์ž‘์€ ์ŠคํŠธ๋ฆผ ID์˜ ์š”์ฒญ๋“ค์€ ์ฒ˜๋ฆฌ๋˜์—ˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค; ํ•ด๋‹น ์š”์ฒญ์— ๋Œ€ํ•œ ์ƒํƒœ๋Š” ์‘๋‹ต์ด ์ˆ˜์‹ ๋˜๊ฑฐ๋‚˜ ํ•ด๋‹น ์ŠคํŠธ๋ฆผ์ด ๊ฐœ๋ณ„์ ์œผ๋กœ ๋ฆฌ์…‹๋˜๊ฑฐ๋‚˜ ๋” ๋‚ฎ์€ ์ŠคํŠธ๋ฆผ ID๋ฅผ ํฌํ•จํ•˜๋Š” ๋‹ค๋ฅธ GOAWAY๊ฐ€ ์ˆ˜์‹ ๋˜๊ฑฐ๋‚˜ ์—ฐ๊ฒฐ์ด ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

    ์„œ๋ฒ„๋Š” ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํ‘œ์‹œ๋œ ID๋ณด๋‹ค ๋‚ฎ์€ ์ŠคํŠธ๋ฆผ์˜ ๊ฐœ๋ณ„ ์š”์ฒญ์„ ๊ฑฐ๋ถ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY).

  • ์„œ๋ฒ„๊ฐ€ GOAWAY ํ”„๋ ˆ์ž„์„ ๋ฐ›์€ ์ดํ›„์— push ID๊ฐ€ ํ•ด๋‹น GOAWAY ํ”„๋ ˆ์ž„์— ํฌํ•จ๋œ ์‹๋ณ„์ž๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ํ‘ธ์‹œ๋ฅผ ์•ฝ์†ํ–ˆ๋‹ค๋ฉด, ๊ทธ ํ‘ธ์‹œ๋Š” ์ˆ˜๋ฝ๋˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์„œ๋ฒ„๋Š” ์—ฐ๊ฒฐ ์ข…๋ฃŒ๊ฐ€ ์‚ฌ์ „์— ์•Œ๋ ค์ง„ ๊ฒฝ์šฐ, ์„ค๋ น ์‚ฌ์ „ ํ†ต์ง€๊ฐ€ ์งง๋”๋ผ๋„ ์›๊ฒฉ ํ”ผ์–ด๊ฐ€ ์š”์ฒญ์ด ๋ถ€๋ถ„์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋„๋ก GOAWAY ํ”„๋ ˆ์ž„์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD). ์˜ˆ๋ฅผ ๋“ค์–ด, HTTP ํด๋ผ์ด์–ธํŠธ๊ฐ€ POST๋ฅผ ์ „์†กํ•˜๋Š” ๋™์‹œ์— ์„œ๋ฒ„๊ฐ€ QUIC ์—ฐ๊ฒฐ์„ ๋‹ซ๋Š” ๊ฒฝ์šฐ, ์„œ๋ฒ„๊ฐ€ ์–ด๋–ค ์ŠคํŠธ๋ฆผ์—์„œ ๋™์ž‘ํ–ˆ๋Š”์ง€ ํ‘œ์‹œํ•˜๋Š” GOAWAY ํ”„๋ ˆ์ž„์„ ๋ณด๋‚ด์ง€ ์•Š์œผ๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๊ฐ€ ํ•ด๋‹น POST ์š”์ฒญ ์ฒ˜๋ฆฌ๋ฅผ ์‹œ์ž‘ํ–ˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์—”๋“œํฌ์ธํŠธ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์‹๋ณ„์ž๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ GOAWAY ํ”„๋ ˆ์ž„์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ฐ ํ”„๋ ˆ์ž„์˜ ์‹๋ณ„์ž๋Š” ์ด์ „ ํ”„๋ ˆ์ž„์˜ ์‹๋ณ„์ž๋ณด๋‹ค ํด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(MUST NOT), ์™œ๋ƒํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” ์ด๋ฏธ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ์š”์ฒญ์„ ๋‹ค๋ฅธ HTTP ์—ฐ๊ฒฐ์—์„œ ์žฌ์‹œ๋„ํ–ˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด์ „์— ์ˆ˜์‹ ํ•œ ๊ฒƒ๋ณด๋‹ค ๋” ํฐ ์‹๋ณ„์ž๋ฅผ ํฌํ•จํ•œ GOAWAY๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” ๊ฒฝ์šฐ, ์ด๊ฒƒ์€ connection error ์œ ํ˜• H3_ID_ERROR๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

์—ฐ๊ฒฐ์„ ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒํ•˜๋ ค๋Š” ์—”๋“œํฌ์ธํŠธ๋Š” ์ตœ๋Œ€ ๊ฐ€๋Šฅํ•œ ๊ฐ’(์„œ๋ฒ„์˜ ๊ฒฝ์šฐ 262-4, ํด๋ผ์ด์–ธํŠธ์˜ ๊ฒฝ์šฐ 262-1)์œผ๋กœ ์„ค์ •๋œ GOAWAY ํ”„๋ ˆ์ž„์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ”ผ์–ด๊ฐ€ ์ƒˆ ์š”์ฒญ์ด๋‚˜ ํ‘ธ์‹œ ์ƒ์„ฑ์„ ์ค‘๋‹จํ•˜๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ง„ํ–‰ ์ค‘์ธ ์š”์ฒญ์ด๋‚˜ ํ‘ธ์‹œ๊ฐ€ ๋„์ฐฉํ•  ์‹œ๊ฐ„์„ ํ—ˆ์šฉํ•œ ํ›„, ์—”๋“œํฌ์ธํŠธ๋Š” ์—ฐ๊ฒฐ ์ข…๋ฃŒ ์ „์— ์ˆ˜๋ฝํ•  ์ˆ˜ ์žˆ๋Š” ์š”์ฒญ์ด๋‚˜ ํ‘ธ์‹œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋˜ ๋‹ค๋ฅธ GOAWAY ํ”„๋ ˆ์ž„์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์š”์ฒญ์„ ์žƒ์ง€ ์•Š๊ณ  ์—ฐ๊ฒฐ์„ ๊น”๋”ํ•˜๊ฒŒ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๋Š” ์ž์‹ ์ด ์ „์†กํ•˜๋Š” GOAWAY์˜ Push ID ํ•„๋“œ ๊ฐ’์— ๋Œ€ํ•ด ๋” ๋งŽ์€ ์œ ์—ฐ์„ฑ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ๊ฐ’ 262-1์€ ์„œ๋ฒ„๊ฐ€ ์ด๋ฏธ ์•ฝ์†ํ•œ ํ‘ธ์‹œ๋ฅผ ๊ณ„์† ์ดํ–‰ํ•  ์ˆ˜ ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋” ์ž‘์€ ๊ฐ’์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด ๊ฐ’๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ push ID๋ฅผ ๊ฐ€์ง„ ํ‘ธ์‹œ๋ฅผ ๊ฑฐ๋ถ€ํ•  ๊ฒƒ์ž„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์„œ๋ฒ„์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ํด๋ผ์ด์–ธํŠธ๋Š” ์ง€์ •๋œ push ID๊ฐ€ ์ด์ „์— ์ „์†กํ•œ ๊ฐ’๋ณด๋‹ค ํฌ์ง€ ์•Š์€ ํ•œ ํ›„์† GOAWAY ํ”„๋ ˆ์ž„์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY).

GOAWAY๊ฐ€ ์ฃผ์–ด์ง„ ์š”์ฒญ์ด๋‚˜ ํ‘ธ์‹œ๊ฐ€ ์ฒ˜๋ฆฌ๋˜๊ฑฐ๋‚˜ ์ˆ˜๋ฝ๋˜์ง€ ์•Š์„ ๊ฒƒ์ž„์„ ๋‚˜ํƒ€๋‚ด๋”๋ผ๋„, ๊ธฐ๋ณธ ์ „์†ก ๋ฆฌ์†Œ์Šค๋Š” ์—ฌ์ „ํžˆ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์š”์ฒญ์„ ์‹œ์ž‘ํ•œ ์—”๋“œํฌ์ธํŠธ๋Š” ์ „์†ก ์ƒํƒœ๋ฅผ ์ •๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฅผ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆ˜๋ฝ๋œ ๋ชจ๋“  ์š”์ฒญ๊ณผ ํ‘ธ์‹œ๊ฐ€ ์ฒ˜๋ฆฌ๋˜๋ฉด, ์—”๋“œํฌ์ธํŠธ๋Š” ์—ฐ๊ฒฐ์„ ์œ ํœด ์ƒํƒœ๊ฐ€ ๋˜๋„๋ก ํ—ˆ์šฉํ•˜๊ฑฐ๋‚˜ ์ฆ‰์‹œ ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY). ์ •์ƒ์ ์ธ ์…ง๋‹ค์šด์„ ์™„๋ฃŒํ•œ ์—”๋“œํฌ์ธํŠธ๋Š” ์—ฐ๊ฒฐ์„ ๋‹ซ์„ ๋•Œ H3_NO_ERROR ์˜ค๋ฅ˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD).

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์–‘๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ ID๋ฅผ ์†Œ๋น„ํ•œ ๊ฒฝ์šฐ, ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋” ์ด์ƒ ์š”์ฒญ์„ ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ GOAWAY ํ”„๋ ˆ์ž„์„ ๋ณด๋‚ผ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

5.3. ์ฆ‰์‹œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ข…๋ฃŒ

HTTP/3 ๊ตฌํ˜„์ฒด๋Š” ์–ธ์ œ๋“ ์ง€ QUIC ์—ฐ๊ฒฐ์„ ์ฆ‰์‹œ ๋‹ซ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ์ด์–ด๊ฐ€ ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ–ˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” QUIC CONNECTION_CLOSE ํ”„๋ ˆ์ž„์„ ํ”ผ์–ด์—๊ฒŒ ์ „์†กํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ดˆ๋ž˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋ ˆ์ž„์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์˜ค๋ฅ˜ ์ฝ”๋“œ๋Š” ์—ฐ๊ฒฐ์ด ๋‹ซํžˆ๋Š” ์ด์œ ๋ฅผ ํ”ผ์–ด์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ์„ ๋‹ซ์„ ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜ ์ฝ”๋“œ๋Š” ์„น์…˜ 8์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์—ฐ๊ฒฐ์„ ๋‹ซ๊ธฐ ์ „์—, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ผ๋ถ€ ์š”์ฒญ์„ ์žฌ์‹œ๋„ํ•  ์ˆ˜ ์žˆ๋„๋ก GOAWAY ํ”„๋ ˆ์ž„์„ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY). QUIC CONNECTION_CLOSE ํ”„๋ ˆ์ž„๊ณผ ๋™์ผํ•œ ํŒจํ‚ท์— GOAWAY ํ”„๋ ˆ์ž„์„ ํฌํ•จํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ”„๋ ˆ์ž„์„ ์ˆ˜์‹ ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์ง‘๋‹ˆ๋‹ค.

๋ช…์‹œ์ ์œผ๋กœ ๋‹ซํžˆ์ง€ ์•Š์€ ์—ด๋ฆฐ ์ŠคํŠธ๋ฆผ์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ์—ฐ๊ฒฐ์ด ๋‹ซํž ๋•Œ ํ•ด๋‹น ์ŠคํŠธ๋ฆผ๋“ค์€ ์•”๋ฌต์ ์œผ๋กœ ๋‹ซํž™๋‹ˆ๋‹ค; ์ž์„ธํ•œ ๋‚ด์šฉ์€ QUIC-TRANSPORT ์„น์…˜ 10.2๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

5.4. ์ „์†ก ์ข…๋ฃŒ

์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์œ ๋กœ QUIC ์ „์†ก์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ์ด์–ด์— ์—ฐ๊ฒฐ์ด ์ข…๋ฃŒ๋˜์—ˆ์Œ์„ ์•Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ”ผ์–ด์˜ ๋ช…์‹œ์  ์ข…๋ฃŒ, ์ „์†ก ๊ณ„์ธต ์˜ค๋ฅ˜, ๋˜๋Š” ์—ฐ๊ฒฐ์„ฑ์„ ์ค‘๋‹จ์‹œํ‚ค๋Š” ๋„คํŠธ์›Œํฌ ํ† ํด๋กœ์ง€์˜ ๋ณ€ํ™” ๋•Œ๋ฌธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฐ๊ฒฐ์ด GOAWAY ํ”„๋ ˆ์ž„ ์—†์ด ์ข…๋ฃŒ๋˜๋Š” ๊ฒฝ์šฐ, ํด๋ผ์ด์–ธํŠธ๋Š” ์ „์†ก๋œ ๋ชจ๋“  ์š”์ฒญ(์ „๋ถ€ ๋˜๋Š” ์ผ๋ถ€)์ด ์ฒ˜๋ฆฌ๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Œ์„ ๊ฐ€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).


6. ์ŠคํŠธ๋ฆผ ๋งคํ•‘ ๋ฐ ์‚ฌ์šฉ

QUIC ์ŠคํŠธ๋ฆผ์€ ๋ฐ”์ดํŠธ์— ๋Œ€ํ•ด ์‹ ๋ขฐ ๊ฐ€๋Šฅํ•œ ์ˆœ์„œ ์ „๋‹ฌ์„ ์ œ๊ณตํ•˜์ง€๋งŒ, ๋‹ค๋ฅธ ์ŠคํŠธ๋ฆผ์˜ ๋ฐ”์ดํŠธ์™€ ๊ด€๋ จ๋œ ์ „๋‹ฌ ์ˆœ์„œ์— ๋Œ€ํ•ด์„œ๋Š” ๋ณด์žฅ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. QUIC ๋ฒ„์ „ 1์—์„œ๋Š” HTTP ํ”„๋ ˆ์ž„์„ ํฌํ•จํ•˜๋Š” ์ŠคํŠธ๋ฆผ ๋ฐ์ดํ„ฐ๊ฐ€ QUIC STREAM ํ”„๋ ˆ์ž„์— ์˜ํ•ด ์šด๋ฐ˜๋˜์ง€๋งŒ, ์ด ํ”„๋ ˆ์ด๋ฐ์€ HTTP ํ”„๋ ˆ์ด๋ฐ ๊ณ„์ธต์— ๋Œ€ํ•ด์„œ๋Š” ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ „์†ก ๊ณ„์ธต์€ ์ˆ˜์‹ ๋œ ์ŠคํŠธ๋ฆผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฒ„ํผ๋งํ•˜๊ณ  ์ •๋ ฌํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์‹ ๋ขฐ ๊ฐ€๋Šฅํ•œ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์„ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค. QUIC์€ ์ŠคํŠธ๋ฆผ ๋‚ด์—์„œ ์ˆœ์„œ๊ฐ€ ๋’ค๋ฐ”๋€ ์ „๋‹ฌ์„ ํ—ˆ์šฉํ•˜์ง€๋งŒ, HTTP/3๋Š” ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

QUIC ์ŠคํŠธ๋ฆผ์€ ๋ฐœ์‹ ์ž์—์„œ ์ˆ˜์‹ ์ž ์ชฝ์œผ๋กœ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์šด๋ฐ˜ํ•˜๋Š” ๋‹จ๋ฐฉํ–ฅ์ผ ์ˆ˜๋„ ์žˆ๊ณ , ์–‘๋ฐฉํ–ฅ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์šด๋ฐ˜ํ•˜๋Š” ์–‘๋ฐฉํ–ฅ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆผ์€ ํด๋ผ์ด์–ธํŠธ๋‚˜ ์„œ๋ฒ„ ์ค‘ ์–ด๋А ์ชฝ์—์„œ๋“  ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. QUIC ์ŠคํŠธ๋ฆผ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ QUIC-TRANSPORT ์„น์…˜ 2์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

HTTP ํ•„๋“œ์™€ ๋ฐ์ดํ„ฐ๊ฐ€ QUIC์„ ํ†ตํ•ด ์ „์†ก๋  ๋•Œ, QUIC ๋ ˆ์ด์–ด๊ฐ€ ๋Œ€๋ถ€๋ถ„์˜ ์ŠคํŠธ๋ฆผ ๊ด€๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. QUIC์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” HTTP๊ฐ€ ๋ณ„๋„์˜ ๋‹ค์ค‘ํ™” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค: QUIC ์ŠคํŠธ๋ฆผ์„ ํ†ตํ•ด ์ „์†ก๋œ ๋ฐ์ดํ„ฐ๋Š” ํ•ญ์ƒ ํŠน์ • HTTP ํŠธ๋žœ์žญ์…˜์ด๋‚˜ ์ „์ฒด HTTP/3 ์—ฐ๊ฒฐ ์ปจํ…์ŠคํŠธ์— ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค.

6.1. ์–‘๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ

๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‹œ์ž‘ํ•œ ์–‘๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ์€ HTTP ์š”์ฒญ ๋ฐ ์‘๋‹ต์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์–‘๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ์€ ์‘๋‹ต์ด ์š”์ฒญ๊ณผ ์‰ฝ๊ฒŒ ์—ฐ๊ด€๋  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ŠคํŠธ๋ฆผ์„ ์š”์ฒญ ์ŠคํŠธ๋ฆผ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์ฒซ ๋ฒˆ์งธ ์š”์ฒญ์ด QUIC ์ŠคํŠธ๋ฆผ 0์—์„œ ๋ฐœ์ƒํ•˜๊ณ , ์ดํ›„ ์š”์ฒญ์€ ์ŠคํŠธ๋ฆผ 4, 8 ๋“ฑ์—์„œ ๋ฐœ์ƒํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ŠคํŠธ๋ฆผ๋“ค์ด ์—ด๋ฆฌ๋„๋ก ํ—ˆ์šฉํ•˜๊ธฐ ์œ„ํ•ด HTTP/3 ์„œ๋ฒ„๋Š” ํ—ˆ์šฉ๋œ ์ŠคํŠธ๋ฆผ ์ˆ˜์™€ ์ดˆ๊ธฐ ์ŠคํŠธ๋ฆผ ํ๋ฆ„ ์ œ์–ด ์ฐฝ์— ๋Œ€ํ•ด 0์ด ์•„๋‹Œ ์ตœ์†Œ๊ฐ’์„ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(SHOULD). ๋ณ‘๋ ฌ์„ฑ์„ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์ œํ•œํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ํ•œ ๋ฒˆ์— ์ ์–ด๋„ 100๊ฐœ์˜ ์š”์ฒญ ์ŠคํŠธ๋ฆผ์„ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD).

HTTP/3๋Š” ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘ํ•œ ์–‘๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ, ํ™•์žฅ์ด ์ด๋Ÿฌํ•œ ์ŠคํŠธ๋ฆผ์˜ ์‚ฌ์šฉ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘ํ•œ ์–‘๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ์˜ ์ˆ˜์‹ ์„ ํ•ด๋‹น ํ™•์žฅ์ด ํ˜‘์ƒ๋˜์ง€ ์•Š์€ ํ•œ connection error ์œ ํ˜• H3_STREAM_CREATION_ERROR๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

6.2. ๋‹จ๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ

๋‹จ๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ(์–ด๋А ๋ฐฉํ–ฅ์ด๋“ )์€ ๋‹ค์–‘ํ•œ ๋ชฉ์ ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ชฉ์ ์€ ์ŠคํŠธ๋ฆผ ์‹œ์ž‘ ๋ถ€๋ถ„์— ๋ณ€์ˆ˜ ๊ธธ์ด ์ •์ˆ˜๋กœ ์ „์†ก๋˜๋Š” ์ŠคํŠธ๋ฆผ ์œ ํ˜•์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด ์ •์ˆ˜ ๋’ค์— ๋”ฐ๋ฅด๋Š” ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹๊ณผ ๊ตฌ์กฐ๋Š” ์ŠคํŠธ๋ฆผ ์œ ํ˜•์— ์˜ํ•ด ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

Unidirectional Stream Header {
  Stream Type (i),
}

Figure 1: Unidirectional Stream Header

์ด ๋ฌธ์„œ์—์„œ๋Š” ๋‘ ๊ฐ€์ง€ ์ŠคํŠธ๋ฆผ ์œ ํ˜•์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค: ์ œ์–ด ์ŠคํŠธ๋ฆผ(์„น์…˜ 6.2.1)๊ณผ ํ‘ธ์‹œ ์ŠคํŠธ๋ฆผ(์„น์…˜ 6.2.2). [QPACK]๋Š” ๋‘ ๊ฐ€์ง€ ์ถ”๊ฐ€ ์ŠคํŠธ๋ฆผ ์œ ํ˜•์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ŠคํŠธ๋ฆผ ์œ ํ˜•์€ HTTP/3 ํ™•์žฅ์œผ๋กœ ์ •์˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค; ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„น์…˜ 9์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ์ผ๋ถ€ ์ŠคํŠธ๋ฆผ ์œ ํ˜•์€ ์˜ˆ์•ฝ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค(์„น์…˜ 6.2.3).

HTTP/3 ์—ฐ๊ฒฐ์˜ ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ๋‹จ๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ์˜ ์ƒ์„ฑ ๋ฐ ๋ฐ์ดํ„ฐ ๊ตํ™˜์€ ์„ฑ๋Šฅ์— ๋ฏผ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์—”๋“œํฌ์ธํŠธ๊ฐ€ ์ŠคํŠธ๋ฆผ ์ˆ˜๋‚˜ ์ด๋Ÿฌํ•œ ์ŠคํŠธ๋ฆผ์˜ ํ๋ฆ„ ์ œ์–ด ์ฐฝ์„ ๊ณผ๋„ํ•˜๊ฒŒ ์ œํ•œํ•˜๋ฉด ์›๊ฒฉ ํ”ผ์–ด๊ฐ€ ์กฐ๊ธฐ์— ์ œํ•œ์— ๋„๋‹ฌํ•˜์—ฌ ์ฐจ๋‹จ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์ปค์ง‘๋‹ˆ๋‹ค. ํŠนํžˆ ๊ตฌํ˜„์ฒด๋Š” ์›๊ฒฉ ํ”ผ์–ด๊ฐ€ ํ—ˆ์šฉ๋œ ์ผ๋ถ€ ๋‹จ๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ์—์„œ ์˜ˆ์•ฝ๋œ ์ŠคํŠธ๋ฆผ ๋™์ž‘(์„น์…˜ 6.2.3)์„ ์ˆ˜ํ–‰ํ•˜๋ ค ํ•  ์ˆ˜ ์žˆ์Œ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ์—”๋“œํฌ์ธํŠธ๋Š” HTTP ์ œ์–ด ์ŠคํŠธ๋ฆผ์„ ์œ„ํ•ด ์ตœ์†Œ ํ•˜๋‚˜์˜ ๋‹จ๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. QPACK์€ ์ถ”๊ฐ€๋กœ ๋‘ ๊ฐœ์˜ ๋‹จ๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ์„ ์š”๊ตฌํ•˜๋ฉฐ, ๋‹ค๋ฅธ ํ™•์žฅ๋„ ๋” ๋งŽ์€ ์ŠคํŠธ๋ฆผ์„ ์š”๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์ „์†กํ•˜๋Š” ์ „์†ก ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ํ”ผ์–ด๊ฐ€ ์ ์–ด๋„ ์„ธ ๊ฐœ์˜ ๋‹จ๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ๋˜ํ•œ ์ด๋Ÿฌํ•œ ์ „์†ก ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๊ฐ ๋‹จ๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ์— ๋Œ€ํ•ด ์ ์–ด๋„ 1,024 ๋ฐ”์ดํŠธ์˜ ํ๋ฆ„ ์ œ์–ด ํฌ๋ ˆ๋”ง์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD).

ํ”ผ์–ด๊ฐ€ ์ค‘์š”ํ•œ ๋‹จ๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•˜๊ธฐ ์ „์— ์ดˆ๊ธฐ ํฌ๋ ˆ๋”ง์„ ๋ชจ๋‘ ์†Œ๋น„ํ•˜๋ฉด, ์—”๋“œํฌ์ธํŠธ๊ฐ€ ์ถ”๊ฐ€ ๋‹จ๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ถ”๊ฐ€ ํฌ๋ ˆ๋”ง์„ ๋ถ€์—ฌํ•  ํ•„์š”๋Š” ์—†๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค. ์—”๋“œํฌ์ธํŠธ๋Š” HTTP ์ œ์–ด ์ŠคํŠธ๋ฆผ ๋ฐ ํ•„์ˆ˜ ํ™•์žฅ(์˜ˆ: QPACK ์ธ์ฝ”๋” ๋ฐ ๋””์ฝ”๋” ์ŠคํŠธ๋ฆผ)์— ์˜ํ•ด ์š”๊ตฌ๋˜๋Š” ๋‹จ๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ์„ ๋จผ์ € ์ƒ์„ฑํ•œ ํ›„ ํ”ผ์–ด๊ฐ€ ํ—ˆ์šฉํ•˜๋Š” ๋ฒ”์œ„ ๋‚ด์—์„œ ์ถ”๊ฐ€ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•ฉ๋‹ˆ๋‹ค(SHOULD).

์ŠคํŠธ๋ฆผ ํ—ค๋”๊ฐ€ ์ˆ˜์‹ ์ž์—์„œ ์ง€์›๋˜์ง€ ์•Š๋Š” ์ŠคํŠธ๋ฆผ ์œ ํ˜•์„ ๋‚˜ํƒ€๋‚ด๋ฉด, ํ•ด๋‹น ์ŠคํŠธ๋ฆผ์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์€ ์˜๋ฏธ๋ฅผ ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์†Œ๋น„๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฏธ์ง€์˜ ์ŠคํŠธ๋ฆผ ์œ ํ˜• ์ˆ˜์‹ ์ž๋Š” ์ŠคํŠธ๋ฆผ ์ฝ๊ธฐ๋ฅผ ์ค‘๋‹จํ•˜๊ฑฐ๋‚˜ ์ˆ˜์‹ ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ ์ฒ˜๋ฆฌ ์—†์ด ํ๊ธฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ์ฝ๊ธฐ๊ฐ€ ์ค‘๋‹จ๋˜๋Š” ๊ฒฝ์šฐ ์ˆ˜์‹ ์ž๋Š” H3_STREAM_CREATION_ERROR ์˜ค๋ฅ˜ ์ฝ”๋“œ ๋˜๋Š” ์˜ˆ์•ฝ๋œ ์˜ค๋ฅ˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD). ์ˆ˜์‹ ์ž๋Š” ๋ฏธ์ง€์˜ ์ŠคํŠธ๋ฆผ ์œ ํ˜•์„ ์–ด๋– ํ•œ ์ข…๋ฅ˜์˜ connection error๋กœ ๊ฐ„์ฃผํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT).

ํŠน์ • ์ŠคํŠธ๋ฆผ ์œ ํ˜•์ด ์—ฐ๊ฒฐ ์ƒํƒœ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ˆ˜์‹ ์ž๋Š” ์ŠคํŠธ๋ฆผ ์œ ํ˜•์„ ์ฝ๊ธฐ ์ „์— ๋“ค์–ด์˜ค๋Š” ๋‹จ๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ๊ธฐํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•ฉ๋‹ˆ๋‹ค(SHOULD NOT).

๊ตฌํ˜„์ฒด๋Š” ํ”ผ์–ด๊ฐ€ ํ•ด๋‹น ์ŠคํŠธ๋ฆผ ์œ ํ˜•์„ ์ง€์›ํ•˜๋Š”์ง€ ์•Œ๊ธฐ ์ „์— ์ŠคํŠธ๋ฆผ ์œ ํ˜•์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY). ๊ทธ๋Ÿฌ๋‚˜ QPACK์ด๋‚˜ ๋‹ค๋ฅธ ํ™•์žฅ์„ ํฌํ•จํ•˜์—ฌ ๊ธฐ์กด ํ”„๋กœํ† ์ฝœ ๊ตฌ์„ฑ์š”์†Œ์˜ ์ƒํƒœ๋‚˜ ์˜๋ฏธ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ์ŠคํŠธ๋ฆผ ์œ ํ˜•์€ ํ”ผ์–ด๊ฐ€ ์ด๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ™•์ธ๋  ๋•Œ๊นŒ์ง€ ์ „์†กํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT).

์†ก์‹ ์ž๋Š” ๋ณ„๋„์˜ ๋ช…์‹œ๊ฐ€ ์—†๋Š” ํ•œ ๋‹จ๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ์„ ๋‹ซ๊ฑฐ๋‚˜ ๋ฆฌ์…‹ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜์‹ ์ž๋Š” ๋‹จ๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ ํ—ค๋”๋ฅผ ์ˆ˜์‹ ํ•˜๊ธฐ ์ „์— ๋‹จ๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ์ด ๋‹ซํžˆ๊ฑฐ๋‚˜ ๋ฆฌ์…‹๋˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

6.2.1. ์ œ์–ด ์ŠคํŠธ๋ฆผ

์ œ์–ด ์ŠคํŠธ๋ฆผ์€ ์ŠคํŠธ๋ฆผ ์œ ํ˜• 0x00์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด ์ŠคํŠธ๋ฆผ์˜ ๋ฐ์ดํ„ฐ๋Š” ์„น์…˜ 7.2์— ์ •์˜๋œ ๋Œ€๋กœ HTTP/3 ํ”„๋ ˆ์ž„์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๊ฐ ์ธก์€ ์—ฐ๊ฒฐ ์‹œ์ž‘ ์‹œ ๋‹จ์ผ ์ œ์–ด ์ŠคํŠธ๋ฆผ์„ ์‹œ์ž‘ํ•˜๊ณ  ํ•ด๋‹น ์ŠคํŠธ๋ฆผ์˜ ์ฒซ ๋ฒˆ์งธ ํ”„๋ ˆ์ž„์œผ๋กœ ์ž์‹ ์˜ SETTINGS ํ”„๋ ˆ์ž„์„ ์ „์†กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ์ œ์–ด ์ŠคํŠธ๋ฆผ์˜ ์ฒซ ๋ฒˆ์งธ ํ”„๋ ˆ์ž„์ด ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„ ์œ ํ˜•์ด๋ฉด ์ด๋Š” connection error ์œ ํ˜• H3_MISSING_SETTINGS๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ํ”ผ์–ด๋‹น ํ•˜๋‚˜์˜ ์ œ์–ด ์ŠคํŠธ๋ฆผ๋งŒ ํ—ˆ์šฉ๋˜๋ฉฐ; ์ œ์–ด ์ŠคํŠธ๋ฆผ์„ ์ฃผ์žฅํ•˜๋Š” ๋‘ ๋ฒˆ์งธ ์ŠคํŠธ๋ฆผ์„ ์ˆ˜์‹ ํ•˜๋ฉด ์ด๋Š” connection error ์œ ํ˜• H3_STREAM_CREATION_ERROR๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ์ „์†ก์ž๋Š” ์ œ์–ด ์ŠคํŠธ๋ฆผ์„ ๋‹ซ์•„์„œ๋Š” ์•ˆ ๋˜๋ฉฐ(MUST NOT), ์ˆ˜์‹ ์ž๋Š” ์ „์†ก์ž์—๊ฒŒ ์ œ์–ด ์ŠคํŠธ๋ฆผ์„ ๋‹ซ๋„๋ก ์š”์ฒญํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT). ์–ด๋А ์ชฝ ์ œ์–ด ์ŠคํŠธ๋ฆผ์ด๋“  ๋‹ซํžˆ๋ฉด ์ด๋Š” connection error ์œ ํ˜• H3_CLOSED_CRITICAL_STREAM๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ์—ฐ๊ฒฐ ์˜ค๋ฅ˜๋Š” ์„น์…˜ 8์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ œ์–ด ์ŠคํŠธ๋ฆผ์˜ ๋‚ด์šฉ์€ ๋‹ค๋ฅธ ์ŠคํŠธ๋ฆผ์˜ ๋™์ž‘์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ, ์—”๋“œํฌ์ธํŠธ๋Š” ํ”ผ์–ด์˜ ์ œ์–ด ์ŠคํŠธ๋ฆผ์ด ์ฐจ๋‹จ๋˜์ง€ ์•Š๋„๋ก ์ถฉ๋ถ„ํ•œ ํ๋ฆ„ ์ œ์–ด ํฌ๋ ˆ๋”ง์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•ฉ๋‹ˆ๋‹ค(SHOULD).

๋‹จ์ผ ์–‘๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ ๋Œ€์‹  ๋‹จ๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ ์Œ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์–ด๋А ์ชฝ ํ”ผ์–ด๋“  ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. QUIC ์—ฐ๊ฒฐ์—์„œ 0-RTT ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ํด๋ผ์ด์–ธํŠธ ๋˜๋Š” ์„œ๋ฒ„๊ฐ€ ๋จผ์ € ์ŠคํŠธ๋ฆผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

6.2.2. ํ‘ธ์‹œ ์ŠคํŠธ๋ฆผ

์„œ๋ฒ„ ํ‘ธ์‹œ๋Š” ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์ด ์ด๋ฃจ์–ด์ง€๊ธฐ ์ „์— ์‘๋‹ต์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” HTTP/2์—์„œ ๋„์ž…๋œ ์„ ํƒ์  ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„น์…˜ 4.6์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

ํ‘ธ์‹œ ์ŠคํŠธ๋ฆผ์€ ์ŠคํŠธ๋ฆผ ์œ ํ˜• 0x01๋กœ ํ‘œ์‹œ๋˜๋ฉฐ, ์ด์–ด์„œ ์•ฝ์†์„ ์ดํ–‰ํ•˜๋Š” push ID๊ฐ€ ๋ณ€์ˆ˜ ๊ธธ์ด ์ •์ˆ˜๋กœ ์ธ์ฝ”๋”ฉ๋˜์–ด ์˜ต๋‹ˆ๋‹ค. ์ด ์ŠคํŠธ๋ฆผ์˜ ๋‚˜๋จธ์ง€ ๋ฐ์ดํ„ฐ๋Š” ์„น์…˜ 7.2์— ์ •์˜๋œ ๋Œ€๋กœ HTTP/3 ํ”„๋ ˆ์ž„์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, 0๊ฐœ ์ด์ƒ์˜ ์ค‘๊ฐ„ HTTP ์‘๋‹ต๊ณผ ๋‹จ์ผ ์ตœ์ข… HTTP ์‘๋‹ต์œผ๋กœ ์•ฝ์†๋œ ์„œ๋ฒ„ ํ‘ธ์‹œ๋ฅผ ์ดํ–‰ํ•ฉ๋‹ˆ๋‹ค(์„น์…˜ 4.1 ์ฐธ์กฐ). ์„œ๋ฒ„ ํ‘ธ์‹œ์™€ push ID์— ๊ด€ํ•œ ์„ค๋ช…์€ ์„น์…˜ 4.6์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

ํ‘ธ์‹œ๋Š” ์„œ๋ฒ„๋งŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค; ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‹œ์ž‘ํ•œ ํ‘ธ์‹œ ์ŠคํŠธ๋ฆผ์„ ์ˆ˜์‹ ํ•˜๋ฉด ์ด๋Š” connection error ์œ ํ˜• H3_STREAM_CREATION_ERROR๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

Push Stream Header {
  Stream Type (i) = 0x01,
  Push ID (i),
}

Figure 2: Push Stream Header

ํด๋ผ์ด์–ธํŠธ๋Š” ํ‘ธ์‹œ ์ŠคํŠธ๋ฆผ ํ—ค๋”๋ฅผ ์ฝ๊ธฐ ์ „์— ํ•ด๋‹น ์ŠคํŠธ๋ฆผ์—์„œ์˜ ์ฝ๊ธฐ๋ฅผ ์ค‘๋‹จํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(SHOULD NOT), ์ด๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— ์–ด๋–ค push ID๊ฐ€ ์ด๋ฏธ ์†Œ๋น„๋˜์—ˆ๋Š”์ง€์— ๋Œ€ํ•œ ๋ถˆ์ผ์น˜๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ฐ push ID๋Š” ํ‘ธ์‹œ ์ŠคํŠธ๋ฆผ ํ—ค๋”์—์„œ ํ•œ ๋ฒˆ๋งŒ ์‚ฌ์šฉ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋‹ค๋ฅธ ํ‘ธ์‹œ ์ŠคํŠธ๋ฆผ ํ—ค๋”์—์„œ ์ด๋ฏธ ์‚ฌ์šฉ๋œ push ID๋ฅผ ํฌํ•จํ•˜๋Š” ํ‘ธ์‹œ ์ŠคํŠธ๋ฆผ ํ—ค๋”๋ฅผ ๊ฐ์ง€ํ•˜๋ฉด, ํด๋ผ์ด์–ธํŠธ๋Š” ์ด๋ฅผ connection error ์œ ํ˜• H3_ID_ERROR๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

6.2.3. ์˜ˆ์•ฝ๋œ ์ŠคํŠธ๋ฆผ ์œ ํ˜•

๋น„์Œ์ˆ˜ ์ •์ˆ˜ N์— ๋Œ€ํ•ด ํ˜•์‹ 0x1f * N + 0x21์˜ ์ŠคํŠธ๋ฆผ ์œ ํ˜•์€ ๋ฏธ์ง€์˜ ์œ ํ˜•์„ ๋ฌด์‹œํ•ด์•ผ ํ•œ๋‹ค๋Š” ์š”๊ตฌ์‚ฌํ•ญ์„ ์ ๊ฒ€ํ•˜๊ธฐ ์œ„ํ•ด ์˜ˆ์•ฝ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ŠคํŠธ๋ฆผ์€ ์˜๋ฏธ๊ฐ€ ์—†์œผ๋ฉฐ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ์ด์–ด ํŒจ๋”ฉ์ด ํ•„์š”ํ•  ๋•Œ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ˜„์žฌ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก๋˜์ง€ ์•Š๋Š” ์—ฐ๊ฒฐ์—์„œ ์ „์†ก๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY). ์ˆ˜์‹ ์ž๋Š” ์ด๋Ÿฌํ•œ ์ŠคํŠธ๋ฆผ์„ ์ˆ˜์‹  ์‹œ ์–ด๋–ค ์˜๋ฏธ๋„ ๊ฐ€์ง„ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT).

์ŠคํŠธ๋ฆผ์˜ ํŽ˜์ด๋กœ๋“œ์™€ ๊ธธ์ด๋Š” ์ „์†ก ๊ตฌํ˜„์ฒด๊ฐ€ ์„ ํƒํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์„ ํƒ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์•ฝ๋œ ์ŠคํŠธ๋ฆผ ์œ ํ˜•์„ ์ „์†กํ•  ๋•Œ ๊ตฌํ˜„์ฒด๋Š” ์ŠคํŠธ๋ฆผ์„ ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒํ•˜๊ฑฐ๋‚˜ ๋ฆฌ์…‹ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY). ์ŠคํŠธ๋ฆผ์„ ๋ฆฌ์…‹ํ•  ๋•Œ์—๋Š” H3_NO_ERROR ์˜ค๋ฅ˜ ์ฝ”๋“œ ๋˜๋Š” ์˜ˆ์•ฝ๋œ ์˜ค๋ฅ˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD).


7. HTTP ํ”„๋ ˆ์ด๋ฐ ๊ณ„์ธต

HTTP ํ”„๋ ˆ์ž„์€ ์„น์…˜ 6์— ์„ค๋ช…๋œ ๋Œ€๋กœ QUIC ์ŠคํŠธ๋ฆผ์—์„œ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. HTTP/3๋Š” ์„ธ ๊ฐ€์ง€ ์ŠคํŠธ๋ฆผ ์œ ํ˜•์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค: ์ œ์–ด ์ŠคํŠธ๋ฆผ, ์š”์ฒญ ์ŠคํŠธ๋ฆผ, ๋ฐ ํ‘ธ์‹œ ์ŠคํŠธ๋ฆผ. ์ด ์ ˆ์€ HTTP/3 ํ”„๋ ˆ์ž„ ํ˜•์‹๊ณผ ํ—ˆ์šฉ๋˜๋Š” ์ŠคํŠธ๋ฆผ ์œ ํ˜•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค; ๊ฐœ์š”๋Š” ํ‘œ 1์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. HTTP/2์™€ HTTP/3 ํ”„๋ ˆ์ž„์˜ ๋น„๊ต๋Š” ๋ถ€๋ก A.2์— ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

Table 1: HTTP/3 Frames and Stream Type Overview
Frame Control Stream Request Stream Push Stream Section
DATA
No Yes Yes Section 7.2.1
HEADERS
No Yes Yes Section 7.2.2
CANCEL_PUSH
Yes No No Section 7.2.3
SETTINGS
Yes (1) No No Section 7.2.4
PUSH_PROMISE
No Yes No Section 7.2.5
GOAWAY
Yes No No Section 7.2.6
MAX_PUSH_ID
Yes No No Section 7.2.7
Reserved Yes Yes Yes Section 7.2.8

SETTINGS ํ”„๋ ˆ์ž„์€ ์ œ์–ด ์ŠคํŠธ๋ฆผ์˜ ์ฒซ ๋ฒˆ์งธ ํ”„๋ ˆ์ž„์œผ๋กœ๋งŒ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค; ์ด๋Š” ํ‘œ 1์—์„œ (1)๋กœ ํ‘œ์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ด€๋ จ ์„น์…˜์— ๊ตฌ์ฒด์ ์ธ ์ง€์นจ์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

QUIC ํ”„๋ ˆ์ž„๊ณผ ๋‹ฌ๋ฆฌ, HTTP/3 ํ”„๋ ˆ์ž„์€ ์—ฌ๋Ÿฌ ํŒจํ‚ท์— ๊ฑธ์ณ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค.

7.1. ํ”„๋ ˆ์ž„ ๋ ˆ์ด์•„์›ƒ

๋ชจ๋“  ํ”„๋ ˆ์ž„์€ ๋‹ค์Œ ํ˜•์‹์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค:

HTTP/3 Frame Format {
  Type (i),
  Length (i),
  Frame Payload (..),
}

Figure 3: HTTP/3 Frame Format

ํ”„๋ ˆ์ž„์€ ๋‹ค์Œ ํ•„๋“œ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค:

Type:
ํ”„๋ ˆ์ž„ ์œ ํ˜•์„ ์‹๋ณ„ํ•˜๋Š” ๋ณ€์ˆ˜ ๊ธธ์ด ์ •์ˆ˜์ž…๋‹ˆ๋‹ค.
Length:
Frame Payload์˜ ๋ฐ”์ดํŠธ ๊ธธ์ด๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๋ณ€์ˆ˜ ๊ธธ์ด ์ •์ˆ˜์ž…๋‹ˆ๋‹ค.
Frame Payload:
Type ํ•„๋“œ์— ์˜ํ•ด ๊ฒฐ์ •๋˜๋Š” ์˜๋ฏธ๋ฅผ ๊ฐ–๋Š” ํŽ˜์ด๋กœ๋“œ์ž…๋‹ˆ๋‹ค.

๊ฐ ํ”„๋ ˆ์ž„์˜ ํŽ˜์ด๋กœ๋“œ๋Š” ๊ทธ ์„ค๋ช…์— ์‹๋ณ„๋œ ํ•„๋“œ๋“ค๋งŒ ์ •ํ™•ํžˆ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ์‹๋ณ„๋œ ํ•„๋“œ ์ดํ›„์— ์ถ”๊ฐ€ ๋ฐ”์ดํŠธ๋ฅผ ํฌํ•จํ•˜๊ฑฐ๋‚˜ ์‹๋ณ„๋œ ํ•„๋“œ๊ฐ€ ๋๋‚˜๊ธฐ ์ „์— ์ข…๋ฃŒ๋˜๋Š” ํ”„๋ ˆ์ž„ ํŽ˜์ด๋กœ๋“œ๋Š” connection error ์œ ํ˜• H3_FRAME_ERROR๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ํŠนํžˆ ์ค‘๋ณต๋œ ๊ธธ์ด ์ธ์ฝ”๋”ฉ์€ ์ผ๊ด€์„ฑ ์žˆ๋Š”์ง€ ๊ฒ€์ฆ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค; ์„น์…˜ 10.8๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์ŠคํŠธ๋ฆผ์ด ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋  ๋•Œ ์ŠคํŠธ๋ฆผ์˜ ๋งˆ์ง€๋ง‰ ํ”„๋ ˆ์ž„์ด ์ž˜๋ ค ์žˆ์œผ๋ฉด ์ด๋Š” connection error ์œ ํ˜• H3_FRAME_ERROR๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฒŒ ์ข…๋ฃŒ๋œ ์ŠคํŠธ๋ฆผ์€ ํ”„๋ ˆ์ž„์˜ ์–ด๋А ์‹œ์ ์—์„œ๋“  ๋ฆฌ์…‹๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

7.2. ํ”„๋ ˆ์ž„ ์ •์˜

7.2.1. DATA

DATA ํ”„๋ ˆ์ž„(type=0x00)์€ HTTP ์š”์ฒญ ๋˜๋Š” ์‘๋‹ต ์ฝ˜ํ…์ธ ์™€ ๊ด€๋ จ๋œ ์ž„์˜์˜ ๊ฐ€๋ณ€ ๊ธธ์ด ๋ฐ”์ดํŠธ ์‹œํ€€์Šค๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

DATA ํ”„๋ ˆ์ž„์€ HTTP ์š”์ฒญ ๋˜๋Š” ์‘๋‹ต๊ณผ ์—ฐ๊ด€๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). DATA ํ”„๋ ˆ์ž„์ด ์ œ์–ด ์ŠคํŠธ๋ฆผ์—์„œ ์ˆ˜์‹ ๋˜๋ฉด, ์ˆ˜์‹ ์ž๋Š” connection error ์œ ํ˜• H3_FRAME_UNEXPECTED๋กœ ์‘๋‹ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

DATA Frame {
  Type (i) = 0x00,
  Length (i),
  Data (..),
}

Figure 4: DATA Frame

7.2.2. HEADERS

HEADERS ํ”„๋ ˆ์ž„(type=0x01)์€ QPACK์„ ์‚ฌ์šฉํ•ด ์ธ์ฝ”๋”ฉ๋œ HTTP ํ•„๋“œ ์„น์…˜์„ ์šด๋ฐ˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ [QPACK]์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

HEADERS Frame {
  Type (i) = 0x01,
  Length (i),
  Encoded Field Section (..),
}

Figure 5: HEADERS Frame

HEADERS ํ”„๋ ˆ์ž„์€ ์š”์ฒญ ์ŠคํŠธ๋ฆผ ๋˜๋Š” ํ‘ธ์‹œ ์ŠคํŠธ๋ฆผ์—์„œ๋งŒ ์ „์†ก๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ HEADERS ํ”„๋ ˆ์ž„์ด ์ œ์–ด ์ŠคํŠธ๋ฆผ์—์„œ ์ˆ˜์‹ ๋˜๋ฉด, ์ˆ˜์‹ ์ž๋Š” connection error ์œ ํ˜• H3_FRAME_UNEXPECTED๋กœ ์‘๋‹ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

7.2.3. CANCEL_PUSH

CANCEL_PUSH ํ”„๋ ˆ์ž„(type=0x03)์€ ํ‘ธ์‹œ ์ŠคํŠธ๋ฆผ์ด ์ˆ˜์‹ ๋˜๊ธฐ ์ „์— ์„œ๋ฒ„ ํ‘ธ์‹œ์˜ ์ทจ์†Œ๋ฅผ ์š”์ฒญํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. CANCEL_PUSH ํ”„๋ ˆ์ž„์€ ์„œ๋ฒ„ ํ‘ธ์‹œ๋ฅผ push ID๋กœ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค(์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„น์…˜ 4.6 ์ฐธ์กฐ), ์ด ๊ฐ’์€ ๋ณ€์ˆ˜ ๊ธธ์ด ์ •์ˆ˜๋กœ ์ธ์ฝ”๋”ฉ๋ฉ๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๊ฐ€ CANCEL_PUSH ํ”„๋ ˆ์ž„์„ ๋ณด๋‚ผ ๋•Œ ์ด๋Š” ์•ฝ์†๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐ›๊ณ  ์‹ถ์ง€ ์•Š์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ๋ฆฌ์†Œ์Šค ์ „์†ก์„ ์ค‘๋‹จํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋˜์ง€๋งŒ, ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ํ•ด๋‹น ํ‘ธ์‹œ ์ŠคํŠธ๋ฆผ์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ์•„์ง ํ‘ธ์‹œ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์ƒ์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ‘ธ์‹œ ์ŠคํŠธ๋ฆผ์ด ์—ด๋ ค ์žˆ๋‹ค๋ฉด ์„œ๋ฒ„๋Š” ํ•ด๋‹น ์ŠคํŠธ๋ฆผ์„ ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฒŒ ์ข…๋ฃŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(SHOULD). ํ‘ธ์‹œ ์ŠคํŠธ๋ฆผ์ด ์ด๋ฏธ ์ข…๋ฃŒ๋œ ๊ฒฝ์šฐ ์„œ๋ฒ„๋Š” ์ŠคํŠธ๋ฆผ์„ ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฒŒ ์ข…๋ฃŒํ•  ์ˆ˜๋„ ์žˆ๊ณ  ์•„๋ฌด ์กฐ์น˜๋„ ์ทจํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(MAY).

์„œ๋ฒ„๋Š” ์ด์ „์— ์ „์†ก๋œ ์•ฝ์†์„ ์ดํ–‰ํ•˜์ง€ ์•Š๊ฒ ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•ด CANCEL_PUSH ํ”„๋ ˆ์ž„์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ํ•ด๋‹น ์•ฝ์†์ด ์ด๋ฏธ ์ˆ˜์‹ ๋˜์–ด ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š๋Š” ํ•œ ์•ฝ์†์ด ์ดํ–‰๋  ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ํ‘ธ์‹œ ์ŠคํŠธ๋ฆผ์ด ์ด๋ฏธ ์—ด๋ ธ๋”๋ผ๋„ ์„œ๋ฒ„๋Š” ์•ฝ์†์ด ์ดํ–‰๋˜์ง€ ์•Š์Œ์„ ๊ฒฐ์ •ํ•˜๋ฉด CANCEL_PUSH ํ”„๋ ˆ์ž„์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD). ์ŠคํŠธ๋ฆผ์ด ์ด๋ฏธ ์—ด๋ ค ์žˆ๋Š” ๊ฒฝ์šฐ, ์„œ๋ฒ„๋Š” H3_REQUEST_CANCELLED ์˜ค๋ฅ˜ ์ฝ”๋“œ๋กœ ํ•ด๋‹น ์ŠคํŠธ๋ฆผ ์ „์†ก์„ ์ค‘๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

CANCEL_PUSH ํ”„๋ ˆ์ž„ ์ „์†ก์€ ๊ธฐ์กด ํ‘ธ์‹œ ์ŠคํŠธ๋ฆผ์˜ ์ƒํƒœ์— ์ง์ ‘์ ์ธ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์ด๋ฏธ ํ•ด๋‹น ํ‘ธ์‹œ ์ŠคํŠธ๋ฆผ์„ ์ˆ˜์‹ ํ•œ ๊ฒฝ์šฐ CANCEL_PUSH ํ”„๋ ˆ์ž„์„ ๋ณด๋‚ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(SHOULD NOT). ์„œ๋ฒ„๊ฐ€ CANCEL_PUSH๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์•„ ํ‘ธ์‹œ ์ŠคํŠธ๋ฆผ์ด ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋„์ฐฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ํด๋ผ์ด์–ธํŠธ๋Š” H3_REQUEST_CANCELLED ์˜ค๋ฅ˜ ์ฝ”๋“œ๋กœ ์ŠคํŠธ๋ฆผ ์ฝ๊ธฐ๋ฅผ ์ค‘๋‹จํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD).

CANCEL_PUSH ํ”„๋ ˆ์ž„์€ ์ œ์–ด ์ŠคํŠธ๋ฆผ์—์„œ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ์ œ์–ด ์ŠคํŠธ๋ฆผ์ด ์•„๋‹Œ ๋‹ค๋ฅธ ์ŠคํŠธ๋ฆผ์—์„œ CANCEL_PUSH ํ”„๋ ˆ์ž„์„ ์ˆ˜์‹ ํ•˜๋ฉด ์ด๋Š” connection error ์œ ํ˜• H3_FRAME_UNEXPECTED๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

CANCEL_PUSH Frame {
  Type (i) = 0x03,
  Length (i),
  Push ID (i),
}

Figure 6: CANCEL_PUSH Frame

CANCEL_PUSH ํ”„๋ ˆ์ž„์€ push ID๋ฅผ ๋ณ€์ˆ˜ ๊ธธ์ด ์ •์ˆ˜๋กœ ์ธ์ฝ”๋”ฉํ•œ ๊ฐ’์„ ์šด๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค. Push ID ํ•„๋“œ๋Š” ์ทจ์†Œ๋˜๋Š” ์„œ๋ฒ„ ํ‘ธ์‹œ๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค(์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„น์…˜ 4.6 ์ฐธ์กฐ). ๋งŒ์•ฝ CANCEL_PUSH ํ”„๋ ˆ์ž„์ด ํ˜„์žฌ ์—ฐ๊ฒฐ์—์„œ ํ—ˆ์šฉ๋˜๋Š” ๊ฐ’๋ณด๋‹ค ํฐ push ID๋ฅผ ์ฐธ์กฐํ•˜๋ฉด, ์ด๋Š” connection error ์œ ํ˜• H3_ID_ERROR๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

ํด๋ผ์ด์–ธํŠธ๊ฐ€ CANCEL_PUSH ํ”„๋ ˆ์ž„์„ ์ˆ˜์‹ ํ•˜๋ฉด, ํ•ด๋‹น ํ”„๋ ˆ์ž„์€ ์žฌ์ •๋ ฌ๋กœ ์ธํ•ด ์•„์ง PUSH_PROMISE ํ”„๋ ˆ์ž„์— ์˜ํ•ด ์–ธ๊ธ‰๋˜์ง€ ์•Š์€ push ID๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ์•„์ง PUSH_PROMISE ํ”„๋ ˆ์ž„์œผ๋กœ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์€ push ID์— ๋Œ€ํ•ด CANCEL_PUSH๋ฅผ ๋ฐ›์œผ๋ฉด, ์ด๋Š” connection error ์œ ํ˜• H3_ID_ERROR๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

7.2.4. SETTINGS

SETTINGS ํ”„๋ ˆ์ž„(type=0x04)์€ ์—”๋“œํฌ์ธํŠธ ๊ฐ„์˜ ํ†ต์‹  ๋ฐฉ์‹์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ตฌ์„ฑ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ”ผ์–ด ๋™์ž‘์— ๋Œ€ํ•œ ์„ ํ˜ธ์‚ฌํ•ญ๊ณผ ์ œ์•ฝ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ณ„์ ์œผ๋กœ SETTINGS ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” "setting"์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋ฉฐ, ๊ฐ ์„ค์ • ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์‹๋ณ„์ž์™€ ๊ฐ’์€ ๊ฐ๊ฐ "setting identifier"์™€ "setting value"๋กœ ์ฐธ์กฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SETTINGS ํ”„๋ ˆ์ž„์€ ํ•ญ์ƒ ์ „์ฒด HTTP/3 ์—ฐ๊ฒฐ์— ์ ์šฉ๋˜๋ฉฐ ๋‹จ์ผ ์ŠคํŠธ๋ฆผ์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ ํ”ผ์–ด๋Š” ์ œ์–ด ์ŠคํŠธ๋ฆผ์˜ ์ฒซ ๋ฒˆ์งธ ํ”„๋ ˆ์ž„์œผ๋กœ SETTINGS ํ”„๋ ˆ์ž„์„ ์ „์†กํ•ด์•ผ ํ•˜๋ฉฐ(MUST), ์ดํ›„์—๋Š” ์ „์†กํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์ œ์–ด ์ŠคํŠธ๋ฆผ์—์„œ ๋‘ ๋ฒˆ์งธ SETTINGS ํ”„๋ ˆ์ž„์„ ์ˆ˜์‹ ํ•˜๋ฉด, ํ•ด๋‹น ์—”๋“œํฌ์ธํŠธ๋Š” connection error ์œ ํ˜• H3_FRAME_UNEXPECTED๋กœ ์‘๋‹ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

SETTINGS ํ”„๋ ˆ์ž„์€ ์ œ์–ด ์ŠคํŠธ๋ฆผ ์ด์™ธ์˜ ์–ด๋–ค ์ŠคํŠธ๋ฆผ์—์„œ๋„ ์ „์†ก๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT). ๋งŒ์•ฝ ๋‹ค๋ฅธ ์ŠคํŠธ๋ฆผ์—์„œ SETTINGS ํ”„๋ ˆ์ž„์„ ์ˆ˜์‹ ํ•˜๋ฉด, ํ•ด๋‹น ์—”๋“œํฌ์ธํŠธ๋Š” connection error ์œ ํ˜• H3_FRAME_UNEXPECTED๋กœ ์‘๋‹ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

SETTINGS ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ํ˜‘์ƒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค; ์ด๋“ค์€ ์ „์†กํ•˜๋Š” ํ”ผ์–ด์˜ ํŠน์„ฑ์„ ์„ค๋ช…ํ•˜๋ฉฐ ์ˆ˜์‹  ํ”ผ์–ด๊ฐ€ ์ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ SETTINGS์˜ ์‚ฌ์šฉ์œผ๋กœ ์•”๋ฌต์ ์ธ ํ˜‘์ƒ์ด ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: ๊ฐ ํ”ผ์–ด๋Š” ์ง€์›๋˜๋Š” ๊ฐ’ ์ง‘ํ•ฉ์„ ๊ด‘๊ณ ํ•˜๊ธฐ ์œ„ํ•ด SETTINGS๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์„ค์ •์˜ ์ •์˜๋Š” ๊ฐ ํ”ผ์–ด๊ฐ€ ๋‘ ์ง‘ํ•ฉ์„ ๊ฒฐํ•ฉํ•˜์—ฌ ์–ด๋–ค ์„ ํƒ์ด ์‚ฌ์šฉ๋ ์ง€๋ฅผ ๊ฒฐ๋ก ๋‚ด๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. SETTINGS๋Š” ์„ ํƒ์ด ์–ธ์ œ ํšจ๋ ฅ์„ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์‹๋ณ„ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฐ™์€ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ’์ด ๊ฐ ํ”ผ์–ด์— ์˜ํ•ด ๊ด‘๊ณ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํด๋ผ์ด์–ธํŠธ๋Š” ๋งค์šฐ ํฐ ์‘๋‹ต ํ•„๋“œ ์„น์…˜์„ ์†Œ๋น„ํ•  ์˜ํ–ฅ์ด ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์„œ๋ฒ„๋Š” ์š”์ฒญ ํฌ๊ธฐ์— ๋Œ€ํ•ด ๋” ์‹ ์ค‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋™์ผํ•œ ์„ค์ • ์‹๋ณ„์ž๊ฐ€ SETTINGS ํ”„๋ ˆ์ž„์—์„œ ๋‘ ๋ฒˆ ์ด์ƒ ๋‚˜ํƒ€๋‚˜์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT). ์ˆ˜์‹ ์ž๋Š” ์ค‘๋ณต๋œ ์„ค์ • ์‹๋ณ„์ž์˜ ์กด์žฌ๋ฅผ connection error ์œ ํ˜• H3_SETTINGS_ERROR๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY).

SETTINGS ํ”„๋ ˆ์ž„์˜ ํŽ˜์ด๋กœ๋“œ๋Š” 0๊ฐœ ์ด์ƒ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์‹๋ณ„์ž์™€ ๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ๋‘˜ ๋‹ค QUIC ๋ณ€์ˆ˜ ๊ธธ์ด ์ •์ˆ˜๋กœ ์ธ์ฝ”๋”ฉ๋ฉ๋‹ˆ๋‹ค.

Setting {
  Identifier (i),
  Value (i),
}

SETTINGS Frame {
  Type (i) = 0x04,
  Length (i),
  Setting (..) ...,
}

Figure 7: SETTINGS Frame

๊ตฌํ˜„์ฒด๋Š” ์ž์‹ ์ด ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ์‹๋ณ„์ž๋ฅผ ๊ฐ€์ง„ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฌด์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

7.2.4.1. ์ •์˜๋œ SETTINGS ๋งค๊ฐœ๋ณ€์ˆ˜

๋‹ค์Œ ์„ค์ •๋“ค์ด HTTP/3์—์„œ ์ •์˜๋ฉ๋‹ˆ๋‹ค:

SETTINGS_MAX_FIELD_SECTION_SIZE (0x06)
:
๊ธฐ๋ณธ๊ฐ’์€ ๋ฌด์ œํ•œ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋ฒ•์€ ์„น์…˜ 4.2.2๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๋น„์Œ์ˆ˜ ์ •์ˆ˜ ๊ฐ’ N์— ๋Œ€ํ•ด ํ˜•์‹ 0x1f * N + 0x21์˜ ์„ค์ • ์‹๋ณ„์ž๋Š” ๋ฏธ์ง€์˜ ์‹๋ณ„์ž๊ฐ€ ๋ฌด์‹œ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ์š”๊ตฌ์‚ฌํ•ญ์„ ์ ๊ฒ€ํ•˜๊ธฐ ์œ„ํ•ด ์˜ˆ์•ฝ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„ค์ •์€ ์ •์˜๋œ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์—”๋“œํฌ์ธํŠธ๋Š” SETTINGS ํ”„๋ ˆ์ž„์— ์ ์–ด๋„ ํ•˜๋‚˜์˜ ๊ทธ๋Ÿฌํ•œ ์„ค์ •์„ ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD). ์ˆ˜์‹ ์ž๋Š” ์ด๋Ÿฌํ•œ ์„ค์ •์„ ์ˆ˜์‹  ์‹œ ์–ด๋–ค ์˜๋ฏธ๋„ ๊ฐ€์ง„ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT).

ํ•ด๋‹น ์„ค์ •์— ์ •์˜๋œ ์˜๋ฏธ๊ฐ€ ์—†์œผ๋ฏ€๋กœ, ์„ค์ •์˜ ๊ฐ’์€ ๊ตฌํ˜„์ฒด๊ฐ€ ์„ ํƒํ•œ ์ž„์˜์˜ ๊ฐ’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[HTTP/2]์—์„œ ์ •์˜๋˜์—ˆ์œผ๋‚˜ HTTP/3์— ๋Œ€์‘ํ•˜๋Š” ์„ค์ •์ด ์—†๋Š” ์„ค์ • ์‹๋ณ„์ž๋“ค๋„ ์˜ˆ์•ฝ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค(์„น์…˜ 11.2.2). ์ด๋Ÿฌํ•œ ์˜ˆ์•ฝ๋œ ์„ค์ •์€ ์ „์†กํ•ด์„œ๋Š” ์•ˆ ๋˜๋ฉฐ(MUST NOT), ์ˆ˜์‹ ๋˜๋ฉด connection error ์œ ํ˜• H3_SETTINGS_ERROR๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

์ถ”๊ฐ€ ์„ค์ •์€ HTTP/3 ํ™•์žฅ์œผ๋กœ ์ •์˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค; ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„น์…˜ 9์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

7.2.4.2. ์ดˆ๊ธฐํ™”

HTTP ๊ตฌํ˜„์ฒด๋Š” ํ”ผ์–ด์˜ ํ˜„์žฌ ์ดํ•ด์— ๊ทผ๊ฑฐํ•˜์—ฌ ๋ฌดํšจํ•œ ํ”„๋ ˆ์ž„์ด๋‚˜ ์š”์ฒญ์„ ์ „์†กํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT).

๋ชจ๋“  ์„ค์ •์€ ์ดˆ๊ธฐ๊ฐ’์—์„œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์—”๋“œํฌ์ธํŠธ๋Š” ํ”ผ์–ด์˜ SETTINGS ํ”„๋ ˆ์ž„์ด ๋„์ฐฉํ•˜๊ธฐ ์ „์— ์ด๋Ÿฌํ•œ ์ดˆ๊ธฐ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD), ์™œ๋ƒํ•˜๋ฉด SETTINGS๋ฅผ ํฌํ•จํ•œ ํŒจํ‚ท์ด ์†์‹ค๋˜๊ฑฐ๋‚˜ ์ง€์—ฐ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. SETTINGS ํ”„๋ ˆ์ž„์ด ๋„์ฐฉํ•˜๋ฉด ์„ค์ •์€ ์ƒˆ๋กœ์šด ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

์ด๋Š” SETTINGS ํ”„๋ ˆ์ž„์„ ๊ธฐ๋‹ค๋ฆด ํ•„์š”๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์—”๋“œํฌ์ธํŠธ๋Š” SETTINGS ํ”„๋ ˆ์ž„์„ ์ „์†กํ•˜๊ธฐ ์ „์— ํ”ผ์–ด๋กœ๋ถ€ํ„ฐ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์š”๊ตฌํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT); SETTINGS๋Š” ์ „์†ก์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ค€๋น„๊ฐ€ ๋˜๋ฉด ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ์ „์†ก๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

์„œ๋ฒ„์˜ ๊ฒฝ์šฐ, ๊ฐ ํด๋ผ์ด์–ธํŠธ ์„ค์ •์˜ ์ดˆ๊ธฐ๊ฐ’์€ ๊ธฐ๋ณธ๊ฐ’์ž…๋‹ˆ๋‹ค.

1-RTT QUIC ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ๊ฒฝ์šฐ, ๊ฐ ์„œ๋ฒ„ ์„ค์ •์˜ ์ดˆ๊ธฐ๊ฐ’์€ ๊ธฐ๋ณธ๊ฐ’์ž…๋‹ˆ๋‹ค. 1-RTT ํ‚ค๋Š” ์„œ๋ฒ„๊ฐ€ ์ฆ‰์‹œ SETTINGS๋ฅผ ์ „์†กํ•˜๋”๋ผ๋„ SETTINGS๋ฅผ ํฌํ•จํ•œ ํŒจํ‚ท์ด QUIC์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋˜๊ธฐ ์ „์— ํ•ญ์ƒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” SETTINGS๊ฐ€ ๋„์ฐฉํ•˜๊ธฐ๋ฅผ ๋ฌด๊ธฐํ•œ ๊ธฐ๋‹ค๋ ค์„œ๋Š” ์•ˆ ๋˜์ง€๋งŒ(SHOULD NOT), SETTINGS๊ฐ€ ์ฒซ ์š”์ฒญ์„ ์ „์†กํ•˜๊ธฐ ์ „์— ์ฒ˜๋ฆฌ๋  ๊ฐ€๋Šฅ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์ˆ˜์‹ ๋œ ๋ฐ์ดํ„ฐ๊ทธ๋žจ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(SHOULD).

0-RTT QUIC ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ๊ฐ ์„œ๋ฒ„ ์„ค์ •์˜ ์ดˆ๊ธฐ๊ฐ’์€ ์ด์ „ ์„ธ์…˜์—์„œ ์‚ฌ์šฉ๋œ ๊ฐ’์ž…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์žฌ๊ฐœ ์ •๋ณด๊ฐ€ ์ œ๊ณต๋œ HTTP/3 ์—ฐ๊ฒฐ์—์„œ ์„œ๋ฒ„๊ฐ€ ์ œ๊ณตํ•œ ์„ค์ •์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD), ๊ทธ๋Ÿฌ๋‚˜ ํŠน์ • ๊ฒฝ์šฐ์—๋Š” ์„ค์ •์„ ์ €์žฅํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY), ์˜ˆ: ์„ธ์…˜ ํ‹ฐ์ผ“์ด SETTINGS ํ”„๋ ˆ์ž„๋ณด๋‹ค ๋จผ์ € ์ˆ˜์‹ ๋œ ๊ฒฝ์šฐ. ํด๋ผ์ด์–ธํŠธ๋Š” 0-RTT ์‹œ ์ €์žฅ๋œ ์„ค์ •(๋˜๋Š” ์ €์žฅ๋œ ๊ฐ’์ด ์—†์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’)์„ ์ค€์ˆ˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ์„œ๋ฒ„๊ฐ€ ์ƒˆ ์„ค์ •์„ ์ œ๊ณตํ•˜๋ฉด, ํด๋ผ์ด์–ธํŠธ๋Š” ๊ทธ ๊ฐ’์„ ์ค€์ˆ˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

์„œ๋ฒ„๋Š” ์ž์‹ ์ด ๊ด‘๊ณ ํ•œ ์„ค์ •์„ ๊ธฐ์–ตํ•˜๊ฑฐ๋‚˜ ํ‹ฐ์ผ“์— ๊ฐ’์˜ ๋ฌด๊ฒฐ์„ฑ ๋ณดํ˜ธ๋œ ๋ณต์‚ฌ๋ณธ์„ ์ €์žฅํ•˜๊ณ  0-RTT ๋ฐ์ดํ„ฐ๋ฅผ ํ—ˆ์šฉํ•  ๋•Œ ์ •๋ณด๋ฅผ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” HTTP/3 ์„ค์ • ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ 0-RTT ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜๋ฝํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ธฐ์–ตํ•œ ์„ค์ •์ด ํ˜„์žฌ ์„ค์ •๊ณผ ํ˜ธํ™˜๋œ๋‹ค๋Š” ๊ฒƒ์„ ํŒ๋‹จํ•  ์ˆ˜ ์—†์œผ๋ฉด 0-RTT ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜๋ฝํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT). ๊ธฐ์–ต๋œ ์„ค์ •์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•ด๋‹น ์„ค์ •์„ ์ค€์ˆ˜ํ•  ๊ฒฝ์šฐ ์„œ๋ฒ„์˜ ํ˜„์žฌ ์„ค์ •์„ ์œ„๋ฐ˜ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ํ˜ธํ™˜๋˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.

์„œ๋ฒ„๋Š” 0-RTT๋ฅผ ์ˆ˜๋ฝํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ดํ›„ SETTINGS ํ”„๋ ˆ์ž„์—์„œ ๋‹ค๋ฅธ ์„ค์ •์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY). ๋งŒ์•ฝ ์„œ๋ฒ„๊ฐ€ 0-RTT ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜๋ฝํ•˜๋ฉด, SETTINGS ํ”„๋ ˆ์ž„์€ ํด๋ผ์ด์–ธํŠธ์˜ 0-RTT ๋ฐ์ดํ„ฐ๋กœ ์ธํ•ด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์œ„๋ฐ˜ํ•  ์ˆ˜ ์žˆ๋Š” ์–ด๋–ค ์ œํ•œ๋„ ์ค„์ด๊ฑฐ๋‚˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT). ์„œ๋ฒ„๋Š” ๊ธฐ๋ณธ๊ฐ’๊ณผ ๋‹ค๋ฅธ ๋ชจ๋“  ์„ค์ •์„ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ์„œ๋ฒ„๊ฐ€ 0-RTT๋ฅผ ์ˆ˜๋ฝํ–ˆ์ง€๋งŒ ์ดํ›„์— ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด์ „์— ์ง€์ •ํ•œ ์„ค์ •๊ณผ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” SETTINGS ํ”„๋ ˆ์ž„์„ ์ „์†กํ•˜๋ฉด, ์ด๋Š” connection error ์œ ํ˜• H3_SETTINGS_ERROR๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ์„œ๋ฒ„๊ฐ€ 0-RTT๋ฅผ ์ˆ˜๋ฝํ–ˆ์ง€๋งŒ ์ดํ›„์— ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ดํ•ดํ•˜๋Š” ์„ค์ • ๊ฐ’(์˜ˆ์•ฝ๋œ ์‹๋ณ„์ž๋ฅผ ์ œ์™ธํ•˜๊ณ ) ์ค‘ ์ด์ „์— ๋น„๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ง€์ •๋œ ๊ฐ’์„ ๋ˆ„๋ฝํ•œ SETTINGS ํ”„๋ ˆ์ž„์„ ๋ณด๋‚ธ๋‹ค๋ฉด, ์ด๋Š” connection error ์œ ํ˜• H3_SETTINGS_ERROR๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

7.2.5. PUSH_PROMISE

PUSH_PROMISE ํ”„๋ ˆ์ž„(type=0x05)์€ ์š”์ฒญ ์ŠคํŠธ๋ฆผ์—์„œ ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์•ฝ์†๋œ ์š”์ฒญ ํ—ค๋” ์„น์…˜์„ ์ „๋‹ฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

PUSH_PROMISE Frame {
  Type (i) = 0x05,
  Length (i),
  Push ID (i),
  Encoded Field Section (..),
}

Figure 8: PUSH_PROMISE Frame

ํŽ˜์ด๋กœ๋“œ๋Š” ๋‹ค์Œ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค:

Push ID:
์„œ๋ฒ„ ํ‘ธ์‹œ ์ž‘์—…์„ ์‹๋ณ„ํ•˜๋Š” ๋ณ€์ˆ˜ ๊ธธ์ด ์ •์ˆ˜์ž…๋‹ˆ๋‹ค. push ID๋Š” ํ‘ธ์‹œ ์ŠคํŠธ๋ฆผ ํ—ค๋”(์„น์…˜ 4.6) ๋ฐ CANCEL_PUSH ํ”„๋ ˆ์ž„์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
Encoded Field Section:
PROMISED ์‘๋‹ต์„ ์œ„ํ•œ QPACK ์ธ์ฝ”๋”ฉ๋œ ์š”์ฒญ ํ—ค๋” ํ•„๋“œ์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ [QPACK]์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ MAX_PUSH_ID ํ”„๋ ˆ์ž„์—์„œ ์ œ๊ณตํ•œ ๊ฐ’๋ณด๋‹ค ๋” ํฐ push ID๋ฅผ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT). ํด๋ผ์ด์–ธํŠธ๋Š” ์ž์‹ ์ด ๊ด‘๊ณ ํ•œ ๊ฐ’๋ณด๋‹ค ํฐ push ID๋ฅผ ํฌํ•จํ•˜๋Š” PUSH_PROMISE ํ”„๋ ˆ์ž„์„ ์ˆ˜์‹ ํ•˜๋ฉด, ์ด๋ฅผ connection error ์œ ํ˜• H3_ID_ERROR๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

์„œ๋ฒ„๋Š” ๋™์ผํ•œ push ID๋ฅผ ์—ฌ๋Ÿฌ PUSH_PROMISE ํ”„๋ ˆ์ž„์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY). ์ด ๊ฒฝ์šฐ ์••์ถ• ํ•ด์ œ๋œ ์š”์ฒญ ํ—ค๋” ์ง‘ํ•ฉ์€ ๋™์ผํ•œ ์ˆœ์„œ๋กœ ๋™์ผํ•œ ํ•„๋“œ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•˜๋ฉฐ, ๊ฐ ํ•„๋“œ์˜ ์ด๋ฆ„๊ณผ ๊ฐ’์ด ์ •ํ™•ํžˆ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ํด๋ผ์ด์–ธํŠธ๋Š” ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ๋ฒˆ ์•ฝ์†๋œ ๊ฒฝ์šฐ ์š”์ฒญ ํ—ค๋” ์„น์…˜์„ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD). ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋ฏธ ์•ฝ์†๋œ push ID๋ฅผ ๋ฐ›๊ณ  ๋ถˆ์ผ์น˜๋ฅผ ๊ฐ์ง€ํ•˜๋ฉด, ์ด๋Š” connection error ์œ ํ˜• H3_GENERAL_PROTOCOL_ERROR๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ์••์ถ• ํ•ด์ œ๋œ ํ•„๋“œ ์„น์…˜์ด ์ •ํ™•ํžˆ ์ผ์น˜ํ•˜๋ฉด, ํด๋ผ์ด์–ธํŠธ๋Š” PUSH_PROMISE ํ”„๋ ˆ์ž„์ด ์ˆ˜์‹ ๋œ ๊ฐ ์ŠคํŠธ๋ฆผ์— ๋Œ€ํ•ด ํ‘ธ์‹œ๋œ ์ฝ˜ํ…์ธ ๋ฅผ ์—ฐ๊ด€์‹œํ‚ค๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD).

๋™์ผํ•œ push ID์— ๋Œ€ํ•œ ์ค‘๋ณต ์ฐธ์กฐ๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ์ฃผ๋œ ์ด์œ ๋Š” ๋™์‹œ ์š”์ฒญ์œผ๋กœ ์ธํ•œ ์ค‘๋ณต์„ ์ค„์ด๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ์žฅ๊ธฐ๊ฐ„์— ๊ฑธ์ณ push ID๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD). ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„ ํ‘ธ์‹œ ์‘๋‹ต์„ ์†Œ๋น„ํ•˜๊ณ  ์žฅ๊ธฐ๊ฐ„ ์žฌ์‚ฌ์šฉ์„ ์œ„ํ•ด ๋ณด์œ ํ•˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ์†Œ๋น„ํ•˜๊ณ  ํ๊ธฐํ•œ push ID๋ฅผ ์‚ฌ์šฉํ•˜๋Š” PUSH_PROMISE ํ”„๋ ˆ์ž„์„ ์ˆ˜์‹ ํ•œ ํด๋ผ์ด์–ธํŠธ๋Š” ํ•ด๋‹น ์•ฝ์†์„ ๋ฌด์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ PUSH_PROMISE ํ”„๋ ˆใƒผใƒ ์ด ์ œ์–ด ์ŠคํŠธ๋ฆผ์—์„œ ์ˆ˜์‹ ๋˜๋ฉด, ํด๋ผ์ด์–ธํŠธ๋Š” ์ด๋ฅผ connection error ์œ ํ˜• H3_FRAME_UNEXPECTED๋กœ ์‘๋‹ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

ํด๋ผ์ด์–ธํŠธ๋Š” PUSH_PROMISE ํ”„๋ ˆ์ž„์„ ์ „์†กํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT). ์„œ๋ฒ„๋Š” PUSH_PROMISE ํ”„๋ ˆ์ž„ ์ˆ˜์‹ ์„ connection error ์œ ํ˜• H3_FRAME_UNEXPECTED๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

์ „์ฒด ์„œ๋ฒ„ ํ‘ธ์‹œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ๋Œ€ํ•œ ์„ค๋ช…์€ ์„น์…˜ 4.6์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

7.2.6. GOAWAY

GOAWAY ํ”„๋ ˆ์ž„(type=0x07)์€ ์–ด๋А ํ•œ์ชฝ ์—”๋“œํฌ์ธํŠธ๊ฐ€ HTTP/3 ์—ฐ๊ฒฐ์˜ ์ •์ƒ ์ข…๋ฃŒ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. GOAWAY๋Š” ์—”๋“œํฌ์ธํŠธ๊ฐ€ ์ด์ „์— ์ˆ˜์‹ ๋œ ์š”์ฒญ๊ณผ ํ‘ธ์‹œ์˜ ์ฒ˜๋ฆฌ๋ฅผ ๋งˆ์น˜๋ฉด์„œ ์ƒˆ ์š”์ฒญ์ด๋‚˜ ํ‘ธ์‹œ ์ˆ˜๋ฝ์„ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์„œ๋ฒ„ ์œ ์ง€๋ณด์ˆ˜์™€ ๊ฐ™์€ ๊ด€๋ฆฌ ์ž‘์—…์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. GOAWAY ์ž์ฒด๋Š” ์—ฐ๊ฒฐ์„ ๋‹ซ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

GOAWAY Frame {
  Type (i) = 0x07,
  Length (i),
  Stream ID/Push ID (i),
}

Figure 9: GOAWAY Frame

GOAWAY ํ”„๋ ˆ์ž„์€ ํ•ญ์ƒ ์ œ์–ด ์ŠคํŠธ๋ฆผ์—์„œ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„โ†’ํด๋ผ์ด์–ธํŠธ ๋ฐฉํ–ฅ์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‹œ์ž‘ํ•œ ์–‘๋ฐฉํ–ฅ QUIC ์ŠคํŠธ๋ฆผ์— ๋Œ€ํ•œ QUIC ์ŠคํŠธ๋ฆผ ID๋ฅผ ๋ณ€์ˆ˜ ๊ธธ์ด ์ •์ˆ˜๋กœ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ๋‹ค๋ฅธ ์œ ํ˜•์˜ ์ŠคํŠธ๋ฆผ ID๋ฅผ ํฌํ•จํ•œ GOAWAY ํ”„๋ ˆ์ž„์„ ์ˆ˜์‹ ํ•˜๋ฉด ์ด๋ฅผ connection error ์œ ํ˜• H3_ID_ERROR๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

ํด๋ผ์ด์–ธํŠธโ†’์„œ๋ฒ„ ๋ฐฉํ–ฅ์—์„œ๋Š” GOAWAY ํ”„๋ ˆ์ž„์ด ๋ณ€์ˆ˜ ๊ธธ์ด ์ •์ˆ˜๋กœ ์ธ์ฝ”๋”ฉ๋œ push ID๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

GOAWAY ํ”„๋ ˆ์ž„์€ ํŠน์ • ์ŠคํŠธ๋ฆผ์ด ์•„๋‹ˆ๋ผ ์ „์ฒด ์—ฐ๊ฒฐ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์ œ์–ด ์ŠคํŠธ๋ฆผ์ด ์•„๋‹Œ ์ŠคํŠธ๋ฆผ์—์„œ GOAWAY ํ”„๋ ˆ์ž„์„ ์ˆ˜์‹ ํ•˜๋ฉด ์ด๋ฅผ connection error ์œ ํ˜• H3_FRAME_UNEXPECTED๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

GOAWAY ํ”„๋ ˆ์ž„ ์‚ฌ์šฉ์— ๊ด€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๋Š” ์„น์…˜ 5.2๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

7.2.7. MAX_PUSH_ID

MAX_PUSH_ID ํ”„๋ ˆ์ž„(type=0x0d)์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„ ํ‘ธ์‹œ ์ˆ˜๋ฅผ ์ œ์–ดํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์„œ๋ฒ„๊ฐ€ PUSH_PROMISE ๋ฐ CANCEL_PUSH ํ”„๋ ˆ์ž„์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” push ID์˜ ์ตœ๋Œ€๊ฐ’์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ด๋Š” QUIC ์ „์†ก์ด ์œ ์ง€ํ•˜๋Š” ์ œํ•œ๊ณผ ๋”๋ถˆ์–ด ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ํ‘ธ์‹œ ์ŠคํŠธ๋ฆผ์˜ ์ˆ˜๋ฅผ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.

MAX_PUSH_ID ํ”„๋ ˆ์ž„์€ ํ•ญ์ƒ ์ œ์–ด ์ŠคํŠธ๋ฆผ์—์„œ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ŠคํŠธ๋ฆผ์—์„œ MAX_PUSH_ID ํ”„๋ ˆ์ž„์„ ์ˆ˜์‹ ํ•˜๋ฉด ์ด๋Š” connection error ์œ ํ˜• H3_FRAME_UNEXPECTED๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

์„œ๋ฒ„๋Š” MAX_PUSH_ID ํ”„๋ ˆ์ž„์„ ์ „์†กํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT). ํด๋ผ์ด์–ธํŠธ๋Š” MAX_PUSH_ID ํ”„๋ ˆ์ž„ ์ˆ˜์‹ ์„ connection error ์œ ํ˜• H3_FRAME_UNEXPECTED๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

HTTP/3 ์—ฐ๊ฒฐ์ด ์ƒ์„ฑ๋  ๋•Œ ์ตœ๋Œ€ push ID๋Š” ์„ค์ •๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์„œ๋ฒ„๋Š” MAX_PUSH_ID ํ”„๋ ˆ์ž„์„ ์ˆ˜์‹ ํ•˜๊ธฐ ์ „๊นŒ์ง€ ํ‘ธ์‹œ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์•ฝ์†๋œ ์„œ๋ฒ„ ํ‘ธ์‹œ ์ˆ˜๋ฅผ ๊ด€๋ฆฌํ•˜๋ ค๋Š” ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๊ฐ€ ํ‘ธ์‹œ๋ฅผ ์ดํ–‰ํ•˜๊ฑฐ๋‚˜ ์ทจ์†Œํ•  ๋•Œ MAX_PUSH_ID ํ”„๋ ˆ์ž„์„ ์ „์†กํ•˜์—ฌ ์ตœ๋Œ€ push ID๋ฅผ ์ฆ๊ฐ€์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

MAX_PUSH_ID Frame {
  Type (i) = 0x0d,
  Length (i),
  Push ID (i),
}

Figure 10: MAX_PUSH_ID Frame

MAX_PUSH_ID ํ”„๋ ˆ์ž„์€ ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” push ID์˜ ์ตœ๋Œ€๊ฐ’์„ ์‹๋ณ„ํ•˜๋Š” ๋‹จ์ผ ๋ณ€์ˆ˜ ๊ธธ์ด ์ •์ˆ˜๋ฅผ ์šด๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค(์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„น์…˜ 4.6 ์ฐธ์กฐ). MAX_PUSH_ID ํ”„๋ ˆ์ž„์€ ์ตœ๋Œ€ push ID๋ฅผ ์ค„์ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค; ์ด์ „์— ์ˆ˜์‹ ํ•œ ๊ฐ’๋ณด๋‹ค ์ž‘์€ ๊ฐ’์„ ํฌํ•จํ•˜๋Š” MAX_PUSH_ID ํ”„๋ ˆ์ž„์˜ ์ˆ˜์‹ ์€ connection error ์œ ํ˜• H3_ID_ERROR๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

7.2.8. ์˜ˆ์•ฝ๋œ ํ”„๋ ˆ์ž„ ์œ ํ˜•

๋น„์Œ์ˆ˜ ์ •์ˆ˜ N์— ๋Œ€ํ•ด ํ˜•์‹ 0x1f * N + 0x21์˜ ํ”„๋ ˆ์ž„ ์œ ํ˜•์€ ๋ฏธ์ง€์˜ ์œ ํ˜•์„ ๋ฌด์‹œํ•ด์•ผ ํ•œ๋‹ค๋Š” ์š”๊ตฌ์‚ฌํ•ญ์„ ์ ๊ฒ€ํ•˜๊ธฐ ์œ„ํ•ด ์˜ˆ์•ฝ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค(์„น์…˜ 9 ์ฐธ์กฐ). ์ด๋Ÿฌํ•œ ํ”„๋ ˆ์ž„์€ ์˜๋ฏธ๊ฐ€ ์—†์œผ๋ฉฐ, ํ”„๋ ˆ์ž„์ด ํ—ˆ์šฉ๋˜๋Š” ๋ชจ๋“  ์ŠคํŠธ๋ฆผ์—์„œ ์ „์†ก๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY). ์ด๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ์ด์–ด ํŒจ๋”ฉ์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜์‹ ์ž๋Š” ์ด๋Ÿฌํ•œ ํ”„๋ ˆ์ž„์„ ์ˆ˜์‹  ์‹œ ์–ด๋–ค ์˜๋ฏธ๋„ ๊ฐ€์ง„ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT).

ํ”„๋ ˆ์ž„์˜ ํŽ˜์ด๋กœ๋“œ์™€ ๊ธธ์ด๋Š” ๊ตฌํ˜„์ฒด๊ฐ€ ์„ ํƒํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์„ ํƒ๋ฉ๋‹ˆ๋‹ค.

HTTP/2์—์„œ ์‚ฌ์šฉ๋˜์—ˆ์ง€๋งŒ HTTP/3์— ๋Œ€์‘ํ•˜๋Š” ํ”„๋ ˆ์ž„์ด ์—†๋Š” ํ”„๋ ˆ์ž„ ์œ ํ˜•๋“ค๋„ ์˜ˆ์•ฝ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค(์„น์…˜ 11.2.1). ์ด๋Ÿฌํ•œ ํ”„๋ ˆ์ž„ ์œ ํ˜•์€ ์ „์†กํ•ด์„œ๋Š” ์•ˆ ๋˜๋ฉฐ(MUST NOT), ์ˆ˜์‹ ๋˜๋ฉด connection error ์œ ํ˜• H3_FRAME_UNEXPECTED๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).


8. ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ

์ŠคํŠธ๋ฆผ์„ ์ •์ƒ์ ์œผ๋กœ ์™„๋ฃŒํ•  ์ˆ˜ ์—†์„ ๋•Œ, QUIC์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•ด๋‹น ์ŠคํŠธ๋ฆผ์„ ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฒŒ ์ข…๋ฃŒ(๋ฆฌ์…‹)ํ•˜๊ณ  ์ด์œ ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค; ์ž์„ธํ•œ ๋‚ด์šฉ์€ Section 2.4์˜ [QUIC-TRANSPORT]๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ์ด๋ฅผ "์ŠคํŠธ๋ฆผ ์˜ค๋ฅ˜"๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. HTTP/3 ๊ตฌํ˜„์ฒด๋Š” QUIC ์ŠคํŠธ๋ฆผ์„ ๋‹ซ๊ณ  ์˜ค๋ฅ˜ ์œ ํ˜•์„ ์ „๋‹ฌํ•˜๋„๋ก ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜ ์ฝ”๋“œ์˜ ์™€์ด์–ด ์ธ์ฝ”๋”ฉ์€ ์„น์…˜ 8.1์— ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆผ ์˜ค๋ฅ˜๋Š” ์˜ค๋ฅ˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” HTTP ์ƒํƒœ ์ฝ”๋“œ์™€๋Š” ๊ตฌ๋ณ„๋ฉ๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆผ ์˜ค๋ฅ˜๋Š” ์†ก์‹ ์ž๊ฐ€ ์ „์ฒด ์š”์ฒญ ๋˜๋Š” ์‘๋‹ต์„ ์ „์†กํ•˜๊ฑฐ๋‚˜ ์†Œ๋น„ํ•˜์ง€ ์•Š์•˜์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ˜๋ฉด, HTTP ์ƒํƒœ ์ฝ”๋“œ๋Š” ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜์‹ ๋œ ์š”์ฒญ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์—ฐ๊ฒฐ ์ „์ฒด๋ฅผ ์ข…๋ฃŒํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ QUIC์€ ์œ ์‚ฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์ด์œ ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค; ์ž์„ธํ•œ ๋‚ด์šฉ์€ Section 5.3์˜ [QUIC-TRANSPORT]๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ์ด๋ฅผ "์—ฐ๊ฒฐ ์˜ค๋ฅ˜"๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆผ ์˜ค๋ฅ˜์™€ ์œ ์‚ฌํ•˜๊ฒŒ, HTTP/3 ๊ตฌํ˜„์ฒด๋Š” QUIC ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜๊ณ  ์„น์…˜ 8.1์˜ ์˜ค๋ฅ˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด์œ ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ŠคํŠธ๋ฆผ๊ณผ ์—ฐ๊ฒฐ์„ ๋‹ซ๋Š” ์ด์œ ๊ฐ€ "์˜ค๋ฅ˜"๋ผ๊ณ  ๋ถˆ๋ฆฌ๋”๋ผ๋„, ์ด๋Ÿฌํ•œ ๋™์ž‘์ด ๋ฐ˜๋“œ์‹œ ์—ฐ๊ฒฐ์ด๋‚˜ ์–ด๋А ํ•œ ๊ตฌํ˜„์ฒด์˜ ๋ฌธ์ œ๋ฅผ ์˜๋ฏธํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์š”์ฒญํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ŠคํŠธ๋ฆผ์„ ๋ฆฌ์…‹ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—”๋“œํฌ์ธํŠธ๋Š” ํŠน์ • ์ƒํ™ฉ์—์„œ ์ŠคํŠธ๋ฆผ ์˜ค๋ฅ˜๋ฅผ ์—ฐ๊ฒฐ ์˜ค๋ฅ˜๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋‹จ์ผ ์ŠคํŠธ๋ฆผ์˜ ์กฐ๊ฑด์— ๋Œ€์‘ํ•˜์—ฌ ์ „์ฒด ์—ฐ๊ฒฐ์„ ๋‹ซ๊ธฐ๋กœ ์„ ํƒํ•  MAY ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌํ˜„์ฒด๋Š” ์ด๋Ÿฌํ•œ ์„ ํƒ์„ ํ•˜๊ธฐ ์ „์— ๋ฏธ๊ฒฐ ์š”์ฒญ์— ๋ฏธ์น  ์˜ํ–ฅ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด ์˜ค๋ฅ˜ ์ฝ”๋“œ๋Š” ํ˜‘์ƒ ์—†์ด ์ •์˜๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ(์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„น์…˜ 9 ์ฐธ์กฐ), ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋ฌธ๋งฅ์—์„œ ์˜ค๋ฅ˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์•Œ ์ˆ˜ ์—†๋Š” ์˜ค๋ฅ˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” ๊ฒฝ์šฐ ๊ทธ๊ฒƒ์„ MUST H3_NO_ERROR์™€ ๋™๋“ฑํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ŠคํŠธ๋ฆผ์„ ๋‹ซ๋Š” ๊ฒƒ์€ ์˜ค๋ฅ˜ ์ฝ”๋“œ์™€ ๊ด€๊ณ„์—†์ด ๋‹ค๋ฅธ ํšจ๊ณผ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค; ์˜ˆ๋ฅผ ๋“ค์–ด ์„น์…˜ 4.1๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

8.1. HTTP/3 ์˜ค๋ฅ˜ ์ฝ”๋“œ

๋‹ค์Œ ์˜ค๋ฅ˜ ์ฝ”๋“œ๋“ค์€ ์ŠคํŠธ๋ฆผ์„ ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฒŒ ์ข…๋ฃŒํ•˜๊ฑฐ๋‚˜ ์ŠคํŠธ๋ฆผ ์ฝ๊ธฐ๋ฅผ ์ค‘๋‹จํ•˜๊ฑฐ๋‚˜ HTTP/3 ์—ฐ๊ฒฐ์„ ์ฆ‰์‹œ ๋‹ซ์„ ๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ •์˜๋ฉ๋‹ˆ๋‹ค.

H3_NO_ERROR (0x0100)
:
์˜ค๋ฅ˜ ์—†์Œ. ์—ฐ๊ฒฐ์ด๋‚˜ ์ŠคํŠธ๋ฆผ์„ ๋‹ซ์•„์•ผ ํ•˜์ง€๋งŒ ์‹ ํ˜ธํ•  ์˜ค๋ฅ˜๊ฐ€ ์—†์„ ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
H3_GENERAL_PROTOCOL_ERROR (0x0101)
:
ํ”ผ์–ด๊ฐ€ ๋” ๊ตฌ์ฒด์ ์ธ ์˜ค๋ฅ˜ ์ฝ”๋“œ์— ๋งž์ง€ ์•Š๋Š” ๋ฐฉ์‹์œผ๋กœ ํ”„๋กœํ† ์ฝœ ์š”๊ตฌ์‚ฌํ•ญ์„ ์œ„๋ฐ˜ํ–ˆ๊ฑฐ๋‚˜, ์—”๋“œํฌ์ธํŠธ๊ฐ€ ๋” ๊ตฌ์ฒด์ ์ธ ์˜ค๋ฅ˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ๋กœ ํ•œ ๊ฒฝ์šฐ.
H3_INTERNAL_ERROR (0x0102)
:
HTTP ์Šคํƒ์—์„œ ๋‚ด๋ถ€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
H3_STREAM_CREATION_ERROR (0x0103)
:
์—”๋“œํฌ์ธํŠธ๊ฐ€ ํ”ผ์–ด๊ฐ€ ์ƒ์„ฑํ•œ ์ŠคํŠธ๋ฆผ์„ ์ˆ˜์šฉํ•˜์ง€ ์•Š๊ธฐ๋กœ ๊ฐ์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค.
H3_CLOSED_CRITICAL_STREAM (0x0104)
:
HTTP/3 ์—ฐ๊ฒฐ์— ํ•„์š”ํ–ˆ๋˜ ์ŠคํŠธ๋ฆผ์ด ๋‹ซํžˆ๊ฑฐ๋‚˜ ๋ฆฌ์…‹๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
H3_FRAME_UNEXPECTED (0x0105)
:
ํ˜„์žฌ ์ƒํƒœ๋‚˜ ํ•ด๋‹น ์ŠคํŠธ๋ฆผ์—์„œ ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š” ํ”„๋ ˆ์ž„์ด ์ˆ˜์‹ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
H3_FRAME_ERROR (0x0106)
:
๋ ˆ์ด์•„์›ƒ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•˜๊ฑฐ๋‚˜ ์œ ํšจํ•˜์ง€ ์•Š์€ ํฌ๊ธฐ์˜ ํ”„๋ ˆ์ž„์ด ์ˆ˜์‹ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
H3_EXCESSIVE_LOAD (0x0107)
:
ํ”ผ์–ด๊ฐ€ ๊ณผ๋„ํ•œ ๋ถ€ํ•˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ํ–‰ํƒœ๋ฅผ ๋ณด์ด๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ์ง€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
H3_ID_ERROR (0x0108)
:
์ŠคํŠธ๋ฆผ ID ๋˜๋Š” push ID๊ฐ€ ์ œํ•œ ์ดˆ๊ณผ, ์ œํ•œ ์ถ•์†Œ, ์žฌ์‚ฌ์šฉ ๋“ฑ ์ž˜๋ชป ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
H3_SETTINGS_ERROR (0x0109)
:
์—”๋“œํฌ์ธํŠธ๊ฐ€ SETTINGS ํ”„๋ ˆ์ž„์˜ ํŽ˜์ด๋กœ๋“œ์—์„œ ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค.
H3_MISSING_SETTINGS (0x010a)
:
์ œ์–ด ์ŠคํŠธ๋ฆผ(control stream)์˜ ์‹œ์ž‘์—์„œ SETTINGS ํ”„๋ ˆ์ž„์ด ์ˆ˜์‹ ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
H3_REQUEST_REJECTED (0x010b)
:
์„œ๋ฒ„๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฒ˜๋ฆฌ๋ฅผ ์ „ํ˜€ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ  ์š”์ฒญ์„ ๊ฑฐ๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
H3_REQUEST_CANCELLED (0x010c)
:
์š”์ฒญ ๋˜๋Š” ๊ทธ ์‘๋‹ต(ํ‘ธ์‹œ๋œ ์‘๋‹ต ํฌํ•จ)์ด ์ทจ์†Œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
H3_REQUEST_INCOMPLETE (0x010d)
:
ํด๋ผ์ด์–ธํŠธ์˜ ์ŠคํŠธ๋ฆผ์ด ์™„์ „ํ•œ ์š”์ฒญ์„ ํฌํ•จํ•˜์ง€ ์•Š์€ ์ฑ„ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
H3_MESSAGE_ERROR (0x010e)
:
HTTP ๋ฉ”์‹œ์ง€๊ฐ€ ํ˜•์‹์ด ์ž˜๋ชป๋จ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
H3_CONNECT_ERROR (0x010f)
:
CONNECT ์š”์ฒญ์— ์‘๋‹ตํ•˜์—ฌ ์„ค์ •๋œ TCP ์—ฐ๊ฒฐ์ด ๋ฆฌ์…‹๋˜์—ˆ๊ฑฐ๋‚˜ ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
H3_VERSION_FALLBACK (0x0110)
:
์š”์ฒญ๋œ ์ž‘์—…์„ HTTP/3๋กœ ์ œ๊ณตํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ”ผ์–ด๋Š” HTTP/1.1๋กœ ์žฌ์‹œ๋„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋น„์Œ์ˆ˜ ์ •์ˆ˜ ๊ฐ’ N์— ๋Œ€ํ•ด ํ˜•์‹ 0x1f * N + 0x21์˜ ์˜ค๋ฅ˜ ์ฝ”๋“œ๋Š” ๋ฏธ์ง€์˜ ์˜ค๋ฅ˜ ์ฝ”๋“œ๊ฐ€ H3_NO_ERROR์™€ ๋™๋“ฑํ•˜๊ฒŒ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ์š”๊ตฌ์‚ฌํ•ญ์„ ์ ๊ฒ€ํ•˜๊ธฐ ์œ„ํ•ด ์˜ˆ์•ฝ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค(์„น์…˜ 9). ๊ตฌํ˜„์ฒด๋Š” H3_NO_ERROR๋ฅผ ๋ณด๋‚ผ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์—ˆ๋˜ ๊ฒฝ์šฐ์— ์ด๋Ÿฌํ•œ ๊ณต๊ฐ„์—์„œ ์˜ค๋ฅ˜ ์ฝ”๋“œ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD).


9. HTTP/3 ํ™•์žฅ

HTTP/3๋Š” ํ”„๋กœํ† ์ฝœ์˜ ํ™•์žฅ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์ ˆ์— ์„ค๋ช…๋œ ์ œํ•œ ๋‚ด์—์„œ, ํ”„๋กœํ† ์ฝœ ํ™•์žฅ์€ ์ถ”๊ฐ€ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜ ํ”„๋กœํ† ์ฝœ์˜ ์–ด๋А ์ธก๋ฉด์ด๋“  ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ™•์žฅ์€ ๋‹จ์ผ HTTP/3 ์—ฐ๊ฒฐ์˜ ๋ฒ”์œ„ ๋‚ด์—์„œ๋งŒ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค.

์ด๋Š” ์ด ๋ฌธ์„œ์—์„œ ์ •์˜๋œ ํ”„๋กœํ† ์ฝœ ์š”์†Œ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ƒˆ๋กœ์šด ๋ฉ”์„œ๋“œ, ์ƒํƒœ ์ฝ”๋“œ ๋˜๋Š” ํ•„๋“œ๋ฅผ ์ •์˜ํ•˜๋Š” ๋“ฑ HTTP๋ฅผ ํ™•์žฅํ•˜๋Š” ๊ธฐ์กด ์˜ต์…˜๋“ค์—๋Š” ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ™•์žฅ์€ ์ƒˆ๋กœ์šด ํ”„๋ ˆ์ž„ ์œ ํ˜•(์„น์…˜ 7.2), ์ƒˆ๋กœ์šด ์„ค์ •(์„น์…˜ 7.2.4.1), ์ƒˆ๋กœ์šด ์˜ค๋ฅ˜ ์ฝ”๋“œ(์„น์…˜ 8), ๋˜๋Š” ์ƒˆ๋กœ์šด ๋‹จ๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ ์œ ํ˜•(์„น์…˜ 6.2)์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ™•์žฅ ํฌ์ธํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค: ํ”„๋ ˆ์ž„ ์œ ํ˜•(์„น์…˜ 11.2.1), ์„ค์ •(์„น์…˜ 11.2.2), ์˜ค๋ฅ˜ ์ฝ”๋“œ(์„น์…˜ 11.2.3), ์ŠคํŠธ๋ฆผ ์œ ํ˜•(์„น์…˜ 11.2.4).

๊ตฌํ˜„์ฒด๋Š” ๋ชจ๋“  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ํ”„๋กœํ† ์ฝœ ์š”์†Œ์—์„œ ์•Œ ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์ง€์›๋˜์ง€ ์•Š๋Š” ๊ฐ’์„ ๋ฌด์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ๊ตฌํ˜„์ฒด๋Š” ์•Œ ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์ง€์›๋˜์ง€ ์•Š๋Š” ์œ ํ˜•์˜ ๋‹จ๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ๊ธฐํ•˜๊ฑฐ๋‚˜ ์ฝ๊ธฐ๋ฅผ ์ค‘๋‹จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ์ด๋Š” ์ด๋Ÿฌํ•œ ํ™•์žฅ ํฌ์ธํŠธ๋“ค์ด ์‚ฌ์ „ ํ•ฉ์˜๋‚˜ ํ˜‘์ƒ ์—†์ด ํ™•์žฅ์— ์˜ํ•ด ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ SETTINGS ํ”„๋ ˆ์ž„์ด ์ œ์–ด ์ŠคํŠธ๋ฆผ(์„น์…˜ 6.2.1)์˜ ์ฒซ ๋ฒˆ์งธ ํ”„๋ ˆ์ž„์œผ๋กœ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด ์•Œ๋ ค์ง„ ํ”„๋ ˆ์ž„ ์œ ํ˜•์ด ํŠน์ • ์œ„์น˜์— ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ๋ฏธ์ง€์˜ ํ”„๋ ˆ์ž„ ์œ ํ˜•์€ ๊ทธ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•˜๋ฏ€๋กœ ์˜ค๋ฅ˜๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD).

๊ธฐ์กด ํ”„๋กœํ† ์ฝœ ๊ตฌ์„ฑ์š”์†Œ์˜ ์˜๋ฏธ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ํ™•์žฅ์€ ์‚ฌ์šฉ๋˜๊ธฐ ์ „์— ํ˜‘์ƒ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ์˜ˆ๋ฅผ ๋“ค์–ด, HEADERS ํ”„๋ ˆ์ž„์˜ ๋ ˆ์ด์•„์›ƒ์„ ๋ณ€๊ฒฝํ•˜๋Š” ํ™•์žฅ์€ ํ”ผ์–ด๊ฐ€ ์ด๋ฅผ ์ˆ˜์šฉํ•  ๊ธ์ •์  ์‹ ํ˜ธ๋ฅผ ์ฃผ๊ธฐ ์ „๊นŒ์ง€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ˆ˜์ •๋œ ๋ ˆ์ด์•„์›ƒ์ด ์–ธ์ œ ํšจ๋ ฅ์„ ๋ฐœ์ƒํ•˜๋Š”์ง€๋ฅผ ์กฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ๋ณต์žกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ธฐ์กด ํ”„๋กœํ† ์ฝœ ์š”์†Œ์˜ ์ƒˆ๋กœ์šด ์ •์˜์— ๋Œ€ํ•ด ์ƒˆ๋กœ์šด ์‹๋ณ„์ž๋ฅผ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด ๋” ํšจ๊ณผ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์„œ๋Š” ํ™•์žฅ ์‚ฌ์šฉ์„ ํ˜‘์ƒํ•˜๋Š” ํŠน์ • ๋ฐฉ๋ฒ•์„ ๊ทœ์ •ํ•˜์ง€ ์•Š์ง€๋งŒ, ์„ค์ •(์„น์…˜ 7.2.4.1)์ด ๊ทธ ๋ชฉ์ ์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Œ์„ ์ง€์ ํ•ฉ๋‹ˆ๋‹ค. ์–‘์ชฝ ํ”ผ์–ด๊ฐ€ ํ™•์žฅ ์‚ฌ์šฉ์— ๋™์˜ํ•˜๋Š” ๊ฐ’์„ ์„ค์ •ํ•˜๋ฉด ํ™•์žฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ค์ •์ด ํ™•์žฅ ํ˜‘์ƒ์— ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ, ์„ค์ •์˜ ๊ธฐ๋ณธ๊ฐ’์€ ์„ค์ •์ด ๋ˆ„๋ฝ๋˜๋ฉด ํ™•์žฅ์ด ๋น„ํ™œ์„ฑํ™”๋˜๋„๋ก ์ •์˜๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).


10. ๋ณด์•ˆ ๊ณ ๋ ค์‚ฌํ•ญ

HTTP/3์˜ ๋ณด์•ˆ ๊ณ ๋ ค์‚ฌํ•ญ์€ TLS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” HTTP/2์˜ ๊ณ ๋ ค์‚ฌํ•ญ๊ณผ ๋น„๊ตํ•ด ์œ ์‚ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ RFC 9113 ์„น์…˜ 10์˜ ๋งŽ์€ ๊ณ ๋ ค์‚ฌํ•ญ์ด [QUIC-TRANSPORT]์— ์ ์šฉ๋˜๋ฉฐ ํ•ด๋‹น ๋ฌธ์„œ์—์„œ ๋…ผ์˜๋ฉ๋‹ˆ๋‹ค.

10.1. ์„œ๋ฒ„ ๊ถŒํ•œ

HTTP/3๋Š” ๊ถŒํ•œ(authority)์˜ HTTP ์ •์˜์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ๊ถŒํ•œ ์„ค์ •์˜ ๋ณด์•ˆ ๊ณ ๋ ค์‚ฌํ•ญ์€ RFC 9110 ์„น์…˜ 17.1์— ๋…ผ์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

10.2. ๊ต์ฐจ ํ”„๋กœํ† ์ฝœ ๊ณต๊ฒฉ

TLS์™€ QUIC ํ•ธ๋“œ์…ฐ์ดํฌ์—์„œ ALPN์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ์ด์–ด ๋ฐ”์ดํŠธ๊ฐ€ ์ฒ˜๋ฆฌ๋˜๊ธฐ ์ „์— ๋Œ€์ƒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœํ† ์ฝœ์„ ํ™•๋ฆฝํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ”ผ์–ด๋“ค์ด ๋™์ผํ•œ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฐ•ํ•œ ํ™•์‹ ์„ ๊ฐ–๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Š” ๋ชจ๋“  ๊ต์ฐจ ํ”„๋กœํ† ์ฝœ ๊ณต๊ฒฉ์œผ๋กœ๋ถ€ํ„ฐ์˜ ๋ณดํ˜ธ๋ฅผ ๋ณด์žฅํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. RFC 9000 ์„น์…˜ 21.5๋Š” ์ธ์ฆ๋˜์ง€ ์•Š์€ ์ „์†ก์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ‰๋ฌธ QUIC ํŒจํ‚ท์„ ์‚ฌ์šฉํ•ด ์š”์ฒญ ์œ„์กฐ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

10.3. ์ค‘๊ฐœ์ž ์บก์Аํ™” ๊ณต๊ฒฉ

HTTP/3 ํ•„๋“œ ์ธ์ฝ”๋”ฉ์€ HTTP ๊ตฌ๋ฌธ์—์„œ ์œ ํšจํ•œ ํ•„๋“œ ์ด๋ฆ„์ด ์•„๋‹Œ ์ด๋ฆ„์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค(RFC 9110 ์„น์…˜ 5.1 ์ฐธ์กฐ). ์œ ํšจํ•˜์ง€ ์•Š์€ ํ•„๋“œ ์ด๋ฆ„์„ ํฌํ•จํ•˜๋Š” ์š”์ฒญ ๋˜๋Š” ์‘๋‹ต์€ MUST ํ˜•์‹์ด ์ž˜๋ชป๋œ ๊ฒƒ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ค‘๊ฐœ์ž๋Š” ์œ ํšจํ•˜์ง€ ์•Š์€ ํ•„๋“œ ์ด๋ฆ„์„ ํฌํ•จํ•œ HTTP/3 ์š”์ฒญ ๋˜๋Š” ์‘๋‹ต์„ HTTP/1.1 ๋ฉ”์‹œ์ง€๋กœ ๋ฒˆ์—ญํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์œ ์‚ฌํ•˜๊ฒŒ, HTTP/3๋Š” ์œ ํšจํ•˜์ง€ ์•Š์€ ํ•„๋“œ ๊ฐ’์„ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ์ฝ”๋”ฉ ๊ฐ€๋Šฅํ•œ ๋Œ€๋ถ€๋ถ„์˜ ๊ฐ’์€ ํ•„๋“œ ํŒŒ์‹ฑ์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ฒ ์ง€๋งŒ, ์บ๋ฆฌ์ง€ ๋ฆฌํ„ด(ASCII 0x0d), ๋ผ์ธ ํ”ผ๋“œ(ASCII 0x0a), ๋„ ๋ฌธ์ž(ASCII 0x00)๋Š” ๊ณต๊ฒฉ์ž๊ฐ€ ์ด๋ฅผ ๊ทธ๋Œ€๋กœ ๋ฒˆ์—ญํ•  ๊ฒฝ์šฐ ์•…์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•„๋“œ ๊ฐ’์— ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ž๋ฅผ ํฌํ•จํ•˜๋Š” ๋ชจ๋“  ์š”์ฒญ ๋˜๋Š” ์‘๋‹ต์€ MUST ํ˜•์‹์ด ์ž˜๋ชป๋œ ๊ฒƒ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์œ ํšจํ•œ ๋ฌธ์ž๋Š” RFC 9110 ์„น์…˜ 5.5์˜ "field-content" ABNF ๊ทœ์น™์— ์˜ํ•ด ์ •์˜๋ฉ๋‹ˆ๋‹ค.

10.4. ํ‘ธ์‹œ๋œ ์‘๋‹ต์˜ ์บ์‹œ ๊ฐ€๋Šฅ์„ฑ

ํ‘ธ์‹œ๋œ ์‘๋‹ต์€ ํด๋ผ์ด์–ธํŠธ์˜ ๋ช…์‹œ์  ์š”์ฒญ์ด ์—†์œผ๋ฉฐ, ์š”์ฒญ์€ ์„œ๋ฒ„๊ฐ€ PUSH_PROMISE ํ”„๋ ˆ์ž„์—์„œ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํ‘ธ์‹œ๋œ ์‘๋‹ต์„ ์บ์‹œํ•˜๋Š” ๊ฒƒ์€ ์˜ค๋ฆฌ์ง„ ์„œ๋ฒ„๊ฐ€ Cache-Control ํ—ค๋” ํ•„๋“œ์—์„œ ์ œ๊ณตํ•˜๋Š” ์ง€์นจ์— ๋”ฐ๋ผ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹จ์ผ ์„œ๋ฒ„๊ฐ€ ๋‘˜ ์ด์ƒ์˜ ํ…Œ๋„ŒํŠธ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์„œ๋ฒ„๊ฐ€ ๊ฐ ์‚ฌ์šฉ์ž์—๊ฒŒ URI ๊ณต๊ฐ„์˜ ์ž‘์€ ๋ถ€๋ถ„์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ํ…Œ๋„ŒํŠธ๊ฐ€ ๋™์ผ ์„œ๋ฒ„์—์„œ ๊ณต๊ฐ„์„ ๊ณต์œ ํ•˜๋Š” ๊ฒฝ์šฐ, ํ•ด๋‹น ์„œ๋ฒ„๋Š” ํ…Œ๋„ŒํŠธ๊ฐ€ ๊ถŒํ•œ์ด ์—†๋Š” ๋ฆฌ์†Œ์Šค์˜ ํ‘œํ˜„์„ ํ‘ธ์‹œํ•  ์ˆ˜ ์—†๋„๋ก ๋ณด์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). ์ด๋ฅผ ๊ฐ•์ œํ•˜์ง€ ๋ชปํ•˜๋ฉด ํ…Œ๋„ŒํŠธ๊ฐ€ ์บ์‹œ์—์„œ ์ œ๊ณต๋˜์–ด ๊ถŒํ•œ ์žˆ๋Š” ํ…Œ๋„ŒํŠธ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์‹ค์ œ ํ‘œํ˜„์„ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๋Š” ์˜ค๋ฆฌ์ง„ ์„œ๋ฒ„์— ๋Œ€ํ•ด ๊ถŒํ•œ์ด ์—†๋Š” ํ‘ธ์‹œ๋œ ์‘๋‹ต์„ ๊ฑฐ๋ถ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค; ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„น์…˜ 4.6์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

10.5. ์„œ๋น„์Šค ๊ฑฐ๋ถ€(DoS) ๊ณ ๋ ค์‚ฌํ•ญ

HTTP/3 ์—ฐ๊ฒฐ์€ HTTP/1.1 ๋˜๋Š” HTTP/2 ์—ฐ๊ฒฐ๋ณด๋‹ค ์šด์˜์„ ์œ„ํ•ด ๋” ๋งŽ์€ ์ž์› ํ• ๋‹น์„ ์š”๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•„๋“œ ์••์ถ•๊ณผ ํ๋ฆ„ ์ œ์–ด์˜ ์‚ฌ์šฉ์€ ๋” ๋งŽ์€ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ์ž์› ํ• ๋‹น์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์„ค์ •์€ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ๋“ค์˜ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ์—„๊ฒฉํ•˜๊ฒŒ ์ œํ•œ๋˜๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

PUSH_PROMISE ํ”„๋ ˆ์ž„์˜ ์ˆ˜๋Š” ์œ ์‚ฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์ œ์•ฝ๋ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„ ํ‘ธ์‹œ๋ฅผ ์ˆ˜๋ฝํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ๋Š” ๋™์‹œ์— ๋ฐœํ–‰ํ•˜๋Š” push ID์˜ ์ˆ˜๋ฅผ ์ œํ•œํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(SHOULD).

์ฒ˜๋ฆฌ ์šฉ๋Ÿ‰์€ ์ƒํƒœ ์šฉ๋Ÿ‰๋งŒํผ ํšจ๊ณผ์ ์œผ๋กœ ๋ณดํ˜ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํ”ผ์–ด๊ฐ€ ๋ฌด์‹œํ•ด์•ผ ํ•˜๋Š” ์ •์˜๋˜์ง€ ์•Š์€ ํ”„๋กœํ† ์ฝœ ์š”์†Œ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์€ ํ”ผ์–ด๊ฐ€ ์ถ”๊ฐ€ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ•˜๊ฒŒ ํ•˜๋„๋ก ์•…์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์ˆ˜์˜ ๋ฏธ์ •์˜ SETTINGS ๋งค๊ฐœ๋ณ€์ˆ˜, ์•Œ๋ ค์ง€์ง€ ์•Š์€ ํ”„๋ ˆ์ž„ ์œ ํ˜• ๋˜๋Š” ์•Œ๋ ค์ง€์ง€ ์•Š์€ ์ŠคํŠธ๋ฆผ ์œ ํ˜•์„ ์„ค์ •ํ•จ์œผ๋กœ์จ ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์ผ๋ถ€ ์‚ฌ์šฉ์€ ์™„์ „ํžˆ ์ •๋‹นํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์˜ˆ๋ฅผ ๋“ค์–ด ์˜ต์…˜-์ดํ•ด ํ™•์žฅ์ด๋‚˜ ํŠธ๋ž˜ํ”ฝ ๋ถ„์„์— ๋Œ€ํ•œ ์ €ํ•ญ์„ ๋†’์ด๊ธฐ ์œ„ํ•œ ํŒจ๋”ฉ ๋“ฑ์ด ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

ํ•„๋“œ ์„น์…˜์˜ ์••์ถ• ๋˜ํ•œ ์ฒ˜๋ฆฌ ์ž์›์„ ๋‚ญ๋น„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค; ์ž ์žฌ์  ์•…์šฉ์— ๊ด€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ RFC 9204 ์„น์…˜ 7์˜ [QPACK]๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์„œ๋ฒ„ ํ‘ธ์‹œ, ๋ฏธ์ง€์˜ ํ”„๋กœํ† ์ฝœ ์š”์†Œ, ํ•„๋“œ ์••์ถ• ๋“ฑ ์ด ๋ชจ๋“  ๊ธฐ๋Šฅ์€ ์ •๋‹นํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ๋“ค์€ ๋ถˆํ•„์š”ํ•˜๊ฑฐ๋‚˜ ๊ณผ๋„ํ•˜๊ฒŒ ์‚ฌ์šฉ๋  ๋•Œ์—๋งŒ ๋ถ€๋‹ด์ด ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํ–‰ํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜์ง€ ์•Š๋Š” ์—”๋“œํฌ์ธํŠธ๋Š” ์„œ๋น„์Šค ๊ฑฐ๋ถ€ ๊ณต๊ฒฉ์˜ ์œ„ํ—˜์— ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ๊ตฌํ˜„์ฒด๋Š” ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์˜ ์‚ฌ์šฉ์„ ์ถ”์ ํ•˜๊ณ  ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์ œํ•œ์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(SHOULD). ์—”๋“œํฌ์ธํŠธ๋Š” ์˜์‹ฌ์Šค๋Ÿฌ์šด ํ™œ๋™์„ ์—ฐ๊ฒฐ ์˜ค๋ฅ˜ ์œ ํ˜• H3_EXCESSIVE_LOAD๋กœ ์ฒ˜๋ฆฌํ•  MAY ์žˆ์ง€๋งŒ, ์˜คํƒ์€ ์ •์ƒ์ ์ธ ์—ฐ๊ฒฐ๊ณผ ์š”์ฒญ์„ ์ค‘๋‹จ์‹œํ‚ค๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ดˆ๋ž˜ํ•ฉ๋‹ˆ๋‹ค.

10.5.1. ํ•„๋“œ ์„น์…˜ ํฌ๊ธฐ ์ œํ•œ

ํฐ ํ•„๋“œ ์„น์…˜(์„น์…˜ 4.1)์€ ๊ตฌํ˜„์ฒด๊ฐ€ ๋งŽ์€ ์–‘์˜ ์ƒํƒœ๋ฅผ ํ• ๋‹นํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ผ์šฐํŒ…์— ์ค‘์š”ํ•œ ํ—ค๋” ํ•„๋“œ๊ฐ€ ํ—ค๋” ์„น์…˜ ๋๋ถ€๋ถ„์— ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์–ด ํ—ค๋” ์„น์…˜์„ ์ตœ์ข… ๋ชฉ์ ์ง€๋กœ ์ŠคํŠธ๋ฆฌ๋ฐํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ˆœ์„œ์™€ ์บ์‹œ ์ •ํ™•์„ฑ ๋ณด์žฅ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ์ด์œ ๋กœ ์ธํ•ด ์—”๋“œํฌ์ธํŠธ๋Š” ์ „์ฒด ํ—ค๋” ์„น์…˜์„ ๋ฒ„ํผ๋งํ•ด์•ผ ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค. ํ•„๋“œ ์„น์…˜์˜ ํฌ๊ธฐ์— ๋Œ€ํ•œ ํ•˜๋“œ ์ œํ•œ์ด ์—†์œผ๋ฏ€๋กœ ์ผ๋ถ€ ์—”๋“œํฌ์ธํŠธ๋Š” ํ—ค๋” ํ•„๋“œ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—”๋“œํฌ์ธํŠธ๋Š” SETTINGS_MAX_FIELD_SECTION_SIZE (์„น์…˜ 4.2.2) ์„ค์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”ผ์–ด์—๊ฒŒ ํ•„๋“œ ์„น์…˜ ํฌ๊ธฐ์— ์ ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ์ œํ•œ์„ ์•Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์„ค์ •์€ ๊ถŒ๊ณ ์ ์ด๋ฏ€๋กœ ์—”๋“œํฌ์ธํŠธ๋Š” ์ด ์ œํ•œ์„ ์ดˆ๊ณผํ•˜๋Š” ํ•„๋“œ ์„น์…˜์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ทธ ๊ฒฝ์šฐ ์š”์ฒญ ๋˜๋Š” ์‘๋‹ต์ด ํ˜•์‹์ด ์ž˜๋ชป๋œ ๊ฒƒ์œผ๋กœ ์ฒ˜๋ฆฌ๋  ์œ„ํ—˜์„ ๊ฐ์ˆ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์„ค์ •์€ HTTP/3 ์—ฐ๊ฒฐ์— ํŠน์ •ํ•˜๋ฏ€๋กœ, ์–ด๋–ค ์š”์ฒญ์ด๋‚˜ ์‘๋‹ต์ด ๋” ๋‚ฎ์€, ์•Œ๋ ค์ง€์ง€ ์•Š์€ ์ œํ•œ์„ ๊ฐ€์ง„ ํ™‰์„ ๋งŒ๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ค‘๊ฐœ์ž๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํ”ผ์–ด๊ฐ€ ์ œ์‹œํ•œ ๊ฐ’์„ ์ „๋‹ฌํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๋ ค ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ทธ๋ ‡๊ฒŒ ํ•  ์˜๋ฌด๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์„œ๋ฒ„๊ฐ€ ์ž์‹ ์ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ํฐ ํ•„๋“œ ์„น์…˜์„ ์ˆ˜์‹ ํ•˜๋ฉด HTTP 431 (Request Header Fields Too Large) ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค([RFC6585]). ํด๋ผ์ด์–ธํŠธ๋Š” ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ์‘๋‹ต์„ ํ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

10.5.2. CONNECT ๊ด€๋ จ ๋ฌธ์ œ

CONNECT ๋ฉ”์„œ๋“œ๋Š” ํ”„๋ก์‹œ์—์„œ ๋ถˆ๊ท ํ˜•ํ•œ ๋ถ€ํ•˜๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆผ ์ƒ์„ฑ์€ TCP ์—ฐ๊ฒฐ ์ƒ์„ฑ ๋ฐ ์œ ์ง€์— ๋น„ํ•ด ์ƒ๋Œ€์ ์œผ๋กœ ์ €๋ ดํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ CONNECT๋ฅผ ์ง€์›ํ•˜๋Š” ํ”„๋ก์‹œ๋Š” ๋™์‹œ ์š”์ฒญ ์ˆ˜์— ๋Œ€ํ•ด ๋ณด๋‹ค ๋ณด์ˆ˜์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋ก์‹œ๋Š” ๋˜ํ•œ CONNECT ์š”์ฒญ์„ ์šด๋ฐ˜ํ•œ ์ŠคํŠธ๋ฆผ์ด ๋‹ซํžŒ ์ดํ›„์—๋„ TCP ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ ์ผ๋ถ€ ์ž์›์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐœ์‹  TCP ์—ฐ๊ฒฐ์ด TIME_WAIT ์ƒํƒœ์— ๋‚จ์•„์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ํ”„๋ก์‹œ๋Š” TCP ์—ฐ๊ฒฐ์ด ์ข…๋ฃŒ๋œ ์งํ›„ QUIC ์ŠคํŠธ๋ฆผ ํ•œ๋„๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๊ฒƒ์„ ์ง€์—ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

10.6. ์••์ถ• ์‚ฌ์šฉ

์••์ถ•์€ ๊ณต๊ฒฉ์ž๊ฐ€ ๋™์ผํ•œ ์ปจํ…์ŠคํŠธ์—์„œ ๊ณต๊ฒฉ์ž๊ฐ€ ์ œ์–ดํ•˜๋Š” ๋ฐ์ดํ„ฐ์™€ ํ•จ๊ป˜ ์••์ถ•๋œ ๋น„๋ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ํšŒ๋ณตํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. HTTP/3๋Š” ํ•„๋“œ์˜ ์••์ถ•์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค(์„น์…˜ 4.2); ๋‹ค์Œ ์šฐ๋ ค์‚ฌํ•ญ์€ HTTP ์••์ถ•๋œ ์ฝ˜ํ…์ธ  ์ธ์ฝ”๋”ฉ์˜ ์‚ฌ์šฉ์—๋„ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค; ์ž์„ธํ•œ ๋‚ด์šฉ์€ RFC 9110 ์„น์…˜ 8.4.1์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์›น์˜ ํŠน์„ฑ์„ ์•…์šฉํ•˜๋Š” ์••์ถ• ๊ณต๊ฒฉ์ด ์ž…์ฆ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: [BREACH]). ๊ณต๊ฒฉ์ž๋Š” ๋‹ค์–‘ํ•œ ํ‰๋ฌธ์„ ํฌํ•จํ•˜๋Š” ์—ฌ๋Ÿฌ ์š”์ฒญ์„ ์œ ๋„ํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ ์•”ํ˜ธ๋ฌธ ๊ธธ์ด๋ฅผ ๊ด€์ฐฐํ•˜์—ฌ ๋น„๋ฐ€์— ๋Œ€ํ•œ ์ถ”์ธก์ด ๋งž์„ ๋•Œ ๋” ์งง์€ ๊ธธ์ด๋ฅผ ๋“œ๋Ÿฌ๋‚ด๋Š” ๋ฐฉ์‹์œผ๋กœ ์ •๋ณด๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.

๋ณด์•ˆ ์ฑ„๋„์—์„œ ํ†ต์‹ ํ•˜๋Š” ๊ตฌํ˜„์ฒด๋Š” ๊ธฐ๋ฐ€ ๋ฐ์ดํ„ฐ์™€ ๊ณต๊ฒฉ์ž๊ฐ€ ์ œ์–ดํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋™์ผํ•œ ์ปจํ…์ŠคํŠธ์—์„œ ํฌํ•จํ•˜๋Š” ์ฝ˜ํ…์ธ ๋ฅผ ๋ณ„๋„์˜ ์••์ถ• ์ปจํ…์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ•œ ์••์ถ•ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT). ๋ฐ์ดํ„ฐ์˜ ์ถœ์ฒ˜๋ฅผ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†์œผ๋ฉด ์••์ถ•์„ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT).

ํ•„๋“œ ์„น์…˜์˜ ์••์ถ•์— ๊ด€ํ•œ ์ถ”๊ฐ€ ๊ณ ๋ ค์‚ฌํ•ญ์€ [QPACK]์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

10.7. ํŒจ๋”ฉ ๋ฐ ํŠธ๋ž˜ํ”ฝ ๋ถ„์„

ํŒจ๋”ฉ์€ ํ”„๋ ˆ์ž„ ์ฝ˜ํ…์ธ ์˜ ์ •ํ™•ํ•œ ํฌ๊ธฐ๋ฅผ ํ๋ฆฌ๊ฒŒ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์˜ˆ๋ฅผ ๋“ค์–ด ์••์ถ•๋œ ์ฝ˜ํ…์ธ ์— ๊ณต๊ฒฉ์ž๊ฐ€ ์ œ์–ดํ•˜๋Š” ํ‰๋ฌธ๊ณผ ๋น„๋ฐ€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ํฌํ•จ๋œ ๊ฒฝ์šฐ์™€ ๊ฐ™์€ ํŠน์ • ๊ณต๊ฒฉ์„ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค(์˜ˆ: [BREACH]).

HTTP/2๊ฐ€ PADDING ํ”„๋ ˆ์ž„๊ณผ ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์˜ Padding ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠธ๋ž˜ํ”ฝ ๋ถ„์„์— ๋Œ€ํ•œ ์ €ํ•ญ์„ฑ์„ ๋†’์ด๋Š” ๊ฒƒ๊ณผ ๋‹ฌ๋ฆฌ, HTTP/3๋Š” ์ „์†ก ๊ณ„์ธต ํŒจ๋”ฉ์— ์˜์กดํ•˜๊ฑฐ๋‚˜ ์„น์…˜ 7.2.8 ๋ฐ ์„น์…˜ 6.2.3์—์„œ ๋…ผ์˜๋œ ์˜ˆ์•ฝ๋œ ํ”„๋ ˆ์ž„ ๋ฐ ์ŠคํŠธ๋ฆผ ์œ ํ˜•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŒจ๋”ฉ ๋ฐฉ๋ฒ•๋“ค์€ ํŒจ๋”ฉ์˜ ์„ธ๋ถ„์„ฑ, ๋ณดํ˜ธ๋˜๋Š” ์ •๋ณด์™€์˜ ๊ด€๊ณ„์—์„œ ํŒจ๋”ฉ์ด ์–ด๋–ป๊ฒŒ ๋ฐฐ์น˜๋˜๋Š”์ง€, ํŒจํ‚ท ์†์‹ค์˜ ๊ฒฝ์šฐ์— ํŒจ๋”ฉ์ด ์ ์šฉ๋˜๋Š”์ง€ ์—ฌ๋ถ€, ๊ทธ๋ฆฌ๊ณ  ๊ตฌํ˜„์ฒด๊ฐ€ ํŒจ๋”ฉ์„ ์–ด๋–ป๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋”ฐ๋ผ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์•ฝ๋œ ์ŠคํŠธ๋ฆผ ์œ ํ˜•์€ ์—ฐ๊ฒฐ์ด ์œ ํœด ์ƒํƒœ์ผ ๋•Œ์—๋„ ํŠธ๋ž˜ํ”ฝ์„ ์ „์†กํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. HTTP ํŠธ๋ž˜ํ”ฝ์€ ์ข…์ข… ๋ฒ„์ŠคํŠธ๋กœ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ, ๊ฒ‰๋ณด๊ธฐ ํŠธ๋ž˜ํ”ฝ์€ ์ด๋Ÿฌํ•œ ๋ฒ„์ŠคํŠธ์˜ ํƒ€์ด๋ฐ์ด๋‚˜ ์ง€์† ์‹œ๊ฐ„์„ ํ๋ฆฌ๊ฒŒ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‹ฌ์ง€์–ด ์ผ์ •ํ•œ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ ์ „์†กํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ํŠธ๋ž˜ํ”ฝ์€ ์—ฌ์ „ํžˆ ์ˆ˜์‹ ์ž์— ์˜ํ•ด ํ๋ฆ„ ์ œ์–ด๋˜๋ฏ€๋กœ, ํ•ด๋‹น ์ŠคํŠธ๋ฆผ์„ ์‹ ์†ํžˆ ๋น„์›Œ ์ถ”๊ฐ€ ํ๋ฆ„ ์ œ์–ด ํฌ๋ ˆ๋”ง์„ ์ œ๊ณตํ•˜์ง€ ๋ชปํ•˜๋ฉด ๋ฐœ์‹ ์ž์˜ ์‹ค์ œ ํŠธ๋ž˜ํ”ฝ ์ „์†ก ๋Šฅ๋ ฅ์ด ์ œํ•œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์••์ถ•์— ์˜์กดํ•˜๋Š” ๊ณต๊ฒฉ์„ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํŒจ๋”ฉ๋ณด๋‹ค ์••์ถ•์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ ์ œํ•œํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒจ๋”ฉ ์‚ฌ์šฉ์€ ์ฆ‰์‹œ ๋ช…๋ฐฑํ•ด ๋ณด์ด๋Š” ๊ฒƒ๋ณด๋‹ค ๋œ ํšจ๊ณผ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ค‘๋ณต๋œ ํŒจ๋”ฉ์€ ์˜คํžˆ๋ ค ์—ญํšจ๊ณผ๋ฅผ ๋‚ณ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ์„ ์˜ ๊ฒฝ์šฐ ํŒจ๋”ฉ์€ ๊ณต๊ฒฉ์ž๊ฐ€ ๊ด€์ฐฐํ•ด์•ผ ํ•˜๋Š” ํ”„๋ ˆ์ž„ ์ˆ˜๋ฅผ ๋Š˜๋ ค ๊ธธ์ด ์ •๋ณด๋ฅผ ์ถ”๋ก ํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค ๋ฟ์ž…๋‹ˆ๋‹ค. ์ž˜๋ชป ๊ตฌํ˜„๋œ ํŒจ๋”ฉ ์Šคํ‚ด์€ ์‰ฝ๊ฒŒ ๋ฌด๋ ฅํ™”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ๋ถ„ํฌ๋ฅผ ๊ฐ€์ง„ ๋ฌด์ž‘์œ„ ํŒจ๋”ฉ์€ ๊ฑฐ์˜ ๋ณดํ˜ธ ํšจ๊ณผ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๊ณ ์ • ํฌ๊ธฐ๋กœ ํŽ˜์ด๋กœ๋“œ๋ฅผ ํŒจ๋”ฉํ•˜๋ฉด ํŽ˜์ด๋กœ๋“œ ํฌ๊ธฐ๊ฐ€ ๊ณ ์ • ๊ฒฝ๊ณ„๋ฅผ ๋„˜์„ ๋•Œ ์ •๋ณด๋ฅผ ๋…ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ณต๊ฒฉ์ž๊ฐ€ ํ‰๋ฌธ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ๊ฐ€๋Šฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

10.8. ํ”„๋ ˆ์ž„ ํŒŒ์‹ฑ

์—ฌ๋Ÿฌ ํ”„๋กœํ† ์ฝœ ์š”์†Œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ€๋ณ€ ๊ธธ์ด ์ •์ˆ˜๋ฅผ ํฌํ•จํ•˜๋Š” ๋ช…์‹œ์  ๊ธธ์ด๋ฅผ ๊ฐ€์ง„ ํ”„๋ ˆ์ž„ ํ˜•ํƒœ๋กœ ์ค‘์ฒฉ๋œ ๊ธธ์ด ์š”์†Œ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ถ€์ฃผ์˜ํ•œ ๊ตฌํ˜„์ž์—๊ฒŒ ๋ณด์•ˆ ์œ„ํ—˜์„ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌํ˜„์ฒด๋Š” ํ”„๋ ˆ์ž„์˜ ๊ธธ์ด๊ฐ€ ๊ทธ ์•ˆ์— ํฌํ•จ๋œ ํ•„๋“œ๋“ค์˜ ๊ธธ์ด์™€ ์ •ํ™•ํžˆ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

10.9. ์กฐ๊ธฐ ๋ฐ์ดํ„ฐ

HTTP/3์—์„œ 0-RTT ์‚ฌ์šฉ์€ ์žฌ์ „์†ก(replay) ๊ณต๊ฒฉ์— ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 0-RTT๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” [HTTP-REPLAY]์˜ ์žฌ์ „์†ก ๋ฐฉ์ง€ ์™„ํ™”์ฑ…์„ ์ ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST). HTTP/3์— [HTTP-REPLAY]๋ฅผ ์ ์šฉํ•  ๋•Œ, TLS ๊ณ„์ธต์— ๋Œ€ํ•œ ์ฐธ์กฐ๋Š” QUIC ๋‚ด์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ํ•ธ๋“œ์…ฐ์ดํฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋ชจ๋“  ์ฐธ์กฐ๋Š” ์ŠคํŠธ๋ฆผ์˜ ๋‚ด์šฉ์„ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.

10.10. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

์ผ๋ถ€ HTTP ๊ตฌํ˜„์ฒด๋Š” ๋กœ๊น…์ด๋‚˜ ์ ‘๊ทผ ์ œ์–ด ๋ชฉ์ ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. QUIC ํด๋ผ์ด์–ธํŠธ์˜ ์ฃผ์†Œ๋Š” ์—ฐ๊ฒฐ ์ค‘์— ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ(ํ–ฅํ›„ ๋ฒ„์ „์—์„œ ์—ฌ๋Ÿฌ ์ฃผ์†Œ์˜ ๋™์‹œ ์‚ฌ์šฉ์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ์Œ), ์ด๋Ÿฌํ•œ ๊ตฌํ˜„์ฒด๋Š” ๊ด€๋ จ ์‹œ์ ์— ํด๋ผ์ด์–ธํŠธ์˜ ํ˜„์žฌ ์ฃผ์†Œ๋ฅผ ์ ๊ทน์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๊ฑฐ๋‚˜ ์›๋ž˜ ์ฃผ์†Œ๊ฐ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Œ์„ ๋ช…์‹œ์ ์œผ๋กœ ์ˆ˜์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

10.11. ํ”„๋ผ์ด๋ฒ„์‹œ ๊ณ ๋ ค์‚ฌํ•ญ

HTTP/3์˜ ๋ช‡ ๊ฐ€์ง€ ํŠน์„ฑ์€ ๊ด€์ฐฐ์ž์—๊ฒŒ ์‹œ๊ฐ„ ๊ฒฝ๊ณผ์— ๋”ฐ๋ฅธ ๋‹จ์ผ ํด๋ผ์ด์–ธํŠธ ๋˜๋Š” ์„œ๋ฒ„์˜ ๋™์ž‘์„ ์—ฐ๊ด€์‹œํ‚ฌ ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์„ค์ • ๊ฐ’, ์ž๊ทน์— ๋Œ€ํ•œ ๋ฐ˜์‘์˜ ํƒ€์ด๋ฐ, ์„ค์ •์œผ๋กœ ์ œ์–ด๋˜๋Š” ๊ธฐ๋Šฅ์˜ ์ฒ˜๋ฆฌ ๋ฐฉ์‹ ๋“ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์ด ๋™์ž‘์—์„œ ๊ด€์ฐฐ ๊ฐ€๋Šฅํ•œ ์ฐจ์ด๋ฅผ ๋งŒ๋“ค์–ด๋‚ผ ๊ฒฝ์šฐ, ํŠน์ • ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ง€๋ฌธํ™”(fingerprinting)ํ•˜๋Š” ๊ทผ๊ฑฐ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

HTTP/3๊ฐ€ ๋‹จ์ผ QUIC ์—ฐ๊ฒฐ ์‚ฌ์šฉ์„ ์„ ํ˜ธํ•˜๋ฉด ์‚ฌ์ดํŠธ์—์„œ ์‚ฌ์šฉ์ž์˜ ํ™œ๋™์„ ์—ฐ๊ด€์‹œํ‚ค๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ์˜ค๋ฆฌ์ง„์— ๋Œ€ํ•ด ์—ฐ๊ฒฐ์„ ์žฌ์‚ฌ์šฉํ•˜๋ฉด ๊ทธ ์˜ค๋ฆฌ์ง„๋“ค ๊ฐ„์˜ ํ™œ๋™์„ ์—ฐ๊ด€์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

QUIC์˜ ๋ช‡๋ช‡ ๊ธฐ๋Šฅ์€ ์ฆ‰๊ฐ์ ์ธ ์‘๋‹ต์„ ์š”๊ตฌํ•˜๋ฉฐ, ์—”๋“œํฌ์ธํŠธ๊ฐ€ ํ”ผ์–ด์— ๋Œ€ํ•œ ์ง€์—ฐ์„ ์ธก์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํŠน์ • ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ํ”„๋ผ์ด๋ฒ„์‹œ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


11. IANA ๊ณ ๋ ค์‚ฌํ•ญ

์ด ๋ฌธ์„œ๋Š” ์ƒˆ๋กœ์šด ALPN ํ”„๋กœํ† ์ฝœ ์‹๋ณ„์ž ๋“ฑ๋ก(์„น์…˜ 11.1)์„ ์ˆ˜ํ–‰ํ•˜๊ณ  HTTP/3์—์„œ ์ฝ”๋“œ ํฌ์ธํŠธ ํ• ๋‹น์„ ๊ด€๋ฆฌํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋“ค์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

11.1. HTTP/3 ์‹๋ณ„ ๋ฌธ์ž์—ด ๋“ฑ๋ก

์ด ๋ฌธ์„œ๋Š” "TLS Application-Layer Protocol Negotiation (ALPN) Protocol IDs" ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— HTTP/3๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์ƒˆ๋กœ์šด ๋“ฑ๋ก์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” [RFC7301]์—์„œ ํ™•๋ฆฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

"h3" ๋ฌธ์ž์—ด์ด HTTP/3๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค:

Protocol:
HTTP/3
Identification Sequence:
0x68 0x33 ("h3")
Specification:
์ด ๋ฌธ์„œ

11.2. ์ƒˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ

์ด ๋ฌธ์„œ์—์„œ ์ƒ์„ฑ๋œ ์ƒˆ๋กœ์šด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋“ค์€ RFC 9000 ์„น์…˜ 22.1์— ๋ฌธ์„œํ™”๋œ QUIC ๋“ฑ๋ก ์ •์ฑ…์— ๋”ฐ๋ผ ์šด์˜๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” ๋ชจ๋‘ RFC 9000 ์„น์…˜ 22.1.1์— ๋‚˜์—ด๋œ ๊ณตํ†ต ํ•„๋“œ ์ง‘ํ•ฉ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ด๋“ค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” "Hypertext Transfer Protocol version 3 (HTTP/3)" ํ•ญ๋ชฉ ์•„๋ž˜์— ์ˆ˜์ง‘๋ฉ๋‹ˆ๋‹ค.

์ด๋“ค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ๋Œ€ํ•œ ์ดˆ๊ธฐ ํ• ๋‹น์€ ๋ชจ๋‘ ์˜๊ตฌ ์ƒํƒœ๋กœ ์ง€์ •๋˜๋ฉฐ IETF๊ฐ€ ๋ณ€๊ฒฝ ์ œ์–ด์ž(change controller)๋กœ, HTTP ์ž‘์—… ๊ทธ๋ฃน(ietf-http-wg@w3.org)์ด ์—ฐ๋ฝ์ฒ˜๋กœ ๊ธฐ์žฌ๋ฉ๋‹ˆ๋‹ค.

11.2.1. ํ”„๋ ˆ์ž„ ์œ ํ˜•

์ด ๋ฌธ์„œ๋Š” HTTP/3 ํ”„๋ ˆ์ž„ ํƒ€์ž… ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. "HTTP/3 Frame Types" ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” 62๋น„ํŠธ ๊ณต๊ฐ„์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” QUIC ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ •์ฑ…์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค; ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„น์…˜ 11.2๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ์ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์˜ ์˜๊ตฌ ๋“ฑ๋ก์€ Specification Required ์ •์ฑ…์— ๋”ฐ๋ผ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค([RFC8126]), ๋‹ค๋งŒ 16์ง„์ˆ˜๋กœ 0x00์—์„œ 0x3f(ํฌํ•จ) ์‚ฌ์ด์˜ ๊ฐ’์€ ์„น์…˜ 4.9 ๋ฐ ์„น์…˜ 4.10์— ์ •์˜๋œ ๋Œ€๋กœ Standards Action ๋˜๋Š” IESG ์Šน์ธ์œผ๋กœ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.

์ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” [HTTP/2]์— ์ •์˜๋œ "HTTP/2 Frame Type" ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์™€๋Š” ๋ณ„๊ฐœ์ด์ง€๋งŒ, ์ฝ”๋“œ ๊ณต๊ฐ„์ด ๊ฒน์น˜๋Š” ๊ฒฝ์šฐ ํ• ๋‹น์ด ์„œ๋กœ ๋ณ‘ํ–‰๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•ฉ๋‹ˆ๋‹ค. ํ•œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ํ•ญ๋ชฉ์ด๋งŒ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ, ๋Œ€์‘ ๊ฐ’์ด ๊ด€๋ จ ์—†๋Š” ๋™์ž‘์— ํ• ๋‹น๋˜์ง€ ์•Š๋„๋ก ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค(SHOULD). ์ „๋ฌธ๊ฐ€ ๊ฒ€ํ† ์ž๋Š” ํ•ด๋‹น ๊ฐ’์ด ๋Œ€์‘ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์˜ ๋™์ผ ๊ฐ’๊ณผ ์ถฉ๋Œํ•˜๋Š” ๊ฒฝ์šฐ ๊ด€๋ จ ์—†๋Š” ๋“ฑ๋ก์„ ๊ฑฐ๋ถ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY).

์„น์…˜ 11.2์— ์„ค๋ช…๋œ ๊ณตํ†ต ํ•„๋“œ ์™ธ์—๋„, ์ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์˜ ์˜๊ตฌ ๋“ฑ๋ก์€ ๋‹ค์Œ ํ•„๋“œ๋ฅผ ๋ฐ˜๋“œ์‹œ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST):

Frame Type:
ํ”„๋ ˆ์ž„ ์œ ํ˜•์˜ ์ด๋ฆ„ ๋˜๋Š” ๋ ˆ์ด๋ธ”.

ํ”„๋ ˆ์ž„ ์œ ํ˜•์˜ ๋ช…์„ธ๋Š” ํ”„๋ ˆ์ž„ ๋ ˆ์ด์•„์›ƒ๊ณผ ์˜๋ฏธ(์กฐ๊ฑด๋ถ€๋กœ ์กด์žฌํ•˜๋Š” ํ”„๋ ˆ์ž„ ๋ถ€๋ถ„์„ ํฌํ•จ)๋ฅผ ๋ฐ˜๋“œ์‹œ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

ํ‘œ 2์˜ ํ•ญ๋ชฉ๋“ค์€ ์ด ๋ฌธ์„œ์— ์˜ํ•ด ๋“ฑ๋ก๋ฉ๋‹ˆ๋‹ค.

Table 2: ์ดˆ๊ธฐ HTTP/3 ํ”„๋ ˆ์ž„ ์œ ํ˜•
ํ”„๋ ˆ์ž„ ์œ ํ˜• ๊ฐ’ ๋ช…์„ธ
DATA
0x00 ์„น์…˜ 7.2.1
HEADERS
0x01 ์„น์…˜ 7.2.2
Reserved 0x02 ์ด ๋ฌธ์„œ
CANCEL_PUSH
0x03 ์„น์…˜ 7.2.3
SETTINGS
0x04 ์„น์…˜ 7.2.4
PUSH_PROMISE
0x05 ์„น์…˜ 7.2.5
Reserved 0x06 ์ด ๋ฌธ์„œ
GOAWAY
0x07 ์„น์…˜ 7.2.6
Reserved 0x08 ์ด ๋ฌธ์„œ
Reserved 0x09 ์ด ๋ฌธ์„œ
MAX_PUSH_ID
0x0d ์„น์…˜ 7.2.7

๋น„์Œ์ˆ˜ ์ •์ˆ˜ N์— ๋Œ€ํ•ด ํ˜•์‹ 0x1f * N + 0x21์ธ ๊ฐ ์ฝ”๋“œ๋Š”(IANA์— ์˜ํ•ด) ํ• ๋‹น๋˜์–ด์„œ๋Š” ์•ˆ ๋˜๋ฉฐ(MUST NOT) ํ• ๋‹น ๊ฐ’ ๋ชฉ๋ก์— ๋‚˜ํƒ€๋‚˜์„œ๋„ ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

11.2.2. ์„ค์ • ๋งค๊ฐœ๋ณ€์ˆ˜

์ด ๋ฌธ์„œ๋Š” HTTP/3 ์„ค์ •์„ ์œ„ํ•œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. "HTTP/3 Settings" ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” 62๋น„ํŠธ ๊ณต๊ฐ„์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” QUIC ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ •์ฑ…์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค; ์„น์…˜ 11.2๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ์ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์˜ ์˜๊ตฌ ๋“ฑ๋ก์€ Specification Required ์ •์ฑ…์— ๋”ฐ๋ผ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค([RFC8126]), ๋‹ค๋งŒ 16์ง„์ˆ˜๋กœ 0x00์—์„œ 0x3f(ํฌํ•จ) ์‚ฌ์ด์˜ ๊ฐ’์€ Standards Action ๋˜๋Š” IESG ์Šน์ธ์œผ๋กœ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.

์ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” [HTTP/2]์— ์ •์˜๋œ "HTTP/2 Settings" ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์™€๋Š” ๋ณ„๊ฐœ์ด์ง€๋งŒ, ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ํ• ๋‹น์ด ์„œ๋กœ ๋ณ‘ํ–‰๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•ฉ๋‹ˆ๋‹ค. ํ•œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—๋งŒ ํ•ญ๋ชฉ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋„ ํ•ด๋‹น ๊ฐ’์ด ๊ด€๋ จ ์—†๋Š” ๋™์ž‘์— ํ• ๋‹น๋˜์ง€ ์•Š๋„๋ก ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค(SHOULD). ์ „๋ฌธ๊ฐ€ ๊ฒ€ํ† ์ž๋Š” ๋™์ผ ๊ฐ’๊ณผ ์ถฉ๋Œํ•˜๋Š” ๊ด€๋ จ ์—†๋Š” ๋“ฑ๋ก์„ ๊ฑฐ๋ถ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY).

์„น์…˜ 11.2์— ์„ค๋ช…๋œ ๊ณตํ†ต ํ•„๋“œ ์™ธ์—๋„, ์ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์˜ ์˜๊ตฌ ๋“ฑ๋ก์€ ๋‹ค์Œ ํ•„๋“œ๋ฅผ ๋ฐ˜๋“œ์‹œ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST):

Setting Name:
์„ค์ •์˜ ์ƒ์ง•์  ์ด๋ฆ„. ์„ค์ • ์ด๋ฆ„ ์ง€์ •์€ ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.
Default:
๋ช…์‹œ๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์„ค์ •์˜ ๊ฐ’. ๊ธฐ๋ณธ๊ฐ’์€ ๊ฐ€๋Šฅํ•œ ํ•œ ๊ฐ€์žฅ ์ œํ•œ์ ์ธ ๊ฐ’์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(SHOULD).

ํ‘œ 3์˜ ํ•ญ๋ชฉ๋“ค์€ ์ด ๋ฌธ์„œ์— ์˜ํ•ด ๋“ฑ๋ก๋ฉ๋‹ˆ๋‹ค.

Table 3: ์ดˆ๊ธฐ HTTP/3 ์„ค์ •
์„ค์ • ์ด๋ฆ„ ๊ฐ’ ๋ช…์„ธ ๊ธฐ๋ณธ๊ฐ’
Reserved 0x00 ์ด ๋ฌธ์„œ ํ•ด๋‹น ์—†์Œ
Reserved 0x02 ์ด ๋ฌธ์„œ ํ•ด๋‹น ์—†์Œ
Reserved 0x03 ์ด ๋ฌธ์„œ ํ•ด๋‹น ์—†์Œ
Reserved 0x04 ์ด ๋ฌธ์„œ ํ•ด๋‹น ์—†์Œ
Reserved 0x05 ์ด ๋ฌธ์„œ ํ•ด๋‹น ์—†์Œ
MAX_FIELD_SECTION_SIZE 0x06 ์„น์…˜ 7.2.4.1 ๋ฌด์ œํ•œ

ํ˜•์‹์ƒ์˜ ์ด์œ ๋กœ, ์„ค์ • ์ด๋ฆ„์€ 'SETTINGS_' ์ ‘๋‘์‚ฌ๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ์ค„์—ฌ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋น„์Œ์ˆ˜ ์ •์ˆ˜ N์— ๋Œ€ํ•ด ํ˜•์‹ 0x1f * N + 0x21์ธ ๊ฐ ์ฝ”๋“œ๋Š” IANA์— ์˜ํ•ด ํ• ๋‹น๋˜์–ด์„œ๋Š” ์•ˆ ๋˜๋ฉฐ(MUST NOT) ํ• ๋‹น ๊ฐ’ ๋ชฉ๋ก์— ๋‚˜ํƒ€๋‚˜์„œ๋„ ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

11.2.3. ์˜ค๋ฅ˜ ์ฝ”๋“œ

์ด ๋ฌธ์„œ๋Š” HTTP/3 ์˜ค๋ฅ˜ ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. "HTTP/3 Error Codes" ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” 62๋น„ํŠธ ๊ณต๊ฐ„์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” QUIC ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ •์ฑ…์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค; ์„น์…˜ 11.2๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ์ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์˜ ์˜๊ตฌ ๋“ฑ๋ก์€ Specification Required ์ •์ฑ…์— ๋”ฐ๋ผ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค([RFC8126]), ๋‹ค๋งŒ 16์ง„์ˆ˜๋กœ 0x00์—์„œ 0x3f(ํฌํ•จ) ์‚ฌ์ด์˜ ๊ฐ’์€ Standards Action ๋˜๋Š” IESG ์Šน์ธ์œผ๋กœ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ ์ฝ”๋“œ ๋“ฑ๋ก์€ ์˜ค๋ฅ˜ ์ฝ”๋“œ์˜ ์„ค๋ช…์„ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ „๋ฌธ๊ฐ€ ๋ฆฌ๋ทฐ์–ด๋Š” ์ƒˆ๋กœ์šด ๋“ฑ๋ก์ด ๊ธฐ์กด ์˜ค๋ฅ˜ ์ฝ”๋“œ์™€ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š”์ง€ ๊ฒ€ํ† ํ•  ๊ฒƒ์„ ๊ถŒ๊ณ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ๋“ฑ๋ก์˜ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜์ง€๋งŒ ์˜๋ฌดํ™”ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. "HTTP/2 Error Code" ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ๋“ฑ๋ก๋œ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ถŒ์žฅ๋˜์ง€ ์•Š์œผ๋ฉฐ, ์ „๋ฌธ๊ฐ€ ๋ฆฌ๋ทฐ์–ด๋Š” ๊ทธ๋Ÿฌํ•œ ๋“ฑ๋ก์„ ๊ฑฐ๋ถ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY).

์„น์…˜ 11.2์— ์„ค๋ช…๋œ ๊ณตํ†ต ํ•„๋“œ ์™ธ์—๋„, ์ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” ๋‘ ๊ฐœ์˜ ์ถ”๊ฐ€ ํ•„๋“œ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์˜ ์˜๊ตฌ ๋“ฑ๋ก์€ ๋‹ค์Œ ํ•„๋“œ๋ฅผ ๋ฐ˜๋“œ์‹œ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST):

Name:
์˜ค๋ฅ˜ ์ฝ”๋“œ์˜ ์ด๋ฆ„.
Description:
์˜ค๋ฅ˜ ์ฝ”๋“œ ์˜๋ฏธ์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์„ค๋ช….

ํ‘œ 4์˜ ํ•ญ๋ชฉ๋“ค์€ ์ด ๋ฌธ์„œ์— ์˜ํ•ด ๋“ฑ๋ก๋ฉ๋‹ˆ๋‹ค. ์ด ์˜ค๋ฅ˜ ์ฝ”๋“œ๋“ค์€ HTTP/2 ์˜ค๋ฅ˜ ์ฝ”๋“œ์™€์˜ ์ถฉ๋Œ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด Specification Required ์ •์ฑ… ๋ฒ”์œ„์—์„œ ์„ ํƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Table 4: ์ดˆ๊ธฐ HTTP/3 ์˜ค๋ฅ˜ ์ฝ”๋“œ
์ด๋ฆ„ ๊ฐ’ ์„ค๋ช… ๋ช…์„ธ
H3_NO_ERROR
0x0100 ์˜ค๋ฅ˜ ์—†์Œ ์„น์…˜ 8.1
H3_GENERAL_PROTOCOL_ERROR
0x0101 ์ผ๋ฐ˜ ํ”„๋กœํ† ์ฝœ ์˜ค๋ฅ˜ ์„น์…˜ 8.1
H3_INTERNAL_ERROR
0x0102 ๋‚ด๋ถ€ ์˜ค๋ฅ˜ ์„น์…˜ 8.1
H3_STREAM_CREATION_ERROR
0x0103 ์ŠคํŠธ๋ฆผ ์ƒ์„ฑ ์˜ค๋ฅ˜ ์„น์…˜ 8.1
H3_CLOSED_CRITICAL_STREAM
0x0104 ํ•„์ˆ˜ ์ŠคํŠธ๋ฆผ์ด ๋‹ซํž˜ ์„น์…˜ 8.1
H3_FRAME_UNEXPECTED
0x0105 ํ˜„์žฌ ์ƒํƒœ์—์„œ ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š” ํ”„๋ ˆ์ž„ ์„น์…˜ 8.1
H3_FRAME_ERROR
0x0106 ํ”„๋ ˆ์ž„์ด ๋ ˆ์ด์•„์›ƒ ๋˜๋Š” ํฌ๊ธฐ ๊ทœ์น™์„ ์œ„๋ฐ˜ํ•จ ์„น์…˜ 8.1
H3_EXCESSIVE_LOAD
0x0107 ํ”ผ์–ด๊ฐ€ ๊ณผ๋„ํ•œ ๋ถ€ํ•˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ด ์„น์…˜ 8.1
H3_ID_ERROR
0x0108 ์‹๋ณ„์ž๊ฐ€ ์ž˜๋ชป ์‚ฌ์šฉ๋จ ์„น์…˜ 8.1
H3_SETTINGS_ERROR
0x0109 SETTINGS ํ”„๋ ˆ์ž„์— ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฐ’์ด ํฌํ•จ๋จ ์„น์…˜ 8.1
H3_MISSING_SETTINGS
0x010a SETTINGS ํ”„๋ ˆ์ž„์ด ์ˆ˜์‹ ๋˜์ง€ ์•Š์Œ ์„น์…˜ 8.1
H3_REQUEST_REJECTED
0x010b ์š”์ฒญ์ด ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์Œ ์„น์…˜ 8.1
H3_REQUEST_CANCELLED
0x010c ๋ฐ์ดํ„ฐ๊ฐ€ ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์Œ ์„น์…˜ 8.1
H3_REQUEST_INCOMPLETE
0x010d ์ŠคํŠธ๋ฆผ์ด ์กฐ๊ธฐ์— ์ข…๋ฃŒ๋จ ์„น์…˜ 8.1
H3_MESSAGE_ERROR
0x010e ํ˜•์‹์ด ์ž˜๋ชป๋œ ๋ฉ”์‹œ์ง€ ์„น์…˜ 8.1
H3_CONNECT_ERROR
0x010f CONNECT ์š”์ฒญ์—์„œ์˜ TCP ๋ฆฌ์…‹ ๋˜๋Š” ์˜ค๋ฅ˜ ์„น์…˜ 8.1
H3_VERSION_FALLBACK
0x0110 HTTP/1.1๋กœ ์žฌ์‹œ๋„ ์„น์…˜ 8.1

๋น„์Œ์ˆ˜ ์ •์ˆ˜ N์— ๋Œ€ํ•ด ํ˜•์‹ 0x1f * N + 0x21์ธ ๊ฐ ์ฝ”๋“œ๋Š” IANA์— ์˜ํ•ด ํ• ๋‹น๋˜์–ด์„œ๋Š” ์•ˆ ๋˜๋ฉฐ(MUST NOT) ํ• ๋‹น ๊ฐ’ ๋ชฉ๋ก์— ๋‚˜ํƒ€๋‚˜์„œ๋„ ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

11.2.4. ์ŠคํŠธ๋ฆผ ์œ ํ˜•

์ด ๋ฌธ์„œ๋Š” HTTP/3 ๋‹จ๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ ์œ ํ˜•์— ๋Œ€ํ•œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. "HTTP/3 Stream Types" ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” 62๋น„ํŠธ ๊ณต๊ฐ„์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” QUIC ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ •์ฑ…์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค; ์„น์…˜ 11.2๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ์ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์˜ ์˜๊ตฌ ๋“ฑ๋ก์€ Specification Required ์ •์ฑ…์— ๋”ฐ๋ผ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค([RFC8126]), ๋‹ค๋งŒ 16์ง„์ˆ˜๋กœ 0x00์—์„œ 0x3f(ํฌํ•จ) ์‚ฌ์ด์˜ ๊ฐ’์€ Standards Action ๋˜๋Š” IESG ์Šน์ธ์œผ๋กœ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.

์„น์…˜ 11.2์— ์„ค๋ช…๋œ ๊ณตํ†ต ํ•„๋“œ ์™ธ์—๋„, ์ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์˜ ์˜๊ตฌ ๋“ฑ๋ก์€ ๋‹ค์Œ ํ•„๋“œ๋ฅผ ๋ฐ˜๋“œ์‹œ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST):

Stream Type:
์ŠคํŠธ๋ฆผ ์œ ํ˜•์˜ ์ด๋ฆ„ ๋˜๋Š” ๋ ˆ์ด๋ธ”.
Sender:
์ด ์ŠคํŠธ๋ฆผ ์œ ํ˜•์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” HTTP/3 ์—ฐ๊ฒฐ์ƒ์˜ ์—”๋“œํฌ์ธํŠธ. ๊ฐ’์€ "Client", "Server", ๋˜๋Š” "Both".

์˜๊ตฌ ๋“ฑ๋ก์— ๋Œ€ํ•œ ๋ช…์„ธ๋Š” ์ŠคํŠธ๋ฆผ ์œ ํ˜•์˜ ์„ค๋ช…๊ณผ ์ŠคํŠธ๋ฆผ ๋‚ด์šฉ์˜ ๋ ˆ์ด์•„์›ƒ ๋ฐ ์˜๋ฏธ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

ํ‘œ 5์˜ ํ•ญ๋ชฉ๋“ค์€ ์ด ๋ฌธ์„œ์— ์˜ํ•ด ๋“ฑ๋ก๋ฉ๋‹ˆ๋‹ค.

Table 5: ์ดˆ๊ธฐ ์ŠคํŠธ๋ฆผ ์œ ํ˜•
์ŠคํŠธ๋ฆผ ์œ ํ˜• ๊ฐ’ ๋ช…์„ธ ๋ฐœ์‹ ์ž
Control Stream 0x00 ์„น์…˜ 6.2.1 Both
Push Stream 0x01 ์„น์…˜ 4.6 Server

๋น„์Œ์ˆ˜ ์ •์ˆ˜ N์— ๋Œ€ํ•ด ํ˜•์‹ 0x1f * N + 0x21์ธ ๊ฐ ์ฝ”๋“œ๋Š” IANA์— ์˜ํ•ด ํ• ๋‹น๋˜์–ด์„œ๋Š” ์•ˆ ๋˜๋ฉฐ(MUST NOT) ํ• ๋‹น ๊ฐ’ ๋ชฉ๋ก์— ๋‚˜ํƒ€๋‚˜์„œ๋„ ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

12. ์ฐธ๊ณ ๋ฌธํ—Œ

12.1. ๊ทœ๋ฒ” ์ฐธ์กฐ

[ALTSVC]
Nottingham, M., McManus, P., and J. Reschke, โ€œHTTP Alternative Servicesโ€, RFC 7838, DOI 10.17487/RFC7838, 2016๋…„ 4์›”, <https://www.rfc-editor.org/info/rfc7838>.
[COOKIES]
Barth, A., โ€œHTTP State Management Mechanismโ€, RFC 6265, DOI 10.17487/RFC6265, 2011๋…„ 4์›”, <https://www.rfc-editor.org/info/rfc6265>.
[HTTP-CACHING]
Fielding, R., ํŽธ์ง‘., Nottingham, M., ํŽธ์ง‘., and J. Reschke, ํŽธ์ง‘., โ€œHTTP Cachingโ€, STD 98, RFC 9111, DOI 10.17487/RFC9111, 2022๋…„ 6์›”, <https://www.rfc-editor.org/info/rfc9111>.
[HTTP-REPLAY]
Thomson, M., Nottingham, M., and W. Tarreau, โ€œUsing Early Data in HTTPโ€, RFC 8470, DOI 10.17487/RFC8470, 2018๋…„ 9์›”, <https://www.rfc-editor.org/info/rfc8470>.
[HTTP]
Fielding, R., ํŽธ์ง‘., Nottingham, M., ํŽธ์ง‘., and J. Reschke, ํŽธ์ง‘., โ€œHTTP Semanticsโ€, STD 97, RFC 9110, DOI 10.17487/RFC9110, 2022๋…„ 6์›”, <https://www.rfc-editor.org/info/rfc9110>.
[QPACK]
Krasic, C., Bishop, M., and A. Frindell, ํŽธ์ง‘., โ€œQPACK: Field Compression for HTTP/3โ€, RFC 9204, DOI 10.17487/RFC9204, 2022๋…„ 6์›”, <https://www.rfc-editor.org/info/rfc9204>.
[QUIC-TRANSPORT]
Iyengar, J., ํŽธ์ง‘. ๋ฐ M. Thomson, ํŽธ์ง‘., โ€œQUIC: A UDP-Based Multiplexed and Secure Transportโ€, RFC 9000, DOI 10.17487/RFC9000, 2021๋…„ 5์›”, <https://www.rfc-editor.org/info/rfc9000>.
[RFC0793]
Postel, J., โ€œTransmission Control Protocolโ€, STD 7, RFC 793, DOI 10.17487/RFC0793, 1981๋…„ 9์›”, <https://www.rfc-editor.org/info/rfc793>.
[RFC2119]
Bradner, S., โ€œKey words for use in RFCs to Indicate Requirement Levelsโ€, BCP 14, RFC 2119, DOI 10.17487/RFC2119, 1997๋…„ 3์›”, <https://www.rfc-editor.org/info/rfc2119>.
[RFC6066]
Eastlake 3rd, D., โ€œTransport Layer Security (TLS) Extensions: Extension Definitionsโ€, RFC 6066, DOI 10.17487/RFC6066, 2011๋…„ 1์›”, <https://www.rfc-editor.org/info/rfc6066>.
[RFC7301]
Friedl, S., Popov, A., Langley, A., and E. Stephan, โ€œTransport Layer Security (TLS) Application-Layer Protocol Negotiation Extensionโ€, RFC 7301, DOI 10.17487/RFC7301, 2014๋…„ 7์›”, <https://www.rfc-editor.org/info/rfc7301>.
[RFC8126]
Cotton, M., Leiba, B., and T. Narten, โ€œGuidelines for Writing an IANA Considerations Section in RFCsโ€, BCP 26, RFC 8126, DOI 10.17487/RFC8126, 2017๋…„ 6์›”, <https://www.rfc-editor.org/info/rfc8126>.
[RFC8174]
Leiba, B., โ€œAmbiguity of Uppercase vs Lowercase in RFC 2119 Key Wordsโ€, BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2017๋…„ 5์›”, <https://www.rfc-editor.org/info/rfc8174>.
[URI]
Berners-Lee, T., Fielding, R., and L. Masinter, โ€œUniform Resource Identifier (URI): Generic Syntaxโ€, STD 66, RFC 3986, DOI 10.17487/RFC3986, 2005๋…„ 1์›”, <https://www.rfc-editor.org/info/rfc3986>.

12.2. ์ •๋ณด ์ฐธ์กฐ

[BREACH]
Gluck, Y., Harris, N., and A. Prado, โ€œBREACH: Reviving the CRIME Attackโ€, 2013๋…„ 7์›”, <http://breachattack.com/resources/BREACH%20-%20SSL,%20gone%20in%2030%20seconds.pdf>.
[DNS-TERMS]
Hoffman, P., Sullivan, A., and K. Fujiwara, โ€œDNS Terminologyโ€, BCP 219, RFC 8499, DOI 10.17487/RFC8499, 2019๋…„ 1์›”, <https://www.rfc-editor.org/info/rfc8499>.
[HPACK]
Peon, R. and H. Ruellan, โ€œHPACK: Header Compression for HTTP/2โ€, RFC 7541, DOI 10.17487/RFC7541, 2015๋…„ 5์›”, <https://www.rfc-editor.org/info/rfc7541>.
[HTTP/1.1]
Fielding, R., ํŽธ์ง‘., Nottingham, M., ํŽธ์ง‘., and J. Reschke, ํŽธ์ง‘., โ€œHTTP/1.1โ€, STD 99, RFC 9112, DOI 10.17487/RFC9112, 2022๋…„ 6์›”, <https://www.rfc-editor.org/info/rfc9112>.
[HTTP/2]
Thomson, M., ํŽธ์ง‘. ๋ฐ C. Benfield, ํŽธ์ง‘., โ€œHTTP/2โ€, RFC 9113, DOI 10.17487/RFC9113, 2022๋…„ 6์›”, <https://www.rfc-editor.org/info/rfc9113>.
[RFC6585]
Nottingham, M. and R. Fielding, โ€œAdditional HTTP Status Codesโ€, RFC 6585, DOI 10.17487/RFC6585, 2012๋…„ 4์›”, <https://www.rfc-editor.org/info/rfc6585>.
[RFC8164]
Nottingham, M. and M. Thomson, โ€œOpportunistic Security for HTTP/2โ€, RFC 8164, DOI 10.17487/RFC8164, 2017๋…„ 5์›”, <https://www.rfc-editor.org/info/rfc8164>.
[TFO]
Cheng, Y., Chu, J., Radhakrishnan, S., and A. Jain, โ€œTCP Fast Openโ€, RFC 7413, DOI 10.17487/RFC7413, 2014๋…„ 12์›”, <https://www.rfc-editor.org/info/rfc7413>.
[TLS]
Rescorla, E., โ€œThe Transport Layer Security (TLS) Protocol Version 1.3โ€, RFC 8446, DOI 10.17487/RFC8446, 2018๋…„ 8์›”, <https://www.rfc-editor.org/info/rfc8446>.

๋ถ€๋ก A. HTTP/2์—์„œ์˜ ์ „ํ™˜ ๊ณ ๋ ค์‚ฌํ•ญ

HTTP/3๋Š” HTTP/2์˜ ์„ค๊ณ„์—์„œ ๋งŽ์€ ์˜ํ–ฅ์„ ๋ฐ›์•˜์œผ๋ฉฐ ์—ฌ๋Ÿฌ ์œ ์‚ฌ์„ฑ์„ ์ง€๋‹™๋‹ˆ๋‹ค. ์ด ์ ˆ์—์„œ๋Š” HTTP/3 ์„ค๊ณ„์— ์‚ฌ์šฉ๋œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์„ค๋ช…ํ•˜๊ณ , HTTP/2์™€์˜ ์ค‘์š”ํ•œ ์ฐจ์ด์ ์„ ์ง€์ ํ•˜๋ฉฐ, HTTP/2 ํ™•์žฅ์„ HTTP/3๋กœ ๋งคํ•‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

HTTP/3๋Š” HTTP/2์™€์˜ ์œ ์‚ฌ์„ฑ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค๋Š” ์ „์ œ์—์„œ ์ถœ๋ฐœํ•˜์ง€๋งŒ, ๋ฐ˜๋“œ์‹œ ์ถฉ์กฑํ•ด์•ผ ํ•  ์—„๊ฒฉํ•œ ์š”๊ตฌ์‚ฌํ•ญ์€ ์•„๋‹™๋‹ˆ๋‹ค. HTTP/3๋Š” QUIC์ด TCP์™€ ๋‹ค๋ฅธ ์ ์—์„œ HTTP/2์™€ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ด๋Š” QUIC ๊ธฐ๋Šฅ(์˜ˆ: ์ŠคํŠธ๋ฆผ)์„ ํ™œ์šฉํ•˜๊ฑฐ๋‚˜ ์ „์ฒด ์ˆœ์„œ ๋ณด์žฅ์˜ ๋ถ€์žฌ์™€ ๊ฐ™์€ ์ค‘์š”ํ•œ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์š”์ฒญ๊ณผ ์‘๋‹ต์ด ์ŠคํŠธ๋ฆผ๊ณผ ์—ฐ๊ด€๋˜๋Š” ๊ด€๊ณ„ ๊ฐ™์€ ํ•ต์‹ฌ ์ธก๋ฉด์—์„œ HTTP/3๋Š” HTTP/2์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ์„ค๊ณ„ ์„ธ๋ถ€์‚ฌํ•ญ์€ ์ƒ๋‹นํžˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

์ด ์ ˆ์—์„œ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ์ฐจ์ด์ ์„ ์–ธ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.

A.1. ์ŠคํŠธ๋ฆผ

HTTP/3๋Š” HTTP/2๋ณด๋‹ค ๋” ๋งŽ์€ ์ˆ˜์˜ ์ŠคํŠธ๋ฆผ(262-1)์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆผ ์‹๋ณ„์ž ๊ณต๊ฐ„์˜ ๊ณ ๊ฐˆ์— ๋Œ€ํ•œ ๋™์ผํ•œ ๊ณ ๋ ค์‚ฌํ•ญ์ด ์ ์šฉ๋˜์ง€๋งŒ, ๊ณต๊ฐ„์ด ํ›จ์”ฌ ์ปค์„œ ์—ฐ๊ฒฐ ํ๋ฆ„ ์ œ์–ด ์ฐฝ์˜ ์ œํ•œ ๊ฐ™์€ QUIC์˜ ๋‹ค๋ฅธ ํ•œ๊ณ„์— ๋จผ์ € ๋„๋‹ฌํ•  ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค.

HTTP/2์™€ ๋‹ฌ๋ฆฌ, HTTP/3์—์„œ์˜ ์ŠคํŠธ๋ฆผ ๋™์‹œ์„ฑ์€ QUIC์— ์˜ํ•ด ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค. QUIC์€ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆ˜์‹ ๋˜๊ณ  ์†ก์‹ ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ํ”ผ์–ด์— ์˜ํ•ด ํ™•์ธ๋˜๋ฉด ์ŠคํŠธ๋ฆผ์ด ๋‹ซํžŒ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค. HTTP/2๋Š” END_STREAM ๋น„ํŠธ๋ฅผ ํฌํ•จํ•˜๋Š” ํ”„๋ ˆ์ž„์ด ์ „์†ก ๊ณ„์ธต์— ๊ธฐ๋ก๋˜์—ˆ์„ ๋•Œ ์ŠคํŠธ๋ฆผ์ด ๋‹ซํžŒ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋™๋“ฑํ•œ ๊ตํ™˜์˜ ์ŠคํŠธ๋ฆผ์ด ๋” ์˜ค๋žœ ๊ธฐ๊ฐ„ "ํ™œ์„ฑ" ์ƒํƒœ๋กœ ๋‚จ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. HTTP/3 ์„œ๋ฒ„๋Š” ์˜ˆ์ƒ ์‚ฌ์šฉ ํŒจํ„ด์— ๋”ฐ๋ผ HTTP/2์™€ ๋™๋“ฑํ•œ ๋™์‹œ์„ฑ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋” ๋งŽ์€ ์ˆ˜์˜ ํด๋ผ์ด์–ธํŠธ ์‹œ์ž‘ ์–‘๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ์„ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

HTTP/2์—์„œ๋Š” ์š”์ฒญ ๋ฐ ์‘๋‹ต ๋ณธ๋ฌธ(์ฆ‰, DATA ํ”„๋ ˆ์ž„์˜ ํŽ˜์ด๋กœ๋“œ)๋งŒ ํ๋ฆ„ ์ œ์–ด์˜ ๋Œ€์ƒ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  HTTP/3 ํ”„๋ ˆ์ž„์€ QUIC ์ŠคํŠธ๋ฆผ์—์„œ ์ „์†ก๋˜๋ฏ€๋กœ HTTP/3์—์„œ๋Š” ๋ชจ๋“  ์ŠคํŠธ๋ฆผ์˜ ๋ชจ๋“  ํ”„๋ ˆ์ž„์ด ํ๋ฆ„ ์ œ์–ด์˜ ๋Œ€์ƒ์ด ๋ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋‹จ๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ ์œ ํ˜•์˜ ์กด์žฌ๋กœ ์ธํ•ด, HTTP/3๋Š” ๋‹จ๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ์˜ ๋™์‹œ ๊ฐœ์ˆ˜๋งŒ์œผ๋กœ ์ธํ”Œ๋ผ์ดํŠธ ํ‘ธ์‹œ์˜ ์ˆ˜๋ฅผ ์ œ์–ดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  HTTP/3 ํด๋ผ์ด์–ธํŠธ๋Š” MAX_PUSH_ID ํ”„๋ ˆ์ž„์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„๊ฐ€ ์ „์†กํ•˜๋Š” ํ‘ธ์‹œ ์ˆ˜๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.

A.2. HTTP ํ”„๋ ˆ์ž„ ์œ ํ˜•

QUIC์—์„œ๋Š” ์ „์†ก ๊ณ„์ธต์ด ์—ฌ๋Ÿฌ ํ”„๋ ˆ์ด๋ฐ ๊ฐœ๋…์„ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ HTTP/2์˜ ๋งŽ์€ ํ”„๋ ˆ์ด๋ฐ ๊ฐœ๋…์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„์ด ์ด๋ฏธ ์ŠคํŠธ๋ฆผ ์œ„์— ์žˆ์œผ๋ฏ€๋กœ ์ŠคํŠธ๋ฆผ ๋ฒˆํ˜ธ๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. QUIC์˜ ๋‹ค์ค‘ํ™”๋Š” ์ด ๊ณ„์ธต ์•„๋ž˜์—์„œ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ๊ฐ€๋ณ€ ์ตœ๋Œ€ ๊ธธ์ด ํŒจํ‚ท ์ง€์›์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆผ ์ข…๋ฃŒ๋Š” QUIC์ด ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ END_STREAM ํ”Œ๋ž˜๊ทธ๊ฐ€ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ผ๋ฐ˜ ํ”„๋ ˆ์ž„ ๋ ˆ์ด์•„์›ƒ์—์„œ Flags ํ•„๋“œ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋ ˆ์ž„ ํŽ˜์ด๋กœ๋“œ๋Š” ๋Œ€์ฒด๋กœ [HTTP/2]์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ QUIC์—๋Š”(์˜ˆ: ํ๋ฆ„ ์ œ์–ด) HTTP/2์—๋„ ์žˆ๋Š” ๋งŽ์€ ๊ธฐ๋Šฅ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ HTTP ๋งคํ•‘์€ ์ด๋ฅผ ์žฌ๊ตฌํ˜„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ๋ช‡๋ช‡ HTTP/2 ํ”„๋ ˆ์ž„ ์œ ํ˜•์€ HTTP/3์—์„œ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. HTTP/2์—์„œ ์ •์˜๋œ ํ”„๋ ˆ์ž„์ด ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, HTTP/2์™€ HTTP/3 ๊ตฌํ˜„ ๊ฐ„์˜ ์ด์‹์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํ•ด๋‹น ํ”„๋ ˆ์ž„ ID๊ฐ€ ์˜ˆ์•ฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์–‘์ชฝ ๋งคํ•‘์— ๋ชจ๋‘ ๋“ฑ์žฅํ•˜๋Š” ํ”„๋ ˆ์ž„ ์œ ํ˜•์ด๋ผ๋„ ์˜๋ฏธ๊ฐ€ ์™„์ „ํžˆ ๋™์ผํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

๋งŽ์€ ์ฐจ์ด์ ์€ HTTP/2๊ฐ€ ๋ชจ๋“  ์ŠคํŠธ๋ฆผ์— ๊ฑธ์นœ ํ”„๋ ˆ์ž„ ๊ฐ„์˜ ์ ˆ๋Œ€์  ์ˆœ์„œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐ˜๋ฉด QUIC์€ ๊ฐ ์ŠคํŠธ๋ฆผ์—์„œ๋งŒ ์ด ๋ณด์žฅ์„ ์ œ๊ณตํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ”„๋ ˆ์ž„ ์œ ํ˜•์ด ๋‹ค๋ฅธ ์ŠคํŠธ๋ฆผ์˜ ํ”„๋ ˆ์ž„๋“ค์ด ์ „์†ก๋œ ์ˆœ์„œ๋Œ€๋กœ ์ˆ˜์‹ ๋  ๊ฒƒ์ด๋ผ๋Š” ๊ฐ€์ •์„ ํ•  ๊ฒฝ์šฐ, HTTP/3์—์„œ๋Š” ๊ทธ๋Ÿฌํ•œ ๊ฐ€์ •์ด ๊นจ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜์—๋Š” ๊ธฐ๋Šฅ ์ ์‘์˜ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์™€ HTTP/2 ํ™•์žฅ์„ HTTP/3๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ™•์žฅ ํ”„๋ ˆ์ž„ ๊ตฌํ˜„์ž์— ๋Œ€ํ•œ ์ผ๋ฐ˜ ์ง€์นจ์ด ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

A.2.1. ์šฐ์„ ์ˆœ์œ„ ์ฐจ์ด

HTTP/2๋Š” PRIORITY ํ”„๋ ˆ์ž„ ๋ฐ(์„ ํƒ์ ์œผ๋กœ) HEADERS ํ”„๋ ˆ์ž„์—์„œ ์šฐ์„ ์ˆœ์œ„ ํ• ๋‹น์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. HTTP/3๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์‹ ํ˜ธํ•˜๋Š” ์ˆ˜๋‹จ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ช…์‹œ์  ์šฐ์„ ์ˆœ์œ„ ์‹ ํ˜ธ๊ฐ€ ์—†๋‹ค๊ณ  ํ•ด์„œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์„ฑ๋Šฅ ๋‹ฌ์„ฑ์— ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

A.2.2. ํ•„๋“œ ์••์ถ• ์ฐจ์ด

HPACK์€ ์ˆœ์„œ๋Œ€๋กœ ์ „๋‹ฌ๋œ๋‹ค๋Š” ๊ฐ€์ • ํ•˜์— ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ธ์ฝ”๋”ฉ๋œ ํ•„๋“œ ์„น์…˜์˜ ์‹œํ€€์Šค๋Š” ์ธ์ฝ”๋”ฉ๋œ ์ˆœ์„œ๋Œ€๋กœ ๋„์ฐฉ(๋ฐ ๋””์ฝ”๋“œ)ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋™์  ํ…Œ์ด๋ธ”์˜ ์ƒํƒœ๊ฐ€ ์–‘ ๋์ ์—์„œ ๋™๊ธฐํ™”๋œ ์ƒํƒœ๋กœ ์œ ์ง€๋˜๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ์ „์ฒด ์ˆœ์„œ ๋ณด์žฅ์ด QUIC์— ์˜ํ•ด ์ œ๊ณต๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, HTTP/3๋Š” HPACK์˜ ์ˆ˜์ •๋œ ๋ฒ„์ „์ธ QPACK์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. QPACK์€ ๋™์  ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ๋ชจ๋“  ์ˆ˜์ •์„ ๋‹จ์ผ ๋‹จ๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ์—์„œ ์ˆ˜ํ–‰ํ•˜์—ฌ ์—…๋ฐ์ดํŠธ์˜ ์ „์ฒด ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฝ”๋”ฉ๋œ ํ•„๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” ๋ชจ๋“  ํ”„๋ ˆ์ž„์€ ํ…Œ์ด๋ธ” ์ƒํƒœ๋ฅผ ์ฐธ์กฐ๋งŒ ํ•  ๋ฟ ์ด๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

[QPACK]์—์„œ ์ถ”๊ฐ€ ์„ธ๋ถ€์‚ฌํ•ญ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

A.2.3. ํ๋ฆ„ ์ œ์–ด ์ฐจ์ด

HTTP/2๋Š” ์ŠคํŠธ๋ฆผ ํ๋ฆ„ ์ œ์–ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  HTTP/2 ํ”„๋ ˆ์ž„์ด ์ŠคํŠธ๋ฆผ์—์„œ ์ „๋‹ฌ๋˜์ง€๋งŒ ์˜ค์ง DATA ํ”„๋ ˆ์ž„ ํŽ˜์ด๋กœ๋“œ๋งŒ ํ๋ฆ„ ์ œ์–ด์˜ ๋Œ€์ƒ์ž…๋‹ˆ๋‹ค. QUIC์€ ์ŠคํŠธ๋ฆผ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ํ๋ฆ„ ์ œ์–ด๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ ์ด ๋ฌธ์„œ์—์„œ ์ •์˜๋œ ๋ชจ๋“  HTTP/3 ํ”„๋ ˆ์ž„ ์œ ํ˜•์€ ์ŠคํŠธ๋ฆผ์—์„œ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“  ํ”„๋ ˆ์ž„ ํ—ค๋”์™€ ํŽ˜์ด๋กœ๋“œ๊ฐ€ ํ๋ฆ„ ์ œ์–ด์˜ ๋Œ€์ƒ์ž…๋‹ˆ๋‹ค.

A.2.4. ์ƒˆ ํ”„๋ ˆ์ž„ ์œ ํ˜• ์ •์˜์— ๋Œ€ํ•œ ์ง€์นจ

HTTP/3์˜ ํ”„๋ ˆ์ž„ ์œ ํ˜• ์ •์˜๋Š” ์ข…์ข… QUIC ๋ณ€์ˆ˜ ๊ธธ์ด ์ •์ˆ˜ ์ธ์ฝ”๋”ฉ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ์ŠคํŠธ๋ฆผ ID๋Š” ์ด ์ธ์ฝ”๋”ฉ์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ด๋Š” HTTP/2์—์„œ ์‚ฌ์šฉํ•œ ์ธ์ฝ”๋”ฉ๋ณด๋‹ค ๋” ๋„“์€ ๋ฒ”์œ„์˜ ๊ฐ’์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ HTTP/3 ํ”„๋ ˆ์ž„์€ ์ŠคํŠธ๋ฆผ ID ์ด์™ธ์˜ ์‹๋ณ„์ž(์˜ˆ: push ID)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ™•์žฅ ํ”„๋ ˆ์ž„ ์œ ํ˜•์˜ ์ธ์ฝ”๋”ฉ์ด ์ŠคํŠธ๋ฆผ ID๋ฅผ ํฌํ•จํ•˜๋ฉด ์žฌ์ •์˜๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Flags ํ•„๋“œ๊ฐ€ ์ผ๋ฐ˜ HTTP/3 ํ”„๋ ˆ์ž„์— ์—†์œผ๋ฏ€๋กœ, ํ”Œ๋ž˜๊ทธ์— ์˜์กดํ•˜๋Š” ํ”„๋ ˆ์ž„์€ ํŽ˜์ด๋กœ๋“œ์˜ ์ผ๋ถ€๋กœ์„œ ํ”Œ๋ž˜๊ทธ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ์ œ์™ธํ•˜๋ฉด, HTTP/2์˜ ํ”„๋ ˆ์ž„ ์œ ํ˜• ํ™•์žฅ์€ ์ผ๋ฐ˜์ ์œผ๋กœ HTTP/2์˜ ์ŠคํŠธ๋ฆผ 0์„ HTTP/3์˜ control stream๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์ด์‹ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. HTTP/3 ํ™•์žฅ์€ ์ˆœ์„œ์— ์˜์กดํ•˜์ง€ ์•Š๊ฒ ์ง€๋งŒ, ์ˆœ์„œ๊ฐ€ ์žˆ์–ด๋„ ํ•ด๋ฅผ ์ž…์ง€๋Š” ์•Š์œผ๋ฉฐ ๋ณดํ†ต HTTP/2๋กœ ์ด์‹ ๊ฐ€๋Šฅํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค.

A.2.5. HTTP/2์™€ HTTP/3 ํ”„๋ ˆ์ž„ ์œ ํ˜• ๋น„๊ต

DATA (0x00)
:
HTTP/3 ํ”„๋ ˆ์ž„์—์„œ๋Š” ํŒจ๋”ฉ์ด ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„น์…˜ 7.2.1 ์ฐธ์กฐ.
HEADERS (0x01)
:
HEADERS์˜ PRIORITY ์˜์—ญ์€ HTTP/3 ํ”„๋ ˆ์ž„์—์„œ ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŒจ๋”ฉ๋„ ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„น์…˜ 7.2.2 ์ฐธ์กฐ.
PRIORITY (0x02):
๋ถ€๋ก A.2.1์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ, HTTP/3๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์‹ ํ˜ธํ•˜๋Š” ์ˆ˜๋‹จ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
RST_STREAM (0x03):
HTTP/3์—๋Š” RST_STREAM ํ”„๋ ˆ์ž„์ด ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์ด๋Š” QUIC์ด ์ŠคํŠธ๋ฆผ ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋™์ผํ•œ ์ฝ”๋“œ ํฌ์ธํŠธ๋Š” CANCEL_PUSH ํ”„๋ ˆ์ž„์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค(์„น์…˜ 7.2.3 ์ฐธ์กฐ).
SETTINGS (0x04)
:
SETTINGS ํ”„๋ ˆ์ž„์€ ์—ฐ๊ฒฐ์˜ ์‹œ์ž‘ ์‹œ์—๋งŒ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ์„น์…˜ 7.2.4 ๋ฐ ๋ถ€๋ก A.3 ์ฐธ์กฐ.
PUSH_PROMISE (0x05)
:
PUSH_PROMISE ํ”„๋ ˆ์ž„์€ ์ŠคํŠธ๋ฆผ์„ ์ฐธ์กฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  push stream ์ด PUSH_PROMISE ํ”„๋ ˆ์ž„์„ push ID๋กœ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. ์„น์…˜ 7.2.5 ์ฐธ์กฐ.
PING (0x06):
QUIC์ด ๋™๋“ฑํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ HTTP/3์—๋Š” PING ํ”„๋ ˆ์ž„์ด ์—†์Šต๋‹ˆ๋‹ค.
GOAWAY (0x07)
:
GOAWAY๋Š” ์˜ค๋ฅ˜ ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธโ†’์„œ๋ฒ„ ๋ฐฉํ–ฅ์—์„œ๋Š” ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘ํ•œ ์ŠคํŠธ๋ฆผ ID ๋Œ€์‹  push ID๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์„น์…˜ 7.2.6 ์ฐธ์กฐ.
WINDOW_UPDATE (0x08):
QUIC์ด ํ๋ฆ„ ์ œ์–ด๋ฅผ ์ œ๊ณตํ•˜๋ฏ€๋กœ HTTP/3์—๋Š” WINDOW_UPDATE ํ”„๋ ˆ์ž„์ด ์—†์Šต๋‹ˆ๋‹ค.
CONTINUATION (0x09):
HTTP/3์—๋Š” CONTINUATION ํ”„๋ ˆ์ž„์ด ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  HTTP/2๋ณด๋‹ค ๋” ํฐ HEADERS / PUSH_PROMISE ํ”„๋ ˆ์ž„์ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.

HTTP/2 ํ™•์žฅ์—์„œ ์ •์˜๋œ ํ”„๋ ˆ์ž„ ์œ ํ˜•์€ ์—ฌ์ „ํžˆ ์ ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด HTTP/3์šฉ์œผ๋กœ ๋ณ„๋„ ๋“ฑ๋กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. [HTTP/2]์—์„œ ์ •์˜๋œ ํ”„๋ ˆ์ž„ ID๋Š” ๋‹จ์ˆœ์„ฑ์„ ์œ„ํ•ด ์˜ˆ์•ฝ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. HTTP/3์˜ ํ”„๋ ˆ์ž„ ์œ ํ˜• ๊ณต๊ฐ„์€ ํ›จ์”ฌ ํฌ๊ธฐ(62๋น„ํŠธ ๋Œ€ 8๋น„ํŠธ)์ด๋ฏ€๋กœ ๋งŽ์€ HTTP/3 ํ”„๋ ˆ์ž„ ์œ ํ˜•์ด HTTP/2์˜ ๋Œ€์‘ ์ฝ”๋“œ ํฌ์ธํŠธ๋ฅผ ๊ฐ€์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„น์…˜ 11.2.1 ์ฐธ์กฐ.

A.3. HTTP/2 SETTINGS ๋งค๊ฐœ๋ณ€์ˆ˜

HTTP/2์™€์˜ ์ค‘์š”ํ•œ ์ฐจ์ด์  ์ค‘ ํ•˜๋‚˜๋Š” ์„ค์ •์ด control stream์˜ ์ฒซ ๋ฒˆ์งธ ํ”„๋ ˆ์ž„์œผ๋กœ์„œ ํ•œ ๋ฒˆ ์ „์†ก๋˜๊ณ  ์ดํ›„์—๋Š” ๋ณ€๊ฒฝ๋  ์ˆ˜ ์—†๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋ณ€๊ฒฝ ๋™๊ธฐํ™”์— ๊ด€ํ•œ ๋งŽ์€ ๋ชจ์„œ๋ฆฌ ์ผ€์ด์Šค๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

HTTP/2๊ฐ€ SETTINGS ํ”„๋ ˆ์ž„์„ ํ†ตํ•ด ์ง€์ •ํ•˜๋Š” ์ผ๋ถ€ ์ „์†ก ๊ณ„์ธต ์˜ต์…˜์€ HTTP/3์—์„œ๋Š” QUIC ์ „์†ก ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค. HTTP/3์— ๋‚จ๊ฒจ์ง„ HTTP ์ˆ˜์ค€์˜ ์„ค์ •์€ HTTP/2์™€ ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ–์Šต๋‹ˆ๋‹ค. ๋Œ€์ฒด๋œ ์„ค์ •์€ ์˜ˆ์•ฝ๋˜๋ฉฐ, ์ด๋“ค์˜ ์ˆ˜์‹ ์€ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. ๋ณด์กด๋œ ๊ฐ’๊ณผ ์˜ˆ์•ฝ๋œ ๊ฐ’์— ๋Œ€ํ•œ ๋…ผ์˜๋Š” ์„น์…˜ 7.2.4.1์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์•„๋ž˜๋Š” ๊ฐ HTTP/2 SETTINGS ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์–ด๋–ป๊ฒŒ ๋งคํ•‘๋˜๋Š”์ง€์˜ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค:

SETTINGS_HEADER_TABLE_SIZE (0x01):
[QPACK] ์ฐธ์กฐ.
SETTINGS_ENABLE_PUSH (0x02):
์ด๋Š” ๋” ์„ธ๋ถ„ํ™”๋œ ์„œ๋ฒ„ ํ‘ธ์‹œ ์ œ์–ด๋ฅผ ์ œ๊ณตํ•˜๋Š” MAX_PUSH_ID ํ”„๋ ˆ์ž„์œผ๋กœ ๋Œ€์ฒด๋˜์—ˆ์Šต๋‹ˆ๋‹ค. HTTP/3 SETTINGS ํ”„๋ ˆ์ž„์—์„œ ์‹๋ณ„์ž 0x02(SETTINGS_ENABLE_PUSH์— ํ•ด๋‹น)๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์€ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.
SETTINGS_MAX_CONCURRENT_STREAMS (0x03):
์ตœ๋Œ€ ์—ด๋ฆฐ ์ŠคํŠธ๋ฆผ ID๋Š” QUIC์ด ํ๋ฆ„ ์ œ์–ด ๋กœ์ง์˜ ์ผ๋ถ€๋กœ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. HTTP/3 SETTINGS ํ”„๋ ˆ์ž„์—์„œ ์‹๋ณ„์ž 0x03(SETTINGS_MAX_CONCURRENT_STREAMS์— ํ•ด๋‹น)์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์€ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.
SETTINGS_INITIAL_WINDOW_SIZE (0x04):
QUIC์€ ์ดˆ๊ธฐ ์ „์†ก ํ•ธ๋“œ์…ฐ์ดํฌ์—์„œ ์ŠคํŠธ๋ฆผ ๋ฐ ์—ฐ๊ฒฐ ํ๋ฆ„ ์ œ์–ด ์ฐฝ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•  ๊ฒƒ์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. HTTP/3 SETTINGS ํ”„๋ ˆ์ž„์—์„œ ์‹๋ณ„์ž 0x04(SETTINGS_INITIAL_WINDOW_SIZE์— ํ•ด๋‹น)๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์€ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.
SETTINGS_MAX_FRAME_SIZE (0x05):
์ด ์„ค์ •์€ HTTP/3์— ์ƒ์‘ํ•˜๋Š” ํ•ญ๋ชฉ์ด ์—†์Šต๋‹ˆ๋‹ค. HTTP/3 SETTINGS ํ”„๋ ˆ์ž„์—์„œ ์‹๋ณ„์ž 0x05(SETTINGS_MAX_FRAME_SIZE์— ํ•ด๋‹น)๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์€ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.
SETTINGS_MAX_HEADER_LIST_SIZE (0x06):
์ด ์„ค์ • ์‹๋ณ„์ž๋Š” SETTINGS_MAX_FIELD_SECTION_SIZE๋กœ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

HTTP/3์—์„œ๋Š” ์„ค์ • ๊ฐ’์ด ๊ฐ€๋ณ€ ๊ธธ์ด ์ •์ˆ˜(6, 14, 30 ๋˜๋Š” 62๋น„ํŠธ)๋กœ ์ธ์ฝ”๋”ฉ๋˜๋ฉฐ, HTTP/2์˜ ๊ณ ์ • 32๋น„ํŠธ ํ•„๋“œ๋ณด๋‹ค ์ข…์ข… ๋” ์งง์€ ์ธ์ฝ”๋”ฉ์„ ์ƒ์„ฑํ•˜์ง€๋งŒ ์ „์ฒด 32๋น„ํŠธ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋” ๊ธด ์ธ์ฝ”๋”ฉ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. HTTP/2์—์„œ ์ด์‹๋œ ์„ค์ •์€ ๋” ํšจ์œจ์ ์ธ ์ธ์ฝ”๋”ฉ์„ ์œ„ํ•ด ๊ฐ’์„ 30๋น„ํŠธ๋กœ ์ œํ•œํ•˜๊ฑฐ๋‚˜ 30๋น„ํŠธ๋ณด๋‹ค ๋งŽ์€ ๋น„ํŠธ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ 62๋น„ํŠธ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜๋„๋ก ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ค์ •์€ HTTP/2์™€ HTTP/3์— ๋Œ€ํ•ด ๋ณ„๋„๋กœ ์ •์˜๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. [HTTP/2]์—์„œ ์ •์˜๋œ ์„ค์ • ์‹๋ณ„์ž๋Š” ๋‹จ์ˆœ์„ฑ์„ ์œ„ํ•ด ์˜ˆ์•ฝ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. HTTP/3์˜ ์„ค์ • ์‹๋ณ„์ž ๊ณต๊ฐ„์€ ํ›จ์”ฌ ๋„“์œผ๋ฏ€๋กœ(62๋น„ํŠธ ๋Œ€ 16๋น„ํŠธ) ๋งŽ์€ HTTP/3 ์„ค์ •์€ HTTP/2์— ํ•ด๋‹นํ•˜๋Š” ์ฝ”๋“œ ํฌ์ธํŠธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์„น์…˜ 11.2.2 ์ฐธ์กฐ.

QUIC ์ŠคํŠธ๋ฆผ์ด ๋„์ฐฉ ์ˆœ์„œ๊ฐ€ ๋’ค๋ฐ”๋€” ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์—”๋“œํฌ์ธํŠธ๋Š” ํ”ผ์–ด์˜ ์„ค์ •์ด ๋„์ฐฉํ•  ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ์ŠคํŠธ๋ฆผ์— ์‘๋‹ตํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์„น์…˜ 7.2.4.2 ์ฐธ์กฐ.

A.4. HTTP/2 ์˜ค๋ฅ˜ ์ฝ”๋“œ

QUIC์€ HTTP/2๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๊ฐœ๋…์˜ "์ŠคํŠธ๋ฆผ" ๋ฐ "์—ฐ๊ฒฐ" ์˜ค๋ฅ˜๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ๋‹ค๋งŒ HTTP/2์™€ HTTP/3์˜ ์ฐจ์ด๋กœ ์ธํ•ด ์˜ค๋ฅ˜ ์ฝ”๋“œ๋Š” ๋ฒ„์ „ ๊ฐ„์— ์ง์ ‘ ์ด์‹ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Section 7์— ์ •์˜๋œ HTTP/2 ์˜ค๋ฅ˜ ์ฝ”๋“œ๋Š” ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด HTTP/3 ์˜ค๋ฅ˜ ์ฝ”๋“œ๋กœ ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค:

NO_ERROR (0x00):
PROTOCOL_ERROR (0x01):
์ด๋Š” ๋” ๊ตฌ์ฒด์ ์ธ ์˜ค๋ฅ˜ ์ฝ”๋“œ๊ฐ€ ์ •์˜๋œ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ  H3_GENERAL_PROTOCOL_ERROR๋กœ ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ๋กœ๋Š” H3_FRAME_UNEXPECTED, H3_MESSAGE_ERROR, ๋ฐ H3_CLOSED_CRITICAL_STREAM ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค(๋ชจ๋‘ ์„น์…˜ 8.1์— ์ •์˜๋จ).
INTERNAL_ERROR (0x02):
FLOW_CONTROL_ERROR (0x03):
์ ์šฉ๋˜์ง€ ์•Š์Œ โ€” QUIC์ด ํ๋ฆ„ ์ œ์–ด๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
SETTINGS_TIMEOUT (0x04):
์ ์šฉ๋˜์ง€ ์•Š์Œ โ€” SETTINGS์— ๋Œ€ํ•œ ํ™•์ธ(acknowledgment)์ด ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
STREAM_CLOSED (0x05):
์ ์šฉ๋˜์ง€ ์•Š์Œ โ€” QUIC์ด ์ŠคํŠธ๋ฆผ ๊ด€๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
FRAME_SIZE_ERROR (0x06):
REFUSED_STREAM (0x07):
์š”์ฒญ์ด ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์•˜์Œ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด H3_REQUEST_REJECTED๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(๊ด€๋ จ ๋‚ด์šฉ์€ ์„น์…˜ 8.1 ์ฐธ์กฐ). ๊ทธ ์™ธ์—๋Š” QUIC์ด ์ŠคํŠธ๋ฆผ ๊ด€๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
CANCEL (0x08):
COMPRESSION_ERROR (0x09):
์—ฌ๋Ÿฌ ์˜ค๋ฅ˜ ์ฝ”๋“œ๊ฐ€ [QPACK]์— ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
CONNECT_ERROR (0x0a):
ENHANCE_YOUR_CALM (0x0b):
INADEQUATE_SECURITY (0x0c):
์ ์šฉ๋˜์ง€ ์•Š์Œ โ€” QUIC์€ ๋ชจ๋“  ์—ฐ๊ฒฐ์—์„œ ์ถฉ๋ถ„ํ•œ ๋ณด์•ˆ์„ ์ œ๊ณตํ•œ๋‹ค๊ณ  ๊ฐ€์ •๋ฉ๋‹ˆ๋‹ค.
HTTP_1_1_REQUIRED (0x0d):

์˜ค๋ฅ˜ ์ฝ”๋“œ๋Š” HTTP/2์™€ HTTP/3์— ๋Œ€ํ•ด ๋ณ„๋„๋กœ ์ •์˜๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„น์…˜ 11.2.3 ์ฐธ์กฐ.

A.4.1. HTTP/2์™€ HTTP/3 ์˜ค๋ฅ˜ ๊ฐ„ ๋งคํ•‘

HTTP/2์™€ HTTP/3 ๊ฐ„ ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ค‘๊ฐœ์ž๋Š” ์ƒ๋ฅ˜์—์„œ ์˜ค๋ฅ˜ ์กฐ๊ฑด์„ ๋งŒ๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์šด์ŠคํŠธ๋ฆผ์— ์˜ค๋ฅ˜ ๋ฐœ์ƒ์„ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์€ ์œ ์šฉํ•˜์ง€๋งŒ, ์˜ค๋ฅ˜ ์ฝ”๋“œ๋Š” ๋Œ€๊ฐœ ์—ฐ๊ฒฐ-๋กœ์ปฌ ๋ฌธ์ œ๋ฅผ ๋ฐ˜์˜ํ•˜๋ฏ€๋กœ ์ „ํŒŒํ•˜๋Š” ๊ฒƒ์ด ์ ์ ˆํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ค‘๊ฐœ์ž๊ฐ€ ์ƒ๋ฅ˜ ์˜ค๋ฆฌ์ง„์—์„œ ์˜ค๋ฅ˜๋ฅผ ๋งŒ๋‚œ ๊ฒฝ์šฐ 502 (Bad Gateway)์™€ ๊ฐ™์€ HTTP ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ์ „์†กํ•˜์—ฌ ์˜ค๋ฅ˜ ๋ฐœ์ƒ์„ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ๋„“์€ ๋ฒ”์œ„์˜ ์˜ค๋ฅ˜์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋ฅ˜๋ฅผ ์ˆ˜์‹  ์ธก์— ๋งคํ•‘ํ•˜์—ฌ ์ „ํŒŒํ•˜๋Š” ๊ฒƒ์ด ์œ ์ตํ•œ ๋“œ๋ฌธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ค‘๊ฐœ์ž๊ฐ€ ์ƒ๋ฅ˜์—์„œ HTTP/2์˜ REFUSED_STREAM ์ŠคํŠธ๋ฆผ ์˜ค๋ฅ˜๋ฅผ ๋ฐ›์œผ๋ฉด ์š”์ฒญ์ด ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ์žฌ์‹œ๋„ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ช…ํ™•ํ•œ ์‹ ํ˜ธ๋ฅผ ์–ป๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด ์˜ค๋ฅ˜ ์ƒํƒœ๋ฅผ HTTP/3์˜ ์ŠคํŠธ๋ฆผ ์˜ค๋ฅ˜์ธ H3_REQUEST_REJECTED๋กœ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „ํŒŒํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ ์ ˆํ•œ ์กฐ์น˜๋ฅผ ์ทจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์—์„œ๋Š” ์ค‘๊ฐœ์ž๊ฐ€ H3_REQUEST_CANCELLED๋กœ ์ŠคํŠธ๋ฆผ์„ ์ข…๋ฃŒํ•˜์—ฌ ํ‘œ์‹œ๋œ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ์ทจ์†Œ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด ์œ ์ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค; ์„น์…˜ 4.1.1 ์ฐธ์กฐ.

์˜ค๋ฅ˜ ๊ฐ„ ๋ณ€ํ™˜์€ ๋…ผ๋ฆฌ์  ๋งคํ•‘์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜ ์ฝ”๋“œ๋Š” ๋Œ€์ƒ ๋ฒ„์ „์—์„œ ๋ถ€์ ์ ˆํ•˜๊ฑฐ๋‚˜ ์•Œ ์ˆ˜ ์—†๋Š” ์˜ค๋ฅ˜ ์ฝ”๋“œ ์‚ฌ์šฉ์œผ๋กœ ์ด์–ด์ง€๋Š” ์šฐ๋ฐœ์  ๋ณ€ํ™˜์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ฒน์น˜์ง€ ์•Š๋Š” ๊ณต๊ฐ„์— ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ค‘๊ฐœ์ž๋Š” ์ŠคํŠธ๋ฆผ ์˜ค๋ฅ˜๋ฅผ ์—ฐ๊ฒฐ ์˜ค๋ฅ˜๋กœ ์Šน๊ฒฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด๋Š” ์ผ์‹œ์ ์ด๊ฑฐ๋‚˜ ๊ฐ„ํ—์ ์ธ ์˜ค๋ฅ˜์— ๋Œ€ํ•ด HTTP/3 ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ ๋น„์šฉ์„ ์ˆ˜๋ฐ˜ํ•  ์ˆ˜ ์žˆ์Œ์„ ์ธ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


๊ฐ์‚ฌ์˜ ๊ธ€

Robbie Shade์™€ Mike Warres๋Š” ์ด ๋ฌธ์„œ์˜ ์ „์‹ ์ธ draft-shade-quic-http2-mapping์˜ ์ €์ž์˜€์Šต๋‹ˆ๋‹ค.

IETF QUIC ์ž‘์—… ๊ทธ๋ฃน์€ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค๋กœ๋ถ€ํ„ฐ ์—„์ฒญ๋‚œ ์ง€์›์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ์ค‘์—์„œ๋„ ๋‹ค์Œ ์‚ฌ๋žŒ๋“ค์€ ์ด ๋ฌธ์„œ์— ์ค‘์š”ํ•œ ๊ธฐ์—ฌ๋ฅผ ํ–ˆ์Šต๋‹ˆ๋‹ค:

  • Bence Beky

  • Daan De Meyer

  • Martin Duke

  • Roy Fielding

  • Alan Frindell

  • Alessandro Ghedini

  • Nick Harper

  • Ryan Hamilton

  • Christian Huitema

  • Subodh Iyengar

  • Robin Marx

  • Patrick McManus

  • Luca Niccolini

  • ๅฅฅ ไธ€็ฉ‚ (Kazuho Oku)

  • Lucas Pardue

  • Roberto Peon

  • Julian Reschke

  • Eric Rescorla

  • Martin Seemann

  • Ben Schwartz

  • Ian Swett

  • Willy Taureau

  • Martin Thomson

  • Dmitri Tikhonov

  • Tatsuhiro Tsujikawa

Mike Bishop์˜ ์ผ๋ถ€ ๊ธฐ์—ฌ๋Š” ๊ทธ๊ฐ€ Microsoft์— ์žฌ์ง ์ค‘์ผ ๋•Œ Microsoft์˜ ์ง€์›์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.


์ƒ‰์ธ

C D G H M P R S


์ €์ž ์—ฐ๋ฝ์ฒ˜

Mike Bishop (editor)
Akamai
EMail: mbishop@evequefou.be