๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ŒCS/Web

[Web] HTTP, HTTPS, HTTP ๋ฒ„์ „

by dar0m! 2021. 4. 8.

HTTP

  • Hyper Text Transfer Protocol์˜ ์•ฝ์–ด๋กœ WWW(World Wide Web)์— ๋‚ด์žฌ๋œ ํ”„๋กœํ† ์ฝœ์ด๋‹ค.
  • ์ธํ„ฐ๋„ท์—์„œ ์ž์›(ํŒŒ์ผ, ์ด๋ฏธ์ง€, ๋น„๋””์˜ค)์„ ๊ตํ™˜ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ(์•ฝ์†, ๊ทœ์น™)
  • ∴ HTTP๋Š” ์ธํ„ฐ๋„ท์—์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์›น ์„œ๋ฒ„๊ฐ„ ํ†ต์‹ (๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์Œ)์„ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ ์ค‘ ํ•˜๋‚˜
  • ๊ธฐ๋ณธ ํฌํŠธ 80
  • ํ•˜์ดํผํ…์ŠคํŠธ ๋ฌธ์„œ๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ํ…์ŠคํŠธ ํ˜•์‹์˜ ๋งˆํฌ์—… ์–ธ์–ด๊ฐ€ HTML(ํ•˜์ดํผ ํ…์ŠคํŠธ ๋งˆํฌ์—… ์–ธ์–ด)
  • ๋ฌธ์„œ ๊ฐ™์€ ๊ฒƒ์„ ๊ตํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ํ”„๋กœํ† ์ฝœ์ด HTTP(ํ•˜์ดํผํ…์ŠคํŠธ ์ „์†ก ํ”„๋กœํ† ์ฝœ)
  • ๋ฌธ์„œ๋ฅผ ๋””์Šคํ”Œ๋ ˆ์ดํ•˜๊ธฐ ์œ„ํ•œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ WWW(์ฒซ๋ฒˆ์งธ ๋ธŒ๋ผ์šฐ์ €)

CORS(Corss-Origin Resource Sharing)

  • ๋ณด์•ˆ์ƒ์˜ ์ด์œ ๋กœ ๋ธŒ๋ผ์šฐ์ €๋“ค์ด ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์—๊ฒŒ XHR ์š”์ฒญ ๋ณด๋‚ด๋Š” ๊ฒƒ์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ๋‹ค.
  • CORS๋Š” ์ถ”๊ฐ€ HTTP ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋‹ค๋ฅธ ์ถœ์ฒ˜(๋„๋ฉ”์ธ, ํ”„๋กœํ† ์ฝœ, ํฌํŠธ)์˜ ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋„๋ก ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ์•Œ๋ ค์ฃผ๋Š” ์ฒด์ œ์ด๋‹ค.

CORB(Corss Origin Read Blocking)

  • CORS๋ฅผ ํ—ˆ์šฉํ–ˆ๋”๋ผ๋„, POST, PUT, DELETE ์š”์ฒญ์—์„œ json์„ ์ „์†กํ•˜๋Š” ๊ฒฝ์šฐ ์š”์ฒญ์ด ์ฐจ๋‹จ๋œ๋‹ค.
  • ์ด ๊ฒฝ์šฐ์—๋Š” json ๋Œ€์‹  www-form-urlencodedํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋ฉด ๋œ๋‹ค.

 

HTTPS

  • HyperText Transfer Protocol over Secure Socket Layer ์˜ ์•ฝ์–ด๋กœ HTTP์˜ ๋ณด์•ˆ์ด ๊ฐ•ํ™”๋œ ๋ฒ„์ „์ด๋‹ค. HTTP over TLS, HTTP over SSL, HTTP Secure ๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค.
  • ๊ธฐ๋ณธ์ ์ธ TCP/IP ์Šคํƒ์„ ํ†ตํ•ด HTTP๋ฅผ ์ „์†กํ•˜๋Š” ๋Œ€์‹ ์— ์ถ”๊ฐ€์ ์ธ ์•”ํ˜ธํ™” ์ „์†ก ๊ณ„์ธต์ธ SSL์„ ๋งŒ๋“ค์—ˆ๋‹ค. SSL์€ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์— ๊ตํ™˜๋œ ๋ฉ”์‹œ์ง€ ์ธ์ฆ์„ ์•”ํ˜ธํ™”ํ•˜๊ณ  ๋ณด์žฅํ•œ๋‹ค. ํ‘œ์ค€ํ™”๊ฐ€๋˜์–ด TLS๊ฐ€ ๋˜์—ˆ๋‹ค.
  • HTTP๋Š” ์†Œ์ผ“ ํ†ต์‹ ์—์„œ ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋ฅผ ์ด์šฉํ•˜๋Š” ๋Œ€์‹ ์—, SSL์ด๋‚˜ TLS ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ์„ธ์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ์˜ ์ ์ ˆํ•œ ๋ณดํ˜ธ๋ฅผ ๋ณด์žฅํ•œ๋‹ค.
  • ๊ธฐ๋ณธ ํฌํŠธ 443

 

HTTP ๋ฒ„์ „

๊ตฌ๋ถ„ ๋‚ด์šฉ ํŠน์ง•
HTTP/0.9 ๋งค์šฐ ์ œํ•œ์ 

1. ๊ฒฝ๋กœ๋กœ ๊ฐ€๋Šฅํ•œ ๋ฉ”์„œ๋“œ๋Š” GET์ด ์œ ์ผ
    GET /home.html
2. HTTP ํ—ค๋”๊ฐ€ ์—†์ŒHTML ํŒŒ์ผ๋งŒ ์ „์†ก ๊ฐ€๋Šฅ
3. ์ƒํƒœ, ์˜ค๋ฅ˜ ์ฝ”๋“œ๋„ ์—†์Œ
    → ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ HTML ํŒŒ์ผ์— ๋ฌธ์ œ ์„ค๋ช…์„ ์ฒจ๋ถ€ํ•˜์—ฌ ๋ณด๋‚ด์ง)
์ดˆ๊ธฐ ๋ฒ„์ „,
์›-๋ผ์ธ ํ”„๋กœํ† ์ฝœ
HTTP/1.0 ๋ธŒ๋ผ์šฐ์ €์™€ ์„œ๋ฒ„ ๋ชจ๋‘ ์œตํ†ต์„ฑ์„ ๊ฐ€์ง€๋„๋ก ํ™•์žฅ

1. ๋ฒ„์ „ ์ •๋ณด๊ฐ€ ์ „์†ก
     GET /home.html HTTP/1.0
2. ์ƒํƒœ ์ฝ”๋“œ๊ฐ€ ์‘๋‹ต ์‹œ์ž‘ ๋ถ€๋ถ„์— ๋ถ™์–ด ์ „์†ก
    → ์„ฑ๊ณต/์‹คํŒจ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์–ด ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ๋™์ž‘์„ ํ•  ์ˆ˜ ์žˆ์–ด์ง
3. HTTP ํ—ค๋” ๊ฐœ๋… ๋„์ž…
   → ์š”์ฒญ๊ณผ ์‘๋‹ต์‹œ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ํ—ˆ์šฉํ•˜๊ณ  ํ”„๋กœํ† ์ฝœ์„ ์œ ์—ฐํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋„๋ก ๋งŒ๋“ฆ
    → Content-Type : HTML ํŒŒ์ผ ์™ธ์— ๋‹ค๋ฅธ ๋ฌธ์„œ๋“ค์„ ์ „์†ก ๊ฐ€๋Šฅ
ํ™•์žฅ์„ฑ ๋งŒ๋“ค๊ธฐ
HTTP/1.1(ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ) ๋ชจํ˜ธํ•จ์„ ๋ช…ํ™•ํžˆํ•˜๊ณ  ๋งŽ์€ ๊ฐœ์„  ์‚ฌํ•ญ์„ ๋„์ž…

1. ๊ฐœ์„ ๋œ ์ง€์† ์ปค๋„ฅ์…˜ 
    → ํŠธ๋žœ์žญ์…˜๋งˆ๋‹ค ์ปค๋„ฅ์…˜์„ ๋งบ๋Š”๋‹ค๋ฉด '์ปค๋„ฅ์…˜ ๋งบ๋Š” ์‹œ๊ฐ„ + slow start'์ง€์—ฐ๋ฐœ์ƒ, ์ด๋Ÿฐ ์ง€์—ฐ์„ ๋ฐฉ์ง€.
    → HTTP/1.0์˜ keep-alive์™€ ๋‹ฌ๋ฆฌ ๋ณ„๋„ ์„ค์ •์„ ํ•˜์ง€ ์•Š๋Š” ํ•œ, ๋ชจ๋“  ์ปค๋„ฅ์…˜์„ ์ง€์† ์ปค๋„ฅ์…˜์œผ๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค. ํŠธ๋žœ์žญ์…˜์„ ๋Š๊ธฐ ์œ„ํ•ด์„œ๋Š” 'Connection: close'๋ฅผ ํฌํ•จํ•ด์•ผ ํ•œ๋‹ค.
    → ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ์ง€์† ์ปค๋„ฅ์…˜์„ ๋งบ๊ณ  ๊ด€๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.
  • ๋ณ‘๋ ฌ ์ปค๋„ฅ์…˜
    • ์ปค๋„ฅ์…˜์˜ ์ง€์—ฐ ์‹œ๊ฐ„์„ ๊ฒน์น˜๊ฒŒ ํ•˜์—ฌ ์ด ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ค„์ž„
    • ์—ฌ๋Ÿฌ ๊ฐœ์˜ TCP ์ปค๋„ฅ์…˜์„ ํ†ตํ•œ ๋™์‹œ HTTP ์š”์ฒญ
  • ์ง€์† ์ปค๋„ฅ์…˜
    • ์ปค๋„ฅ์…˜์„ ์œ ์ง€ํ•˜์—ฌ ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ ์ปค๋„ฅ์…˜ ์žฌ์‚ฌ์šฉ
  • ํŒŒ์ดํ”„๋ผ์ธ ์ปค๋„ฅ์…˜
    • ์‹คํ–‰์ค‘์ธ ๋ช…๋ น์ด ๋๋‚˜๊ธฐ ์ „์— ๋‹ค๋ฅธ ๋ช…๋ น์˜ ์‹คํ–‰์„ ์‹œ์ž‘ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์ง€์—ฐ์‹œ๊ฐ„์„ ์ค„์ž„
    • ๊ณต์œ  TCP ์ปค๋„ฅ์…˜์„ ํ†ตํ•œ ๋ณ‘๋ ฌ HTTP ์š”์ฒญ
  • ๋‹ค์ค‘ ์ปค๋„ฅ์…˜
    • ์š”์ฒญ๊ณผ ์‘๋‹ต๋“ค์— ๋Œ€ํ•œ ์ค‘์žฌ
2. ์ฒญํฌ๋œ ์‘๋‹ต ์ง€์›
    → ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์š”์ฒญ์ด ์™„์ „ํžˆ ์ฒ˜๋ฆฌ๋˜๊ธฐ ์ „๊นŒ์ง€ ์‘๋‹ต์˜ ์ „์ฒด ํฌ๊ธฐ๋ฅผ ์•Œ์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ ์œ ์šฉ

3. ์ถ”๊ฐ€์ ์ธ ์บ์‹œ ์ œ์–ด ๋งค์ปค๋‹ˆ์ฆ˜ ๋„์ž…
    → ์›๋ณธ ์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค์— ๋น„ํ•ด ์˜ค๋ž˜๋˜๊ฑฐ๋‚˜ ์œ ํšจํ•˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์š”.
    → ์ตœ์‹  ์บ์‹œ๋ผ๊ณ  ๊ฐ„์ฃผ๋˜๋ฉด ํด๋ผ์ด์–ธํŠธ์— ๋ฐ”๋กœ ์ „์†ก
    → ์œ ํšจ์„ฑ ๊ฒ€์ฆ : 'Cache-control: max-age=N' ํ—ค๋”๊ฐ€ ์„ค์ •๋œ ๊ฒฝ์šฐ ์œ ํšจ ์ˆ˜๋ช…์€ N, ํ•ด๋‹น ํ—ค๋”๊ฐ€ ์—†๋‹ค๋ฉด, Expires ํ—ค๋”๊ฐ€ ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌ, ์žˆ๋‹ค๋ฉด, ๊ทธ ๊ฐ’์—์„œ Date ํ—ค๋”์˜ ๊ฐ’์„ ๋บ€ ๊ฒฐ๊ณผ๊ฐ€ ์œ ํšจ ์ˆ˜๋ช…, ์„œ๋ฒ„๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ์œ ํšจ์„ฑ์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด, Last-Modified ํ—ค๋”๋ฅผ ์ฐพ๋Š”๋‹ค. ์žˆ๋‹ค๋ฉด ์บ์‹œ์˜ ์œ ํšจ ์ˆ˜๋ช…์€ Dateํ—ค๋” ๊ฐ’์—์„œ Last-modifed ํ—ค๋”๊ฐ’์„ ๋บ€ ๊ฐ’์„ 10์œผ๋กœ ๋‚˜๋ˆˆ ๊ฒฐ๊ณผ๊ฐ€ ๋œ๋‹ค.

4. ์–ธ์–ด, ์ธ์ฝ”๋”ฉ ํ˜น์€ ํƒ€์ž…์„ ํฌํ•จํ•œ ์ปจํ…์ธ  ํ˜‘์ƒ ๋„์ž…
    → ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋กœ ํ•˜์—ฌ๊ธˆ ๊ตํ™˜ํ•˜๋ ค๋Š” ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์ปจํ…์ธ ์— ๋Œ€ํ•œ ๋™์˜๋ฅผ ๊ฐ€๋Šฅ์ผ€ ํ•จ

5. Host ํ—ค๋”
    →๋™์ผ IP ์ฃผ์†Œ์— ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์„ ํ˜ธ์ŠคํŠธํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์„œ๋ฒ„ ์ฝ”๋กœ์ผ€์ด์…˜์„ ๊ฐ€๋Šฅ์ผ€ ํ•จ
  • ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ
  • HOL(Head Of Line) Blocking-ํŠน์ •์‘๋‹ต ์ง€์—ฐ
  • RTT(Round Trip Time)์ฆ๊ฐ€
  • ํ—ค๋น„ํ•œ Header ๊ตฌ์กฐ(ํŠนํžˆ ์ฟ ํ‚ค ๋•Œ๋ฌธ)
HTTP/2 HTTP/1.1 ๋ฒ„์ „๊ณผ ๋ช‡๊ฐ€์ง€ ๊ทผ๋ณธ์  ์ฐจ์ด์ ์„ ๊ฐ€์ง, ์„ฑ๋Šฅ๊ณผ ์†๋„๋ฉด์—์„œ ์›”๋“ฑ

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

2. Multiplexed Streams
    → ํ•œ ์ปค๋„ฅ์…˜์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ฉ”์„ธ์ง€๋ฅผ ๋™์‹œ์— ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
     → ๋‹จ์ผ TCP ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ์š”์ฒญ์„ ๋ณ‘๋ ฌ๋กœ ๋ณด๋ƒ„, ์ถ”๊ฐ€ ์™•๋ณต ์‹œ๊ฐ„ (RTT)๊ฐ€ ์ค„์–ด๋“ค์–ด ์ตœ์ ํ™” ์—†์ด ๋น ๋ฅด๊ฒŒ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๊ณ , ๋„๋ฉ”์ธ ์ƒค๋”ฉ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Œ.
    → ๋ณ‘๋ ฌ ์š”์ฒญ์ด ๋™์ผํ•œ ์ปค๋„ฅ์…˜ ์ƒ์—์„œ ๋‹ค๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ๋Š” ๋‹ค์ค‘ํ™” ํ”„๋กœํ† ์ฝœ.
     ์ˆœ์„œ๋ฅผ ์ œ๊ฑฐํ•ด์ฃผ๊ณ  HTTP/1.x ํ”„๋กœํ† ์ฝœ์˜ ์ œ์•ฝ์‚ฌํ•ญ์„ ๋ง‰์•„์คŒ

3. Header Compression
    → Header ์ •๋ณด๋ฅผ HPACK ์••์ถ•๋ฐฉ์‹์„ ์ด์šฉํ•˜์—ฌ ์••์ถ•์ „์†ก
์ „์†ก๋œ ๋ฐ์ดํ„ฐ์˜ ๋ถ„๋ช…ํ•œ ์ค‘๋ณต๊ณผ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ œ๊ฑฐ
     ์—ฐ์†๋œ ์š”์ฒญ ์‚ฌ์ด์˜ ๋งค์šฐ ์œ ์‚ฌํ•œ ๋‚ด์šฉ์œผ๋กœ ์กด์žฌํ•˜๋Š” ํ—ค๋”๋“ค์„ ์••์ถ•์‹œํ‚ด

4. Server Push
     ์„œ๋ฒ„์— ์‚ฌ์ „์— ํด๋ผ์ด์–ธํŠธ ์บ์‹œ๋ฅผ ์„œ๋ฒ„ ํ‘ธ์‹œ๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๋งค์ปค๋‹ˆ์ฆ˜์— ์˜ํ•ด ํ•„์š”ํ•˜๊ฒŒ๋  ๋ฐ์ดํ„ฐ๋กœ ์ฑ„์›Œ๋„ฃ๋„๋ก ํ—ˆ์šฉํ•จ์œผ๋กœ์จ ๋ฆฌ์†Œ์Šค๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ํ‘ธ์‹œ๋œ ์ž์›์„ ๋‹ค์ค‘ํ™”ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์†๋„ ํ–ฅ์ƒ
  • ์š”์ฒญ ํ—ค๋” ์••์ถ•
  • ์ด์ง„ ํ”„๋กœํ† ์ฝœ
  • HTTP/2 ์„œ๋ฒ„ ํ‘ธ์‹œ
  • ๋‹จ์ผ TCP ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์š”๊ตฌ ๋‹ค์ค‘ํ™”
  • ํŒŒ์ดํ”„ ๋ผ์ธ์„ ์š”๊ตฌํ•˜๋Š”
  • HOL ์ฐจ๋‹จ (Head-of-Line) - ํŒจํ‚ค์ง€ ์ฐจ๋‹จ
  • ๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ์ด ์ข‹์Œ
์ฐจ์„ธ๋Œ€ HTTP/2 ์ƒˆ๋กœ์šด ํ™•์žฅ์„ฑ(ํ™•์žฅ์„ฑ์˜ ๋ฐœ์ „)

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

1. QUIC๋ผ๋Š” ํ”„๋กœํ† ์ฝœ์œ„์—์„œ ๋Œ์•„๊ฐ€๋Š” HTTP
2. ์ŠคํŠธ๋ฆผ์€ ๋™์ผ QUIC ์—ฐ๊ฒฐ์„ ๊ณต์œ ํ•˜๋ฏ€๋กœ ์ƒˆ ์ŠคํŠธ๋ฆผ์„ ๋งŒ๋“ค ๋•Œ ์ถ”๊ฐ€์ ์ธ ํ•ธ๋“œ์‰์ดํฌ๋‚˜ ์Šฌ๋กœ์šฐ ์Šคํƒ€ํŠธ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Œ
3. QUIC ์ŠคํŠธ๋ฆผ์€ ๋…๋ฆฝ์ ์œผ๋กœ ์ „๋‹ฌ๋˜์–ด ์–ด๋–ค ์ŠคํŠธ๋ฆผ์— ํŒจํ‚ท ์†์‹ค์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋„ ๋‹ค๋ฅธ ์ŠคํŠธ๋ฆผ์— ์˜ํ–ฅ์ด ์—†์Œ.
    → QUIC ํŒจํ‚ท์ด UDP ๋ฐ์ดํ„ฐ๊ทธ๋žจ ์œ„์— ์บก์Šํ™”๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ
4. QUIC๋Š” TCP์˜ ์ „ํ˜•์ ์ธ 3๋ฐฉํ–ฅ ํ•ธ๋“œ์‰์ดํฌ์™€ TLS 1.3์˜ ํ•ธ๋“œ์‰์ดํฌ๋ฅผ ๊ฒฐํ•ฉํ•œ๋‹ค.
5. HTTP/2์— ์žˆ๋Š” ํ”„๋ ˆ์ž„, ์ŠคํŠธ๋ฆผ, ,๋ฉ”์‹œ์ง€ ๊ตฌ์กฐ์™€ ๊ธฐ์ˆ ๋“ค์€ ๊ทธ๋Œ€๋กœ ์Šน๊ณ„, ๋ช…์นญ๋งŒ HQframe, QPACK๋“ฑ์œผ๋กœ ๋ณ€๊ฒฝ
  • QUIC
  • UDP ์„ ํƒ(HTTP/1๊ณผ, HTTP/2๋Š” TCP๋ฅผ ์ž์‹ ๋“ค์˜ ํŠธ๋žœ์ŠคํฌํŠธ๋กœ ์‚ฌ์šฉ)
  • ์Šฌ๋กœ์šฐ ์Šคํƒ€ํŠธ(Slow Start)
    • ํ•ฉ ์ฆ๊ฐ€/๊ณฑ ๊ฐ์†Œ ๋ฐฉ์‹(AIMD)์€ ์ฒ˜์Œ์— ์ „์†ก ์†๋„๋ฅผ ์˜ฌ๋ฆฌ๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๊ธธ๋‹ค.
      • ์ฒ˜์Œ์— ํŒจํ‚ท์„ ํ•˜๋‚˜์”ฉ ๋ณด๋‚ด๊ณ  ๋ฌธ์ œ์—†์ด ๋„์ฐฉํ•˜๋ฉด ์œˆ๋„์šฐ ํฌ๊ธฐ๋ฅผ 1์”ฉ ์ฆ๊ฐ€์‹œ์ผœ๊ฐ€๋ฉฐ ์ „์†กํ•œ๋‹ค. ๋งŒ์•ฝ ์ „์†ก์— ์‹คํŒจํ•˜๋ฉด ์œˆ๋„์šฐ ํฌ๊ธฐ๋ฅผ ๋ฐ˜์œผ๋กœ ์ค„์ธ๋‹ค.
      • ์œˆ๋„์šฐ ํฌ๊ธฐ๋ฅผ ๋„ˆ๋ฌด ์กฐ๊ธˆ์”ฉ ๋Š˜๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ๋„คํŠธ์›Œํฌ์˜ ๋ชจ๋“  ๋Œ€์—ญ์„ ํ™œ์šฉํ•˜์—ฌ ์ œ๋Œ€๋กœ ๋œ ์†๋„๋กœ ํ†ต์‹ ํ•˜๊ธฐ ๊นŒ์ง€ ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค.
    • ๋Š๋ฆฐ ์‹œ์ž‘๋ฐฉ์‹์€ ํ•ฉ ์ฆ๊ฐ€/๊ณฑ ๊ฐ์†Œ ๋ฐฉ์‹๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํŒจํ‚ท์„ ํ•˜๋‚˜์”ฉ ๋ณด๋‚ด๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์ง€๋งŒ ํŒจํ‚ท์ด ๋ฌธ์ œ ์—†์ด ๋„์ฐฉํ•˜๋ฉด ๊ฐ๊ฐ์˜ ACK ํŒจํ‚ท๋งˆ๋‹ค ์ฐฝ ํฌ๊ธฐ๋ฅผ 1์”ฉ ๋Š˜๋ ค ํ•œ ์ฃผ๊ธฐ๊ฐ€ ์ง€๋‚˜๋ฉด ์ฐฝ ํฌ๊ธฐ๊ฐ€ 2๋ฐฐ๋กœ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์ „์†ก ์†๋„๊ฐ€ ์ง€์ˆ˜ ํ•จ์ˆ˜ ๊ผด๋กœ ์ฆ๊ฐ€ํ•œ๋‹ค.
    • ๋Œ€์‹ ์— ํ˜ผ์žก ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ฐฝ ํฌ๊ธฐ๋ฅผ 1๋กœ ๋–จ์–ด๋œจ๋ฆฐ๋‹ค. ํ•œ๋ฒˆ ํ˜ผ์žกํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๊ณ  ๋‚˜๋ฉด ๋„คํŠธ์›Œํฌ ์ˆ˜์šฉ๋Ÿ‰์„ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ˜ผ์žก ํ˜„์ƒ์ด ๋ฐœ์ƒํ–ˆ๋˜ ์ฐฝ ํฌ๊ธฐ์˜ ์ ˆ๋ฐ˜(์ž„๊ณ„์ )๊นŒ์ง€๋Š” ์ด์ „์ฒ˜๋Ÿผ ์ง€์ˆ˜ ํ•จ์ˆ˜ ๊ผด๋กœ ์ฐฝ ํฌ๊ธฐ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ๊ทธ ์ดํ›„๋ถ€ํ„ฐ๋Š” ์™„๋งŒํ•˜๊ฒŒ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.
    • TCP ๋™์ž‘ ๋ฐฉ์‹์ด ์ฒ˜์Œ์— ์ตœ๋Œ€ํ•œ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋งŒํผ์˜ ํŒจํ‚ท์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘ํ•˜๊ณ , ๋Š๋ฆฐ ์‹œ์ž‘์€ ์ด์™€ ๋‹ฌ๋ฆฌ ์ฐฝ ํฌ๊ธฐ๋ฅผ 1์—์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ์ง€์ˆ˜ํ•จ์ˆ˜ ๊ผด๋กœ ์ฆ๊ฐ€์‹œ์ผœ๊ฐ€๋ฉด์„œ ๋„คํŠธ์›Œํฌ์˜ ์ˆ˜์šฉ๋Ÿ‰์„ ๊ฐ์ง€ํ•œ๋‹ค. ํ•ฉ ์ฆ๊ฐ€/๊ณฑ ๊ฐ์†Œ ๋ฐฉ์‹๋ณด๋‹ค ๋” ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์ด์ง€๋งŒ ํ˜ผ์žกํ•œ ์ƒํ™ฉ์ด ๋œ ๊ฒฝ์šฐ์— ํƒ€์ž„์•„์›ƒ ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ํฐ ์‹œ๊ฐ„์˜ ๊ณต๋ฐฑ์ด ์žˆ๋‹ค.
  • ๋„๋ฉ”์ธ ์ƒค๋”ฉ(Domain sharding)
    • resource ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ domain ์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ €์žฅํ•˜์—ฌ, page load time ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ์ผ์ข…์˜ ํŠธ๋ฆญ ํ˜น์€ ๋ฐฉ๋ฒ•์ด๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ domain ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ง„ ๋ฆฌ์†Œ์Šค๋ฅผ ๋‹ค์šด๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— browser ๋Š” ๋” ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ํ•œ๋ฒˆ์— ๋” ๋งŽ์ด ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
  • QUIC(Quick UDP Internet Connections)
    • TCP๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์—ฐ๊ฒฐ ์ง€ํ–ฅ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์„ ๊ฐœ์„ 
      • UDP๋ฅผ ๊ฒฝ์œ ํ•˜์—ฌ 2๊ฐœ์˜ ์ข…๋‹จ์  ๊ฐ„ ์ˆ˜๋งŽ์€ ๋‹ค์ค‘ํ™” ์—ฐ๊ฒฐ์„ ํ™•๋ฆฝํ•จ์œผ๋กœ์จ ์ด๋ฅผ ๋‹ฌ์„ฑ
      • HTTP/2์˜ ๋‹ค์ค‘ํ™” ์—ฐ๊ฒฐ๊ณผ ํ˜‘๋ ฅํ•˜์—ฌ ๋™์ž‘ํ•˜๋ฉฐ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ๋“ค์ด ๊ฐœ๋ณ„์ ์œผ๋กœ ๋ชจ๋“  ์ข…๋‹จ์ ์— ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ๊ณ  ๋‹ค๋ฅธ ์ŠคํŠธ๋ฆผ์„ ์ˆ˜๋ฐ˜ํ•˜๋Š” ํŒจํ‚ท ์†์‹ค์— ๋…๋ฆฝ์ ์ด๋‹ค.
        • ๋ฐ˜๋ฉด, TCP๋กœ ํ˜ธ์ŠคํŒ…๋œ๋‹ค๋ฉด, ์–ด๋–ค TCP ํŒจํ‚ท์ด๋ผ๋„ ์ง€์—ฐ๋˜๊ฑฐ๋‚˜ ์†Œ์‹ค๋  ๊ฒฝ์šฐ ๋ชจ๋“  ๋‹ค์ค‘ํ™” ์ŠคํŠธ๋ฆผ์— ๋Œ€ํ•ด HOL-Blocking ์ง€์—ฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ
    • ํ˜ผ์žก ํšŒํ”ผ๋ฅผ ์œ„ํ•ด ๊ฐ ๋ฐฉํ–ฅ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ๊ฒฐ ๋ฐ ์ „์†ก ๋ ˆ์ดํ„ด์‹œ์™€ ๋Œ€์—ญํญ์„ ๊ฐ์†Œ
    • ๋‘ ์ข…๋‹จ์ ์˜ ํ˜ผ์žก ์ œ์–ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ปค๋„ ๊ณต๊ฐ„์ด ์•„๋‹Œ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„ ์•ˆ์œผ๋กœ ๋ฐฐ์น˜์‹œํ‚ด์œผ๋กœ์จ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋” ๋น ๋ฅด๊ฒŒ ๊ฐœ์„ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
    • ์˜ค๋ฅ˜ ์˜ˆ์ธก ์‹œ ์ „๋ฐฉ ์˜ค๋ฅ˜ ์ •์ •(FEC)์™€ ํ•จ๊ป˜ ์„ฑ๋Šฅ์„ ์ถ”๊ฐ€์ ์œผ๋กœ ๊ฐœ์„ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
      • FEC() : ๋ณด๋‚ด๋Š” ์‚ฌ๋žŒ์ด ์ „์†ก์— ์•ž์„œ ์˜ค๋ฅ˜ ์ •์ • ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ธ์ฝ”๋”ฉ, ์†ก์‹ ์ธก์—์„œ ๋ฌธ์ž๋‚˜ ํ”„๋ ˆ์ž„์— ์˜ค๋ฅ˜ ๊ฒ€์ถœ์„ ์œ„ํ•œ ํ™•์žฅ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ด ์ „์†กํ•ด ์ˆ˜์‹ ์ธก์—์„œ ์ด๋ฅผ ํ™œ์šฉํ•ด ๋ฐ์ดํ„ฐ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ๊ฒ€์ถœํ•˜๊ณ  ์ˆ˜์ •ํ•œ๋‹ค.
      • ARQ(ํ›„๋ฐฉ ์˜ค๋ฅ˜ ์ •์ •) : ์ˆ˜์‹ ๋˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๋ธ”๋ก์€ ์˜ค๋ฅ˜ ์ •์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒ€์‚ฌ๋˜๋ฉฐ ๊ฒ€์‚ฌ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ๋ฐ์ดํ„ฐ ์žฌ์ „์†ก์„ ์š”์ฒญ, ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ์—์„œ๋Š” ๊ณค๋ž€ํ•จ, ํŒจ๋ฆฌํ‹ฐ ๊ฒ€์‚ฌ, CRC ๋“ฑ์„ ์ด์šฉํ•ด ์˜ค๋ฅ˜ ๊ฒ€์ถœ

UDP์™€ TCP ๋น„๊ต

TCP๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์–‘๋‹จ ๊ฐ„์— ๋จผ์ € ์—ฐ๊ฒฐ์„ ์„ค์ •(์—ฐ๊ฒฐ์‹œ 3Way-Handshake, ๋Š์„ ๋•Œ 4Way-Handshake)ํ•˜๊ณ  ์„ค์ •๋œ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์–‘๋ฐฉํ–ฅ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜์ง€๋งŒ,
UDP๋Š” ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜์ง€ ์•Š๊ณ  ์ˆ˜์‹ ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์„ ์ค€๋น„๋ฅผ ํ™•์ธํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ์ •๋ณด๋ฅผ ์ „์†กํ•œ๋‹ค.

  • ์‹ ๋ขฐ์„ฑ - TCP๋Š” ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ ์„ ํ™•์ธํ•˜์ง€๋งŒ UDP๋Š” ์ˆ˜์‹ ์ž๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ–ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์—†๋‹ค.
  • ์ˆœ์„œ ์ •๋ ฌ - TCP์—์„œ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ๋ณด๋‚ด์ง„ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์žฌ์กฐ๋ฆฝํ•˜์ง€๋งŒ UDP๋Š” ๋ฉ”์‹œ์ง€ ๋„์ฐฉ ์ˆœ์„œ๋ฅผ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋‹ค.
  • ๋ถ€ํ•˜ - UDP๊ฐ€ TCP๋ณด๋‹ค ์†๋„๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋น ๋ฅด๊ณ  ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ ๋‹ค.

 

์ฐธ๊ณ 

'๐Ÿ“ŒCS > Web' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

XSS(Cross-site Scripting) ๊ณต๊ฒฉ  (0) 2021.04.25
[Web] param vs query vs body  (2) 2021.04.18
[Web] CORS(Cross-Origin Resource Sharing)  (0) 2021.04.18
[Web] ์ฟ ํ‚ค์™€ ์„ธ์…˜  (0) 2021.04.04
[Web] REST & RESTful  (0) 2021.04.03

๋Œ“๊ธ€