HTTP

[ CS > Network ]

[HTTP] HTTP๋ž€

ย Carrot Yoon
ย 2025-06-10
ย 23

HTTP(Hypertext Transfer Protocol)

์ตœ๊ทผ ๋ฉด์ ‘์„ ๋ณด๋ฉด์„œ ๊ธฐ์ดˆ๋“ค์„ ๋งŽ์ด ๊นŒ๋จน์—ˆ๊ณ  ์ œ๋Œ€๋กœ ์ •๋ฆฌ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๊ณ  ๋А๊ผˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ฒ˜์Œ ๋ฐฐ์šฐ๋Š” ๋งˆ์Œ๊ฐ€์ง์œผ๋กœ ๊ธ€์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค... ใ…œใ…œ

HTTP๋Š” ๋ฆฌ์†Œ์Šค๋“ค์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ํŠนํžˆ ์›น์—์„œ ์ด๋ฃจ์–ด์ง€๋Š” ๋ฐ์ดํ„ฐ ๊ตํ™˜์˜ ๊ธฐ์ดˆ์ด๋ฉฐ, ์ฃผ๋กœ Server-Client๊ฐ„์˜ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ๋ณดํ†ต ์›น ๋ธŒ๋ผ์šฐ์ €(ํฌ๋กฌ, ์‚ฌํŒŒ๋ฆฌ ๋“ฑ)๊ฐ€ Client์ด๊ณ  Tomcat, Nginx ๊ฐ™์€ ๊ฒƒ๋“ค์ด Server ์—ญํ• ์„ ํ•œ๋‹ค.

1. ๋ฆฌ์†Œ์Šค

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

1.1 MIME(๋ฏธ๋””์–ด ํƒ€์ž…, Content-type)

MIME(Multipurpose Internet Mail Extensions)๋Š” ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๋ฉ”์ผ ์‹œ์Šคํ…œ ์‚ฌ์ด์—์„œ ๋ฉ”์‹œ์ง€๊ฐ€ ์˜ค๊ฐˆ ๋•Œ ๊ฒช๋Š” ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋” ์ž์„ธํ•˜๊ฒŒ๋Š” ๊ฐ ๋ฉ”์ผ ์‹œ์Šคํ…œ์ด ์ž๊ธฐ ๋ฐฉ์‹๋Œ€๋กœ ์ฒจ๋ถ€ํŒŒ์ผ์„ ์ธ์ฝ”๋”ฉ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์–ด๋–ค ํŒŒ์ผ์ธ์ง€์™€ ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์„ ์ง€์ •ํ•˜์—ฌ ํ˜ธํ™˜๋˜๋„๋ก ๋งŒ๋“ค๊ธฐ ์œ„ํ•จ์ด์˜€์Šต๋‹ˆ๋‹ค. HTTPํ†ต์‹ ์—์„œ๋„ ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ํŒŒ์ผ์„ ์ „๋‹ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ „๋‹ฌํ•  ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ MIME ํƒ€์ž…์„ ํ†ตํ•ด ํ™•์ธ๊ฐ€๋Šฅ ํ•˜๋„๋ก ๋งŒ๋“ค์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ HTTP์—์„œ๋Š” Content-type(๋ฐ์ดํ„ฐ ํ˜•์‹), Content-length(๋ฐ์ดํ„ฐ ํฌ๊ธฐ), Content-Encoding(์••์ถ• ๋ฐฉ์‹)์ด๋ผ๋Š” ํ—ค๋”๋ฅผ ํ†ตํ•ด์„œ ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹๊ณผ ์••์ถ• ๋ฐฉ์‹์„ ๋ณด๋‚ด์ฃผ๊ณ , ์›น ํด๋ผ์ด์–ธํŠธ์—์„œ๋Š” ํ•ด๋‹น ์ •๋ณด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์•Œ๋งž๊ฒŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

HTTP์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋ฐ›์œผ๋ฉด MIME๋Š” ๋‹ค์Œ๊ณผ ํ˜•์‹์œผ๋กœ ๋ฐ›์•„์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค.HTTP/1.1 200 OKContent-Type: image/jpegContent-Length: 245760Content-Encoding: gzipContent-Type: {์ฃผํƒ€์ž…}/{๋ถ€ํƒ€์ž…}; charset={์ธ์ฝ”๋”ฉ ๋ฐฉ์‹,utf-8 ๋“ฑ}Content-Length: ํŒŒ์ผ ํฌ๊ธฐContent-Enccoding: {์••์ถ•๋ฐฉ์‹, gzip ๋“ฑ๋“ฑ

1.2 URI (uniform resource identifier, ํ†ตํ•ฉ ์ž์› ์‹๋ณ„์ž)

์›น ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค๋Š” ๊ฐ์ž ์ด๋ฆ„์„ ๊ฐ–๊ณ  ์žˆ๊ณ , ํด๋ผ์ด์–ธํŠธ๋Š” ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๋ฅผ ์ง€๋ชฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค์˜ ์ด๋ฆ„์„ URI๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ด URI๋Š” ์ •๋ณด ๋ฆฌ์†Œ์Šค๋ฅผ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๊ณ  ์œ„์น˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค.

์˜ˆ๋ฅผ๋“ค๋ฉด ์ด ๋ธ”๋กœ๊ทธ ๋ฐฐ๊ฒฝํ™”๋ฉด ๋™์˜์ƒ์˜ URI๋Š” https://api.yooncarrot.com/static/home/background2.mp4์ด๋‹ค.(S3์„œ๋ฒ„ ์ฃผ์†Œ์™€ S3์—์„œ ํ•ด๋‹น ํŒŒ์ผ์˜ ๋ฆฌ์†Œ์Šค ์œ„์น˜๋ฅผ ์•Œ๋ฉด, S3์„œ๋ฒ„ ์ฃผ์†Œ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•  ์ˆ˜๋„ ์žˆ๋‹ค.)

URI๋Š” URL๊ณผ URN 2๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค.

  1. URL(uniform resource locator)

    • ํŠน์ • ์„œ๋ฒ„์˜ ํ•œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ์œ„์น˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  URL์€ 3 ๋ถ€๋ถ„์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.

      • ์Šคํ‚ด(scheme): https://(๋ณดํ†ต ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ)

      • ์„œ๋ฒ„์˜ ์ธํ„ฐ๋„ท ์ฃผ์†Œ(๋„๋ฉ”์ธ) : api.yooncarrot.com

      • ์„œ๋ฒ„์—์„œ ๋ฆฌ์†Œ์Šค ์œ„์น˜: /static/home/background2.mp4

  2. URN(uniform resource name)

    • ๋ฆฌ์†Œ์Šค ์œ„์น˜์— ์˜ํ–ฅ์—†์ด ์œ ์ผํ•œ ์ด๋ฆ„ ์—ญํ• ์„ ํ•œ๋‹ค. ๋ฆฌ์†Œ์Šค ์œ„์น˜๋ฅผ ์˜ฎ๊ธฐ๋”๋ผ๋„ ์ด URN์€ ๋ฌธ์ œ์—†์ด ์ž‘๋™ํ•ด์•ผํ•˜๋ฉฐ, ํ”„๋กœํ† ์ฝœ ์ƒ๊ด€์—†์ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. (urn:๋„ค์ž„์ŠคํŽ˜์ด์Šค:๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ์ด๋ฆ„ ์œผ๋กœ ๋œ๋‹ค. urn:isbn:9780134092669) ๋ณดํ†ต ์ฑ…, ๋…ผ๋ฌธ ์ •๋ณด๋ฅผ ์ด๋Ÿฐ์‹์œผ๋กœ ์ €์žฅํ•œ๋‹ค. ํ˜„์žฌ๋Š” ์‚ฌ์‹ค์ƒ ๊ฑฐ์˜ ์“ฐ์ด์ง€ ์•Š๋Š”๋‹ค.

2. ํŠธ๋žœ์žญ์…˜

HTTP ํŠธ๋žœ์žญ์…˜์€ ์š”์ฒญ(client -> server)๊ณผ ์‘๋‹ต(server -> client)๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์ƒํ˜ธ์ž‘์šฉ์€ ์ •ํ˜•ํ™”๋œ HTTP ๋ฉ”์‹œ์ง€๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.

์š”์ฒญ

GET /static/home/background2.mp4 HTTP/1.1
Host: api.yooncarrot.com

์‘๋‹ต

HTTP/1.1 200 OK
Content-type: video/mp4
Content-Length: 981314

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

2.1 HTTP ๋ฉ”์„œ๋“œ

ํด๋ผ์ด์–ธํŠธ๋Š” ์š”์ฒญ์„ ํ•  ๋•Œ HTTP ๋ฉ”์„œ๋“œ๋กœ ์„œ๋ฒ„๊ฐ€ ์–ด๋–ค ๋™์ž‘์„ ์ทจํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ๋ ค์ค€๋‹ค.

๋ฉ”์„œ๋“œ

์„ค๋ช…

GET

์ง€์ •ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ด๋ผ

PUT

ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ ๋ณด๋‚ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์ •ํ•œ ์ด๋ฆ„์˜ ๋ฆฌ์†Œ์Šค๋กœ ์ง€์ •ํ•˜๋ผ

DELETE

์ง€์ •ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์„œ๋ฒ„์—์„œ ์‚ญ์ œํ•˜๋ผ

POST

ํด๋ผ์ด์–ธํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„ ๊ฒŒ์ดํŠธ์›จ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ „์†กํ•˜๋ผ

HEAD

์ง€์ •ํ•œ ๋ฆฌ์†Œ์Šค์˜ HTTP ํ—ค๋“œ ๋ถ€๋ถ„๋งŒ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ด๋ผ

OPTIONS

์„œ๋ฒ„์—์„œ ์–ด๋–ค ๋ฉ”์„œ๋“œ๊ฐ€ ๊ฐ€๋Šฅํ•œ์ง€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์•Œ๋ ค์ฃผ๋ผ

2.2 ์ƒํƒœ ์ฝ”๋“œ

๋ชจ๋“  HTTP ์‘๋‹ต์—๋Š” ์ƒํƒœ ์ฝ”๋“œ์™€ ์‚ฌ์œ  ๊ตฌ์ ˆ(OK์™€ ๊ฐ™์€ ๋ฌธ๊ตฌ)์„ ํ•จ๊ป˜ ๋ณด๋‚ธ๋‹ค. ์‚ฌ์œ  ๊ตฌ์ ˆ์€ ๋‹จ์ˆœ ์ฐธ๊ณ ์šฉ์œผ๋กœ ์ƒํƒœ๋Š” HTTP Status Code๋ฅผ ํ†ตํ•ด ์ฒ˜๋ฆฌ๋œ๋‹ค.

์ƒํƒœ์ฝ”๋“œ

์„ค๋ช…

200

์ •์ƒ

302

๋ฆฌ์†Œ์Šค๊ฐ€ ์ผ์‹œ์ ์œผ๋กœ ์ด๋™๋˜์—ˆ์œผ๋‹ˆ redirect ํ•ด๋ผ

404

์—†๋Š” ๋ฆฌ์†Œ์Šค

3. ๋ฉ”์‹œ์ง€

HTTP ๋ฉ”์‹œ์ง€๋Š” binaryํ˜•์‹์ด ์•„๋‹Œ ์ผ๋ฐ˜ ํ…์ŠคํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฝ๊ณ  ์“ฐ๊ธฐ๊ฐ€ ์‰ฝ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด HTTP ์š”์ฒญ๊ณผ ์‘๋‹ต์€ ์‹œ์ž‘์ค„, ํ—ค๋”, ๋ฐ”๋””์™€ ๊ตฌ๋ถ„์„ ์œ„ํ•œ ๋นˆ์ค„, ๋ณธ๋ฌธ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

image.png
  • ์‹œ์ž‘์ค„

    • ์š”์ฒญ์ด๋ผ๋ฉด ๋ฌด์—‡์„ ํ•ด์•ผํ•˜๋Š”์ง€ ์„œ๋ฒ„์—๊ฒŒ ์ „๋‹ฌํ•˜๊ณ , ์‘๋‹ต์ด๋ผ๋ฉด ๋ฌด์Šจ์ผ์ด ์žˆ์–ด๋‚ฌ๋Š”์ง€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.

  • ํ—ค๋”

    • ํ—ค๋”๋Š” key value๋ฅผ ์Œ์ (:)์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์ „๋‹ฌ๋˜๊ฒŒ ๋œ๋‹ค. ๊ฐ’์„ ์ถ”๊ฐ€ํ•œ๋‹ค๋ฉด 1์ค„์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค.

  • ๋ณธ๋ฌธ

    • ๋ณธ๋ฌธ์€ ํ—ค๋”์˜ ๋นˆ์ค„ ๋‹ค์Œ์— ๋‚˜์˜จ๋‹ค. HTTP ๋ฉ”์‹œ์ง€๋Š” ๋ณธ๋ฌธ์— ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค.

4. TCP ์ปค๋„ฅ์…˜

HTTP ํ†ต์‹ ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” TCP ์ปค๋„ฅ์…˜์ด ํ•„์š”ํ•˜๋‹ค. ๊ทธ๋ฆฌ๊ณ  HTTP๋Š” ๋„คํŠธ์›Œํฌ ๊ฐœ๋…์—์„œ TCP ์œ„์˜ ๊ณ„์ธต์ด๋‹ค

image.webp

์œ„์™€ ๊ฐ™์ด ๋‹ค์–‘ํ•œ ๋„คํŠธ์›Œํฌ ๋ชจ๋ธ์ด ์žˆ๋Š”๋ฐ, ์ด์ค‘์—์„œ ์ตœ๊ทผ ์—…๋ฐ์ดํŠธ๋œ TCP/IP 5๊ณ„์ธต์„ ๊ธฐ์ค€์œผ๋กœ HTTP๊ฐ€ ์ „์†ก๋˜๋Š” ๊ณผ์ •์„ ํ‘œ๋กœ ์ •๋ฆฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

image.webp

๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ „์†ก ๊ณผ์ •์„ ๊ทธ๋ฆผ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

image.webp

์ž์„ธํžˆ ์„ค๋ช…ํ•˜์ž๋ฉด ์ปดํ“จํ„ฐ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ธ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ์˜ ๊ณผ์ •์„ ๊ฒช์„ ๊ฒƒ์ด๋‹ค.

  1. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ

  2. ์ „์†ก๊ณ„์ธต์—์„œ TCP/UDP ํ—ค๋”(ํฌํŠธ) ์ถ”๊ฐ€ (์„ธ๊ทธ๋จผํŠธ ์ƒ์„ฑ)

  3. ๋„คํŠธ์›Œํฌ ๊ณ„์ธต์—์„œ IP ํ—ค๋” ์ถ”๊ฐ€ (ํŒจํ‚ท ์ƒ์„ฑ)

  4. ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ๋ฉด ARP ํ…Œ์ด๋ธ”์„ ํ™•์ธํ•˜์—ฌ ๋ชฉ์ ์ง€ IP์˜ MAC ์ฃผ์†Œ ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธํ•˜๊ณ , ์—†์œผ๋ฉด ARP๋ฅผ ํ†ตํ•ด ๋ชฉ์ ์ง€ IP ARP ํ…Œ์ด๋ธ” ๊ฐฑ์‹ .

  5. ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ๋ฉด ARP ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ๊ฒŒ์ดํŠธ์›จ์ด(๋‹ค์Œ ํ™‰)์˜ MAC ์ฃผ์†Œ ๋ฐ›์•„์„œ ์‚ฌ์šฉ

  6. ARP ํ…Œ์ด๋ธ”์—์„œ ๋‹ค์Œ ํ™‰ MAC ์ฃผ์†Œ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ด๋”๋„ท ํ—ค๋” ์ถ”๊ฐ€(ํ”„๋ ˆ์ž„ ์ƒ์„ฑ)

  7. ๋žœ์นด๋“œ๋กœ ํ”„๋ ˆ์ž„ ์ „๋‹ฌ

  8. ๋žœ์นด๋“œ๋Š” ๋‹ค์Œ ํ™‰ MAC์ฃผ์†Œ๋กœ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ.

  9. ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ์ค‘ ๋ชฉ์ ์ง€ ์ฃผ์†Œ IP๊ฐ€ ARP ํ…Œ์ด๋ธ”์— ์กด์žฌํ•˜๋Š” ๋ผ์šฐํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋ฉด ํ•ด๋‹น ip์— ์ตœ์ข…์ ์œผ๋กœ ์ „์†ก.

ํ•˜์ง€๋งŒ ํด๋ผ์ด์–ธํŠธ๋Š” ์œ„ ๊ณผ์ •์—์„œ ์„œ๋ฒ„ ip์ฃผ์†Œ๋ฅผ ์ฐพ์•„์•ผํ•˜๋Š”๋ฐ ๋ณดํ†ต ๋„๋ฉ”์ธ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์–ด๋–ป๊ฒŒ ๋„๋ฉ”์ธ ์ฃผ์†Œ๋กœ ip๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ์„๊นŒ?? ์˜ˆ๋ฅผ ๋“ค๋ฉด yooncarrot.com์˜ 443 ํฌํŠธ๋กœ https ํ†ต์‹ ์„ํ•ด์•ผํ•˜๋Š”๋ฐ yooncarrot.com์˜ ip์ฃผ์†Œ๋ฅผ ์•Œ์•„์•ผ ํ•ด๋‹น ์„œ๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ด๋Š” DNS๋ฅผ ํ†ตํ•ด ๋„๋ฉ”์ธ ์ฃผ์†Œ์— ํ•ด๋‹นํ•˜๋Š” ip์ฃผ์†Œ๋ฅผ ๋ฐ›์•„์˜ค๊ณ  ํ•ด๋‹น ip์ฃผ์†Œ๋กœ https ํ†ต์‹ ์„ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

5. HTTP ๋ฒ„์ „

HTTP๋Š” 0.9, 1.0, 1.1, 2.0, 3.0 ๊นŒ์ง€ ๋‚˜์˜ค๋ฉด์„œ ๊ณ„์† ๋ฐœ์ „ํ•˜๊ณ  ์žˆ๋‹ค. ํ˜„์žฌ๋Š” 3.0 ๊นŒ์ง€ ๋‚˜์˜จ ์ƒํƒœ์ด๋ฉฐ 1.1๊ณผ 2.0 ๋ฒ„์ „์ด ๊ฐ€์žฅ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค.

5.1 HTTP/0.9

HTTP/0.9๋Š” HTTP ํ”„๋กœํ† ํƒ€์ž…์ด๋‹ค. HTML ํŒŒ์ผ๋งŒ ์ „์†กํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ  GET ๋ฉ”์„œ๋“œ๋งŒ ์กด์žฌํ–ˆ๋‹ค.

5.2 HTTP/1.0

์ฒ˜์Œ์œผ๋กœ ๊ฐ€์žฅ ๋„๋ฆฌ ์“ฐ์ธ ๋ฒ„์ „์ด๋‹ค. ๋ฒ„์ „ ๋ฒˆํ˜ธ, Header, Method, MIME๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๊ณ  ์›นํŽ˜์ด์ง€ Form์œผ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ๋˜์—ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ธ‰๊ฒฉํ•˜๊ฒŒ WWW์ด ํŒฝ์ฐฝํ•˜๋ฉด์„œ keep-alive ์ปค๋„ฅ์…˜, ๊ฐ€์ƒ ํ˜ธ์ŠคํŒ… ์ง€์›, ํ”„๋ฝ์‹œ ์—ฐ๊ฒฐ ์ง€์› ๋“ฑ ๋งŽ์€ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.

keep-alive๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ„์˜ ์—ฌ๋Ÿฌ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ํ•˜๋‚˜์˜ tcp connection์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋งค ์š”์ฒญ๋งˆ๋‹ค connection์ด ์ด๋ฃจ์–ด์ง€๋Š” ๋น„์šฉ์„ ์ค„์—ฌ ๋” ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  connection์„ ๋Š์œผ๋ ค๋ฉด ํ—ค๋”์— Connection: close๋ฅผ ํฌํ•จ์‹œ์ผœ ๋Š์„ ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์—ˆ๋‹ค.(ํ•˜๋‚˜์˜ ์‘๋‹ต์ด ๋Šฆ์–ด์ง€๋ฉด ์ดํ›„์˜ ์‘๋‹ต์ด ๋Šฆ์–ด์ง€๋Š” ํ˜„์ƒ์€ HOL blocking์ด๋ผ๊ณ  ํ•œ๋‹ค.)

5.3 HTTP/1.1

HTTP/1.1์€ HTTP ์„ค๊ณ„์˜ ๊ตฌ์กฐ์  ๊ฒฐํ•จ ๊ต์ •, ๋‘๋“œ๋Ÿฌ์ง„ ์„ฑ๋Šฅ ์ตœ์ ํ™”, ์ž˜๋ชป๋œ ๊ธฐ๋Šฅ ์ œ๊ฑฐ์— ์ง‘์ค‘๋˜์—ˆ๊ณ  ๋” ๋ณต์žกํ•ด์ง„ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ๋ฅผ ์ง€์›ํ•œ๋‹ค.

keep-alive ๊ธฐ๋Šฅ์„ default๋กœ ๋ณ€๊ฒฝํ•˜์˜€๊ณ  ํŒŒ์ดํ”„๋ผ์ด๋‹ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.

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

5.4 HTTP/2.0

HTTP/2.0์€ ๋ฐ์ดํ„ฐ๋ฅผ header์™€ body๋ฅผ frame์ด๋ผ๋Š” ๋ฐ์ดํ„ฐ ๋‹จ์œ„๋กœ ๋งŒ๋“ค์–ด text๊ฐ€ ์•„๋‹Œ binaryํ™” ํ•˜์—ฌ steamํ™” ํ•˜์—ฌ ๋ณด๋‚ธ๋‹ค. ๊ทธ๋ฆฌ๊ณ  multiplexing(๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ)์ด๋ผ๋Š” ๊ธฐ๋Šฅ๊ณผ Server Push๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.

HTTP/2.0์€ ์š”์ฒญ๋งˆ๋‹ค ํ—ค๋”๋ฅผ 1๊ฐœ๋‚˜ 2๊ฐœ์˜ header frame๊ณผ 0๊ฐœ ์ด์ƒ์˜ data frame์œผ๋กœ ๋‚˜๋ˆ„์–ด 1๊ฐœ์˜ stream์œผ๋กœ ๋งŒ๋“ค์–ด ๋ณด๋‚ธ๋‹ค.

multiplexing(๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ)์€ HOL(Head of Line) Blocking๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ ์ž ์ƒ๊ธด ๊ธฐ๋Šฅ์ด๋‹ค. frame ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋ฉด์„œ 3๊ฐœ์˜ ์š”์ฒญ์ด ์žˆ์„ ๊ฒฝ์šฐ ๊ผญ ์ˆœ์„œ๋Œ€๋กœ Header๋ฅผ ๋ณด๋‚ด์ง€ ์•Š๊ณ  3๋ฒˆ์งธ ์š”์ฒญ์˜ Header๋ณด๋‹ค 2๋ฒˆ์งธ ์š”์ฒญ์˜ Header frame์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์š”์ฒญ ์ˆœ์„œ์— ๋”ฐ๋ผ ์‘๋‹ต์ด ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ํ˜„์ƒ์„ ๊ฐœ์„ ํ–ˆ๋‹ค.
๋ฌผ๋ก  Application Layer์—์„œ๋Š” ๊ทน๋ณต๋˜์—ˆ์ง€๋งŒ TCP Connection์—์„œ frame์„ ์ฃผ๊ณ  ๋ฐ›์•˜๊ธฐ ๋•Œ๋ฌธ์— TCP์—์„œ ๋ฐœ์ƒํ•˜๋Š” HOL Blocking์„ ํ•ด๊ฒฐํ•  ์ˆœ ์—†์—ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ์ค‘๊ฐ„์— ์–ด๋–ค Header์˜ ํŒจํ‚ท ์†์‹ค์ด ์žˆ์—ˆ๋‹ค๋ฉด ํ•ด๋‹น ์†์‹ค๋œ ํŒจํ‚ฌ์ด ์˜ฌ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ๊ทธ ๋’ค์— ๋ฐ›์•„์•ผํ•  ๋ฐ์ดํ„ฐ๋“ค์€ ์—ฌ์ „ํžˆ ๊ธฐ๋‹ค๋ ค์•ผํ•œ๋‹ค. Application Layer์—์„œ์˜ HOL Blocking์€ ํ•ด๊ฒฐํ–ˆ์ง€๋งŒ Transport Layer์—์„œ์˜ HOL์€ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.

Server push๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ HTTP ์š”์ฒญํ•˜๊ธฐ ์ „์— ์„œ๋ฒ„๊ฐ€ ๋จผ์ € ํด๋ผ์ด์–ธํŠธ์— ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๊ฐ€ ๋ณด๋‚ธ ๋ฆฌ์†Œ์Šค๋ฅผ ์•Œ์ง€ ๋ชปํ•˜๊ณ  ๋‹ค์‹œ ์š”์ฒญํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ธฐ๋Šฅ์€ ์ œ๊ฑฐ๋˜์—ˆ๋‹ค.

5.5 HTTP/3.0

HTTP/3.0์—์„œ๋Š” Transport Layer์—์„œ HOL Blocking ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ TCP์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  UDP์— ๊ธฐ๋ฐ˜ํ•œ QUIC ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ TCP์— ๊ธฐ๋ฐ˜ํ•œ Stream๋“ค์ด UDP์— ๊ธฐ๋ฐ˜ํ•œ QUIC ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์ŠคํŠธ๋ฆผ์ด ๋…๋ฆฝ์ ์ด๊ฒŒ ๋˜์—ˆ๋‹ค. Connection์„ ๋งบ๋Š”๋ฐ 0์ดˆ์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ฒŒ ๋˜์—ˆ๋‹ค.

QUIC ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด์„œ ๊ฐ ์š”์ฒญ Stream์ด ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. ์‰ฝ๊ฒŒ ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋ชจ๋“  ์š”์ฒญ๋“ค์„ 1๊ฐœ์˜ ํŒŒ์ดํ”„๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๋ณด๋‚ด์•ผ ํ–ˆ๋‹ค๋ฉด, QUIC ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๊ฐ ์š”์ฒญ์˜ ๊ฐœ์ˆ˜๋งŒํผ์˜ ํŒŒ์ดํ”„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ๋œ ๊ฒƒ์ด๋‹ค. ์ฆ‰ ํŒจํ‚ท์„ 1๊ฐœ์˜ ํŒŒ์ดํ”„๊ฐ€ ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ ํŒŒ์ดํ”„๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

QUIC ํ”„๋กœํ† ์ฝœ์€ TCP์™€ TLS ์œ„์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š๊ณ  QUIC์—์„œ ํ†ตํ•ฉ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ง€์—ฐ์ด ๋งค์šฐ ์ ๋‹ค. QUIC์€ UDP๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ TLS 1.3์ด ๋‚ด์žฅ๋˜์–ด ํ•œ ๋ฒˆ ์—ฐ๊ฒฐ๋œ ์„œ๋ฒ„์— ๋Œ€ํ•ด์„œ๋Š” ์žฌ์—ฐ๊ฒฐ์‹œ 0-RTT(0 Round Trip Time)๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰ ํ•ธ๋“œ์…ฐ์ดํฌ ์—†์ด ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์–ด์„œ 0-RTT๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.