Posts ๐Ÿ’ป HTTP #5: HTTP์˜ ์ง„ํ™”
Post
Cancel

๐Ÿ’ป HTTP #5: HTTP์˜ ์ง„ํ™”

HTTP์˜ ์ง„ํ™”

์›”๋“œ ์™€์ด๋“œ ์›น์˜ ๋ฐœ๋ช…

1990๋…„์— ํŒ€ ๋ฒ„๋„ˆ์Šค ๋ฆฌ์— ์˜ํ•ด ๋งŒ๋“ค์–ด์กŒ๋‹ค. TCP/IP ํ”„๋กœํ† ์ฝœ ์ƒ์—์„œ ๋งŒ๋“ค์–ด์ง„ ์›”๋“œ ์™€์ด๋“œ ์›น์€ HTML, HTTP, ์›”๋“œ ์™€์ด๋“œ ์›น์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๋ธŒ๋ผ์šฐ์ €, ๋ฌธ์„œ์— ์ ‘๊ทผํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” httpd์˜ ์ดˆ๊ธฐ ๋ฒ„์ „์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

HTTP/0.9: ์›-๋ผ์ธ ํ”„๋กœํ† ์ฝœ

HTTP ์ดˆ๊ธฐ ๋ฒ„์ „์€ ๋งค์šฐ ๋‹จ์ˆœํ–ˆ๋‹ค. GET์ด ์œ ์ผํ•œ ๋ฉ”์„œ๋“œ์˜€๊ณ , ์š”์ฒญ์€ ๋‹จ์ผ ๋ผ์ธ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์—ˆ๋‹ค. ์‘๋‹ต์€ ์˜ค๋กœ์ง€ ํŒŒ์ผ ๋‚ด์šฉ์œผ๋กœ ๊ตฌ์„ฑ๋˜์—ˆ๋‹ค. HTML ๋ฌธ์„œ๋งŒ์ด ์ „์†ก ๊ฐ€๋Šฅํ–ˆ๋‹ค(HTTP ํ—ค๋” ์—†์Œ)

1
GET /mypage.html
1
2
3
<HTML>
A very simple HTML page
</HTML>

HTTP/1.0

  • ์š”์ฒญ ์‹œ ๋ฒ„์ „ ์ •๋ณด ๊ธฐ์žฌ
  • ์‘๋‹ต ์‹œ ์ƒํƒœ ์ฝ”๋“œ ๊ธฐ์žฌ: ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์š”์ฒญํ•œ ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ๋Œ€์ฒ˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋จ
  • HTTP ํ—ค๋” ๋„์ž…
    • ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ „์†ก ํ—ˆ์šฉ
    • ํ”„๋กœํ† ์ฝœ์„ ์œ ์—ฐํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ฆ
    • Content-Type ํ—ค๋”: HTML ์™ธ ๋‹ค๋ฅธ ๋ฌธ์„œ ์ „์†ก ๊ฐ€๋Šฅ

HTTP/1.1: ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ

  • ์ปค๋„ฅ์…˜ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    • ํƒ์ƒ‰๋œ ๋‹จ์ผ ์›๋ณธ ๋ฌธ์„œ์— ์ž„๋ฒ ๋””๋“œ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ ์ปค๋„ฅ์…˜์„ ์žฌ์‚ฌ์šฉํ•˜์—ฌ ์‹œ๊ฐ„ ์ ˆ์•ฝ
  • ํŒŒ์ดํ”„๋ผ์ด๋‹ ์ถ”๊ฐ€
    • ์ฒซ๋ฒˆ์งธ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์ด ์™„์ „ํžˆ ์ „์†ก๋˜๊ธฐ ์ „์— ๋‘๋ฒˆ์žฌ ์š”์ฒญ ์ „์†ก์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ
  • ์ฒญํฌ๋œ ์‘๋‹ต ์ง€์›
  • ์บ์‹œ ์ œ์–ด ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋„์ž…
  • ์ปจํ…์ธ  ํ˜‘์ƒ ๋„์ž…(์–ธ์–ด, ์ธ์ฝ”๋”ฉ, ํƒ€์ž… ํฌํ•จ)
    • ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ๊ตํ™˜ํ•˜๋ ค๋Š” ์ ํ•ฉํ•œ ์ปจํ…์ธ ๋ฅผ ๋™์˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ
  • Host ํ—ค๋”: ๋™์ผ IP ์ฃผ์†Œ์— ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์„ ํ˜ธ์ŠคํŠธ ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์„œ๋ฒ„ colocation ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ

HTTP/1.1 ์ดํ›„ ํ™•์žฅ

15๋…„ ๋™์•ˆ ํ™•์žฅ์„ ๊ฑฐ๋“ญํ•ด์™”๋‹ค.

๋ณด์•ˆ ์ „์†ก์„ ์œ„ํ•œ HTTP ์‚ฌ์šฉ

์ด์— ๊ธฐ๋ณธ์ ์ธ TCP/IP ์Šคํƒ์„ ํ†ตํ•ด HTTP๋ฅผ ์ „์†กํ•˜๋Š” ๊ฒƒ์„ ๋„˜์–ด ๊ทธ ํ† ๋Œ€ ์œ„์— ์ถ”๊ฐ€์ ์ธ๋œ ์ „์†ก ๊ณ„์ธต์ธ SSL๊ฐ€ ์ž๋ฆฌ์žก๊ฒŒ ๋˜์—ˆ๋‹ค. SSL 2.0๊ณผ 3.0, 3.1์€ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„ ๊ตํ™˜๋œ ๋ฉ”์‹œ์ง€ ์ธ์ฆ์„ ์•”ํ˜ธํ™”ํ•˜๊ณ  ๋ณด์žฅํ•ด์„œ e-commerce ์›น ์‚ฌ์ดํŠธ์˜ ๋“ฑ์žฅ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ–ˆ๋‹ค. SSL์€ TLS๊ฐ€ ๋˜์—ˆ๊ณ , 1.0, 1.1, 1.2 ๋ฒ„์ „์ด ๋‚˜์™€ ์žˆ๋‹ค. ์•”ํ˜ธํ™”๋œ ์ „์†ก ๊ณ„์ธต์€ e-commerce ์™ธ์˜ ์ƒํ™ฉ์—๋„ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•˜๋‹ค. ๊ด‘๊ณ ์ฃผ, ๋ถˆํŠน์ • ๊ฐœ์ธ, ๋ฒ”์ฃ„์ž๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ธ ์ฒ™ ๊ฐ€์žฅํ•˜๊ฑฐ๋‚˜ ์ „์†ก๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •๋œ ๋ฐ์ดํ„ฐ๋กœ ๋Œ€์น˜์‹œํ‚ค๋ ค๊ณ  ๊ฐœ์ธ ์ •๋ณด๋ฅผ ๋นผ๋‚ด๋ ค ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ HTTP ์‚ฌ์šฉ

์ดˆ๊ธฐ HTTP๋Š” ์ฝ๊ธฐ ์ „์šฉ(GET)์ด์—ˆ์ง€๋งŒ, ํŒ€ ๋ฒ„๋„ˆ์Šค ๋ฆฌ๋Š” ์ด๋ฅผ ๋„˜์–ด ๋ฌธ์„œ๋ฅผ ์›๊ฒฉ์œผ๋กœ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ด๋™์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ถ„์‚ฐ๋œ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์ผ์ข…์œผ๋กœ ์›น์„ ์ƒ์ƒํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ 2000๋…„ ์ด์ „๊นŒ์ง€ ์›น ์˜์—ญ์—์„œ ์ด๋Ÿฌํ•œ ์‚ฌ์šฉ์€ ๋ถˆ๊ฐ€๋Šฅํ–ˆ๋‹ค. 2000๋…„์— REST API๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ธŒ๋ผ์šฐ์ €๋‚˜ ์„œ๋ฒ„์˜ ๊ฐฑ์‹  ์—†์ด ๋ฐ์ดํ„ฐ ํƒ์ƒ‰๊ณผ ์ˆ˜์ •์„ ํ—ˆ์šฉํ•˜๊ฒŒ ํ•˜์˜€๋‹ค. REST ๋ชจ๋ธ์€ ํ‘œ์ค€์ด ์žˆ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๊ฐ๊ฐ์˜ ์›น์‚ฌ์ดํŠธ๊ฐ€ ์ž์‹ ์˜ ๋น„ํ‘œ์ค€ RESTful API๋ฅผ ์ •์˜ํ•˜๊ณ  ๊ทธ์— ๋Œ€ํ•œ ์ „๊ถŒ์„ ๊ฐ€์ง„๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. 2005๋…„๋ถ€ํ„ฐ ์›น ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ API ์ง‘ํ•ฉ๋“ค์ด ๊ธ‰๊ฒฉํžˆ ๋Š˜์–ด๋‚˜๊ฒŒ ๋˜์—ˆ๊ณ , ์„œ๋ฒ„ ์ „์†ก ์ด๋ฒคํŠธ, ์›น ์†Œ์ผ“ ๊ฐ™์€ ๋ช‡๋ช‡์€ ํŠน์„ฑํ™”๋œ HTTP ํ—ค๋”๋กœ ํŠน์ •ํ•œ ๋ชฉ์ ์„ ์œ„ํ•ด HTTP ํ”„๋กœํ† ์ฝœ์— ํ™•์žฅ์„ ๋งŒ๋“ค์–ด๋ƒˆ๋‹ค.

REST(Representational State Transfer)๋Š” ์›”๋“œ ์™€์ด๋“œ ์›น๊ณผ ๊ฐ™์€ ๋ถ„์‚ฐ ํ•˜์ดํผ๋ฏธ๋””์–ด ์‹œ์Šคํ…œ์„ ์œ„ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์–ด์˜ ํ•œ ํ˜•์‹์ด๋‹ค. ํด๋ผ์ด์–ธํŠธ/์„œ๋ฒ„ ๊ตฌ์กฐ, Stateless, Cachable, Layered System, Code on demand, ์ธํ„ฐํŽ˜์ด์Šค ์ผ๊ด€์„ฑ์˜ 6๊ฐ€์ง€ ์ œํ•œ ์กฐ๊ฑด์ด ์ ์šฉ๋œ๋‹ค.

์„œ๋ฒ„ ์ „์†ก ์ด๋ฒคํŠธ: ์„œ๋ฒ„๊ฐ€ ๋ธŒ๋ผ์šฐ์ €๋กœ ์ด๋”ฐ๊ธˆ์”ฉ ๋ณด๋‚ด๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ‘ธ์‰ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ

์›น ์†Œ์ผ“: ๊ธฐ์กด HTTP ์ปค๋„ฅ์…˜์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ํ”„๋กœํ† ์ฝœ

์›น์˜ ๋ณด์•ˆ ๋ชจ๋ธ ๊ฐ•ํ™”

HTTP๋Š” ์›น ๋ณด์•ˆ ๋ชจ๋ธ์ธ same-origin ์ •์ฑ…์—์„œ ๋…๋ฆฝ๋˜์–ด ์žˆ๋‹ค. same-origin ์ •์ฑ…์€ ์ œ์•ฝ์‚ฌํ•ญ ์•„๋ž˜ ํ—ˆ์šฉ๋œ๋‹ค. ์ œ์•ฝ์‚ฌํ•ญ์ด ์–ผ๋งˆ๋‚˜ ๊ทธ๋ฆฌ๊ณ  ์–ธ์ œ ๋ฆฌํ”„ํŠธ๋  ์ง€๋Š” HTTP ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ํด๋ผ์ด์–ธํŠธ์— ์˜ํ•ด ์ „๋„๋œ๋‹ค

HTTP/2: ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ

HTTP/1.1์˜ ๋‹จ์ 

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

HTTP/2์˜ ์ฐจ๋ณ„์„ฑ

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

์˜ค๋ฒ„ํ—ค๋“œ๋ž€? ์–ด๋–ค ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ๋“ค์–ด๊ฐ€๋Š” ๊ฐ„์ ‘์ ์ธ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„, ๋ฉ”๋ชจ๋ฆฌ ๋“ฑ์„ ๋งํ•œ๋‹ค.

ํŒŒ์ดํ”„๋ผ์ธ์ด๋ž€? ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋‹จ๊ณ„์˜ ์ถœ๋ ฅ์ด ๋‹ค์Œ ๋‹จ๊ณ„์˜ ์ž…๋ ฅ์œผ๋กœ ์ด์–ด์ง€๋Š” ํ˜•ํƒœ๋กœ ์—ฐ๊ฒฐ๋œ ๊ตฌ์กฐ๋ฅผ ๋งํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ์—ฐ๊ฒฐ๋œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋‹จ๊ณ„๋Š” ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๊ฐ€ ์„œ๋กœ ๋™์‹œ์—, ๋˜๋Š” ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์–ด ํšจ์œจ์„ฑ์˜ ํ–ฅ์ƒ์„ ๊พ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • Alt-Svc ์ง€์›: ๋” ๋‚˜์€ CDN ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๋”ฐ๋ผ ์‹ ๋ถ„ ์ฆ๋ช…์˜ ๊ฐœ๋…๊ณผ ์ฃผ์–ด์ง„ ์ž์›์˜ ์œ„์น˜๋ฅผ ๋ถ„๋ฆฌํ•˜๋„๋ก ํ•ด์ค€๋‹ค.
  • Client-Hints: ๋ธŒ๋ผ์šฐ์ € ํ˜น์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”๊ตฌ์‚ฌํ•ญ์ด๋‚˜ ์„œ๋ฒ„์˜ ํ•˜๋“œ์›จ์–ด ์ œ์•ฝ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์‚ฌ์ „์— ๋ฏธ๋ฆฌ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.
  • Cookie ๋‚ด ๋ณด์•ˆ ๊ด€๋ จ ์ ‘๋‘์‚ฌ ๋„์ž…

์ฐธ์กฐ

  1. https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP
This post is licensed under CC BY 4.0 by the author.

ํ•™์› #38์ผ์ฐจ: ์ต๋ช… ํด๋ž˜์Šค, ์ปค๋งจ๋“œ ๋””์ž์ธ ํŒจํ„ด, ์ƒ์ˆ˜ ๋‹ค๋ฃจ๊ธฐ

ํ•™์› #39์ผ์ฐจ: ์˜ˆ์™ธ์ฒ˜๋ฆฌ

Loading comments from Disqus ...