HTTP / HTTPS

niireymikยท2024๋…„ 1์›” 15์ผ
0

๐Ÿ’ก
1990๋…„ ์›น์ด ์ด ์„ธ์ƒ์— ์ฒ˜์Œ ๋“ฑ์žฅํ–ˆ์„ ๋•Œ, ์›น์„ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ๋Š” ํฌ๊ฒŒ ๋„ค ๊ฐ€์ง€์˜€๋‹ค. ์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“œ๋Š” ์ปดํ“จํ„ฐ ์–ธ์–ด์ธ HTML, ์›ํ•˜๋Š” ์›น ํŽ˜์ด์ง€์— ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ์ฃผ์†Œ ์ฒด๊ณ„์ธ URL, ๊ทธ๋ฆฌ๊ณ  ์›น ํŽ˜์ด์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ์†Œํ”„ํŠธ์›จ์–ด์ธ Web browser/server, ๊ทธ๋ฆฌ๊ณ  'ํ†ต์‹  ๊ทœ์น™'์ด์ž ์˜ค๋Š˜์˜ ์ฃผ์ œ์ธ HTTP์ด๋‹ค. HTTP๊ฐ€ ๋ฌด์—‡์ธ์ง€, ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€๋ถ€ํ„ฐ, ๋ฐœ์ „ ๊ณผ์ •, ์ž‘๋™ ๋ฐฉ์‹, ๊ทธ๋ฆฌ๊ณ  HTTPS์˜ ๊ฐœ๋…๊ณผ ์‚ฌ์šฉ ์ด์œ ๊นŒ์ง€ ์ฐจ๊ทผ์ฐจ๊ทผ ํ†บ์•„๋ณด๋„๋ก ํ•˜์ž!



๐Ÿ“Œ HTTP๋ž€?

ํ•˜์ดํผํ…์ŠคํŠธ ์ „์†ก ํ”„๋กœํ† ์ฝœ(HyperText Transfer Protocol)์˜ ์•ฝ์ž๋กœ, ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ธํ„ฐ๋„ท์ƒ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ์„ ๋งํ•œ๋‹ค.

(+)
์„œ๋ฒ„-์„œ๋ฒ„, ํด๋ผ์ด์–ธํŠธ-ํด๋ผ์ด์–ธํŠธ ๊ฐ„์˜ ํ†ต์‹ (์š”์ฒญ๊ณผ ์‘๋‹ต)๋„ ์ด๋ฃจ์–ด์ง„๋‹ค. ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด์—์„œ๋งŒ ํ†ต์‹ ์ด ์ด๋ฃจ์–ด์ง„๋‹ค๊ณ  ๋‹จ์ •์ง“์ง€ ์•Š๋„๋ก ํ•˜์ž.

ํ•˜์ดํผํ…์ŠคํŠธ์™€ ํ”„๋กœํ† ์ฝœ?
Hypertext : ์ฐธ์กฐ(ํ•˜์ดํผ๋งํฌ)๋ฅผ ํ†ตํ•ด ๋…์ž๊ฐ€ ํ•œ ๋ฌธ์„œ์—์„œ ๋‹ค๋ฅธ ๋ฌธ์„œ๋กœ ์ฆ‰์‹œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ํ…์ŠคํŠธ์ด๋‹ค.
Protocol : ์ปดํ“จํ„ฐ์—์„œ ๋ฐ์ดํ„ฐ์˜ ๊ตํ™˜ ๋ฐฉ์‹์„ ์ •์˜ํ•˜๋Š” ๊ทœ์น™ ์ฒด๊ณ„์ด๋‹ค. ๐Ÿ‘‰ ์‰ฝ๊ฒŒ ๋งํ•ด, ์‚ฌ๋žŒ๋“ค์ด ๋ง, ๊ธ€ ๋“ฑ์œผ๋กœ ์„œ๋กœ ์†Œํ†ตํ•˜๋“ฏ์ด ํ”„๋กœ๊ทธ๋žจ๋„ ์ •ํ•ด๋‘” ๊ทœ๊ฒฉ์„ ๊ฐ€์ง€๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š”๋ฐ, ์ด๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ†ต์‹  ๊ทœ์•ฝ์ด ๋ฐ”๋กœ ํ”„๋กœํ† ์ฝœ์ด๋‹ค :>

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

HTTP์˜ ํŠน์ง•

  • HTTP ๋ฉ”์‹œ์ง€๋Š” HTTP ์„œ๋ฒ„์™€ HTTP ํด๋ผ์ด์–ธํŠธ์— ์˜ํ•ด ํ•ด์„๋œ๋‹ค.

  • TCP / IP๋ฅผ ์ด์šฉํ•˜๋Š” ์‘์šฉ ํ”„๋กœํ† ์ฝœ์ด๋‹ค.

  • HTTP๋Š” ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” ๋น„์—ฐ๊ฒฐ์„ฑ(Connectionless) ํ”„๋กœํ† ์ฝœ์ด๋ฉฐ, ์ƒํƒœ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” Stateless ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต ํ›„ ํด๋ผ์ด์–ธํŠธ์™€์˜ ์—ฐ๊ฒฐ์„ ๋Š์–ด๋ฒ„๋ ค, ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์ด์ „ ์ƒํ™ฉ์„ ์•Œ ์ˆ˜ ์—†๋‹ค.
    (์‡ผํ•‘๋ชฐ์—์„œ ๋ฌผ๊ฑด์„ ๊ณ ๋ฅด๊ณ  ๊ฒฐ์ œ๋ฅผ ํ•˜๋ ค๊ณ  ํ•  ๋•Œ, ๋ฌด์Šจ ๋ฌผ๊ฑด์„ ๊ณ ๋ฅธ์ง€ ๋ชฐ๋ผ ๊ฒฐ์ œ๋ฅผ ํ•  ์ˆ˜ ์—†์„ ์ˆ˜ ์žˆ๋‹ค.)
    โžก๏ธ ์ด๋Ÿฐ Stateless ํŠน์ง• ๋•Œ๋ฌธ์— ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ฟ ํ‚ค, ์„ธ์…˜, ํ† ํฐ๊ณผ ๊ฐ™์€ ๊ธฐ์ˆ ์ด ๋“ฑ์žฅํ–ˆ๋‹ค!๐Ÿช

  • HTTP๋Š” ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” ํ”„๋กœํ† ์ฝœ์ด๊ธฐ ๋•Œ๋ฌธ์— ์š”์ฒญ/์‘๋‹ต ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.



๐Ÿ“Œ HTTP์˜ ์—ญ์‚ฌ

HTTP/0.9

: ๊ฐ€์žฅ ์ดˆ๊ธฐ์— WWW(World Wide Web)์ด ๋งŒ๋“ค์–ด์ง€๋ฉด์„œ ํ•จ๊ป˜ ๋“ฑ์žฅํ•œ HTTP์ด๋‹ค. ์ด๋Š” ํ†ต์‹ ์— ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์˜ ๊ธฐ๋Šฅ๋งŒ ๊ฐ–์ถ”๊ณ  ์žˆ์—ˆ๋‹ค. GET /mypage.html ๊ณผ ๊ฐ™์ด ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•œ๋‹ค๋Š” ๋ณธ๋ฌธ์„ ๋ณด๋‚ด๋ฉด

<HTML>
A very simple HTML page
</HTML>

์ด๋ ‡๊ฒŒ ๊ฒฐ๊ณผ ์ž์ฒด๋ฅผ ๋ณธ๋ฌธ์— ๋‹ด์•„ ์‘๋‹ตํ–ˆ๋‹ค. ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ ์‘๋‹ต ๋ฉ”์‹œ์ง€์˜ ๋ณธ๋ฌธ์— ์—๋Ÿฌ๋ฅผ ์ ์–ด ๋ณด๋ƒˆ๋‹ค.

HTTP/1.0

: ์šฐ๋ฆฌ๊ฐ€ ์ตํžˆ ์•Œ๊ณ  ์žˆ๋Š”, ๊ฐ ์žก๊ณ  ๋ฌธ์„œํ™”๋œ ํ˜•ํƒœ์˜ HTTP๊ฐ€ ๋‚˜ํƒ€๋‚ฌ๋‹ค. ์ด๋Š” ํ˜„์žฌ HTTP ํ”„๋กœํ† ์ฝœ์˜ ๊ฐ€์žฅ ๊ธฐ์ดˆ๊ฐ€ ๋œ๋‹ค. ์•„๋ž˜๋Š” ์š”์ฒญ์˜ ์˜ˆ์‹œ์ด๋‹ค.

GET /mypage.html HTTP/1.0
User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)

์ด์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ์˜ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

200 OK
Date: Tue, 15 Nov 1992 08:12:31 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/html
<HTML>
A page with an image
	<IMG SRC=" /myimage.gif">
</HTML>

์ด๋ ‡๊ฒŒ ๋ณธ๋ฌธ ์ด์™ธ์— ํ…์ŠคํŠธ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๋Š”๋ฐ, ์ด๊ฒƒ์ด HTTP/1.0๋ถ€ํ„ฐ ์ƒˆ๋กญ๊ฒŒ ๋“ฑ์žฅํ•œ ํ—ค๋”(Header)์ด๋‹ค. ํ—ค๋”๋Š” ํ•ด๋‹น ๋ฉ”์‹œ์ง€์˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ์—ญํ• ๋กœ, ์ด๋งŒ ์ฝ์–ด๋„ ์ด ๋ฉ”์‹œ์ง€์˜ ๋Œ€๋žต์  ์˜๋ฏธ๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์šฐ๋ฆฌ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ ์™”๋Š”์ง€, ์ง€๊ธˆ ๋ฐ›๋Š” ๋ฌธ์„œ์˜ ํƒ€์ž…์€ ์–ด๋–ค์ง€ ๋“ฑ์„ ํ™•์ธํ•˜๊ณ  ์ด์— ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.
โ—๊ทธ๋Ÿฌ๋‚˜ ๋†€๋ž๊ฒŒ๋„, 1.0์€ ๋ถ„์‚ฐ๋œ ๊ธฐ๋Šฅ๋“ค์„ ํ•˜๋‚˜๋กœ ์ •๋ฆฌํ–ˆ์„ ๋ฟ ๊ณต์‹์ ์ธ ํ‘œ์ค€์€ ์•„๋‹ˆ์—ˆ๋‹ค.

HTTP/1.1

: 1.0๊ณผ ํฐ ๋งฅ๋ฝ์€ ๋™์ผํ•˜๋‚˜, ์ผ๋ถ€ ๋ชจํ˜ธํ–ˆ๋˜ ๊ธฐ๋Šฅ๋“ค์ด ๊ฐœ์„ ๋˜๋ฉฐ ์ง„์ •ํ•œ ํ‘œ์ค€์œผ๋กœ ์ž๋ฆฌ๋งค๊น€ํ•œ ๋ฒ„์ „์ด๋‹ค.

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

TCP : (IP๊ฐ€ ์ •ํ•œ ์ฃผ์†Œ๋กœ ๋ณด๋‚ด๋Š” ๋ฐ์— ์ง‘์ค‘ํ•œ ๊ทœ์•ฝ์ด๋ผ๋ฉด) ๋ฐ์ดํ„ฐ๊ฐ€ ์ •ํ™•ํ•˜๊ฒŒ ๋“ค์–ด์™”๋Š”์ง€์— ์ง‘์ค‘ํ•˜๋Š” ๊ทœ์•ฝ, ์ฆ‰ ์•ˆ์ •์ ์ธ ๋ฐ์ดํ„ฐ ์ „์†ก[์‹ ๋ขฐ์ ์ธ ์ „์†ก]์„ ๋‹ด๋‹นํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด Trandsmission Control Protocol์ด๋‹ค.
3-way handshake : ์ง์—ญํ•˜๋ฉด '์„ธ ๋ฐฉ๋ฒ•์˜ ์•…์ˆ˜'์ธ๋ฐ, ์„ธ ๋ฒˆ์˜ ํ•‘ํ์„ ๊ฑฐ์ณ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋Š” ์ชฝ๊ณผ ๋ฐ›๋Š” ์ชฝ ๋‘˜ ๋‹ค ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. [์—ฐ๊ฒฐํ•ด๋„ ๋ ๊นŒ์š”? - ๋„ค! ์ €๋„ ์—ฐ๊ฒฐํ•ด๋„ ๋ ๊นŒ์š”? - ๋„ค ์ข‹์•„์š”!]

์ด๋Ÿฌํ•œ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํƒ„์ƒํ•œ HTTP/1.1์—์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ํšจ๊ณผ์ ์œผ๋กœ ํ†ต์‹  ์†๋„๋ฅผ ๊ฐœ์„ ํ•˜๊ฒŒ ๋œ๋‹ค.

  1. persist connections : ํ•œ ๋ฒˆ TCP ์—ฐ๊ฒฐ์„ ๋งบ์œผ๋ฉด ๋Š์ง€ ์•Š๊ณ  ๊ณ„์† ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ ๊ฒƒ
  2. pipelining : (์ด์ „ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์ด ๋„์ฐฉํ•ด์•ผ๋งŒ ๋‹ค์Œ ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์–ด์•ผ ํ–ˆ๋˜ 1.0๊ณผ ๋‹ค๋ฅด๊ฒŒ) ์ด์ „ ์‘๋‹ต๊ณผ ์ƒ๊ด€์—†์ด ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ํ†ต์‹  ์†๋„๋ฅผ ๋”์šฑ ๋†’์ธ ๊ฒƒ

SPDY(์Šคํ”ผ๋””)

: Google์—์„œ ๋ฐœํ‘œํ•œ ์ƒˆ ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ์ด๋ฆ„์—์„œ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ๋“ฏ, HTTP/1.1์˜ ์„ฑ๋Šฅ ์ œํ•œ์„ ํ•ด๊ฒฐํ•˜๊ณ  ์›น ํŽ˜์ด์ง€์˜ ๋กœ๋“œ ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ๋‹ค. ์ด SPDY์˜ ๋ฐœํ‘œ๋ฅผ ํฅ๋ฏธ๋กญ๊ฒŒ ๋ณธ HTTP ๊ด€๊ณ„์ž(HTTP Working Group)๋Š” SPDY๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ HTTP ๋ฒ„์ „์„ ๋งŒ๋“ค์–ด๋ณด์ง€ ์•Š๊ฒ ๋ƒ๋Š” ์ œ์•ˆ์„ ํ–ˆ๋‹ค. ์ด๋Š” ์„ฑ์‚ฌ๋˜์—ˆ๊ณ , ๋‹ค์Œ์˜ HTTP/2๊ฐ€ ํƒ„์ƒํ•œ๋‹ค.

HTTP/2

: SPDY๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ HTTP/1.1์—์„œ '์„ฑ๋Šฅ, ์†๋„'๋ฅผ ๊ฐœ์„ ํ•œ HTTP์ด๋‹ค. ์ด ๋ฒ„์ „์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ๋“ค์ด ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.

  • ์ด์ „์˜ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ๋Œ€๊ธฐํ•˜์ง€ ์•Š๊ณ ๋„ ๋’ค์˜ ์‘๋‹ต์„ ๋จผ์ € ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
  • ํ•œ ๋ฒˆ์˜ ์š”์ฒญ๋งŒ์œผ๋กœ๋„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์‘๋‹ต์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ(Multiplexed Streams)
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•˜์ง€ ์•Š์•„๋„ ์„œ๋ฒ„์—์„œ ๋ฏธ๋ฆฌ ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๋“ค์„ ํ‘ธ์‹œํ•จ (Server Push)

์ด๋ฅผ ๊ฐ€๋Šฅ์ผ€ ํ•œ HTTP/2์˜ ํ•ต์‹ฌ์ด ๋ฐ”๋กœ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ”„๋ ˆ์ด๋ฐ(binary framing)์ด๋‹ค. (์šฐ๋ฆฌ๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ํ…์ŠคํŠธ ํ˜•์‹์ด์—ˆ๋˜ HTTP ๋ฉ”์‹œ์ง€๋ฅผ ๋” ์ž‘์€ ๋‹จ์œ„๋กœ ์ชผ๊ฐœ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ์บก์Šํ™”ํ•œ ๊ฒƒ. ๊ฐ™์€ ๋ฉ”์‹œ์ง€๋ผ๋„ ๋” ์ž‘๊ฒŒ ์ชผ๊ฐœ์„œ ํšจ์œจ์ ์œผ๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค!)

HTTP/3

: HTTP/2์˜ ๊ณ ์งˆ์ ์ธ ๋ฌธ์ œ(์˜ค๋ž˜๋œ ํ”„๋กœํ† ์ฝœ์ธ TCP ์œ„์—์„œ ๋™์ž‘ํ•˜๊ณ  ์žˆ์—ˆ์Œ)๋ฅผ ํ•ด๊ฒฐํ•œ ํ”„๋กœํ† ์ฝœ : QUIC์„ ์‚ฌ์šฉํ•œ ์ฐจ์„ธ๋Œ€ ํ”„๋กœํ† ์ฝœ์ด๋‹ค. TCP์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๋„๋ก ๋งŒ๋“  ํ”„๋กœํ† ์ฝœ์ธ QUIC์€ TCP๊ฐ€ ์•„๋‹Œ UDP ์œ„์—์„œ ๋™์ž‘ํ•œ๋‹ค.

UDP๋ž€?
UDP๋Š” ๋น„์—ฐ๊ฒฐํ˜• ์„œ๋น„์Šค๋กœ์„œ, ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๊ณ  ํ•ด์ œํ•˜๋Š” ๊ณผ์ •์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋กœ ๋…๋ฆฝ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ํŒจํ‚ท์— ์ˆœ์„œ๋ฅผ ๋ถ€์—ฌํ•ด ์žฌ์กฐ๋ฆฝํ•œ๋‹ค. TCP๋ณด๋‹ค ์†๋„๊ฐ€ ๋น ๋ฅด๋ฉฐ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜๊ฐ€ ์ ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ „์†ก์„ ๋ณด์žฅํ•˜์ง€๋Š” ๋ชปํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์‹ ๋ขฐ์„ฑ๋ณด๋‹ค๋Š” ์—ฐ์†์„ฑ์ด ์ค‘์š”ํ•œ ์„œ๋น„์Šค(Ex. ์‹ค์‹œ๊ฐ„ ์„œ๋น„์Šค(streaming))์— ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค.
๐Ÿ‘‰ ๋‹ค์‹œ ๋งํ•ด, ๋ฐ์ดํ„ฐ๊ฐ€ ์ž˜๋ชป ๊ฐ”๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์ž‘์—…์€ ์ƒ๋žตํ•˜๊ณ  ๊ณ„์†ํ•ด์„œ ๋ณด๋‚ธ๋‹ค. ์ด๋กœ์จ ์—ฐ์†์„ฑ์— ์ดˆ์ ์„ ๋งž์ถ˜ ๊ฒƒ์ด UDP์ด๋‹ค. ์˜์ƒ ์ŠคํŠธ๋ฆฌ๋ฐ์ฒ˜๋Ÿผ ์‹ ๋ขฐ์„ฑ๋ณด๋‹ค ์—ฐ์†์„ฑ์ด ์ค‘์š”ํ•œ ๋ถ€๋ถ„์—์„œ (TCP ์œ„์—์„œ ๋™์ž‘ํ•˜๋Š” HTTP/2๋ณด๋‹ค๋Š”) UDP ์œ„์—์„œ ๋™์ž‘ํ•˜๋Š” HTTP/3๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.



๐Ÿ“Œ HTTP์˜ ๋™์ž‘ ๋ฐฉ์‹ : ์š”์ฒญ(Request)๊ณผ ์‘๋‹ต(Response)

HTTP๋Š” ์„œ๋ฒ„/ํด๋ผ์ด์–ธํŠธ ๋ชจ๋ธ์„ ๋”ฐ๋ฅธ๋‹ค.

  • ์„œ๋ฒ„ : ์–ด๋– ํ•œ ์ž๋ฃŒ์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋„คํŠธ์›Œํฌ ์ƒ์˜ ์‹œ์Šคํ…œ(์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ๋ณด๋‚ด์ค€๋‹ค.)
  • ํด๋ผ์ด์–ธํŠธ : ๊ทธ ์ž๋ฃŒ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ(Ex. ์›น ๋ธŒ๋ผ์šฐ์ €, ํ•ธ๋“œํฐ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋“ฑ)

: ํด๋ผ์ด์–ธํŠธ ์ฆ‰, ์‚ฌ์šฉ์ž๊ฐ€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด์„œ ์–ด๋– ํ•œ ์„œ๋น„์Šค url์„ ํ†ตํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๊ฒƒ์„ ํ†ตํ•ด์„œ ์š”์ฒญ(request)์„ ํ•˜๋ฉด ์„œ๋ฒ„์—์„œ๋Š” ํ•ด๋‹น ์š”์ฒญ์‚ฌํ•ญ์— ๋งž๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ฐพ์•„์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์‘๋‹ต(response)ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋™์ž‘ํ•œ๋‹ค.

๐Ÿ’ก (+) ์›น ๋ธŒ๋ผ์šฐ์ €์— ์›น ํŽ˜์ด์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๊ณผ์ •
1. ์‚ฌ์šฉ์ž๊ฐ€ www.naver.com ์™€ ๊ฐ™์€ URL์„ ์›น ๋ธŒ๋ผ์šฐ์ €์— ์ž…๋ ฅํ•œ๋‹ค.
2. DNS ์กฐํšŒ๋ฅผ ํ†ตํ•˜์—ฌ www.naver.com์„ ip๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
3. TCP์˜ 3way-handshaking ์—ฐ๊ฒฐ ๋ฐฉ์‹์œผ๋กœ ์›น ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•˜๊ณ  http๋Š” 80, https๋Š” 443ํฌํŠธ๋ฅผ ์ด์šฉํ•œ๋‹ค.
4. http ํ”„๋กœํ† ์ฝœ์„ ์ด์šฉํ•˜์—ฌ ์›น ์„œ๋ฒ„์— ์š”์ฒญ(Request)ํ•œ๋‹ค.
5. ๊ด€๋ จ ๊ธฐ๋Šฅ์— ๋”ฐ๋ผ WAS์™€ ์ƒํ˜ธ ์—ฐ๋™ํ•˜๋ฉฐ ํ•„์š”ํ•œ ๊ฒฝ์šฐ DB์˜ ์ •๋ณด๋ฅผ ์ด์šฉํ•œ๋‹ค.
6. ์›น ์„œ๋ฒ„๋Š” ์ตœ์ข… ์ •๋ณด๋ฅผ ์›น ๋ธŒ๋ผ์šฐ์ €์— ์‘๋‹ต(Response)ํ•˜๊ณ  ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ์ „์†ก ๋ฐ›์€ ๋‚ด์šฉ์„ ํ‘œ์‹œํ•œ๋‹ค.
7. TCP์˜ 4way-handshaking ์—ฐ๊ฒฐ ์ข…๋ฃŒ ๋ฐฉ์‹์œผ๋กœ ์›น์„œ๋ฒ„์™€ ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•œ๋‹ค.

์šฉ์–ด ์„ค๋ช…

DNS ์กฐํšŒ : DNS(Domain Name System : ์ธํ„ฐ๋„ท์—์„œ ๋„๋ฉ”์ธ ์ด๋ฆ„๊ณผ IP ์ฃผ์†Œ ๊ฐ„์˜ ๋Œ€์‘์„ ์ œ๊ณตํ•˜๋Š” ์‹œ์Šคํ…œ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ๋„๋ฉ”์ธ์˜ IP ์ฃผ์†Œ๋‚˜ ๊ธฐํƒ€ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค. ์‚ฌ์šฉ์ž๊ฐ€ ์›น ๋ธŒ๋ผ์šฐ์ €๋‚˜ ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋„๋ฉ”์ธ ์ด๋ฆ„(Ex. www.example.com)์„ ์ž…๋ ฅํ•˜๋ฉด, ํ•ด๋‹น ๋„๋ฉ”์ธ ์ด๋ฆ„์— ๋Œ€ํ•œ IP ์ฃผ์†Œ๋ฅผ ์ฐพ์•„์„œ ์ปดํ“จํ„ฐ๊ฐ€ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
WAS : Web Application Server์˜ ์•ฝ์ž๋กœ, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์„œ๋ฒ„์ด๋‹ค. ์ •์ ์ธ ์›น ํŽ˜์ด์ง€๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋™์ ์ธ ์ฝ˜ํ…์ธ ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.
TCP์˜ 4way-handshaking ์—ฐ๊ฒฐ ์ข…๋ฃŒ ๋ฐฉ์‹ : [ (Client)๋ฐ์ดํ„ฐ ๊ทธ๋งŒ ๋ณด๋‚ผ๋ž˜. -> (Server)์•Œ๊ฒ ์–ด! -> (S)๋‚˜๋„ ๋ฐ์ดํ„ฐ ๊ทธ๋งŒ ๋ณด๋‚ผ๋ž˜. -> (C)์•Œ๊ฒ ์–ด! ]


๐Ÿ’ก ๋Œ€ํ™”์—์„œ๋„ ์„œ๋ก -๋ณธ๋ก -๊ฒฐ๋ก ์ฒ˜๋Ÿผ ์ผ๋ จ์˜ ๊ตฌ์กฐ๊ฐ€ ์žˆ๋“ฏ, HTTP ๋ฉ”์‹œ์ง€ ๋˜ํ•œ ์ผ์ •ํ•œ ํฌ๋งท์ด ์กด์žฌํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ํฌ๋งท์€ ๋ˆ„๊ฐ€ ๋ˆ„๊ตฌ์—๊ฒŒ ๋ณด๋‚ด๋Š”์ง€์— ๋”ฐ๋ผ, ์ฆ‰ ์š”์ฒญ์ธ์ง€ ์‘๋‹ต์ธ์ง€์— ๋”ฐ๋ผ ์กฐ๊ธˆ ๋‹ค๋ฅธ ํ˜•์‹์„ ๋ค๋‹ค. ์•„๋ž˜์—์„œ ์ž์„ธํžˆ ์‚ดํŽด๋ณด์ž.

HTTP ์š”์ฒญ(Request)

: ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ๊ฐ™์€ ์ธํ„ฐ๋„ท ํ†ต์‹  ํ”Œ๋žซํผ์—์„œ ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๋Š” ๋ฐฉ๋ฒ•

โœ… HTTP ์š”์ฒญ์˜ ๊ตฌ์กฐ

์š”์ฒญ ๋ผ์ธ(๋ฉ”์„œ๋“œ/๊ฒฝ๋กœ/๋ฒ„์ „) + ์š”์ฒญ ํ—ค๋” + ๊ณต๋ฐฑ ๋ผ์ธ + ์š”์ฒญ ๋ฉ”์‹œ์ง€ ๋ณธ๋ฌธ

  • ๋ฉ”์„œ๋“œ(Method) : ์ฒซ ์ค„์—๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฌด์—‡์„, ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ณ ์ž ํ•œ๋‹ค๋Š” ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ ์žˆ๋Š”๋ฐ, ์ด๋•Œ ๋ฉ”์„œ๋“œ๋Š” '์–ด๋–ป๊ฒŒ', ์ฆ‰ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์— ํ•ด๋‹นํ•œ๋‹ค.
    - GET : ์กด์žฌํ•˜๋Š” ์ž์›์— ๋Œ€ํ•œ ์š”์ฒญ
    - POST : ์ƒˆ๋กœ์šด ์ž์›์„ ์ƒ์„ฑ
    - PUT : ์กด์žฌํ•˜๋Š” ์ž์›์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ
    - DELETE : ์กด์žฌํ•˜๋Š” ์ž์›์— ๋Œ€ํ•œ ์‚ญ์ œ
  • ๊ฒฝ๋กœ(URL) : ๋ฉ”์„œ๋“œ๊ฐ€ '์–ด๋–ป๊ฒŒ'์— ํ•ด๋‹นํ•œ๋‹ค๋ฉด ๊ฒฝ๋กœ๋Š” '๋ฌด์—‡์„'์— ํ•ด๋‹นํ•œ๋‹ค. ์ฃผ๋กœ ๊ฐ€์ ธ์˜ค๋ ค๋Š” ๋ฆฌ์†Œ์Šค์˜ ๊ฒฝ๋กœ๋ฅผ ํ‘œ์‹œํ•˜๋ฉฐ ํ˜•ํƒœ๋Š” https://www.google.com/ ์ฒ˜๋Ÿผ ์™„์ „ํ•œ ํ˜•์‹, index.html ์ฒ˜๋Ÿผ ์ƒ๋Œ€์ ์ธ ํ˜•์‹ ๋“ฑ ๋ฉ”์„œ๋“œ์˜ ์œ ํ˜•์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ํฌ๋งท์ด ์žˆ๋‹ค.
  • ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „(Version of the protocol) : HTTP ํ”„๋กœํ† ์ฝœ์˜ ๋ฒ„์ „์„ ํ‘œ์‹œํ•œ๋‹ค. ํ˜„์žฌ๋Š” 1.1๋ฒ„์ „๊ณผ ๋ณด์•ˆ์„ฑ์„ ๊ฐ•ํ™”ํ•œ 2๋ฒ„์ „์ด ์ฃผ๋ฅผ ์ด๋ฃจ๊ณ  ์žˆ๋‹ค.
  • ํ—ค๋”(Headers) : ์„œ๋ฒ„์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•œ๋‹ค. ์ฃผ๋กœ ํ˜ธ์ŠคํŠธ์˜ ์ •๋ณด๋‚˜ ์ ‘์†ํ•˜๊ณ  ์žˆ๋Š” ์‚ฌ์šฉ์ž์˜ ์ •๋ณด, ๊ทธ๋ฆฌ๊ณ  ์—ด๋ ค๊ณ  ํ•˜๋Š” ํŽ˜์ด์ง€์˜ ์ •๋ณด ๋“ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์Œ์€ ๊ทธ ์˜ˆ์‹œ๋“ค์ด๋‹ค.
    - User-Agent : ์›น ๋ธŒ๋ผ์šฐ์ €์˜ ๋‹ค๋ฅธ ํ‘œํ˜„. ์š”์ฒญํ•˜๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์˜ ์ •๋ณด ๋ฐ ์šด์˜์ฒด์ œ๋ฅผ ํ‘œ์‹œํ•œ๋‹ค.
    - Accept-encoding : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์••์ถ• ๋ฐฉ์‹์„ ํ‘œ์‹œํ•œ๋‹ค. ์ด๋ฅผ ํ‘œ๊ธฐํ•ด ์„œ๋ฒ„์— ์ „์†กํ•˜๋ฉด, ์„œ๋ฒ„๋Š” ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํ•ด๋‹น ์••์ถ• ๋ฐฉ์‹์œผ๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ์••์ถ•ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ด ์ค€๋‹ค.
  • ๊ณต๋ฐฑ ๋ผ์ธ(Empty Line) : ํ—ค๋”์™€ ๋ณธ๋ฌธ์„ ๊ตฌ๋ถ„ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
  • ๋ณธ๋ฌธ(Request Message Body) : ๋ฉ”์‹œ์ง€์˜ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ๋“ค์–ด๊ฐ€๋Š” ์ปจํ…์ธ ๋กœ, ๋‹ค๋ฅธ ์ปจํ…์ธ ์™€ ๋‹ฌ๋ฆฌ ์„ ํƒ์ ์ธ ์š”์†Œ์ด๋‹ค. GET, HEAD, DELETE, OPTIONS์ฒ˜๋Ÿผ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์š”์ฒญ์€ ๋ณดํ†ต ๋ณธ๋ฌธ์ด ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. POST์ฒ˜๋Ÿผ ์„œ๋ฒ„์— ์ƒˆ๋กœ์šด ์ž์›์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— ๊ทธ ์ •๋ณด๋ฅผ ๋ณธ๋ฌธ์— ์ž‘์„ฑํ•˜์—ฌ ์ „๋‹ฌํ•œ๋‹ค.

(+) URL์ด๋ž€?

Uniform Resource Locater
: ์›น์ƒ์—์„œ ์ž์›๋“ค์˜ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ, ํŠน์ • ์›น ์„œ๋ฒ„์˜ ํŠน์ • ํŒŒ์ผ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๊ฒฝ๋กœ ํ˜น์€ ์ฃผ์†Œ
์ ‘๊ทผ ํ”„๋กœํ† ์ฝœ://IP์ฃผ์†Œor๋„๋ฉ”์ธ ์ด๋ฆ„/๋ฌธ์„œ ๊ฒฝ๋กœ/๋ฌธ์„œ์ด๋ฆ„
Ex) http://www.codecode.co.kr/does/index.html

  • ๋ฌผ๋ฆฌ์ ์ธ ์„œ๋ฒ„๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ๊ฒƒ์€ IP์ฃผ์†Œ๋‚˜ ๋„๋ฉ”์ธ ์ฃผ์†Œ! ๋ฌผ๋ฆฌ์ ์ธ ์ปดํ“จํ„ฐ๋ฅผ ์ฐพ์€ ํ›„์— ํ•ด๋‹น ์ปดํ“จํ„ฐ ์•ˆ์— ๋“ฑ์žฅํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์„œ๋ฒ„๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” ํฌํŠธ ๊ฐ’์ด ํ•„์š”ํ•˜๋‹ค.
  • IP๋Š” ์ง‘ ์ฃผ์†Œ์™€ ๊ฐ™๋‹ค. ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ์—๋Š” IP๊ฐ€ ํ•˜๋‚˜ ์กด์žฌํ•˜๋ฉฐ, ์ง‘ ์•ˆ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐฉ์ด ์กด์žฌํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ปดํ“จํ„ฐ์— ์กด์žฌํ•˜๋Š” ๋ฐฉ์„ ๊ฐ๊ฐ ํฌํŠธ๋ผ๊ณ  ํ•œ๋‹ค. ํฌํŠธ ๋ฒˆํ˜ธ(0๋ณด๋‹ค ํฐ ์ˆซ์ž ๊ฐ’)๋Š” ๊ณ ์œ ํ•˜๋‹ค.
    (+) http ์„œ๋ฒ„๋Š” ๊ธฐ๋ณธ ํฌํŠธ ๊ฐ’์ด 80๋ฒˆ์ด๋‹ค.
  • (+) URI๋Š” ์‹๋ณ„์ž, URL์€ ์‹๋ณ„์ž+์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. URI๊ฐ€ ๋” ํฌ๊ด„์ ์ธ ๊ฐœ๋…์ด๋‹ค.

HTTP ์‘๋‹ต(Response)

: ์›น ํด๋ผ์ด์–ธํŠธ(์ข…์ข… ๋ธŒ๋ผ์šฐ์ €)์—์„œ HTTP ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ์ธํ„ฐ๋„ท ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ˆ˜์‹ ํ•˜๋Š” ์‘๋‹ต

โœ… HTTP ์‘๋‹ต์˜ ๊ตฌ์กฐ

์‘๋‹ต ๋ผ์ธ(๋ฒ„์ „/์ƒํƒœ์ฝ”๋“œ/์ƒํƒœ๋ฉ”์‹œ์ง€) + ์‘๋‹ต ํ—ค๋” + ๊ณต๋ฐฑ ๋ผ์ธ + ์‘๋‹ต ๋ฉ”์‹œ์ง€ ๋ณธ๋ฌธ

  • ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „(Version of the protocol) : ์š”์ฒญ ๋ฉ”์‹œ์ง€์™€ ๋™์ผํ•˜๋ฉฐ HTTP ํ”„๋กœํ† ์ฝœ์˜ ๋ฒ„์ „์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • ์ƒํƒœ ์ฝ”๋“œ(Status code) : ์ƒํƒœ ์ฝ”๋“œ๋Š” ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์˜ ์„ฑ๊ณต ์—ฌ๋ถ€๋ฅผ ์ˆซ์ž๋กœ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ด๋ฉฐ ์ƒํƒœ ๋ฉ”์‹œ์ง€๋Š” ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์˜์–ด๋กœ ํ’€์–ด์“ด ๋ฉ”์‹œ์ง€์ด๋‹ค. ์ƒํƒœ ์ฝ”๋“œ์™€ ์ƒํƒœ ๋ฉ”์‹œ์ง€๋Š” 100๋ฒˆ๋Œ€๋ถ€ํ„ฐ 500๋ฒˆ๋Œ€๊นŒ์ง€ ์กด์žฌํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์›น ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ•œ ํ›„ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์œผ๋กœ ํ‘œ์‹œ๋˜๋Š” ์‘๋‹ต์˜ ์ƒํƒœ ์ฝ”๋“œ๋Š” '200 OK'๋กœ, ์š”์ฒญ์„ ์ œ๋Œ€๋กœ ์ˆ˜ํ–‰ํ–ˆ์Œ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

    1xx : ์กฐ๊ฑด๋ถ€ ์‘๋‹ต - ์š”์ฒญ์„ ๋ฐ›์•˜์œผ๋ฉฐ ์ž‘์—…์„ ๊ณ„์†ํ•ฉ๋‹ˆ๋‹ค.
    2xx : ์„ฑ๊ณต - ์ •์ƒ์ ์œผ๋กœ ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
    3xx : ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ์™„๋ฃŒ - ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ๋งˆ์น˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ ๋™์ž‘์„ ์ทจํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    4xx : ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
    5xx : ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ํ—ค๋”(Headers) : ์š”์ฒญ ํ—ค๋”์™€ ์œ ์‚ฌํ•œ ํ˜•์‹์œผ๋กœ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.
    - content-type : ์ „๋‹ฌํ•œ ๋ฆฌ์†Œ์Šค์˜ ํƒ€์ž…. text/html์ด๋ผ๋ฉด ํ…์ŠคํŠธ ์ค‘์—์„œ๋„ HTML ํƒ€์ž…์ด๋ผ๋Š” ๋œป์ด๋‹ค.
    - content-encoding : ์ปจํ…์ธ ๊ฐ€ ์••์ถ•๋œ ๋ฐฉ์‹์„ ํ‘œ์‹œํ•œ๋‹ค.
  • ๋ณธ๋ฌธ(Body) : ๊ฐ€์ ธ์˜จ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค. ๋งŒ์•ฝ ๋ฆฌ์†Œ์Šค ์œ ํ˜•์ด HTML์ด๋ผ๋ฉด, ํ˜•ํƒœ์˜ HTML ์ฝ”๋“œ๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ณ , ์œ ํ˜•์ด ์ด๋ฏธ์ง€ ๋˜๋Š” ๋™์˜์ƒ์ด๋ฉด ๊ทธ์— ๋งž๋Š” ์ฝ”๋“œ๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค.


๐Ÿ“Œ HTTPS๋ž€?

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

'S'๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค๋Š” ๊ฒƒ์€ ๊ณง, HTTP๊ฐ€ TCP์™€ ์ง์ ‘์ ์œผ๋กœ ํ†ต์‹ ํ•˜๋Š” ๋ฐฉ์‹์ด ์•„๋‹ˆ๋ผ, ๋ณด์•ˆ ๊ณ„์ธต(SSL ๋˜๋Š” TLS) ์œ„์— HTTP ํ”„๋กœํ† ์ฝœ์„ ์–น์–ด ๋ณด์•ˆ๋œ HTTP ํ†ต์‹ ์„ ํ•จ์„ ๋งํ•œ๋‹ค.

SSL๊ณผ TLS?
SSL๊ณผ TLS๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋Š” ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์ด๋‹ค. (TLS๊ฐ€ SSL์˜ ํ›„์† ๋ฒ„์ „์ด์ง€๋งŒ, SSL์ด ์ผ๋ฐ˜์ ์œผ๋กœ ๋” ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์šฉ์–ด์ด๋‹ค.)

HTTP์™€ HTTPS์˜ ์ฐจ์ด

  • HTTP๋Š” ๋ณด์•ˆ์— ์ทจ์•ฝํ•œ ๋ฐ˜๋ฉด, HTTPS๋Š” ์•ˆ์ „ํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
  • HTTPS๋Š” ์•”ํ˜ธํ™”/๋ณตํ˜ธํ™” ๊ณผ์ •์ด ํ•„์š”ํ•˜๊ธฐ์— ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค.
  • HTTPS๋Š” ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ ๋ฐ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋น„์šฉ์ด ๋ฐœ์ƒํ•œ๋‹ค.

โžก๏ธ ๊ฐœ์ธ ์ •๋ณด์™€ ๊ฐ™์€ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์•„์•ผ ํ•œ๋‹ค๋ฉด HTTPS๋ฅผ ์ด์šฉํ•ด์•ผ ํ•˜์ง€๋งŒ, ๋…ธ์ถœ์ด ๋˜์–ด๋„ ๊ดœ์ฐฎ์€ ๋‹จ์ˆœํ•œ ์ •๋ณด ์กฐํšŒ ๋“ฑ ๋งŒ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค๋ฉด HTTP๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๊ฒ ๋‹ค!


HTTPS์˜ ์•”ํ˜ธํ™” ๋ฐฉ์‹

HTTP๋Š” ๋น„๋Œ€์นญํ‚ค[๊ณต๊ฐœํ‚ค] ์•”ํ˜ธํ™” ๋ฐฉ์‹๊ณผ ๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•œ๋‹ค. ๊ณต๊ฐœํ‚ค ๋ฐฉ์‹์œผ๋กœ key๋ฅผ ์ „๋‹ฌํ•˜๊ณ , ์„œ๋กœ ๊ณต์œ ๋œ ํ‚ค[๋Œ€์นญํ‚ค]๋ฅผ ๊ฐ€์ง€๊ณ  ํ†ต์‹ ํ•œ๋‹ค.

๐Ÿ”‘ ๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์ด๋ž€?

  • ๋™์ผํ•œ ํ‚ค๋กœ ์•”ํ˜ธํ™”, ๋ณตํ˜ธํ™”๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋ฐฉ์‹์ด๋‹ค.
  • ๋Œ€์นญํ‚ค๊ฐ€ ๋งค๋ฒˆ ๋žœ๋ค์œผ๋กœ ์ƒ์„ฑ๋˜๋ฉด ๋ˆ„์ถœ๋˜์–ด๋„ ๋‹ค์Œ์— ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋‹ค๋ฅธ ํ‚ค๊ฐ€ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ „ํ•˜๋‹ค.
  • (๊ณต๊ฐœํ‚ค ๋ฐฉ์‹๋ณด๋‹ค) ๋น ๋ฅด๊ฒŒ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ”‘ ๋น„๋Œ€์นญํ‚ค[๊ณต๊ฐœํ‚ค] ์•”ํ˜ธํ™” ๋ฐฉ์‹์ด๋ž€?

  • ์•”ํ˜ธํ™”์™€ ๋ณตํ˜ธํ™”์— ์‚ฌ์šฉ๋˜๋Š” ํ‚ค๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐฉ์‹์ด๋‹ค.
    - Aํ‚ค๋กœ ์•”ํ˜ธํ™”๋ฅผ ํ•˜๋ฉด Bํ‚ค๋กœ ๋ณตํ˜ธํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.
    - Bํ‚ค๋กœ ์•”ํ˜ธํ™”๋ฅผ ํ•˜๋ฉด Aํ‚ค๋กœ ๋ณตํ˜ธํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ฐœ์ธํ‚ค(Private Key)๋ผ ๋ถ€๋ฅด๋ฉฐ, ์ด๋Š” ์ž์‹ ๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ๊ณต๊ฐœ๋˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋‚˜๋จธ์ง€ ํ•˜๋‚˜๋ฅผ ๊ณต๊ฐœํ‚ค(Public Key)๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ ํƒ€์ธ์—๊ฒŒ ์ œ๊ณตํ•œ๋‹ค. ๊ณต๊ฐœํ‚ค๋Š” ์œ ์ถœ์ด ๋˜์–ด๋„ ๋น„๊ณต๊ฐœํ‚ค๋ฅผ ๋ชจ๋ฅด๋ฉด ๋ณตํ˜ธํ™” ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ „ํ•˜๋‹ค.
    (๋น„๋Œ€์นญํ‚ค์˜ ๋‘ ํ‚ค๊ฐ€ ๊ฐœ์ธํ‚ค, ๊ณต๊ฐœํ‚ค์ด๊ธฐ์— ๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ '๊ณต๊ฐœํ‚ค' ์•”ํ˜ธํ™” ๋ฐฉ์‹์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค.)

HTTPS์˜ ๋™์ž‘ ๊ณผ์ •

๋™์ž‘ ๊ณผ์ •์€ ๋‘ ๊ฐˆ๋ž˜๋กœ ๋‚˜๋ˆ„์–ด์„œ ์‚ดํŽด๋ณด์ž. ์ด๋Š” HTTPS์˜ ์ฃผ๋œ ๊ธฐ๋Šฅ์ธ ๋‹ค์Œ์˜ ๋‘ ๊ฐ€์ง€๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•œ๋‹ค.

1. ๋‚ด๊ฐ€ ์‚ฌ์ดํŠธ์— ๋ณด๋‚ด๋Š” ์ •๋ณด๋“ค์„ ์ œ3์ž๊ฐ€ ๋ชป ๋ณด๊ฒŒ ํ•œ๋‹ค.
2. ์ ‘์†ํ•œ ์‚ฌ์ดํŠธ๊ฐ€ ๋ฏฟ์„ ๋งŒํ•œ ๊ณณ์ธ์ง€๋ฅผ ์•Œ๋ ค์ค€๋‹ค.


โœ… ์ฒซ ๋ฒˆ์งธ๋Š” ๋น„๊ต์  ๊ฐ„๊ฒฐํ•˜๋‹ค. ์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ, ๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹๊ณผ ๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•œ๋‹ค.

  • ๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ ํ†ตํ•ด ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ 'ํ‚ค'๋ฅผ ๊ณต์œ ํ•œ๋‹ค.
  • ๊ณต์œ ํ•œ ํ‚ค๋ฅผ ๋Œ€์นญํ‚ค๋กœ ๋‘ฌ ๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š”๋‹ค.

โœ… ๋น„๊ต์  ๋ณต์žกํ•œ ๋‘ ๋ฒˆ์งธ ๊ธฐ๋Šฅ์€ ์ฐจ๊ทผ์ฐจ๊ทผ ์‚ดํŽด๋ณด์ž.
์ ‘์†ํ•œ ์‚ฌ์ดํŠธ๊ฐ€ ๋ฏฟ์„ ๋งŒํ•œ ๊ณณ์ธ์ง€๋Š”, ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ œ3์ž์ธ ์ธ์ฆ๊ธฐ๊ด€(CA : Certificate Authority)์„ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ ์ผ๋ จ์˜ ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์„œ๋ฒ„๋Š” CA๋กœ๋ถ€ํ„ฐ ์ธ์ฆ์„œ๋ฅผ ์š”์ฒญํ•œ๋‹ค.
  • CA๋Š” (์„œ๋ฒ„๊ฐ€ ์•ˆ์ „ํ•˜๋‹ค๊ณ  ํŒ๋‹จ๋˜๋ฉด) ์ž์‹ ์˜ ๊ฐœ์ธํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•œ '์ธ์ฆ์„œ'๋ฅผ ์„œ๋ฒ„์—๊ฒŒ ์ œ๊ณตํ•œ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์ ‘์†ํ•˜๋ฉด, ์„œ๋ฒ„๋Š” CA๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์ธ์ฆ์„œ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „์†กํ•œ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ๋Š” CA์˜ ๊ณต๊ฐœํ‚ค๋กœ ์ธ์ฆ์„œ๋ฅผ ๋ณตํ˜ธํ™” ํ•œ๋‹ค.
    (CA์˜ ๊ณต๊ฐœํ‚ค๋กœ ๋ณตํ˜ธํ™” ๊ฐ€๋Šฅํ•จ์€ ์ธ์ฆ์„œ๊ฐ€ CA์˜ ๊ฐœ์ธํ‚ค๋กœ ์•”ํ˜ธํ™”๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ฆ‰, CA์˜ ๊ณต๊ฐœํ‚ค๋กœ ์ธ์ฆ์„œ๋ฅผ ํ™•์ธํ•จ์œผ๋กœ์จ "์ด ์„œ๋ฒ„๋Š” ์ธ์ฆ ๊ธฐ๊ด€์ด ์ธ์ฆํ•ด ์ค€ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„๋‹ค!"๋ผ๊ณ  ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค.)
  • ์ธ์ฆ์„œ๊ฐ€ ์ œ๋Œ€๋กœ ๋ณตํ˜ธํ™” ๋˜์—ˆ๋‹ค๋ฉด ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํŒ๋‹จํ•ด ์„œ๋ฒ„์— ์ ‘์†ํ•œ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด