HTTP & HTTPS


HyperText Transfer Protocol

  • ์ธํ„ฐ๋„ท ์ƒ์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๋ฐฉ์‹

  • ์›น ์ƒ์—์„œ ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ํ”„๋กœํ† ์ฝœ

  • ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์‚ฌ์ด์˜ ์š”์ฒญ/์‘๋‹ต ํ”„๋กœํ† ์ฝœ

HTTP

  • ์›๋ž˜๋Š” TCP ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ http/3๋ถ€ํ„ฐ UDP(QUIC) ์‚ฌ์šฉ

  • ํฌํŠธ๋ฒˆํ˜ธ๋Š” 80

  • ์›น๋ธŒ๋ผ์šฐ์ €๊ฐ€ http๋กœ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ html์ด๋‚˜ ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๋ฉด ์„œ๋ฒ„๊ฐ€ ์ด์— ๋Œ€ํ•ด ์‘๋‹ต์œผ๋กœ ์ •๋ณด๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „๋‹ฌ

  • http:๋กœ ์‹œ์ž‘ํ•˜๋Š” url๋กœ ์กฐํšŒ

HTTP ๋ฉ”์„ธ์ง€

  • ์ตœ์ดˆ์—” get๋ฉ”์†Œ๋“œ๋งŒ ์กด์žฌํ•˜๊ณ  ์‘๋‹ต์€ ๋ฌด์กฐ๊ฑด html๋กœ๋งŒ, ์š”์ฆ˜์€ ์ข…๋ฅ˜๋ฅผ ๊ฐ€๋ฆฌ์ง€ ์•Š๋Š”๋‹ค

  • ์š”์ฒญ๊ณผ ์‘๋‹ต์€ ํ‰๋ฌธ(์•„์Šคํ‚ค) ๋ฉ”์„ธ์ง€๋กœ ์ด๋ฃจ์–ด์ง

  • ๋ฉ”์„ธ์ง€๋Š” ์š”์ฒญ ๋‚ด์šฉ + ํ—ค๋” + ๋นˆ์ค„ + ๋ฐ”๋””

    • ์š”์ฒญ ๋ฉ”์„ธ์ง€๋Š” ๋ฉ”์„œ๋“œ+์š”์ฒญurl+http๋ฒ„์ „ + ํ—ค๋” + ๋ฐ”๋””

    • ์‘๋‹ต ๋ฉ”์„ธ์ง€๋Š” ๋ฒ„์ „+์ƒํƒœ์ฝ”๋“œ+์ƒํƒœ์„ค๋ช… + ํ—ค๋” + ๋ฐ”๋””

  • http ๋ฉ”์†Œ๋“œ ์ข…๋ฅ˜(์š”์ฒญ ๋ฐฉ์‹)๋กœ๋Š” get(์š”์ฒญ), head, post(์ƒ์„ฑ), put(๋ณ€๊ฒฝ), delete(์‚ญ์ œ), connect, options, trace, patch๊ฐ€ ์žˆ๋‹ค

๋ฉ”์†Œ๋“œ ์ข…๋ฅ˜
์„ค๋ช…

GET

์„œ๋ฒ„์— ๋ฆฌ์†Œ์Šค ์š”์ฒญ

HEAD

์„œ๋ฒ„์—์„œ ์–ด๋–ค ๋ฌธ์„œ์— ๋Œ€ํ•ด ํ—ค๋”๋งŒ ์š”์ฒญ

POST

์„œ๋ฒ„๊ฐ€ ์ฒ˜๋ฆฌํ•  ๋ฐ์ดํ„ฐ ๋ณด๋‚ด๊ธฐ

PUT

์„œ๋ฒ„์— ์š”์ฒญ ๋ฉ”์„ธ์ง€์˜ ๋ณธ๋ฌธ ์ €์žฅ

TRACE

๋ฉ”์„ธ์ง€๊ฐ€ ์–ด๋–ค ํ”„๋ก์‹œ๋ฅผ ๊ฑฐ์ณ ์„œ๋ฒ„์— ๋„์ฐฉํ•˜๋Š”์ง€ ๊ณผ์ •

OPTIONS

์„œ๋ฒ„๊ฐ€ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์†Œ๋“œ ํ™•์ธ

DELETE

์„œ๋ฒ„์—์„œ ๋ฌธ์„œ ์ œ๊ฑฐ

  • ์ƒํƒœ์ฝ”๋“œ ์ข…๋ฅ˜ : ex) 200 OK, 400 Bad Request, 404 Not Found

  • ๊ฐ๊ฐ์˜ ๋ฐ์ดํ„ฐ ์š”์ฒญ์ด ์„œ๋กœ ๋…๋ฆฝ์ ์œผ๋กœ ๊ด€๋ฆฌ

connectless์™€ stateless

  • ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•˜๊ณ  ์š”์ฒญํ•ด์„œ ์‘๋‹ต์„ ๋ฐ›์œผ๋ฉด ์—ฐ๊ฒฐ์„ ๋Š๋Š”๋‹ค (๋ฐ˜๋ก€. FTP, Telnet)

  • ์—ฐ๊ฒฐ์„ ์ตœ์†Œํ•œ์œผ๋กœ ์œ ์ง€ํ•˜์—ฌ ๋งŽ์€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒํ•˜์ง€๋งŒ ํด๋ผ์ด์–ธํŠธ์˜ ์ด์ „ ์ƒํƒœ๋ฅผ ๋ชฐ๋ผ http์—์„  ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉ

  • ์ฟ ํ‚ค - ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ์ •๋ณด ์กฐ๊ฐ

HTTP3

TCP๋กœ ํ†ต์‹ ํ•˜๋˜ ๊ธฐ์กด์˜ HTTP/1๊ณผ HTTP/2์™€ ๋‹ฌ๋ฆฌ UDP ๊ธฐ๋ฐ˜์˜ QUIC(Quick UDP Internet Connection) ํ”„๋กœํ† ์ฝœ๋กœ ํ†ต์‹  ํ•˜๋‚˜์˜ ์š”์ฒญ์‘๋‹ต๋งˆ๋‹ค ํ•˜๋‚˜์˜ tcp ์—ฐ๊ฒฐ์ด ํ•„์š”ํ•ด ๋งŽ์€ ํ•ธ๋“œ์…ฐ์ดํฌ๊ฐ€ ํ•„์š”ํ•˜๋˜ ๊ธฐ์กด ๋ฒ„์ „์—์„œ udp๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์„œ ํ•ธ๋“œ์…ฐ์ดํฌ ๊ณผ์ •์„ ์—†์• ๊ณ  ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ์—ฐ๊ฒฐ์˜ ์‹ ๋ขฐ์„ฑ์„ ํ™•๋ณด ๋˜ํ•œ ํŒจํ‚ท ์†์‹ค ๋•Œ์˜ ์˜ค๋ฒ„ํ—ค๋“œ๋„ ํผ ์žฅ์  : Zero RTT - ๊ธฐ๋ณธ TCP ์—ฐ๊ฒฐ์ด 1RTT + tls๋ฅผ ์ด์šฉํ•œ ์•”ํ˜ธํ™”๋ฅผ ์œ„ํ•œ tls ํ•ธ๋“œ์…ฐ์ดํฌ 2RTT์—์„œ ์ฒซ ์—ฐ๊ฒฐ ์„ค์ • ๋•Œ 1RTT ์ดํ›„๋Š” ์บ์‹œ ํ™œ์šฉ (tls 1.3๋ถ€ํ„ด ๋น„์Šทํ•œ ์„ฑ๋Šฅ ๊ฐ€๋Šฅ) ํŒจํ‚ท ์†์‹ค์— ๋Œ€ํ•œ ๋น ๋ฅธ ๋ฐ˜์‘ - ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ(์—ฌ๋Ÿฌ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋‚˜๋ˆ„์–ด ํŒจํ‚ท ์†์‹ค์ด ๋ฐœ์ƒํ•ด๋„ ํ•ด๋‹น ์ŠคํŠธ๋ฆผ๋งŒ ์žฌ์ „์†ก, http2๋ถ€ํ„ฐ ์‚ฌ์šฉ), ํŒจํ‚ท๋งˆ๋‹ค ๊ณ ์œ  ํŒจํ‚ท ๋ฒˆํ˜ธ ๋ถ€์—ฌํ•˜์—ฌ ๋น ๋ฅธ ํŒจํ‚ท ์†์‹ค ๊ฐ์ง€ ์‚ฌ์šฉ์ž IP๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ ์—ฐ๊ฒฐ ์œ ์ง€ - ip์ฃผ์†Œ์™€ ํฌํŠธ๋กœ ์—ฐ๊ฒฐ์„ ์‹๋ณ„ํ•˜๋˜ tcp์™€ ๋‹ฌ๋ฆฌ ip์ฃผ์†Œ์™€๋Š” ๋ฌด๊ด€ํ•œ connection id๋ฅผ ์ด์šฉํ•˜์—ฌ ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์˜ ip๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด๋„ ์—ฐ๊ฒฐ์„ ์œ ์ง€ ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ ์ƒํƒœ๊ฐ€ ์ข‹์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ(wifi์—์„œ ์…€๋ฃฐ๋Ÿฌ๋กœ, ๋‹ค๋ฅธ wifi๋กœ ์ „ํ™˜)์—์„œ๋„ https์—ฐ๊ฒฐ์ด ์œ ์ง€๋˜์–ด ๋™์˜์ƒ์„ ๋Š๊น€ ์—†์ด ์‹œ์ฒญ ๊ฐ€๋Šฅํ•œ ์ •๋„์ด๋‹ค. ํŒจํ‚ท ์ „์†ก์— ์žˆ์–ด์„œ ์ œ์•ฝ์ด ๊ฑฐ์˜ ์—†๋Š” ๋น„์—ฐ๊ฒฐ์„ฑ ์ „์†ก ๊ณ„์ธต์„ ๊ธฐ๋ฐ˜์œผ๋กœ TCP ํ”„๋กœํ† ์ฝœ์˜ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ SSL์ด ์ด์‹๋จ์œผ๋กœ์จ ๋†’์€ ์„ฑ๋Šฅ๊ณผ ๊ดœ์ฐฎ์€ ์ •ํ™•์„ฑ๊ณผ ๋ถ€์ธ๋ฐฉ์ง€ ํŠน์„ฑ์„ ์ถฉ์กฑ TLS(Transport Layer Security = SSL(secure sockets layer)) ์•”ํ˜ธํ™” ์‚ฌ์šฉ(์ „์ž ์„œ๋ช…์ด ํฌํ•จ๋œ ์ธ์ฆ์„œ, ๋‚ด์šฉ ์•”ํ˜ธํ™”)

HyperText Transfer Protocol over Security socket layer

  • ์›”๋“œ ์™€์ด๋“œ ์›น ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์ธ http์˜ ๋ณด์•ˆ ๊ฐ•ํ™” ๋ฒ„์ „

  • ํ†ต์‹ ์˜ ์ธ์ฆ๊ณผ ์•”ํ˜ธํ™”๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ํ†ต์‹ ํ•˜๋Š” ์ •๋ณด๋ฅผ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋งŒ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ์•”ํ˜ธํ™”, ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์ดํŠธ์ธ์ง€ ๋ณด์žฅ

  • ์†Œ์ผ“ ํ†ต์‹ ์—์„œ ์ผ๋ฐ˜ ํ…์ŠคํŠธ ๋Œ€์‹  ssl์ด๋‚˜ tls ํ”„๋กœํ† ์ฝœ๋กœ ์„ธ์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”

  • ํฌํŠธ๋Š” 443

  • ์›น ๋ธŒ๋ผ์šฐ์ €์˜ ๊ตฌํ˜„ ์ •ํ™•๋„์™€ ์„œ๋ฒ„ ์†Œํ”„ํŠธ์›จ์–ด, ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋”ฐ๋ผ ๋ณดํ˜ธ ์ˆ˜์ค€์ด ๋‹ค๋ฆ„

htttps์˜ ํ†ต์‹ ๋ฐฉ๋ฒ•

  • ๋Œ€์นญํ‚ค ๋ฐฉ์‹

    • ์•”ํ˜ธํ™”์™€ ๋ณตํ˜ธํ™”์— ๋™์ผํ•œ ํ‚ค ์‚ฌ์šฉ

    • http๋กœ ํ†ต์‹ ํ•  ๋•Œ ํ‚ค๊ฐ€ ๋…ธ์ถœ๋˜๋ฏ€๋กœ ์–‘์ชฝ์ด ๊ฐ™์€ ํ‚ค๋ฅผ ๋ณด์œ ํ•˜๋Š” ๊ฒƒ์ด ํž˜๋“ฆ

  • ๋น„๋Œ€์นญํ‚ค(๊ณต๊ฐœํ‚ค)

    • ์•”ํ˜ธํ™”์™€ ๋ณตํ˜ธํ™”์— ์„œ๋กœ ๋‹ค๋ฅธ ํ‚ค ์‚ฌ์šฉ

    • ๋‹ค๋ฅธ ์‚ฌ์ดํŠธ์˜ ๋ฉ”์„ธ์ง€๋ฅผ ์›ํ•˜๋Š” ์‚ฌ์ดํŠธ์˜ ํ‚ค๋กœ ๋ณตํ˜ธํ™”ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ https์˜ ๋‘๊ฐ€์ง€ ๊ธฐ๋Šฅ ๋ชจ๋‘ ์ง€์›

  • https์˜ ํ†ต์‹  ๋ฐฉ๋ฒ• - ํ•ธ๋“œ์…ฐ์ดํฌ

image
  • ๊ฐ€์žฅ ๋จผ์ € ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ๋žœ๋คํ•œ ๋ฉ”์„ธ์ง€(ClientHello)(tls๋ฒ„์ „, ์„œ๋ฒ„ ๋„๋ฉ”์ธ, ์„ธ์…˜ ์‹๋ณ„์ž, ์•”ํ˜ธ ์„ค์ •) ์ „์†ก

  • ์„œ๋ฒ„๋„ ๋žœ๋คํ•œ ๋ฉ”์„ธ์ง€(ServerHello)(tls๋ฒ„์ „, ์„ธ์…˜ ์‹๋ณ„์ž, ์•”ํ˜ธ ์„ค์ •)์™€ ํ•จ๊ป˜ ์„œ๋ฒ„ ์ธ์ฆ์„œ(Certificate)๋ฅผ ๋ณด๋‚ธ๋‹ค

  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด CA์— ์„œ๋ฒ„ ์ธ์ฆ์„œ ์ •๋ณด๋ฅผ ํ™•์ธํ•œ๋‹ค

    • CA์ธ์ฆ๋ฐ›์€(์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š”) ์„œ๋ฒ„์˜ ์ธ์ฆ์„œ๋Š” CA์˜ ๋น„๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™” ๋˜์–ด์žˆ์œผ๋ฏ€๋กœ ๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅ๋œ CA์˜ ๊ณต๊ฐœํ‚ค๋กœ ์„œ๋ฒ„ ์ธ์ฆ์„œ๋ฅผ ๋ณตํ˜ธํ™” ๊ฐ€๋Šฅ

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

  • ๊ฐ๊ฐ ์ž„์‹œํ‚ค๋ฅผ ์ด์šฉํ•˜์—ฌ ์„ธ์…˜ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์•ž์œผ๋กœ์˜ ํ†ต์‹ ์˜ ๋Œ€์นญํ‚ค๋กœ ์‚ฌ์šฉํ•œ๋‹ค

    • ๋ชจ๋“  ๋ฉ”์„ธ์ง€๋ฅผ ๋น„๋Œ€์นญํ‚ค๋ฅผ ์ด์šฉํ•˜์—ฌ ์•”ํ˜ธํ™”ํ•˜๊ณ  ๋ณตํ˜ธํ™”ํ•˜๋ฉด ์ข‹๊ฒ ์ง€๋งŒ ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋ฏ€๋กœ ๋ฉ”์„ธ์ง€๋Š” ๋Œ€์นญํ‚ค๋กœ ์•”ํ˜ธ๋ณตํ˜ธ

Last updated