[Computer Science][Network] ๐ŸŒ HTTP์™€ HTTPS: ์›น ํ†ต์‹ ์˜ ๊ธฐ๋ณธ ์ดํ•ด

๊น€์ƒ์šฑยท2024๋…„ 8์›” 18์ผ
post-thumbnail

HTTP(HyperText Transfer Protocol)์™€ HTTPS(HyperText Transfer Protocol Secure)๋Š” ์ธํ„ฐ๋„ท์—์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์ž์›์„ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ†ต์‹  ๊ทœ์•ฝ์ž…๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” HTTP์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ๋ณด์•ˆ ์ทจ์•ฝ์ , ์ด๋ฅผ ๋ณด์™„ํ•˜๋Š” HTTPS์˜ ํ†ต์‹  ํ๋ฆ„์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๐ŸŒ HTTP๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

HTTP(HyperText Transfer Protocol)๋Š” ์ธํ„ฐ๋„ท ์ƒ์—์„œ ํด๋ผ์ด์–ธํŠธ(์‚ฌ์šฉ์ž์˜ ์›น ๋ธŒ๋ผ์šฐ์ €)์™€ ์„œ๋ฒ„ ๊ฐ„์— ์ž์›์„ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ํ†ต์‹  ๊ทœ์•ฝ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค:

  • ์š”์ฒญ-์‘๋‹ต(Request-Response) ๋ชจ๋ธ: ์‚ฌ์šฉ์ž๊ฐ€ ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ URL์„ ์ž…๋ ฅํ•˜๋ฉด, ๋ธŒ๋ผ์šฐ์ €๋Š” ์›น ์„œ๋ฒ„์— HTTP ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ , ์„œ๋ฒ„๋Š” ์š”์ฒญ๋œ ์›น ํŽ˜์ด์ง€๋‚˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์‘๋‹ต์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฌด์ƒํƒœ์„ฑ(Stateless): HTTP๋Š” ๊ฐ ์š”์ฒญ ๊ฐ„์˜ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, ํ•œ ๋ฒˆ์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต์ด ์™„๋ฃŒ๋˜๋ฉด ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์˜ ์—ฐ๊ฒฐ์€ ๋Š์–ด์ง€๋ฉฐ, ๊ฐ ์š”์ฒญ์€ ๋…๋ฆฝ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
  • ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜: HTTP๋Š” ํ…์ŠคํŠธ ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์š”์ฒญ๊ณผ ์‘๋‹ต์€ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ์˜ ํ…์ŠคํŠธ๋กœ ํ‘œํ˜„๋˜๋ฉฐ, ํŠน์ • ํฌ๋งท(๋ฉ”์„œ๋“œ, URL, ํ—ค๋”, ๋ฐ”๋”” ๋“ฑ)์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.
  • ๋ฉ”์„œ๋“œ: HTTP๋Š” ๋‹ค์–‘ํ•œ ์š”์ฒญ ๋ฉ”์„œ๋“œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, GET(๋ฆฌ์†Œ์Šค ์š”์ฒญ), POST(๋ฐ์ดํ„ฐ ์ œ์ถœ), PUT(๋ฆฌ์†Œ์Šค ์ˆ˜์ •), DELETE(๋ฆฌ์†Œ์Šค ์‚ญ์ œ) ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํฌํŠธ: HTTP๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ 80๋ฒˆ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ณด์•ˆ์ด ๊ฐ•ํ™”๋œ ๋ฒ„์ „์ธ HTTPS๋Š” 443๋ฒˆ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

HTTP๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ…์ŠคํŠธ๋กœ ๊ตํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ๋ˆ„๊ตฐ๊ฐ€ ์‹ ํ˜ธ๋ฅผ ๊ฐ€๋กœ์ฑ„๋ฉด ๊ทธ ๋‚ด์šฉ์ด ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๊ฒƒ์ด HTTPS์ž…๋‹ˆ๋‹ค.

HTTP ํ—ค๋”

HTTP ํ—ค๋”๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. HTTP ์š”์ฒญ(Request) ๋˜๋Š” ์‘๋‹ต(Response) ๋ฉ”์‹œ์ง€์— ํฌํ•จ๋˜๋ฉฐ, ํ†ต์‹ ์˜ ์„ฑ๊ฒฉ์„ ์ •์˜ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • ์š”์ฒญ ํ—ค๋”(Request Header) : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญ ์‹œ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ. User-Agent ํ—ค๋”๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ๋ธŒ๋ผ์šฐ์ € ์ •๋ณด๋‚˜ ์šด์˜์ฒด์ œ๋ฅผ ์„œ๋ฒ„์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  • ์‘๋‹ต ํ—ค๋”(Response Header) : ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ตํ•  ๋•Œ ์ถ”๊ฐ€ ์ •๋ณผ๋ฅผ ์ œ๊ณตํ•˜๋Š”๋ฐ ์‚ฌ์šฉ. Content-Type ํ—ค๋”๋Š” ์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•˜๋Š” ๋ฐ์ดํ„ฐ ํ˜•์‹์„ ๋ช…์‹œ.
  • ์บ์‹ฑ ์ œ์–ด : Cache-Control๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„ ์‘๋‹ต์„ ์บ์‹œํ•  ์ˆ˜ ์žˆ๋Š”์ง€, ์–ผ๋งˆ๋‚˜ ์˜ค๋ž˜ ์บ์‹œํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณด์•ˆ ์ œ์–ด : Authorization ํ—ค๋”๋Š” ์š”์ฒญ์ด ์ธ์ฆ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š”์ง€ ๋‚˜ํƒ€๋‚ด๊ณ , Set-Cookie๋Š” ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ฟ ํ‚ค๋ฅผ ์„ค์ •ํ•˜๋ผ๊ณ  ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค.

HTTP ๋ฉ”์†Œ๋“œ

  1. GET
    • ์„ค๋ช… : ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญ(์กฐํšŒ, ๊ฒ€์ƒ‰)ํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด์ง€ ์•Š๊ณ , ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
    • ํŠน์ง• :
      • ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐฉ์‹ : ๋ฐ์ดํ„ฐ๋ฅผ URL์˜ ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง์œผ๋กœ ํฌํ•จ์‹œ์ผœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ, ์š”์ฒญํ•  ๋ฐ์ดํ„ฐ๊ฐ€ URL์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
        • ๋‹จ, URL์— ํฌํ•จ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ์ œํ•œ์ ์ž…๋‹ˆ๋‹ค.
      • ์•ˆ์ „์„ฑ ๋ฐ ๋ณด์•ˆ : URL์— ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ์ „์†กํ•˜๋Š”๋ฐ ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
      • ์•ˆ์ •์„ฑ : GET ์š”์ฒญ์€ ์„œ๋ฒ„์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.
      • ์•„์ดํ…œํฌํ„ด์Šค(Idempotence) : ๋™์ผํ•œ GET ์š”์ฒญ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ณด๋‚ด๋„ ๊ฒฐ๊ณผ๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
      • ์บ์‹ฑ ๊ฐ€๋Šฅ : GET ์š”์ฒญ์€ ์บ์‹ฑ๋  ์ˆ˜ ์žˆ์–ด, ๋™์ผํ•œ ์š”์ฒญ์„ ๋ฐ˜๋ณต ์š”์ฒญํ•  ๊ฒฝ์šฐ ์„œ๋ฒ„ ๋ถ€ํ•˜๋ฅผ ์ค„์ด๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • ์‚ฌ์šฉ ์‚ฌ๋ก€ :
      • ์›น ํŽ˜์ด์ง€ ๋กœ๋“œ ์‹œ HTML ๋ฌธ์„œ, ์ด๋ฏธ์ง€, CSS, JavaScript ๋“ฑ์„ ์„œ๋ฒ„์—์„œ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
      • ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์—์„œ ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜๋Š” RESTful API ์š”์ฒญ(GET/users).
  2. POST
    • ์„ค๋ช… : POST ๋ฉ”์„œ๋“œ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์ถœํ•˜๊ฑฐ๋‚˜ ์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.(์ „์†ก, ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ)
    • ํŠน์ง• :
      • ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐฉ์‹ : ๋ฐ์ดํ„ฐ๋ฅผ HTTP ์š”์ฒญ์˜ ๋ณธ๋ฌธ์— ํฌํ•จ์‹œ์ผœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. URL์—๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์œผ๋ฉฐ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ข€ ๋” ์•ˆ์ „ํ•˜๊ฒŒ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.
      • ์•ˆ์ „์„ฑ ๋ฐ ๋ณด์•ˆ : ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณธ๋ฌธ์— ํฌํ•จ๋˜์–ด ์ „์†ก๋˜๋ฏ€๋กœ, URL์— ๋…ธ์ถœ๋˜์ง€ ์•Š์œผ๋ฉฐ, ๋น„๊ต์  ๋ณด์•ˆ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
      • ์•ˆ์ „ํ•˜์ง€ ์•Š์Œ : POST ์š”์ฒญ์€ ์„œ๋ฒ„์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ์•„์ดํ…œํฌํ„ด์Šค๊ฐ€ ์•„๋‹˜ : ๋™์ผํ•œ POST ์š”์ฒญ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ณด๋‚ด๋ฉด, ์ค‘๋ณต๋œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ์บ์‹ฑ ๋ถˆ๊ฐ€๋Šฅ : ์ผ๋ฐ˜์ ์œผ๋กœ POST ์š”์ฒญ์€ ์บ์‹ฑ๋˜์ง€ ์•Š๊ณ  ์„œ๋ฒ„์—์„œ ํ•ญ์ƒ ์ƒˆ๋กญ๊ฒŒ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
    • ์‚ฌ์šฉ ์‚ฌ๋ก€ :
      • ์›น ํผ ์ œ์ถœ, ์˜ˆ๋ฅผ ๋“ค์–ด ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ ๋“ฑ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์— ์ „์†กํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
      • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ƒˆ๋กœ์šด ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜๋Š” RESTful API ์š”์ฒญ(POST/users)
  3. PUT
    • ์„ค๋ช… : PUT ๋ฉ”์„œ๋“œ๋Š” ์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์™„์ „ํžˆ ๋Œ€์ฒดํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํŠน์ • ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
    • ํŠน์ง• :
      • ์•„์ดํ…œํฌํ„ด์Šค : ๋™์ผํ•œ PUT ์š”์ฒญ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ณด๋‚ด๋”๋ผ๋„ ๊ฒฐ๊ณผ๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋™์ผํ•œ ํŒŒ์ผ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์—…๋กœ๋“œํ•˜๋ฉด, ํŒŒ์ผ์ด ๋ฎ์–ด์“ฐ์—ฌ์ง€๋ฉฐ ๊ฒฐ๊ณผ๋Š” ๋ณ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • ์‚ฌ์šฉ ์‚ฌ๋ก€ :
      • ํŠน์ • ๋ฆฌ์†Œ์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด RESTful API์—์„œ ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ(์˜ˆ: PUT /users/123)
  4. DELETE
    • ์„ค๋ช… : DELETE ๋ฉ”์„œ๋“œ๋Š” ์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ญ์ œํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
    • ํŠน์ง• :
      • ์•„์ดํ…œํฌํ„ด์Šค : ๋™์ผํ•œ DELETE ์š”์ฒญ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ณด๋‚ด๋”๋ผ๋„ ๊ฒฐ๊ณผ๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์‚ญ์ œํ•  ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†์œผ๋ฉด ๋‹จ์ˆœํžˆ ์•„๋ฌด๋Ÿฐ ํšจ๊ณผ๊ฐ€ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
    • ์‚ฌ์šฉ ์‚ฌ๋ก€ :
      • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํŠน์ • ํ•ญ๋ชฉ์„ ์‚ญ์ œํ•˜๋Š” RESTful API ์š”์ฒญ(์˜ˆ:DELETE /users/123)
      • ํŒŒ์ผ์ด๋‚˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์„œ๋ฒ„์—์„œ ์‚ญ์ œํ•  ๋•Œ.
  5. PATCH
    • ์„ค๋ช… : PATCH ๋ฉ”์„œ๋“œ๋Š” ๋ฆฌ์†Œ์Šค์˜ ์ผ๋ถ€๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. PUT๊ณผ ๋‹ฌ๋ฆฌ ์ „์ฒด ๋ฆฌ์†Œ์Šค๊ฐ€ ์•„๋‹Œ ๋ถ€๋ถ„์ ์ธ ์—…๋ฐ์ดํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • ํŠน์ง• :
      • ์•„์ดํ…œํฌํ„ด์Šค : ๋™์ผํ•œ PATCH ์š”์ฒญ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ณด๋‚ด๋”๋ผ๋„ ๊ฒฐ๊ณผ๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
    • ์‚ฌ์šฉ ์‚ฌ๋ก€ ;
      • ํŠน์ • ๋ฆฌ์†Œ์Šค์˜ ์ผ๋ถ€ ์†์„ฑ๋งŒ ๋ณ€๊ฒฝํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒฝ์šฐ(PATCH /users/123).
  6. HEAD
    • ์„ค๋ช… : GET ์š”์ฒญ๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ, ์‘๋‹ต ๋ณธ๋ฌธ์„ ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค์˜ ํ—ค๋” ์ •๋ณด๋งŒ ์š”์ฒญํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
    • ํŠน์ง•
      • ์•ˆ์ „์„ฑ ๋ฐ ์•„์ดํ…œํฌํ„ด์Šค : GET๊ณผ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•˜์ง€๋งŒ, ์‘๋‹ต ๋ณธ๋ฌธ์ด ์—†์Šต๋‹ˆ๋‹ค.
    • ์‚ฌ์šฉ ์‚ฌ๋ก€
      • ๋ฆฌ์†Œ์Šค์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(์˜ˆ: ํŒŒ์ผ ํฌ๊ธฐ, ์ˆ˜์ • ๋‚ ์งœ)๋ฅผ ํ™•์ธํ•  ๋•Œ.
      • ๋งํฌ์˜ ์œ ํšจ์„ฑ์ด๋‚˜ ๋ฆฌ์†Œ์Šค์˜ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์‚ฌํ•  ๋•Œ
  7. TRACE
    • ์„ค๋ช… : TRACE ๋ฉ”์„œ๋“œ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์ด ์„œ๋ฒ„๊นŒ์ง€ ๋„๋‹ฌํ•˜๋Š” ๊ฒฝ๋กœ๋ฅผ ์ถ”์ ํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
    • ํŠน์ง•
      • ๋ณด์•ˆ์ƒ ์ด์œ ๋กœ ๊ฑฐ์˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ : ๋ณด์•ˆ ์œ„ํ˜‘(์˜ˆ: XXS ๊ณต๊ฒฉ) ๋•Œ๋ฌธ์— ๋Œ€๋ถ€๋ถ„์˜ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์—์„œ TRACE ์š”์ฒญ์„ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.
    • ์‚ฌ์šฉ ์‚ฌ๋ก€ :
      • ๋„คํŠธ์›Œํฌ ๋””๋ฒ„๊น…์šฉ์œผ๋กœ ์‚ฌ์šฉ๋˜์ง€๋งŒ, ์‹ค๋ฌด์—์„œ๋Š” ๊ฑฐ์˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

HTTP ์ƒํƒœ ์ฝ”๋“œ(HTTP Status Code)

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

1xx (์ •๋ณด ์‘๋‹ต, Informational Responses)
  • 100 Continue : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋ƒˆ์„ ๋•Œ, ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์˜ ์ฒซ ๋ฒˆ์งธ ๋ถ€๋ถ„์„ ๋ฐ›๊ณ , ๋‚˜๋จธ์ง€ ์š”์ฒญ์„ ์ด์–ด์„œ ๋ณด๋‚ด๋„ ๋œ๋‹ค๋Š” ์‹ ํ˜ธ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • 101 Switching Protocols : ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ๋”ฐ๋ผ ํ”„๋กœํ† ์ฝœ์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์‘๋‹ต์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด, HTTP์—์„œ WebSocket์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
2xx (์„ฑ๊ณต, Successful Responses)
  • 200 OK : ์š”์ฒญ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ฃผ๋กœ GET, POST ์š”์ฒญ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • 201 Created : ์š”์ฒญ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ๊ณ , ์ƒˆ๋กœ์šด ๋ฆฌ์†Œ์Šค๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ฃผ๋กœ POST ์š”์ฒญ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • 204 No Content : ์š”์ฒญ์€ ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ์ง€๋งŒ, ์‘๋‹ต ๋ณธ๋ฌธ์— ๋ณด๋‚ด์ค„ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ญ์ œ ์š”์ฒญ์ด ์„ฑ๊ณตํ–ˆ์„ ๋•Œ, ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
3xx (๋ฆฌ๋‹ค์ด๋ ‰์…˜, Redirection Responses)
  • 301 Moved Permanently : ์š”์ฒญํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์˜๊ตฌ์ ์œผ๋กœ ๋‹ค๋ฅธ URI๋กœ ์ด๋™๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด ์‘๋‹ต์„ ๋ฐ›์•„ ์ƒˆ URL๋กœ ์ž๋™ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธํ•ฉ๋‹ˆ๋‹ค.
  • 302 Found : ์š”์ฒญํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ผ์‹œ์ ์œผ๋กœ ๋‹ค๋ฅธ URI๋กœ ์ด๋™๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์›๋ž˜์˜ URL์ด ๋‚˜์ค‘์— ์‚ฌ์šฉ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • 304 Not Modified : ํด๋ผ์ด์–ธํŠธ์˜ ์บ์‹œ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ์ „ํžˆ ์œ ํšจํ•จ์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ์„œ๋ฒ„๊ฐ€ ์ƒˆ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด์ง€ ใ…‡๋‚ณ๊ณ  ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค.
4xx (ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜, Client Error Responses)
  • 400 Bad Request : ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ์ž˜๋ชป๋˜์—ˆ๊ฑฐ๋‚˜, ์„œ๋ฒ„๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์—†๋Š” ํ˜•์‹์ž„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • 401 Unauthorized : ์ธ์ฆ์ด ํ•„์š”ํ•˜๋ฉฐ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์œ ํšจํ•œ ์ธ์ฆ ์ž๊ฒฉ ์ฆ๋ช…์„ ์ œ๊ณตํ•˜์ง€ ์•Š์•˜์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • 403 Forbidden : ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ดํ•ดํ–ˆ์ง€๋งŒ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•œ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ๊ถŒํ•œ์ด ์—†์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • 404 Not Found : ์š”์ฒญํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์„œ๋ฒ„์—์„œ ์ฐพ์„ ์ˆ˜ ์—†์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ๋Š” ์ž˜๋ชป๋œ URL๋กœ ์ ‘๊ทผํ–ˆ์„ ๋•Œ ์ž์ฃผ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
5xx (์„œ๋ฒ„ ์˜ค๋ฅ˜, Server Error Responses)
  • 500 Internal Server Error : ์„œ๋ฒ„์—์„œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์•ˆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์ธก ๋ฌธ์ œ๋กœ ์ธํ•œ ์‹คํŒจ์ž…๋‹ˆ๋‹ค.
  • 502 Bad Gateway : ์„œ๋ฒ„๊ฐ€ ๊ฒŒ์ดํŠธ์›จ์ด ๋˜๋Š” ํ”„๋ก์‹œ ์—ญํ• ์„ ํ•  ๋•Œ, ์ƒ์œ„ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ž˜๋ชป๋œ ์‘๋‹ต์„ ๋ฐ›์•˜์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • 503 Service Unavailable : ์„œ๋ฒ„๊ฐ€ ์ผ์‹œ์ ์œผ๋กœ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ๊ณผ๋ถ€ํ•˜ ์ƒํƒœ์ด๊ฑฐ๋‚˜ ์œ ์ง€๋ณด์ˆ˜ ์ค‘ ์ผ ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

URL๊ณผ URI์˜ ์ฐจ์ด์ 

  • URL (Uniform Resource Locator)๊ณผ URI (Uniform Resource Identifier)๋Š” ์›น ์ฃผ์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐœ๋…์ด์ง€๋งŒ, ์•ฝ๊ฐ„์˜ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  URL์€ URI์˜ ํ•˜์œ„ ๊ฐœ๋…์ด์ง€๋งŒ, ๋ชจ๋“  URI๊ฐ€ URL์ธ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

1. URI (Uniform Resource Identifier)

  • ์ •์˜ : URI๋Š” ์ธํ„ฐ๋„ท์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค. URI๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๊ฑฐ๋‚˜์œ„์น˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ข…๋ฅ˜ :
    • URL (Uniform Resources Locator) : ๋ฆฌ์†Œ์Šค์˜ ์œ„์น˜๋ฅผ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ: http://www.example.com
    • URN (Uniform Resources Name) : ๋ฆฌ์†Œ์Šค๋ฅผ ์ด๋ฆ„์œผ๋กœ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ: urn:isbn:0451450523 (์ฑ…์˜ ISBN ๋ฒˆํ˜ธ)
  • ํŠน์ง• :
    • URI๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ๊ด‘๋ฒ”์œ„ํ•œ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. URL๊ณผ URN์ด URI์˜ ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ํ•˜์œ„ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.
    • URI๋Š” ํŠน์ • ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์„ ๋ฐ˜๋“œ์‹œ ํฌํ•จํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. URL(Unifrom Resource Locator)

  • ์ •์˜ : URL์€ ์ธํ„ฐ๋„ท ์ƒ์˜ ๋ฆฌ์†Œ์Šค์˜ ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜๋Š” URI์˜ ํ•˜์œ„ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค. URL์€ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ๊ฒฝ๋กœ๋ฅผ ํฌํ•จํ•˜๋ฉฐ, ํ”„๋กœํ† ์ฝœ(์˜ˆ: http, https), ๋„๋ฉ”์ธ ์ด๋ฆ„(์˜ˆ: www.examle.com), ๊ฒฝ๋กœ(์˜ˆ: /index.html), ํฌํŠธ ๋ฒˆํ˜ธ(์˜ˆ: :80), ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด ๋“ฑ์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŠน์ง• :
    • URL์€ ํŠน์ • ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฒฝ๋กœ์™€ ๋ฐฉ๋ฒ•์„ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, https://www.example.com:80/index.html?user=1์€ ํ”„๋กœํ† ์ฝœ, ๋„๋ฉ”์ผ, ํฌํŠธ, ๊ฒฝ๋กœ, ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํฌํ•จํ•œ URL์ž…๋‹ˆ๋‹ค.

๐Ÿ” HTTP์˜ ๋ณด์•ˆ ์ทจ์•ฝ์ 

1. ๋„์ฒญ ๊ฐ€๋Šฅ์„ฑ

  • HTTP๋Š” ํ‰๋ฌธ์œผ๋กœ ํ†ต์‹ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋„์ฒญ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด HTTPS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ†ต์‹  ์ž์ฒด๋ฅผ ์•”ํ˜ธํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. HTTPS๋Š” SSL/TLS ํ”„๋กœํ† ์ฝœ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋ฏ€๋กœ, ์ œ3์ž๊ฐ€ ํ†ต์‹  ๋‚ด์šฉ์„ ๋„์ฒญํ•˜๋”๋ผ๋„ ๊ทธ ๋‚ด์šฉ์„ ํ•ด๋…ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ์ž๊ฐ€ ๋ณตํ˜ธํ™”ํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

2. ์œ„์žฅ ๊ฐ€๋Šฅ์„ฑ

  • HTTP๋Š” ํ†ต์‹  ์ƒ๋Œ€๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์•…์˜์ ์ธ ์‚ฌ์šฉ์ž๊ฐ€ ์ค‘๊ฐ„์—์„œ ํ†ต์‹ ์„ ๊ฐ€๋กœ์ฑ„๊ฑฐ๋‚˜ ์ž์‹ ์„ ์œ„์žฅํ•˜์—ฌ ์‚ฌ์šฉ์ž๋ฅผ ์†์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • HTTPS๋Š” SSL/TLS ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์˜ ์‹ ์›์„ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค. ์ด ์ธ์ฆ์„œ๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ด€(CA, ์ธ์ฆ ๊ธฐ๊ด€)์ด ๋ฐœ๊ธ‰ํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž๋Š” ์ด ์ธ์ฆ์„œ๋ฅผ ํ†ตํ•ด ํ†ต์‹  ์ƒ๋Œ€๋ฐฉ์ด ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ๋ณ€์กฐ ๊ฐ€๋Šฅ์„ฑ

  • HTTP๋Š” ๋ฐ์ดํ„ฐ์˜ ์™„์ „์„ฑ(๋ฌด๊ฒฐ์„ฑ)์„ ๋ณด์žฅํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์กฐ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • HTTPS๋Š” ๋ฉ”์‹œ์ง€ ์ธ์ฆ ์ฝ”๋“œ(MAC)๋‚˜ ์ „์ž ์„œ๋ช… ๋“ฑ์„ ํ†ตํ•ด ๋ณ€์กฐ๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๐ŸŒŸ HTTPS๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

HTTPS(HyperText Transfer Protocol Secure)๋Š” ์ธํ„ฐ๋„ท ์ƒ์—์„œ ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋Š” SSL/TLS ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ด ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— ์ž์›์„ ์ฃผ๊ณ ๋ฐ›๋Š” ํ†ต์‹  ๊ทœ์•ฝ์ž…๋‹ˆ๋‹ค. HTTPS๋Š” ํ…์ŠคํŠธ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ „์†กํ•˜๋ฉฐ, ๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”’ HTTPS ํ†ต์‹  ํ๋ฆ„

  1. ๊ณต๊ฐœํ‚ค์™€ ๊ฐœ์ธํ‚ค ์ƒ์„ฑ: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„(A)๋ฅผ ๋งŒ๋“œ๋Š” ๊ธฐ์—…์€ HTTPS๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ณต๊ฐœํ‚ค์™€ ๊ฐœ์ธํ‚ค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  2. CA ๊ธฐ์—…๊ณผ ๊ณ„์•ฝ: ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” CA ๊ธฐ์—…์„ ์„ ํƒํ•˜๊ณ , ๊ทธ ๊ธฐ์—…์—๊ฒŒ ๊ณต๊ฐœํ‚ค ๊ด€๋ฆฌ๋ฅผ ๋ถ€ํƒํ•˜๋ฉฐ ๊ณ„์•ฝ์„ ์ฒด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

    CA๋ž€? : Certificate Authority๋กœ, ๊ณต๊ฐœํ‚ค๋ฅผ ์ €์žฅํ•ด์ฃผ๋Š” ์‹ ๋ขฐ์„ฑ์ด ๊ฒ€์ฆ๋œ ๋ฏผ๊ฐ„๊ธฐ์—…์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

  3. ์ธ์ฆ์„œ ๋ฐœ๊ธ‰: CA ๊ธฐ์—…์€ ํ•ด๋‹น ๊ธฐ์—…์˜ ์ด๋ฆ„, A์„œ๋ฒ„ ๊ณต๊ฐœํ‚ค, ๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ๋ฒ•์„ ๋‹ด์€ ์ธ์ฆ์„œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , CA ๊ธฐ์—…์˜ ๊ฐœ์ธํ‚ค๋กœ ์ด๋ฅผ ์•”ํ˜ธํ™”(์„œ๋ช…)ํ•˜์—ฌ A์„œ๋ฒ„์— ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  4. ์ธ์ฆ์„œ ์ „๋‹ฌ: A์„œ๋ฒ„๋Š” ์•”ํ˜ธํ™”๋œ ์ธ์ฆ์„œ๋ฅผ ๋ณด์œ ํ•˜๊ฒŒ ๋˜๋ฉฐ, ์ด์ œ A์„œ๋ฒ„๋Š” ์ž์‹ ์˜ ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”๋œ HTTPS ์š”์ฒญ์ด ์•„๋‹Œ ์š”์ฒญ์ด ์˜ค๋ฉด, ์ด ์•”ํ˜ธํ™”๋œ ์ธ์ฆ์„œ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

  5. ์ธ์ฆ์„œ ํ™•์ธ: ํด๋ผ์ด์–ธํŠธ๊ฐ€ main.html ํŒŒ์ผ์„ A์„œ๋ฒ„์— ์š”์ฒญํ–ˆ์„ ๋•Œ, HTTPS ์š”์ฒญ์ด ์•„๋‹Œ ๊ฒฝ์šฐ CA ๊ธฐ์—…์ด A์„œ๋ฒ„์˜ ์ •๋ณด๋ฅผ CA ๊ธฐ์—…์˜ ๊ฐœ์ธํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•œ ์ธ์ฆ์„œ๋ฅผ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

    • CA ๊ธฐ์—…์˜ ๊ณต๊ฐœํ‚ค๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ด๋ฏธ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด ๊ณต๊ฐœํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด ์ธ์ฆ์„œ๋ฅผ ํ•ด๋…ํ•˜๊ณ  A์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ ์„œ๋ช…์„ ํ™•์ธํ•˜์—ฌ A์„œ๋ฒ„์˜ ์‹ ๋ขฐ์„ฑ์„ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
  6. ๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”: ํด๋ผ์ด์–ธํŠธ๋Š” A์„œ๋ฒ„์™€ HandShaking ๊ณผ์ •์—์„œ ์ฃผ๊ณ ๋ฐ›์€ ๋‚œ์ˆ˜๋ฅผ ์กฐํ•ฉํ•˜์—ฌ pre-master-secret-key๋ฅผ ์ƒ์„ฑํ•œ ๋’ค, A์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋กœ ํ•ด๋‹น ๋Œ€์นญํ‚ค๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์„œ๋ฒ„๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

  7. ๋Œ€์นญํ‚ค ๋ณตํ˜ธํ™”: A์„œ๋ฒ„๋Š” ์•”ํ˜ธํ™”๋œ ๋Œ€์นญํ‚ค๋ฅผ ์ž์‹ ์˜ ๊ฐœ์ธํ‚ค๋กœ ๋ณตํ˜ธํ™”ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์™€ ๋™์ผํ•œ ๋Œ€์นญํ‚ค๋ฅผ ํš๋“ํ•ฉ๋‹ˆ๋‹ค.

  8. master-secret-key ์ƒ์„ฑ: ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋Š” ๊ฐ๊ฐ pre-master-secret-key๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ master-secret-key๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด ํ‘œ์ค€ํ™”๋œ ๋ฐฉ์‹์œผ๋กœ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ๋™์ผํ•œ master-secret-key๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  9. session-key ์ƒ์„ฑ ๋ฐ ํ†ต์‹ : master-secret-key๋ฅผ ํ†ตํ•ด session-key๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ด๋ฅผ ์ด์šฉํ•ด ๋Œ€์นญํ‚ค ๋ฐฉ์‹์œผ๋กœ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, ๋™์ผํ•œ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ session-key๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ‚ค๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ํ†ต์‹  ๋Œ€์‹  ์•”ํ˜ธํ™” ํ›„ ์ „๋‹ฌ ๋ฐ ๋ณตํ˜ธํ™”๊ฐ€ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

  10. ์„ธ์…˜ ์ข…๋ฃŒ: ๊ฐ ํ†ต์‹ ์ด ์ข…๋ฃŒ๋  ๋•Œ๋งˆ๋‹ค session-key๋ฅผ ํŒŒ๊ธฐํ•ฉ๋‹ˆ๋‹ค.

๐Ÿšจ HTTPS์˜ ์ฃผ์˜์ 

HTTPS๋ผ๊ณ  ํ•ด์„œ ๋ฌด์กฐ๊ฑด ์•ˆ์ „ํ•œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์‹ ๋ขฐ๋ฐ›์€ CA ๊ธฐ์—…์ด ์•„๋‹Œ ์ž์ฒด ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•œ ๊ฒฝ์šฐ, ๋ธŒ๋ผ์šฐ์ €์—์„œ "์ฃผ์˜ ์š”ํ•จ", "์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์‚ฌ์ดํŠธ"์™€ ๊ฐ™์€ ์•Œ๋ฆผ์„ ํ‘œ์‹œํ•ด ์ฃผ์˜๋ฅผ ํ™˜๊ธฐ์‹œํ‚ต๋‹ˆ๋‹ค.

HTTP์˜ ๋ฐœ์ „ ํ๋ฆ„

1. HTTP 0.9

  • ๊ธฐ๋ณธ ๊ฐœ๋… : HTTP์˜ ์ตœ์ดˆ ๋ฒ„์ „์œผ๋กœ, ๋งค์šฐ ๋‹จ์ˆœํ•œ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.
  • ํŠน์ง• :
    • ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ : ์˜ค์ง HTML ํŒŒ์ผ๋งŒ ์ „์†ก ๊ฐ€๋Šฅ.
    • GET ๋ฉ”์„œ๋“œ๋งŒ ์ง€์› : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญํ•œ ํ›„, HTML ๋ฌธ์„œ๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ๋ฐ”๋กœ ์—ฐ๊ฒฐ์ด ์ข…๋ฃŒ๋จ.
    • ํ—ค๋” ์—†์Œ : ์ƒํƒœ ์ฝ”๋“œ, ์ฝ˜ํ…์ธ  ์œ ํ˜• ๋“ฑ์˜ ์ •๋ณด๊ฐ€ ์—†์Œ.
  • ํ•œ๊ณ„ : ๋‹ค๋ฅธ ํŒŒ์ผ ํ˜•์‹ ์ „์†ก ๋ถˆ๊ฐ€, ๋งค์šฐ ์ œํ•œ์  ๊ธฐ๋Šฅ.

2. HTTP 1.0

  • ๊ธฐ๋ณธ ๊ฐœ๋… : ์›น์˜ ์ƒ์—…์  ๋ฐœ์ „๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋œ ๋ฒ„์ „์œผ๋กœ, ํ˜„์žฌ์™€ ์œ ์‚ฌํ•œ HTTP ๊ตฌ์กฐ๋ฅผ ๊ฐ–์ถค.
  • ํŠน์ง• :
    • ํ—ค๋” ๋„์ž… : ์š”์ฒญ๊ณผ ์‘๋‹ต์— HTTP ํ—ค๋”๊ฐ€ ์ถ”๊ฐ€๋˜์–ด, ์ƒํƒœ ์ฝ”๋“œ, ์ฝ˜ํ…์ธ  ์œ ํ˜• ๋“ฑ์„ ํฌํ•จ.
    • ๋‹ค์–‘ํ•œ ๋ฉ”์„œ๋“œ : GET ์™ธ์— POST, HEAD ๋ฉ”์„œ๋“œ ๋„์ž…
    • ๋‹จ์ผ ์—ฐ๊ฒฐ : ์š”์ฒญ๋‹น ํ•˜๋‚˜์˜ TCP ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉํ•˜๊ณ , ์‘๋‹ต ํ›„ ์—ฐ๊ฒฐ์ด ์ข…๋ฃŒ๋จ.
  • ํ•œ๊ณ„ : ์—ฌ๋Ÿฌ ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋น„ํšจ์œจ์ 

3. HTTP 1.1

  • ๊ธฐ๋ณธ ๊ฐœ๋… : HTTP์˜ ํ‘œ์ค€ํ™”๋œ ๋ฒ„์ „์œผ๋กœ, ์˜ค๋Š˜๋‚  ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ฒ„์ „.
  • ํŠน์ง• :
    • ์ง€์† ์—ฐ๊ฒฐ(Persistent Connections) : ๊ธฐ๋ณธ์ ์œผ๋กœ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜์—ฌ, ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ์—์„œ ์—ฌ๋Ÿฌ ์š”์ฒญ/์‘๋‹ต์„ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ.
    • ํŒŒ์ดํ”„๋ผ์ด๋‹(Pipelining) : ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์—ฌ๋Ÿฌ ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Œ(๊ทธ๋Ÿฌ๋‚˜ ์‹ค์‚ฌ์šฉ์—์„œ ๋ฌธ์ œ ๋ฐœ์ƒ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ).
    • ํ˜ธ์ŠคํŠธ ํ—ค๋” ํ•„๋“œ(Host Header Field) : HTTP์˜ ์š”์ฒญ ๋ฉ”์‹œ์ง€์—์„œ ์„œ๋ฒ„์˜ ํ˜ธ์ŠคํŠธ๋ช…(๋„๋ฉ”์ธ ๋ช… ๋˜๋Š” IP ์ฃผ์†Œ)์„ ์ง€์ •ํ•˜๋Š” ํ•„๋“œ๋กœ ํ•˜๋‚˜์˜ ์„œ๋ฒ„๊ฐ€ ์—ฌ๋Ÿฌ ์›น์‚ฌ์ดํŠธ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•  ๋•Œ ์–ด๋–ค ์›น์‚ฌ์ดํŠธ์— ๋Œ€ํ•œ ์š”์ฒญ์ธ์ง€ ์„œ๋ฒ„๊ฐ€ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์—ญํ• .
    • ์บ์‹ฑ ๋ฐ ์••์ถ• : ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์œ„ํ•ด ์บ์‹ฑ๊ณผ ์ฝ˜ํ…์ธ  ์••์ถ• ์ง€์›
  • ํ•œ๊ณ„ : ํŒŒ์ดํ”„๋ผ์ด๋‹์˜ ๋น„ํšจ์œจ์„ฑ๊ณผ HOLB(Head-of-Line Blocking) ๋ฌธ์ œ๋กœ ์ธํ•ด ๋‹ค์ˆ˜์˜ ๋ฆฌ์†Œ์Šค ์š”์ฒญ ์‹œ ์„ฑ๋Šฅ ์ €ํ•˜ ๊ฐ€๋Šฅ.
  • HOLB : HTTP 1.1์—์„œ ํŒŒ์ดํ”„๋ผ์ด๋‹์„ ์‚ฌ์šฉํ•  ๋•Œ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฌ๋Ÿฌ ์š”์ฒญ์„ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ณด๋‚ด๋ฉด, ์ฒซ ๋ฒˆ์งธ ์š”์ฒญ์˜ ์‘๋‹ต์ด ์ง€์—ฐ๋  ๊ฒฝ์šฐ ๋’ค๋”ฐ๋ฅด๋Š” ๋ชจ๋“  ์š”์ฒญ์˜ ์‘๋‹ต๋„ ํ•จ๊ป˜ ์ง€์—ฐ.

4. HTTP 2.0

  • ๊ธฐ๋ณธ ๊ฐœ๋… : HTTP 1.1์˜ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅ, ์›น ์„ฑ๋Šฅ์„ ๋Œ€ํญ ํ–ฅ์ƒ์‹œํ‚ด
  • ํŠน์ง• :
    • ์ด์ง„ ํ”„๋ ˆ์ด๋ฐ(Binary Framing) : ๋ฐ์ดํ„ฐ๋ฅผ ์ด์ง„ ํ˜•์‹์œผ๋กœ ์ „์†กํ•˜์—ฌ, ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ ์ „์†ก๊ณผ ์ฒ˜๋ฆฌ.
    • ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ(Multiplexing) : ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ์—์„œ ์—ฌ๋Ÿฌ ์š”์ฒญ/์‘๋‹ต์„ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ HOLB ๋ฌธ์ œ ํ•ด๊ฒฐ
    • ํ—ค๋” ์••์ถ• : ํ—ค๋” ์ •๋ณด๋ฅผ ์••์ถ•ํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๊ฐ์†Œ(HPACK)
    • ์„œ๋ฒ„ ํ‘ธ์‹œ(Server Push) : ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ ์—†์ด๋„ ๊ด€๋ จ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฏธ๋ฆฌ ์ „์†ก ๊ฐ€๋Šฅ
    • ํ•œ๊ณ„ : TCP ๊ธฐ๋ฐ˜์ด๋ฏ€๋กœ ์—ฌ์ „ํžˆ TCP์˜ ์ œ์•ฝ(TCP ์—ฐ๊ฒฐ ์„ค์ • ๋น„์šฉ, ํ˜ผ์žก ์ œ์–ด ๋“ฑ)์ด ์กด์žฌ

5. HTTP 3.0

  • ๊ธฐ๋ณธ ๊ฐœ๋… : QUIC(Quick UDP Internet Protocol) ํ”„๋กœํ† ์ฝœ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์ตœ์‹  HTTP ๋ฒ„์ „, ๊ธฐ์กด์˜ TCP ๊ธฐ๋ฐ˜ ๋ฌธ์ œ๋ฅผ ๊ทน๋ณต.
  • ํŠน์ง• :
    • QUIC ํ”„๋กœํ† ์ฝœ : TCP ๋Œ€์‹  UDP ๊ธฐ๋ฐ˜ QUIC์„ ์‚ฌ์šฉ, ๋” ๋น ๋ฅธ ์—ฐ๊ฒฐ ์„ค์ •๊ณผ ๋ฐ์ดํ„ฐ ์ „์†ก.
    • ์ŠคํŠธ๋ฆผ ๋…๋ฆฝ์„ฑ : ๊ฐ ์ŠคํŠธ๋ฆผ์ด ๋…๋ฆฝ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์–ด, HOLB ๋ฌธ์ œ๋ฅผ ์™„์ „ํžˆ ํ•ด๊ฒฐ.
    • ๋‚ด์žฅ๋œ ๋ณด์•ˆ : TLS 1.3์„ ๊ธฐ๋ณธ์œผ๋กœ ํ†ตํ•ฉํ•˜์—ฌ, ๋น ๋ฅด๊ณ  ์•ˆ์ „ํ•œ ์—ฐ๊ฒฐ ์ œ๊ณต.
  • ํ•œ๊ณ„ : ์•„์ง ๋„๋ฆฌ ์ฑ„ํƒ๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ, ์ผ๋ถ€ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์—์„œ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Œ.

QUIC(Quick UDP Internet Protocol)

QUIC(Quick UDP Internet Connections) ๋Š” ๊ตฌ๊ธ€์ด ๊ฐœ๋ฐœํ•œ ์ „์†ก ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ๋กœ, ๊ธฐ์กด์˜ TCP(Transmission Control Protocol)์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ , HTTP/3์˜ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” ์ƒˆ๋กœ์šด ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. QUIC์€ ์ „์†ก ๊ณ„์ธต์—์„œ ๋™์ž‘ํ•˜๋ฉฐ, ์ฃผ๋กœ ์›น ๋ธŒ๋ผ์šฐ์ง•์˜ ์†๋„์™€ ๋ณด์•ˆ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

QUIC์˜ ์ฃผ์š” ํŠน์ง•
  1. UDP ๊ธฐ๋ฐ˜:

    • QUIC์€ TCP ๋Œ€์‹  UDP(User Datagram Protocol) ์œ„์—์„œ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. UDP๋Š” ์—ฐ๊ฒฐ ์„ค์ •์„ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š๋Š” ๋‹จ์ˆœํ•œ ์ „์†ก ํ”„๋กœํ† ์ฝœ๋กœ, TCP๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋น ๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. QUIC์€ UDP์˜ ์žฅ์ ์„ ํ™œ์šฉํ•˜๋ฉด์„œ, TCP์˜ ๊ธฐ๋Šฅ๊ณผ ๋ณด์•ˆ์„ฑ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  2. ๋น ๋ฅธ ์—ฐ๊ฒฐ ์„ค์ •:

    • TCP๋Š” ์—ฐ๊ฒฐ ์„ค์ •์„ ์œ„ํ•ด 3-way ํ•ธ๋“œ์…ฐ์ดํฌ๋ฅผ ํ•„์š”๋กœ ํ•˜๋ฉฐ, TLS(Transport Layer Security)๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์ด ๊ณผ์ •์ด ๋” ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค.๋ฐ˜๋ฉด QUIC์€ ์—ฐ๊ฒฐ ์„ค์ •์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ UDP๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ๊ฒฐ ์„ค์ •๊ณผ TLS ํ•ธ๋“œ์…ฐ์ดํฌ๋ฅผ ํ•˜๋‚˜์˜ ๋‹จ๊ณ„๋กœ ํ†ตํ•ฉํ•˜์—ฌ, ํ•œ ๋ฒˆ์˜ ์™•๋ณต(Round-Trip Time, RTT) ๋งŒ์— ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํŠนํžˆ ์ฒ˜์Œ ์—ฐ๊ฒฐํ•  ๋•Œ์˜ ์ง€์—ฐ์„ ํฌ๊ฒŒ ์ค„์ž…๋‹ˆ๋‹ค.
  3. ๋‚ด์žฅ๋œ ๋ณด์•ˆ:

    • QUIC์€ TLS 1.3์„ ํ”„๋กœํ† ์ฝœ ์ž์ฒด์— ๋‚ด์žฅํ•˜์—ฌ, ๋ฐ์ดํ„ฐ ์ „์†ก์˜ ๊ธฐ๋ฐ€์„ฑ๊ณผ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋ณ„๋„์˜ ๋ณด์•ˆ ๊ณ„์ธต์ด ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋ณด์•ˆ ์„ค์ •์ด ๊ฐ„์†Œํ™”๋ฉ๋‹ˆ๋‹ค.
  4. ์ŠคํŠธ๋ฆผ ๋…๋ฆฝ์„ฑ:

    • QUIC์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ŠคํŠธ๋ฆผ์„ ๋‹จ์ผ ์—ฐ๊ฒฐ์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. TCP์—์„œ๋Š” ํ•˜๋‚˜์˜ ํŒจํ‚ท์ด ์†์‹ค๋˜๋ฉด ์ „์ฒด ์—ฐ๊ฒฐ์ด ์ง€์—ฐ๋˜๋Š” HOLB(Head-of-Line Blocking) ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๋ฐ, QUIC์€ UDP ์œ„์—์„œ ๊ตฌํ˜„๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ ์ŠคํŠธ๋ฆผ์€ ๋‹ค๋ฅธ ์ŠคํŠธ๋ฆผ์˜ ์†์‹ค์ด๋‚˜ ์ง€์—ฐ์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
  5. ์—ฐ๊ฒฐ ์œ ์ง€ ๊ธฐ๋Šฅ:

    • IP ์ฃผ์†Œ์™€ ํฌํŠธ ๋ฒˆํ˜ธ์— ๊ฐ•ํ•˜๊ฒŒ ์˜์กดํ•˜์—ฌ ๋„คํŠธ์›Œํฌ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ์—ฐ๊ฒฐ์ด ๋Š๊ธฐ๊ณ , ์ƒˆ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•ด์•ผ ํ•˜๋Š” TCP์™€๋Š” ๋‹ค๋ฅด๊ฒŒ QUIC์€ ๋„คํŠธ์›Œํฌ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋”๋ผ๋„(์˜ˆ: Wi-Fi์—์„œ LTE๋กœ ์ „ํ™˜) ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ ํŠนํžˆ ์œ ์šฉํ•˜๋ฉฐ, ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง€์ง€ ์•Š๊ณ  ์ง€์†์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  6. ์†์‹ค ๋ณต๊ตฌ:

    • QUIC์€ TCP์˜ ํ˜ผ์žก ์ œ์–ด๋‚˜ ํŒจํ‚ท ์†์‹ค ๋ณต๊ตฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฐœ์„ ํ•˜์—ฌ, ํŒจํ‚ท ์†์‹ค์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋” ํšจ์œจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋„คํŠธ์›Œํฌ ํ˜ผ์žก ์ƒํ™ฉ์—์„œ๋„ ์•ˆ์ •์ ์ธ ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  7. ํ”„๋กœํ† ์ฝœ ํ™•์žฅ์„ฑ๊ณผ ์—…๋ฐ์ดํŠธ:

    • TCP๋Š” ๋Œ€๋ถ€๋ถ„ ์šด์˜์ฒด์ œ์˜ ์ปค๋„์—์„œ ๊ตฌํ˜„๋˜์–ด ์žˆ์–ด, ํ”„๋กœํ† ์ฝœ ๊ฐœ์„ ์ด๋‚˜ ์—…๋ฐ์ดํŠธ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, QUIC์€ UDP๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„(user space)์—์„œ ๊ตฌํ˜„๋˜๋ฏ€๋กœ, ํ”„๋กœํ† ์ฝœ์˜ ๊ฐœ์„ ์ด๋‚˜ ํ™•์žฅ์ด ์ƒ๋Œ€์ ์œผ๋กœ ์‰ฝ๊ณ  ๋น ๋ฆ…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๋น ๋ฅด๊ฒŒ ๋„์ž…ํ•˜๊ณ , ๋ณ€ํ™”ํ•˜๋Š” ์š”๊ตฌ์— ๋งž์ถฐ ํ”„๋กœํ† ์ฝœ์„ ์ง„ํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
QUIC์˜ ๋‹จ์  ๋ฐ ๋„์ „ ๊ณผ์ œ
  • UDP ๊ธฐ๋ฐ˜์˜ ํ•œ๊ณ„: ์ผ๋ถ€ ๋„คํŠธ์›Œํฌ ๋ฐฉํ™”๋ฒฝ์ด๋‚˜ ์ค‘๊ฐ„ ์žฅ์น˜์—์„œ UDP ํŠธ๋ž˜ํ”ฝ์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” QUIC์ด ์ด๋Ÿฌํ•œ ํ™˜๊ฒฝ์—์„œ ์ž˜ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.
  • ์ƒˆ๋กœ์šด ํ”„๋กœํ† ์ฝœ: QUIC์€ ๋น„๊ต์  ์ƒˆ๋กœ์šด ํ”„๋กœํ† ์ฝœ์ด๋ฏ€๋กœ, ๋ชจ๋“  ๋„คํŠธ์›Œํฌ ์žฅ๋น„์™€ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์ด๋ฅผ ์™„์ „ํžˆ ์ง€์›ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

HTTP์—์„œ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ์˜ ์ „์†ก ๋ฐฉ์‹

  1. MIME ํƒ€์ž…์„ ํ†ตํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ ์ „์†ก
  • MIME(Multipurpose Internet Mail Extensions)๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ, ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹๊ณผ ๋‚ด์šฉ์„ ๋ช…ํ™•ํžˆ ์ •์˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. HTTP ์š”์ฒญ์ด๋‚˜ ์‘๋‹ต์‹œ์— ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ, Content-Type ํ—ค๋”์— MIME ํƒ€์ž…์„ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๋Š” ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์œ ํ˜•์„ ์ดํ•ดํ•˜๊ณ , ์ด๋ฅผ ์ ์ ˆํžˆ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ๋ฉ€ํ‹ฐํŒŒํŠธ ํผ ๋ฐ์ดํ„ฐ(multipart/form-data)
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋กœ ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. multipart/form-data ํ˜•์‹์€ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ์™€ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ํ•จ๊ป˜ ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ, ํŒŒ์ผ ์—…๋กœ๋“œ ์‹œ HTTP POST ์š”์ฒญ์˜ ๋ณธ๋ฌธ์— ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
  1. Base64 ์ธ์ฝ”๋”ฉ
  • ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ…์ŠคํŠธ ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ฃผ๋กœ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ ์ „์†ก์—์„œ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด JSON์ด๋‚˜ XML๋กœ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•ด ์ „์†กํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ธ์ฝ”๋”ฉ์œผ๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ์•ฝ๊ฐ„ ์ฆ๊ฐ€ํ•˜์ง€๋งŒ ๋„คํŠธ์›Œํฌ ์ „์†ก์˜ ์•ˆ์ „์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.
  1. HTTPS๋ฅผ ํ†ตํ•œ ๋ณด์•ˆ ์ „์†ก
  • HTTPS๋Š” HTTP์— SSL/TLS ์•”ํ˜ธํ™” ๊ณ„์ธต์„ ์ถ”๊ฐ€ํ•œ ํ”„๋กœํ† ์ฝœ๋กœ, ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•œ ๋ชจ๋“  ์ „์†ก ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก ์ค‘์— ๋„์ฒญ์ด๋‚˜ ๋ณ€์กฐ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜์—ฌ, ์•ˆ์ „ํ•œ ํ†ต์‹ ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

HTTP์™€ ์†Œ์ผ“ ํ†ต์‹  ๋น„๊ต

1. ์†Œ์ผ“ ํ†ต์‹ 

์†Œ์ผ“ ํ†ต์‹ ์€ ๋„คํŠธ์›Œํฌ ์ƒ์˜ ๋‘ ๋…ธ๋“œ ๊ฐ„์— ์ง์ ‘์ ์ธ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์†ก์ˆ˜์‹ ํ•˜๋Š” ์ €์ˆ˜์ค€์˜ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

  • ํšจ์œจ์„ฑ
    • ์†Œ์ผ“ ํ†ต์‹ ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ ์ง์ ‘์ ์ด๊ณ  ๋น ๋ฅธ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๋ถˆํ•„์š”ํ•œ ํ—ค๋”๋‚˜ ํ”„๋กœํ† ์ฝœ ๋ ˆ๋นŒ์˜ ์ถ”๊ฐ€ ์ฒ˜๋ฆฌ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์—, ๋„คํŠธ์›Œํฌ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์‹ค์‹œ๊ฐ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(์˜ˆ: ์˜จ๋ผ์ธ ๊ฒŒ์ž„, VolP)์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ด๋Š” ๋น ๋ฅธ ์‘๋‹ต ์‹œ๊ฐ„๊ณผ ๋‚ฎ์€ ์ง€์—ฐ์„ ์š”๊ตฌํ•˜๋Š” ๊ฒฝ์šฐ์— ๋งค์šฐ ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ์œ ์—ฐ์„ฑ
    • ์†Œ์ผ“ ํ†ต์‹ ์€ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์˜ ์„ธ๋ถ€์‚ฌํ•ญ์„ ๋” ๋งŽ์ด ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ํ˜•์‹, ํ”„๋กœํ† ์ฝœ, ์ „์†ก ๋ฐฉ์‹ ๋“ฑ์„ ์ง์ ‘ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ํŠน์ • ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž๊ฒŒ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ณต์žก์„ฑ
    • ์†Œ์ผ“ ํ†ต์‹ ์€ ์ €์ˆ˜์ค€์˜ ๋„คํŠธ์›Œํฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ์—ฐ๊ฒฐ ๊ด€๋ฆฌ, ๋ฐ์ดํ„ฐ ํ๋ฆ„ ์ œ์–ด, ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๋“ฑ์„ ์ง์ ‘ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ๋ณต์žก์„ฑ์ด ๋†’์•„์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. HTTP

HTTP๋Š” ์›น์—์„œ ํ‘œ์ค€์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ณ ์ˆ˜์ค€์˜ ํ”„๋กœํ† ์ฝœ๋กœ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • ํ‘œ์ค€ํ™” ๋ฐ ํ˜ธํ™˜์„ฑ
    • HTTP๋Š” ์ „ ์„ธ๊ณ„์ ์œผ๋กœ ํ‘œ์ค€ํ™”๋œ ํ”„๋กœํ† ์ฝœ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์›น ๋ธŒ๋ผ์šฐ์ €, ์„œ๋ฒ„, API ๋“ฑ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์—์„œ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค๋ฅธ ์‹œ์Šคํ…œ๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ๋ณด์žฅํ•˜๊ณ  ์ธํ„ฐ๋„ท ๊ธฐ๋ฐ˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.
    • RESTful API์™€ ๊ฐ™์€ ์›น ์„œ๋น„์Šค๋Š” HTTP๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค๊ณ„๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„์˜ ์ƒํ˜ธ ์šด์šฉ์„ฑ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
  • **๋ณด์•ˆ (HTTPS)
    • HTTPS๋Š” HTTP์— SSL/TLS ์•”ํ˜ธํ™”๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ, ๋ฐ์ดํ„ฐ ์ „์†ก์˜ ๊ธฐ๋ฐ€์„ฑ๊ณผ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ์•ˆ์ „ํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋ณด์•ˆ์ด ์ค‘์š”ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(์˜ˆ: ์˜จ๋ผ์ธ ์‡ผํ•‘, ๊ธˆ์œต ์„œ๋น„์Šค)์—์„œ๋Š” HTTPS๊ฐ€ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.
  • ์บ์‹ฑ ๋ฐ ํ”„๋ก์‹œ ์ง€์›
    • HTTP๋Š” ์บ์‹ฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด ์„œ๋ฒ„ ๋ถ€ํ•˜๋ฅผ ์ค„์ด๊ณ , ํด๋ผ์ด์–ธํŠธ์˜ ์‘๋‹ต ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ์ค„์ด๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋˜ํ•œ, HTTP๋Š” ํ”„๋ก์‹œ ์„œ๋ฒ„๋ฅผ ํ†ตํ•œ ์ค‘๊ณ„์™€ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ์ง€์›ํ•˜์—ฌ, ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์œ ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ๊ตฌํ˜„ ์šฉ์ด์„ฑ
    • HTTP๋Š” ๊ณ ์ˆ˜์ค€์˜ ์ถ”์ƒํ™”๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๋“ค์ด ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ HTTP ์ง€์› ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ๋ณต์žกํ•œ ๋„คํŠธ์›Œํฌ ๊ด€๋ฆฌ ์—†์ด ๊ฐ„๋‹จํ•œ ์š”์ฒญ/์‘๋‹ต ๋ชจ๋ธ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฟ ํ‚ค, ์„ธ์…˜, ํ† ํฐ์˜ ์ฐจ์ด

์ฟ ํ‚ค, ์„ธ์…˜, ๊ทธ๋ฆฌ๊ณ  ํ† ํฐ์€ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž๋ฅผ ์ธ์ฆํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.

  • ์ •์˜
    • ์ฟ ํ‚ค๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์— ์˜ํ•ด ์‚ฌ์šฉ์ž์˜ ๋กœ์ปฌ ์žฅ์น˜์— ์ €์žฅ๋˜๋Š” ์ž‘์€ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ์ฟ ํ‚ค๋Š” ์ฃผ๋กœ ์‚ฌ์šฉ์ž ์‹๋ณ„ ์ •๋ณด, ์„ธ์…˜ ID, ์‚ฌ์šฉ์ž ์„ค์ • ๋“ฑ์„ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ํŠน์ง•
    • ์ €์žฅ ์œ„์น˜ : ํด๋ผ์ด์–ธํŠธ ์ธก(์‚ฌ์šฉ์ž์˜ ๋ธŒ๋ผ์šฐ์ €)์—์„œ ๊ด€๋ฆฌ๋˜๋ฉฐ, ์„œ๋ฒ„๊ฐ€ ์ฟ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฐ์ดํ„ฐ ์ˆ˜๋ช… : ์ฟ ํ‚ค๋Š” ๋งŒ๋ฃŒ ๊ธฐ๊ฐ„์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ๋ฃŒ ๊ธฐ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์ฟ ํ‚ค๋Š” ์ž๋™์œผ๋กœ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. ์˜๊ตฌ ์ฟ ํ‚ค์™€ ์„ธ์…˜ ์ฟ ํ‚ค๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.
    • ์‚ฌ์šฉ ์‚ฌ๋ก€ : ์ž๋™ ๋กœ๊ทธ์ธ, ์‚ฌ์šฉ์ž ์„ค์ • ์œ ์ง€(์˜ˆ: ๋‹คํฌ ๋ชจ๋“œ ์„ค์ •), ๋ฐฉ๋ฌธ์ž ์ถ”์  ๋“ฑ
    • ๋ณด์•ˆ : ์ฟ ํ‚ค ์ž์ฒด๋Š” ์•ˆ์ „ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋ฉด ๋„์ฒญ์ด๋‚˜ ์กฐ์ž‘์˜ ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. HTTPS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „์†กํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค.

2. ์„ธ์…˜ (Session)

  • ์ •์˜
    • ์„ธ์…˜์€ ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ์ž๋ณ„๋กœ ๊ด€๋ฆฌ๋˜๋Š” ์ผ์‹œ์ ์ธ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค. ์„ธ์…˜์€ ์ฃผ๋กœ ์‚ฌ์šฉ์ž์˜ ๋กœ๊ทธ์ธ ์ƒํƒœ์™€ ๊ฐ™์€ ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ์„œ๋ฒ„์— ์ €์žฅํ•˜์—ฌ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ํŠน์ง•
    • ์ €์žฅ ์œ„์น˜ : ์„œ๋ฒ„ ์ธก์—์„œ ๊ด€๋ฆฌ๋˜๋ฉฐ, ํด๋ผ์ด์–ธํŠธ๋Š” ์„ธ์…˜ ID๋งŒ์„ ๋ธŒ๋ผ์šฐ์ €์˜ ์ฟ ํ‚ค๋‚˜ URL ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฐ์ดํ„ฐ ์ˆ˜๋ช… : ์„ธ์…˜์€ ์‚ฌ์šฉ์ž๊ฐ€ ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ๊ฑฐ๋‚˜, ์„œ๋ฒ„๊ฐ€ ์„ธ์…˜์„ ๋งŒ๋ฃŒ์‹œํ‚ค๊ธฐ ์ „๊นŒ์ง€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์ž์›์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ์„ธ์…˜์˜ ๋งŒ๋ฃŒ ๊ธฐ๊ฐ„์ด ์งง๊ฒŒ ์„ค์ •๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.
    • ์‚ฌ์šฉ ์‚ฌ๋ก€ : ์‚ฌ์šฉ์ž ์ธ์ฆ ์ƒํƒœ ์œ ์ง€, ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ •๋ณด ์ €์žฅ, ์‚ฌ์šฉ์ž ๋งž์ถคํ˜• ์ •๋ณด ๊ด€๋ฆฌ ๋“ฑ
    • ๋ณด์•ˆ : ์„ธ์…˜ ๋ฐ์ดํ„ฐ๋Š” ์„œ๋ฒ„์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋Œ€์ ์œผ๋กœ ์•ˆ์ „ํ•˜์ง€๋งŒ, ์„ธ์…˜ ID๊ฐ€ ์œ ์ถœ๋˜๋ฉด ์„ธ์…˜ ํ•˜์ด์žฌํ‚น ๊ณต๊ฒฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ํ† ํฐ (Token)

  • ์ •์˜ : ํ† ํฐ์€ ์ฃผ๋กœ ์‚ฌ์šฉ์ž ์ธ์ฆ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์•”ํ˜ธํ™”๋œ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค. JWT(JSon Web Token)์™€ ๊ฐ™์€ ํ† ํฐ์€ ์‚ฌ์šฉ์ž์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ์œ„ํ•ด ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ํŠน์ง•
    • ์ €์žฅ ์œ„์น˜ : ์ผ๋ฐ˜์ ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ ์ธก(๋ธŒ๋ผ์šฐ์ €์˜ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€ ๋˜๋Š” ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€)์— ์ €์žฅ๋˜์ง€๋งŒ, ์„œ๋ฒ„์— ์ €์žฅํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋ฐ์ดํ„ฐ ์ˆ˜๋ช… : ํ† ํฐ์—๋Š” ์œ ํšจ ๊ธฐ๊ฐ„์ด ์žˆ์œผ๋ฉฐ, ๋งŒ๋ฃŒ๋˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” ์ƒˆ๋กœ์šด ํ† ํฐ์„ ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์‚ฌ์šฉ ์‚ฌ๋ก€ : API ์ธ์ฆ, OAuth ์ธ์ฆ, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„์˜ ํ†ต์‹  ๋“ฑ
    • ๋ณด์•ˆ : ํ† ํฐ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์„œ๋ช…๋˜๊ฑฐ๋‚˜ ์•”ํ˜ธํ™”๋˜์–ด ์žˆ์–ด, ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ† ํฐ ์ž์ฒด๊ฐ€ ์œ ์ถœ๋˜๋ฉด ๋ณด์•ˆ ์œ„ํ—˜์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ vs ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ

  1. ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ

    • ์ •์˜ : ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ•˜๋ฉด ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์„ธ์…˜์„ ์ƒ์„ฑํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ์— ์„ธ์…˜ ID๋ฅผ ๋ฐœ๊ธ‰ํ•˜์—ฌ ์„ธ์…˜ ID๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
    • ์ž‘๋™ ๋ฐฉ์‹ :
      • ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ•˜๋ฉด ์„œ๋ฒ„๋Š” ๊ณ ์œ ํ•œ ์„ธ์…˜ ID๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ด๋ฅผ ์„œ๋ฒ„ ์ธก์˜ ์„ธ์…˜ ์ €์žฅ์†Œ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
      • ํด๋ผ์ด์–ธํŠธ๋Š” ์ด ์„ธ์…˜ ID๋ฅผ ์ฟ ํ‚ค์— ์ €์žฅํ•˜์—ฌ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ๋งˆ๋‹ค ํ•จ๊ป˜ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
      • ์„œ๋ฒ„๋Š” ์š”์ฒญ์—์„œ ๋ฐ›์€ ์„ธ์…˜ ID๋ฅผ ํ™•์ธํ•˜๊ณ  ์ €์žฅ๋œ ์„ธ์…˜ ์ •๋ณด์™€ ๋Œ€์กฐํ•˜์—ฌ ์‚ฌ์šฉ์ž๋ฅผ ์ธ์ฆํ•ฉ๋‹ˆ๋‹ค.
    • ํŠน์ง• :
      • ์„œ๋ฒ„์— ์ƒํƒœ ์ €์žฅ : ์„ธ์…˜์€ ์„œ๋ฒ„ ์ธก์— ์ €์žฅ๋˜๋ฉฐ ์„œ๋ฒ„๋Š” ์„ธ์…˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„œ๋ฒ„๋Š” ๋ชจ๋“  ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์„ธ์…˜ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•˜๋ฉฐ, ์ด๋Š” ์„œ๋ฒ„ ๋ฉ”๋ชจ๋ฆฌ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž์›์„ ์†Œ๋ชจํ•ฉ๋‹ˆ๋‹ค.
      • ๋ณด์•ˆ์„ฑ : ์„ธ์…˜ ID๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์ฟ ๊ธฐ์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์ฟ ํ‚ค์˜ ๋ณด์•ˆ ์„ค์ •์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์„ธ์…˜ ํ•˜์ด์žฌํ‚น ๊ณต๊ฒฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
      • ์Šค์ผ€์ผ๋ง ๋ฌธ์ œ : ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ์€ ์„œ๋ฒ„์— ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์—ฌ๋Ÿฌ ๋Œ€์˜ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์„ธ์…˜ ๋™๊ธฐํ™” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ์ด ์ ํ•ฉํ•œ ๊ฒฝ์šฐ
      • ๋‹จ์ผ ์„œ๋ฒ„์—์„œ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ : ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ์€ ์„œ๋ฒ„๊ฐ€ ์„ธ์…˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ•˜๋‚˜์˜ ์„œ๋ฒ„์—์„œ ๋ชจ๋“  ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์†Œ๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์„ธ์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ๋†’์€ ๋ณด์•ˆ ์š”๊ตฌ ์‚ฌํ•ญ์ด ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ : ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ์€ ๋ชจ๋“  ์ธ์ฆ ์ •๋ณด๋ฅผ ์„œ๋ฒ„์— ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ๋ชจ๋“  ์„ธ์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฏ€๋กœ, ํด๋ผ์ด์–ธํŠธ ์ธก์˜ ๋ณด์•ˆ์— ๋Œ€ํ•œ ์˜์กด๋„๊ฐ€ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.
      • ์งง์€ ์‚ฌ์šฉ์ž ์„ธ์…˜ : ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์•„์›ƒํ•˜๊ฑฐ๋‚˜ ์„ธ์…˜์ด ๋งŒ๋ฃŒ๋˜๋ฉด ์„ธ์…˜์„ ์ข…๋ฃŒํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์งง์€ ์„ธ์…˜ ์ง€์† ์‹œ๊ฐ„์ด ํ•„์š”ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ์ด ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ

    • ์ •์˜ : ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ•˜๋ฉด ์„œ๋ฒ„๊ฐ€ ์•”ํ˜ธํ™”๋œ ํ† ํฐ(JWT๋“ฑ)์„ ์ƒ์„ฑํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌํ•˜๊ณ , ์ดํ›„ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญํ•  ๋•Œ ์ด ํ† ํฐ์„ ์‚ฌ์šฉํ•ด ์ธ์ฆํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
    • ์ž‘๋™ ๋ฐฉ์‹ :
      • ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ•˜๋ฉด ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ํฌํ•จํ•œ JWT(JSON Web Token)์™€ ๊ฐ™์€ ํ† ํฐ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
      • ํด๋ผ์ด์–ธํŠธ๋Š” ์ด ํ† ํฐ์„ ๋กœ์ปฌ ์ €์žฅ์†Œ๋‚˜ ์ฟ ํ‚ค์— ์ €์žฅํ•˜๊ณ , ์ดํ›„ ์š”์ฒญ ์‹œ ํ—ค๋”์— ํฌํ•จํ•˜์—ฌ ์„œ๋ฒ„์— ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
      • ์„œ๋ฒ„๋Š” ํ† ํฐ์„ ๋ฐ›์•„ ๊ฒ€์ฆํ•˜๊ณ , ํ† ํฐ์— ํฌํ•จ๋œ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์‚ฌ์šฉ์ž๋ฅผ ์ธ์ฆํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ํ† ํฐ ์ž์ฒด๋ฅผ ๊ฒ€์ฆํ•˜์—ฌ ์ธ์ฆ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • ํŠน์ง• :
      • ๋ฌด์ƒํƒœ : ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ† ํฐ ์ž์ฒด๊ฐ€ ๋ชจ๋“  ์ธ์ฆ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์„œ๋ฒ„ ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์ด๋‚˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์—์„œ ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
      • ๋ณด์•ˆ์„ฑ : ํ† ํฐ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์„œ๋ช…๋˜๊ฑฐ๋‚˜ ์•”ํ˜ธํ™”๋˜์–ด ์žˆ์–ด, ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ์œ ํšจ์„ฑ์„ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ† ํฐ์ด ์œ ์ถœ๋˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ํ† ํฌ๋А์ด ์ˆ˜๋ช… ๊ด€๋ฆฌ์™€ ๋ณด์•ˆ์— ์œ ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
      • ํ™•์žฅ์„ฑ : ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ์€ ์„œ๋ฒ„ ๊ฐ„ ์ƒํƒœ๋ฅผ ๊ณต์œ ํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์—, ์—ฌ๋Ÿฌ ์„œ๋ฒ„์—์„œ ๋™์ผํ•œ ์ธ์ฆ ๋ฐฉ์‹์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ์ด ์ ํ•ฉํ•œ ๊ฒฝ์šฐ
      • ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๋˜๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ : ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ์€ ์„œ๋ฒ„๊ฐ€ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” ๋ฌด์ƒํƒœ ์ธ์ฆ ๋ฐฉ์‹์ด๋ฏ€๋กœ, ์—ฌ๋Ÿฌ ์„œ๋ฒ„ ๊ฐ„์— ์ƒํƒœ๋ฅผ ๋™๊ธฐํ™”ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋‚˜ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ ํŠนํžˆ ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„ ํ™•์žฅ์ด ์šฉ์ดํ•˜๊ณ , ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์—๋„ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
      • API ์ค‘์‹ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ : ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ JWT์™€ ๊ฐ™์€ ํ† ํฐ์„ ๋ฐ›์•„ ์š”์ฒญ์— ํฌํ•จ์‹œ์ผœ ์ธ์ฆํ•˜๋Š” ๋ฐฉ์‹์ด๋ฏ€๋กœ, API๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ†ต์‹ ํ•  ๋•Œ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ํ† ํฐ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง์ ‘ ๊ด€๋ฆฌํ•˜๋ฏ€๋กœ, ์„œ๋ฒ„์˜ ๋ถ€๋‹ด์ด ์ค„์–ด๋“ค๊ณ  ๋‹ค์–‘ํ•œ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์˜ ํ˜ธํ™˜์„ฑ์ด ๋†’์•„์ง‘๋‹ˆ๋‹ค.
      • ํ™•์žฅ์„ฑ ๋ฐ ์„ฑ๋Šฅ์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ : ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ์€ ์„œ๋ฒ„๊ฐ€ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์—, ์„œ๋ฒ„์˜ ์ž์› ์†Œ๋ชจ๋ฅผ ์ค„์ด๊ณ  ํ™•์žฅ์„ฑ์ด ๋†’์€ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋Œ€๊ทœ๋ชจ ์‚ฌ์šฉ์ž ๊ธฐ๋ฐ˜์„ ๊ฐ€์ง„ ์„œ๋น„์Šค๋‚˜ ๊ณ ์„ฑ๋Šฅ์ด ์š”๊ตฌ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
      • ๋‹จ๊ธฐ ์ธ์ฆ๊ณผ ๋กœ๊ทธ์•„์›ƒ ๋ถˆํ•„์š”ํ•œ ์‹œ์Šคํ…œ : ํŠน์ • ์ž‘์—…์ด๋‚˜ ์งง์€ ์‹œ๊ฐ„ ๋™์•ˆ๋งŒ ์ธ์ฆ์ด ํ•„์š”ํ•œ ์‹œ์Šคํ…œ์—์„œ ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ์ด ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ธ์ฆ ํ›„ ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ํ† ํฐ์ด ์ž๋™์œผ๋กœ ๋งŒ๋ฃŒ๋˜๋ฏ€๋กœ, ์ถ”๊ฐ€์ ์ธ ๋กœ๊ทธ์•„์›ƒ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜์ง€ ใ…‡๋‚ณ์Šต๋‹ˆ๋‹ค.

์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ์˜ ๋‹จ์ 

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

  • ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์˜ ์ œ์•ฝ : ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ํ†ตํ•ด ์„œ๋ฒ„ ๊ฐ„์˜ ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐ์‹œํ‚ค๋Š” ๊ฒฝ์šฐ, ํŠน์ • ์„œ๋ฒ„์— ์„ธ์…˜์ด ๊ณ ์ •(sticky)๋˜๋ฉด ๋ถ€ํ•˜ ๋ถ„์‚ฐ์ด ์ œ๋Œ€๋กœ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๋ณด์•ˆ ๋ฌธ์ œ
  • ์„ธ์…˜ ํ•˜์ด์žฌํ‚น : ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์„ธ์…˜ ID๊ฐ€ ์œ ์ถœ๋˜๋ฉด, ๊ณต๊ฒฉ์ž๋Š” ํ•ด๋‹น ์„ธ์…˜์„ ๋„์šฉํ•˜์—ฌ ๋ถˆ๋ฒ•์ ์ธ ์—‘์„ธ์Šค๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ์—์„œ๋Š” ์ด์™€ ๊ฐ™์€ ๊ณต๊ฒฉ์— ๋Œ€๋น„ํ•œ ์ถ”๊ฐ€์ ์ธ ๋ณด์•ˆ์กฐ์น˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • ์„ธ์…˜ ๋งŒ๋ฃŒ : ์„ธ์…˜์ด ๋งŒ๋ฃŒ๋˜๊ธฐ ์ „์— ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์•„์›ƒ์„ ํ•˜์ง€ ์•Š์œผ๋ฉด, ์‚ฌ์šฉ์ž์˜ ์„ธ์…˜์ด ๋‚จ์•„ ์žˆ์„ ์ˆ˜ ์žˆ์–ด ๋ณด์•ˆ ์ทจ์•ฝ์ ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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


JWT (JSON Web Token)๋ž€?

JWT (JSON Web Token)๋Š” ์ฃผ๋กœ ์‚ฌ์šฉ์ž ์ธ์ฆ๊ณผ ์ •๋ณด ๊ตํ™˜์„ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ฐœ๋ฐฉํ˜• ํ‘œ์ค€์ž…๋‹ˆ๋‹ค. JWT๋Š” JSON ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— ์ •๋ณด(Claims)๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ์•”ํ˜ธํ™”๋œ ํ† ํฐ์ž…๋‹ˆ๋‹ค. JWT๋Š” ์ฃผ๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์„ธ์…˜ ๊ด€๋ฆฌ๋ฅผ ๋Œ€์ฒดํ•˜๊ฑฐ๋‚˜, API ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

JWT์˜ ๊ตฌ์กฐ
  1. Header
    • ํ—ค๋”๋Š” ํ† ํฐ ํƒ€์ž…(JWT)๊ณผ ์‚ฌ์šฉํ•  ์„œ๋ช… ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  2. Payload
    • ํŽ˜์ด๋กœ๋“œ๋Š” ํด๋ ˆ์ž„์ด๋ผ๊ณ  ํ•˜๋Š” ์ •๋ณด ์กฐ๊ฐ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ด ํด๋ ˆ์ž„์€ ์‚ฌ์šฉ์ž ์ •๋ณด, ๋งŒ๋ฃŒ ์‹œ๊ฐ„, ๋ฐœํ–‰์ž ๋“ฑ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. Signature
    • ์„œ๋ช…์€ ํ—ค๋”์™€ ํŽ˜์ด๋กœ๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์„ฑ๋˜๋ฉฐ, ๋น„๋ฐ€ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์„œ๋ช…๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ† ํฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
JWT์˜ ์žฅ์ 
  1. ๋ฌด์ƒํƒœ(Stateful) ๋ฐ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ์˜ ์‚ฌ์šฉ
    • JWT๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ์„œ๋ฒ„์— ํ•ด๋‹น ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์„ธ์…˜์„ ์„œ๋ฒ„ ์ธก์— ์ €์žฅํ•˜์ง€ ์•Š๋Š” ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ํŠนํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž๊ฐ€ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ์ ‘์†ํ•˜๋Š” ํ™˜๊ฒฝ(๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜)์—์„œ JWT๋Š” ์„ธ์…˜ ๊ด€๋ฆฌ๋ฅผ ๊ฐ„์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๋ณด์•ˆ์„ฑ
    • JWT๋Š” ์„œ๋ช…(Signature)์„ ํ†ตํ•ด ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ช…๋œ JWT๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ์ž„์˜๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ์„œ๋ฒ„์—์„œ ์„œ๋ช…์„ ๊ฒ€์ฆํ•˜์—ฌ ์œ„๋ณ€์กฐ๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • JWT๋Š” ์•”ํ˜ธํ™”๋œ ์ƒํƒœ๋กœ ์ „์†ก๋  ์ˆ˜ ์žˆ์–ด, ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋Š” ๊ฐ€๋Šฅํ•œ ํ•œ ํ† ํฐ์— ํฌํ•จํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  3. ํ™•์žฅ์„ฑ
    • JWT๋Š” ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚˜๋ฉฐ, ํ•„์š”์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ํด๋ ˆ์ž„์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ๊ถŒํ•œ์ด๋‚˜ ์—ญํ•  ๋“ฑ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ํ†ต์‹ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์„œ๋ฒ„ ๊ฐ„์˜ ํ†ต์‹ ์—๋„ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ํŽธ๋ฆฌ์„ฑ
    • JWT๋Š” ํ‘œ์ค€ ํฌ๋งท์œผ๋กœ ์ •์˜๋˜์–ด ์žˆ์–ด, ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์—์„œ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ JWT๋ฅผ ์ง€์›ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๊ตฌํ˜„์ด ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค.
    • JWT๋Š” URL์— ํฌํ•จ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ฟ ํ‚ค๋‚˜ HTTP ํ—ค๋”์—์„œ๋„ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  5. ์ž์ฒด ํฌํ•จ(Self-Contained)
    • JWT๋Š” ์‚ฌ์šฉ์ž์˜ ๋ชจ๋“  ์ธ์ฆ ์ •๋ณด๋ฅผ ์ž์ฒด์ ์œผ๋กœ ํฌํ•จํ•˜๋ฏ€๋กœ, ์„œ๋ฒ„๋Š” ์ถ”๊ฐ€์ ์ธ ์ƒํƒœ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ํ† ํฐ์„ ๊ฒ€์ฆํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ์‚ฌ์šฉ์ž๋ฅผ ์ธ์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์‚ฌ์šฉ ์˜ˆ์‹œ
  • API ์ธ์ฆ : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ, JWT๋ฅผ HTTP ํ—ค๋”์— ํฌํ•จ์‹œ์ผœ ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž๋ฅผ ์ธ์ฆํ•˜๊ณ  ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • Single Sign-On (SSO) : JWT๋Š” ์—ฌ๋Ÿฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„์— ์ธ์ฆ ์ƒํƒœ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

RESTful API

RESTful API๋Š” ์›น ์„œ๋น„์Šค์˜ ์„ค๊ณ„ ์›์น™ ์ค‘ ํ•˜๋‚˜์ธ REST(Representational State Transfer) ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ์„ ๋”ฐ๋ฅด๋Š” API์ž…๋‹ˆ๋‹ค. REST๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ํ†ต์‹ ์„ ๊ฐ„๋‹จํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์„ค๊ณ„ ์›์น™์ด๋ฉฐ, ์›น์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

REST์˜ ๊ธฐ๋ณธ ์›์น™

  1. ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ตฌ์กฐ
    • ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋Š” ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌ๋˜์–ด์•ผ ํ•˜๋ฉฐ, ํด๋ผ์ด์–ธํŠธ๋Š” ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์„œ๋ฒ„๋Š” ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ตฌ์กฐ๋Š” ๊ฐ๊ฐ์˜ ๋…๋ฆฝ์„ฑ์„ ๋ณด์žฅํ•˜์—ฌ ํ™•์žฅ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ฌด์ƒํƒœ(Stateless)
    • ๋ชจ๋“  ์š”์ฒญ์€ ๋…๋ฆฝ์ ์ด๋ฉฐ, ์„œ๋ฒ„๋Š” ์š”์ฒญ ๊ฐ„์˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ ์š”์ฒญ์€ ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ๋ฐ›๊ณ  ์‘๋‹ต์„ ๋ณด๋‚ผ ๋ฟ, ์ด์ „ ์š”์ฒญ์˜ ์ƒํƒœ๋ฅผ ๊ธฐ์–ตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  3. ์บ์‹œ ๊ฐ€๋Šฅ(Cacheable)
    • ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„ ์‘๋‹ต์„ ์บ์‹ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์บ์‹œ๋ฅผ ํ†ตํ•ด ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ์ค„์ด๊ณ  ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ์‘๋‹ต์— ์บ์‹ฑ ๊ฐ€๋Šฅํ•œ์ง€ ์—ฌ๋ถ€๋ฅผ ๋ช…์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  4. ๊ณ„์ธตํ™”๋œ ์‹œ์Šคํ…œ(Layered System)
    • ํด๋ผ์ด์–ธํŠธ๋Š” ์ค‘๊ฐ„์— ์—ฌ๋Ÿฌ ๊ณ„์ธต์ด ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ, ํ”„๋ก์‹œ ์„œ๋ฒ„, ๋ณด์•ˆ ๊ฒŒ์ดํŠธ์›จ์ด ๋“ฑ์„ ํฌํ•จํ•œ ๊ณ„์ธตํ™”๋œ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
  5. ์ธํ„ฐํŽ˜์ด์Šค ์ผ๊ด€์„ฑ(Uniform Interface)
    • RESTful ์‹œ์Šคํ…œ์€ ์ผ๊ด€๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, URL์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ •ํ™•ํžˆ ์‹๋ณ„ํ•˜๊ณ , HTTP ๋ฉ”์„œ๋“œ(GET, POST, PUT, DELETE ๋“ฑ)๋Š” ํ•ด๋‹น ๋ฆฌ์†Œ์Šค์—์„œ ์ˆ˜ํ–‰ํ•  ์ž‘์—…์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  6. ์ฝ”๋“œ ์˜จ ๋””๋งจ๋“œ(Code on Demand) (์„ ํƒ ์‚ฌํ•ญ)
    • ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์— ์ฝ”๋“œ(์˜ˆ: JavaScript)๋ฅผ ์ „์†กํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” REST์—์„œ ์„ ํƒ์ ์ธ ์ œ์•ฝ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

RESTful API์˜ ๊ตฌ์„ฑ ์š”์†Œ

  • URI(Uniform Resource Identifier) : ๋ฆฌ์†Œ์Šค(๋ฐ์ดํ„ฐ)๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๊ฒฝ๋กœ
  • HTTP ๋ฉ”์†Œ๋“œ
    • GET / POST / PUT / PATCH / DELETE
  • HTTP ์ƒํƒœ ์ฝ”๋“œ : ์š”์ฒญ์— ๋Œ€ํ•œ ์„œ๋ฒ„์˜ ์‘๋‹ต ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋ƒ„. ์˜ˆ๋ฅผ ๋“ค์–ด, 200(์„ฑ๊ณต), 404(๋ฆฌ์†Œ์Šค ์—†์Œ), 500(์„œ๋ฒ„ ์˜ค๋ฅ˜) ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

RESTful API์˜ ์žฅ์ 

  • ํ™•์žฅ์„ฑ : ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์˜ ์—ญํ• ์ด ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์–ด ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค.
  • ์œ ์—ฐ์„ฑ : RESTful API๋Š” ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํ˜•์‹(JSON, XML ๋“ฑ)์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋‹ค์–‘ํ•œ ์š”๊ตฌ๋ฅผ ์ถฉ์กฑ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ‘œ์ค€ํ™”๋œ ๊ตฌ์กฐ : ์ผ๊ด€๋œ ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ตฌ์กฐ๋กœ ์ธํ•ด, ๊ฐœ๋ฐœ์ž๋“ค์ด API๋ฅผ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„๋ฉ”์ธ๊ณผ URL์˜ ์ฐจ์ด์ 

๋„๋ฉ”์ธ(Domain)๊ณผ URL(Uniform Resource Locator)์€ ์›น ์ฃผ์†Œ์™€ ๊ด€๋ จ๋œ ์šฉ์–ด์ด์ง€๋งŒ, ๊ทธ ์˜๋ฏธ์™€ ์šฉ๋„๊ฐ€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

1. ๋„๋ฉ”์ธ (Domain)

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

  • ๊ตฌ์„ฑ :

    • ์ตœ์ƒ์œ„ ๋„๋ฉ”์ธ(TLD, Top-Level Domain): .com, .org, .net๊ณผ ๊ฐ™์€ ๋„๋ฉ”์ธ์˜ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ๋ถ€๋ถ„
    • ๋‘ ๋ฒˆ์งธ ์ˆ˜์ค€ ๋„๋ฉ”์ธ(SLD, Second-Level Domain): example.com์—์„œ example ๋ถ€๋ถ„.
    • ์„œ๋ธŒ๋„๋ฉ”์ธ(Subdomain): blog.example.com์—์„œ blog ๋ถ€๋ถ„
  • ์—ญํ• : ๋„๋ฉ”์ธ์€ ์›น์‚ฌ์ดํŠธ์˜ ์ฃผ์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํ•ด๋‹น ์›น ์‚ฌ์ดํŠธ์˜ IP ์ฃผ์†Œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก DNS(๋„๋ฉ”์ธ ๋„ค์ž„ ์‹œ์Šคํ…œ)์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

2. URL (Uniform Resource Locator)

  • ์ •์˜: URL์€ ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ํŠน์ • ๋ฆฌ์†Œ์Šค(์›นํŽ˜์ด์ง€, ์ด๋ฏธ์ง€, ๋™์˜์ƒ ๋“ฑ)๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ์ „์ฒด ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค. URL์€ ๋„๋ฉ”์ธ ์ด๋ฆ„๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ํ”„๋กœํ† ์ฝœ, ๊ฒฝ๋กœ, ํฌํŠธ ๋ฒˆํ˜ธ, ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋“ฑ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

  • ๊ตฌ์„ฑ ์š”์†Œ :

    • ํ”„๋กœํ† ์ฝœ : http://์™€ ๊ฐ™์ด ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ.
    • ๋„๋ฉ”์ธ ์ด๋ฆ„ : www.example.com์™€ ๊ฐ™์ด ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ์„œ๋ฒ„์˜ ์ฃผ์†Œ
    • ๊ฒฝ๋กœ(Path): /page1์™€ ๊ฐ™์ด ์„œ๋ฒ„ ๋‚ด์—์„œ ํŠน์ • ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒฝ๋กœ
    • ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜: ?id=123์™€ ๊ฐ™์ด ์ถ”๊ฐ€์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์— ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜
  • ์—ญํ•  : URL์€ ํŠน์ • ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ์›น ํŽ˜์ด์ง€, ์ด๋ฏธ์ง€, ํŒŒ์ผ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค.


CORS (Cross-Origin Resource Sharing)

CORS(Cross-Origin Resource Sharing)๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋‹ค๋ฅธ ๋„๋ฉ”์ธ(์ถœ์ฒ˜)์—์„œ ์ž์›์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๋ณด์•ˆ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. CORS๋Š” ์›น ๋ณด์•ˆ ์ •์ฑ…์ธ ๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…(Same-Origin Policy)์˜ ์ œ์•ฝ์„ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

1. ๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…(Same-Origin Policy)

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

2. CORS์˜ ์—ญํ• 

  • CORS๋Š” ์ด๋Ÿฌํ•œ ๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…์˜ ์ œ์•ฝ์„ ์™„ํ™”ํ•˜์—ฌ, ์„œ๋ฒ„๊ฐ€ ํŠน์ • ์ถœ์ฒ˜์—์„œ ์˜ค๋Š” ์š”์ฒญ์„ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. CORS๋Š” ํด๋ผ์ด์–ธํŠธ(์ฃผ๋กœ ์›น ๋ธŒ๋ผ์šฐ์ €)๊ฐ€ ๋‹ค๋ฅธ ์ถœ์ฒ˜์˜ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ, ์„œ๋ฒ„๊ฐ€ ํ‹€์ • ํ—ค๋”(Access-Control-Allow-Origin ๋“ฑ)๋ฅผ ํ†ตํ•ด ์–ด๋–ค ์ถœ์ฒ˜์—์„œ์˜ ์š”์ฒญ์„ ํ—ˆ์šฉํ• ์ง€๋ฅผ ๋ช…์‹œํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

3. CORS ๋™์ž‘ ๋ฐฉ์‹

  • ํ”„๋ฆฌํ”Œ๋ผ์ดํŠธ ์š”์ฒญ(Preflight Request): ๋ฏผ๊ฐํ•œ ์š”์ฒญ(์˜ˆ: PUT, DELETE, ๋˜๋Š” ๋น„ํ‘œ์ค€ ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์š”์ฒญ)์˜ ๊ฒฝ์šฐ, ๋ธŒ๋ผ์šฐ์ €๋Š” ๋จผ์ € OPTIONS ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„๊ฐ€ ์‹ค์ œ ์š”์ฒญ์„ ํ—ˆ์šฉํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ”„๋ฆฌํ”Œ๋ผ์ดํŠธ ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  • ์‹ค์ œ ์š”์ฒญ(Simple Request): ์„œ๋ฒ„๊ฐ€ CORS๋ฅผ ํ—ˆ์šฉํ•˜๋ฉด, ๋ธŒ๋ผ์šฐ์ €๋Š” ์‹ค์ œ ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ์‘๋‹ต์— Access-Control-Allow-Origin ํ—ค๋”๋ฅผ ํฌํ•จํ•˜์—ฌ ์š”์ฒญ ์ถœ์ฒ˜๊ฐ€ ํ—ˆ์šฉ๋˜์—ˆ์Œ์„ ํด๋ผ์ด์–ธํŠธ์— ์•Œ๋ฆฝ๋‹ˆ๋‹ค.

4. CORS์˜ ์žฅ์ ๊ณผ ์‚ฌ์šฉ ์‚ฌ๋ก€

  • ๋ณด์•ˆ ๊ฐ•ํ™” : CORS๋Š” ๋ณด์•ˆ์„ ์œ ์ง€ํ•˜๋ฉด์„œ๋„, ๋‹ค์–‘ํ•œ ์ถœ์ฒ˜์—์„œ ์ž์›์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” API ํ˜ธ์ถœ, CDN ์‚ฌ์šฉ, ๊ทธ๋ฆฌ๊ณ  ํด๋ผ์šฐ๋“œ ์Šคํ† ๋ฆฌ์ง€ ์„œ๋น„์Šค์™€์˜ ํ†ตํ•ฉ์— ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.
  • REST API : ํด๋ผ์ด์–ธํŠธ ์ธก

์ด ๊ธ€์„ ํ†ตํ•ด HTTP์™€ HTTPS์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ์ž‘๋™ ์›๋ฆฌ, ๊ทธ๋ฆฌ๊ณ  HTTPS๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๐ŸŒ๐Ÿ”

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