BKJang / do-you-know-backend

๐Ÿ–ฅ This repository contains contents about overall knowledge of backend

Home Page:https://bkjang.github.io/do-you-know-backend

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

HTTP

BKJang opened this issue ยท comments

HTTP

๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ฐœ์ž๋“ค์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋‹ค๋ณด๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ HTTP๋ฅผ ๊ฒฝํ—˜ํ•˜๊ฒŒ ๋œ๋‹ค. ๋‹ค๋งŒ, ๋„ˆ๋ฌด ๋‹น์—ฐํžˆ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋‹ค๋ณด๋‹ˆ ์ด๋ฅผ ์ž˜ ๋ชจ๋ฅด๊ณ  ๋„˜์–ด๊ฐ€๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

Protocol

์šฐ์„  Protocol์ด๋ž€ ์šฉ์–ด๋ฅผ ์•Œ๊ณ  ๋„˜์–ด๊ฐˆ ํ•„์š”๊ฐ€ ์žˆ๋‹ค. HTTP๋ฅผ ๋งŽ์ด ๋“ค์–ด๋ดค์ง€๋งŒ "๊ทธ๋ž˜์„œ ์ด๊ฒŒ ๋ญ”๋ฐ?" ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค ์ˆ˜ ์žˆ๋‹ค. HTTP๋Š” Protocol์˜ ์ผ์ข…์ด๋ฉฐ, Protocol์€ ์ปดํ“จํ„ฐ๋‚˜ ์›๊ฑฐ๋ฆฌ ํ†ต์‹  ์žฅ๋น„ ์‚ฌ์ด์— ๋ฉ”์„ธ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ์–‘์‹๊ณผ ๊ทœ์น™์˜ ์ฒด๊ณ„์ด๋‹ค.

์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž ์‚ฌ์ด์— "๋ฉ”์„ธ์ง€ ๊ตฌ์กฐ๋Š” ์ด๋Ÿฐ์‹์œผ๋กœํ•˜๊ณ , ๊ทธ๊ฑด ์ด๋Ÿฐ ์˜๋ฏธ๋กœ ์•ฝ์†ํ•˜๊ณ  ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ๋ณด๋‚ด๊ธฐ๋กœ ํ•˜์ž." ๋“ฑ์„ ์•ฝ์†ํ•œ ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, ํŠน์ • ๊ธฐ์—…์— ์ด๋ ฅ์„œ๋ฅผ ๋ณด๋‚ผ ๋•Œ ํ•ด๋‹น ๊ธฐ์—…์˜ ์ด๋ ฅ์„œ ์–‘์‹์— ๋งž์ถฐ ์ง€์›์„ ํ•˜๋Š” ๊ฒƒ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰, Protocol์€ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ธฐ ์œ„ํ•œ ์•ฝ์†์ด๋ฉฐ ์ด๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์‚ฌ์ด์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

HTTP(HyperText Transfet Protocol)?

ํŒ€ ๋ฒ„๋„ˆ์Šค๋ฆฌ(Tim Berners-Lee)์™€ ๊ทธ๊ฐ€ ์†ํ•œ ํŒ€์€ CERN์—์„œ HTML๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์›น ๋ธŒ๋ผ์šฐ์ € ๋ฐ ์›น ๋ธŒ๋ผ์šฐ์ € ๊ด€๋ จ ๊ธฐ์ˆ ๊ณผ HTTP๋ฅผ ๋ฐœ๋ช…ํ–ˆ๋‹ค.

HTTP๋Š” HyperText Transfer Protocol์˜ ์•ฝ์ž์ด๋ฉฐ ๋ง ๊ทธ๋Œ€๋กœ ํ•˜์ดํผํ…์ŠคํŠธ ๋ฌธ์„œ๋ฅผ ๊ตํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ Protocol์ด๋‹ค.

HTTP์˜ ํฐ ํŠน์ง•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

๋‹จ๋ฐฉํ–ฅ์  ํ†ต์‹  ํ”„๋กœํ† ์ฝœ

HTTP Protocol์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ(Request)๋ฅผ ๋ณด๋‚ด๋ฉด ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต(Repsonse)ํ•˜๋Š” ๋‹จ๋ฐฉํ–ฅ์  ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์ด๋ผ๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ๊ฐ€ Request๋ฅผ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด์ง€ ์•Š์œผ๋ฉด ์„œ๋ฒ„๋Š” ์–ด๋– ํ•œ ๋ฐ์ดํ„ฐ๋„ ๋„˜๊ฒจ์ฃผ์ง€ ์•Š๋Š”๋‹ค.

์•„๋งˆ, ์•ฑ์ด๋‚˜ ์›น์„ ๊ฐœ๋ฐœํ•˜๋‹ค๋ณด๋ฉด ์ ‘ํ•˜๊ฒŒ ๋  ๊ฐ€์žฅ ์ต์ˆ™ํ•œ ํŒจํ„ด์˜ ํ”„๋กœํ† ์ฝœ์ผ ๊ฒƒ์ด๋‹ค.

Stateless Protocol

HTTP Protocol์€ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์„ฑ ๋•Œ๋ฌธ์— HTTP Protocol์„ Stateless Protocol์ด๋ผ๊ณ  ํ•œ๋‹ค.

ํด๋ผ์ด์–ธํŠธ์—์„œ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ์„œ๋ฒ„์—์„œ๋Š” ๊ทธ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ํด๋ผ์ด์–ธํŠธ๋กœ ์ „์†กํ•˜๊ฒŒ ๋œ๋‹ค. ์ด ๋•Œ, ์‘๋‹ต์„ ๋ฐ›๋Š” ์‹œ์ ์— ์–ด๋– ํ•œ ์ •๋ณด๋„ ๋‚จ๊ธฐ์ง€ ์•Š๋Š”๋‹ค. ์ฆ‰, ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ๋งˆ๋‹ค ๊ฐ๊ฐ์˜ ์ ‘์†์€ ๋…๋ฆฝ์ ์ธ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ์ทจ๊ธ‰๋œ๋‹ค.

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

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

Cookie์™€ Session์„ ์ด์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ Stateless๋ฌธ์ œ๋ฅผ ๋ณด์™„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์„ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

HTTPS์™€ SSL

๋งŒ์•ฝ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ค‘๊ฐ„์—์„œ ๊ฐ€๋กœ์ฑ˜๋‹ค๊ณ  ํ•ด๋ณด์ž. ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋กœ์ฑ„ ๋ณ€์กฐํ•œ๋‹ค๊ฑฐ๋‚˜ ์•…์˜์ ์ธ ๊ฐ์ฒญ์ด ์ผ์–ด๋‚œ๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๋Š” ๋‹จ์ˆœ ํ…์ŠคํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ๊ฒƒ์ด๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, ๋กœ๊ทธ์ธ์„ ์œ„ํ•ด์„œ ์„œ๋ฒ„๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ „์†กํ•  ๋•Œ ์•…์˜์ ์ธ ๊ฐ์ฒญ์ด๋‚˜ ๋ฐ์ดํ„ฐ์˜ ๋ณ€์กฐ๋“ฑ์ด ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋ฅผ ๋ณด์™„ํ•œ ๊ฒƒ์ด HTTPS๊ณ  ์ด๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„  ์•ฝ๊ฐ„์˜ ์•”ํ˜ธํ™” ๊ธฐ๋ฒ• ์ง€์‹์ด ํ•„์š”ํ•˜๋‹ค.

๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๊ธฐ๋ฒ•(๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™”)


๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๊ธฐ๋ฒ•์€ ์•”ํ˜ธํ™”์™€ ๋ณตํ˜ธํ™”๋ฅผ ํ•˜๊ธฐ ์œ„ํ•œ ํ‚ค๊ฐ€ ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰ ์•”ํ˜ธํ™”๋ฅผ ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋ณตํ˜ธํ™”๋ฅผ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๊ฐ„์— ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ํƒˆ์ทจ๋œ๋‹ค๊ณ  ํ•ด๋„ ๋ณตํ˜ธํ™”๋ฅผ ํ•  ๋ฐฉ๋ฒ•์ด ์—†๋‹ค.

https_asymmetric_key

ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ ์ƒ๊ฐํ•ด๋ด์•ผ ํ•  ๊ฒƒ์ด ์žˆ๋Š”๋ฐ '์„œ๋ฒ„๋กœ ์ „์†ก๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—์„œ ์ „์†กํ•œ ๊ฒƒ์ธ์ง€, ์•ˆ์ „ํ•œ ๋ฐ์ดํ„ฐ๋ผ๊ณ  ํ™•์‹ ํ•  ์ˆ˜ ์žˆ์„๊นŒ?' ๋ผ๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋ฅผ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” SSL ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์„œ๋ฒ„๋กœ ์ „์†ก๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์•ˆ์ „ํ•œ ๋ฐ์ดํ„ฐ๋ผ๋Š” ๊ฒƒ์„ SSL ์ธ์ฆ์„œ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•ด์ฃผ๋Š” ๋ฏผ๊ฐ„ ๊ธฐ๊ด€์„ CA๋ผ๊ณ  ํ•˜๊ณ  ์ด CA ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ธŒ๋ผ์šฐ์ €๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

์ฆ‰, ๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๊ธฐ๋ฒ•์„ ์ด์šฉํ•ด ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„๋กœ ์ „์†กํ•˜๋Š” ๊ณผ์ •์—์„œ SSL ์ธ์ฆ์„ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋งŒ ์„œ๋ฒ„์—์„œ๋Š” ์‹ ๋ขฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

ํ•˜์ง€๋งŒ ์ด ๋ฐฉ์‹์€ ๋Š๋ฆด ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”์™€ ๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”๋ฅผ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค.