์ œXNUMX์ž์˜ ์š”์ฒญ์— ๊ฐœ์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋ŸฐํŠธ์—”๋“œ-๋ฐฑ์—”๋“œ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ๊ณต๊ฒฉ

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

๋ฌธ์ œ์˜ ํ•ต์‹ฌ์€ ํ”„๋ŸฐํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ๊ฐ€ ์ข…์ข… HTTP ํ”„๋กœํ† ์ฝœ์— ๋Œ€ํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ์ˆ˜์ค€์˜ ์ง€์›์„ ์ œ๊ณตํ•˜์ง€๋งŒ ๋™์‹œ์— ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๊ณตํ†ต ์ฑ„๋„๋กœ ์บก์Šํ™”ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์š”์ฒญ์„ ์ˆ˜์‹ ํ•˜๋Š” ํ”„๋ŸฐํŠธ์—”๋“œ์™€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฑ์—”๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜๋ช…์ด ๊ธด TCP ์—ฐ๊ฒฐ์ด ์„ค์ •๋˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์š”์ฒญ์ด HTTP ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ๋ถ„๋ฆฌ๋˜์–ด ์ฒด์ธ์„ ๋”ฐ๋ผ ์ฐจ๋ก€๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ์š”์ฒญ์„ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ—ค๋” "Content-Length"(์š”์ฒญ์— ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ์˜ ์ „์ฒด ํฌ๊ธฐ ๊ฒฐ์ •) ๋ฐ "์ „์†ก ์ธ์ฝ”๋”ฉ: ์ฒญํฌ"("{size}\r\n{block}\r\n{size}\r\n{block}\r\n0" ํ˜•์‹์œผ๋กœ ๋‹ค์–‘ํ•œ ํฌ๊ธฐ์˜ ๋ธ”๋ก์„ ์ง€์ •ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ€๋ถ„์ ์œผ๋กœ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).

ํ”„๋ŸฐํŠธ์—”๋“œ๊ฐ€ "Content-Length"๋งŒ ์ง€์›ํ•˜์ง€๋งŒ "Transfer-Encoding: Chunked"(์˜ˆ: Akamai CDN์—์„œ ์ˆ˜ํ–‰ํ•จ)๋ฅผ ๋ฌด์‹œํ•˜๊ฑฐ๋‚˜ ๊ทธ ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. Transfer-Encoding: ์ฒญํฌ๊ฐ€ ์–‘์ชฝ์—์„œ ์ง€์›๋˜๋Š” ๊ฒฝ์šฐ HTTP ํ—ค๋” ํŒŒ์„œ์˜ ๊ตฌํ˜„ ๊ธฐ๋Šฅ์„ ๊ณต๊ฒฉ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ", "์ „์†ก ์ธ์ฝ”๋”ฉ":[ํƒญ]์ฒญํฌ", "X: X[\n]์ „์†ก ์ธ์ฝ”๋”ฉ: ์ฒญํฌ", "์ „์†ก ์ธ์ฝ”๋”ฉ[\n]: ์ฒญํฌ" ๋˜๋Š” "์ „์†ก ์ธ์ฝ”๋”ฉ: ์ฒญํฌ" ๋ฐ ๋ฐฑ์—”๋“œ๊ฐ€ ์ด๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.)

์ด ๊ฒฝ์šฐ ๊ณต๊ฒฉ์ž๋Š” "Content-Length" ๋ฐ "Transfer-Encoding: ์ฒญํฌ๋œ" ํ—ค๋”๋ฅผ ๋ชจ๋‘ ํฌํ•จํ•˜๋Š” ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์ง€๋งŒ "Content-Length"์˜ ํฌ๊ธฐ๋Š” ์ฒญํฌ๋œ ์ฒด์ธ์˜ ํฌ๊ธฐ์™€ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ๊ฐ’๋ณด๋‹ค ์ž‘์Šต๋‹ˆ๋‹ค. ํ”„๋ŸฐํŠธ์—”๋“œ๊ฐ€ "Content-Length"์— ๋”ฐ๋ผ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ „๋‹ฌํ•˜๊ณ  ๋ฐฑ์—”๋“œ๊ฐ€ "์ „์†ก-์ธ์ฝ”๋”ฉ: ์ฒญํฌ"๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ธ”๋ก์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒฝ์šฐ "์ „์†ก-์ธ์ฝ”๋”ฉ: ์ฒญํฌ"๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋ฐ์ดํ„ฐ์˜ ๋์€ ๋” ์ผ์ฐ ๊ฒฐ์ •๋˜๊ณ  ์š”์ฒญ์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์€ ๊ณต๊ฒฉ์ž๊ฐ€ ๋‹ค์Œ ์š”์ฒญ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ž๋Š” ๋‹ค์Œ์— ์ „์†ก๋˜๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์š”์ฒญ ์‹œ์ž‘ ๋ถ€๋ถ„์— ์ž„์˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒจ๋ถ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œXNUMX์ž์˜ ์š”์ฒญ์— ๊ฐœ์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋ŸฐํŠธ์—”๋“œ-๋ฐฑ์—”๋“œ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ๊ณต๊ฒฉ

์‚ฌ์šฉ๋œ ํ”„๋ŸฐํŠธ์—”๋“œ-๋ฐฑ์—”๋“œ ์กฐํ•ฉ์˜ ๋ฌธ์ œ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด ํ”„๋ŸฐํŠธ์—”๋“œ๋ฅผ ํ†ตํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

POST /HTTP/1.1 ์ •๋ณด
ํ˜ธ์ŠคํŠธ: example.com
์ „์†ก ์ธ์ฝ”๋”ฉ: ์ฒญํฌ
์ฝ˜ํ…์ธ  ๊ธธ์ด : 4

1
Z
Q

๋ฐฑ์—”๋“œ๊ฐ€ ์š”์ฒญ์„ ์ฆ‰์‹œ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๊ณ  ์ฒญํฌ ๋ฐ์ดํ„ฐ์˜ ์ตœ์ข… XNUMX ๊ฒฝ๊ณ„ ๋ธ”๋ก์ด ๋„์ฐฉํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ข€ ๋” ์™„๋ฒฝํ•œ ์ ๊ฒ€์„ ์œ„ํ•ด ์ค€๋น„๋œ ํ”„๋ŸฐํŠธ์—”๋“œ์—์„œ โ€œTransfer-Encoding: ์ฒญํฌโ€ ํ—ค๋”๋ฅผ ์ˆจ๊ธฐ๋Š” ๊ฐ€๋Šฅํ•œ ๋ฐฉ๋ฒ•๋„ ํ…Œ์ŠคํŠธํ•˜๋Š” ํŠน์ˆ˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ์ž…๋‹ˆ๋‹ค.

์‹ค์ œ ๊ณต๊ฒฉ ์ˆ˜ํ–‰์€ ๊ณต๊ฒฉ๋ฐ›๋Š” ์‚ฌ์ดํŠธ์˜ ๊ธฐ๋Šฅ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Trello ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ณต๊ฒฉํ•  ๋•Œ ์š”์ฒญ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค("PUT /1/members/1234... x=x&csrf์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ๋Œ€์ฒด). =1234&username=testzzz&bio=cakeโ€) ์ œXNUMX์ž ์‚ฌ์šฉ์ž์˜ ์›๋ž˜ ์š”์ฒญ๊ณผ ์—ฌ๊ธฐ์— ์ง€์ •๋œ ์ธ์ฆ ์ฟ ํ‚ค๊ฐ€ ํฌํ•จ๋œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. saas-app.com์— ๋Œ€ํ•œ ๊ณต๊ฒฉ์˜ ๊ฒฝ์šฐ ์š”์ฒญ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋Œ€์ฒดํ•˜์—ฌ ์‘๋‹ต์˜ JavaScript ์ฝ”๋“œ๋ฅผ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. redhat.com์— ๋Œ€ํ•œ ๊ณต๊ฒฉ์˜ ๊ฒฝ์šฐ ๋‚ด๋ถ€ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณต๊ฒฉ์ž์˜ ์›น ์‚ฌ์ดํŠธ("POST /search?dest=../assets/idx?redir=// ํ˜•์‹์˜ ์š”์ฒญ)๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ–ˆ์Šต๋‹ˆ๋‹ค.[์ด๋ฉ”์ผ ๋ณดํ˜ธ]/HTTP/1.1").

์ฝ˜ํ…์ธ  ์ „์†ก ๋„คํŠธ์›Œํฌ๋ฅผ ์œ„ํ•œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด "Host:" ํ—ค๋”๋ฅผ ๋Œ€์ฒดํ•˜์—ฌ ์š”์ฒญ๋œ ์‚ฌ์ดํŠธ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ณต๊ฒฉ์€ ์ฝ˜ํ…์ธ  ์บ์‹ฑ ์‹œ์Šคํ…œ์˜ ์ฝ˜ํ…์ธ ๋ฅผ ์†์ƒ์‹œํ‚ค๊ณ  ์บ์‹œ๋œ ๊ธฐ๋ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๋Š” ๋ฐ์—๋„ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์˜ ์ •์ ์€ PayPal์— ๋Œ€ํ•œ ๊ณต๊ฒฉ ์กฐ์ง์œผ๋กœ, ์ธ์ฆ ์ค‘์— ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๋‚ธ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ฐ€๋กœ์ฑŒ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค(iframe ์š”์ฒญ์€ paypal.com/us/gifts ํŽ˜์ด์ง€์˜ ์ปจํ…์ŠคํŠธ์—์„œ JavaScript๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. CSP(์ฝ˜ํ…์ธ  ๋ณด์•ˆ ์ •์ฑ…)๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ).

ํฅ๋ฏธ๋กญ๊ฒŒ๋„ 2005๋…„์—๋Š” ์ œ์•ˆ ์บ์‹ฑ ํ”„๋ก์‹œ(Tomcat, squid, mod_proxy)์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์Šคํ‘ธํ•‘ํ•˜๊ฑฐ๋‚˜ ํ•˜๋‚˜์˜ HTTP ์„ธ์…˜ ๋‚ด์—์„œ ์—ฌ๋Ÿฌ "GET" ๋˜๋Š” "POST" ์š”์ฒญ์„ ์ง€์ •ํ•˜์—ฌ ๋ฐฉํ™”๋ฒฝ ์ฐจ๋‹จ์„ ์šฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” ๋ณธ์งˆ์ ์œผ๋กœ ์œ ์‚ฌํ•œ ์š”์ฒญ ์Šคํ‘ธํ•‘ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€