CodeGym/Java Blog/๋ฌด์ž‘์œ„์˜/ํŒŒํŠธ 3. HTTP/HTTPS
John Squirrels
๋ ˆ๋ฒจ 41
San Francisco

ํŒŒํŠธ 3. HTTP/HTTPS

๋ฌด์ž‘์œ„์˜ ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
ํšŒ์›
์ด ์ž๋ฃŒ๋Š” "์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ ์†Œ๊ฐœ" ์‹œ๋ฆฌ์ฆˆ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. ์ด์ „ ๊ธฐ์‚ฌ: ํŒŒํŠธ 3. HTTP/HTTPS - 1์•ˆ๋…•! ์˜ค๋Š˜ ์šฐ๋ฆฌ๋Š” HTTP์™€ HTTPS ํ”„๋กœํ† ์ฝœ์— ๋Œ€ํ•ด ๋ฐฐ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋จผ์ € ํ•œ ๊ฐ€์ง€ ์ ์„ ๋ถ„๋ช…ํžˆ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” OSI ๋ชจ๋ธ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜์ค€์—์„œ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ๊ธฐ์‚ฌ ์ค‘ ํ•˜๋‚˜์—์„œ OSI ๋ชจ๋ธ์„ ์•Œ๊ฒŒ ๋œ ๊ฒƒ์„ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์–ต์ด ๋‚˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์—ฌ๊ธฐ ์žˆ์Šต๋‹ˆ๋‹ค .

๋ฐ์ดํ„ฐ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์ด๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ์„œ๋กœ ๋‹ค๋ฅธ ์„œ๋น„์Šค์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•์‹์œผ๋กœ ์ •๋ณด๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํ•ฉ์˜๋œ ๊ทœ์น™ ์ง‘ํ•ฉ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œ์ค€ HTTP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ณด๋ฅผ ์ „์†กํ•˜๊ธฐ ๋•Œ๋ฌธ์— Google ํฌ๋กฌ์„ ์‚ฌ์šฉํ•˜์—ฌ Facebook๊ณผ Twitter์—์„œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ท ์ผํ•œ ๊ทœ์น™์€ ์„œ๋ฒ„ ๋ถ€๋ถ„์„ ๊ฐœ๋ฐœํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋งค์šฐ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ •๋ณด๋ฅผ ๋ณ€ํ™˜ํ•˜๊ณ  ์ ์ ˆํ•œ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. HTTP๋Š” ์ฒ˜์Œ์— HTML ํŽ˜์ด์ง€๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ๋กœ ์ธ์‹๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์—ˆ๋˜ ๋ฐฉ์‹์ด์ง€๋งŒ, ์ง€๊ธˆ์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์ด ๋ฌธ์ž์—ด๊ณผ ๋ฏธ๋””์–ด ํŒŒ์ผ์„ ๋ชจ๋‘ ๋ณด๋‚ด๋Š” ๋ฐ ์ž์ฃผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ด ํ”„๋กœํ† ์ฝœ์€ ๋ณดํŽธ์ ์œผ๋กœ ์ˆ˜์šฉ๋˜๊ณ  ๋‹ค์žฌ๋‹ค๋Šฅํ•˜๋ฉฐ ์‚ฌ์šฉํ•˜๊ธฐ ์ •๋ง ์‰ฝ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์กฐ์‚ฌํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

HTTP์˜ ๊ตฌ์กฐ

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

๊ฐ„๋‹จํ•œ HTTP ์š”์ฒญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

GET / HTTP/1.1
Host: codegym.cc
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
์‹œ์ž‘ ๋ผ์ธ์€ ๋‹ค์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • GET โ€” ์š”์ฒญ ๋ฐฉ๋ฒ•
  • / โ€” ์š”์ฒญ ๊ฒฝ๋กœ
  • HTTP/1.1 โ€” ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „
๊ทธ๋Ÿฐ ๋‹ค์Œ ํ—ค๋”๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  • ํ˜ธ์ŠคํŠธ โ€” ์š”์ฒญ์ด ์ „๋‹ฌ๋˜๋Š” ํ˜ธ์ŠคํŠธ
  • User-Agent โ€” ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ํด๋ผ์ด์–ธํŠธ
๋ฉ”์‹œ์ง€ ๋ณธ๋ฌธ์ด ์—†์Šต๋‹ˆ๋‹ค. HTTP ์š”์ฒญ์—์„œ๋Š” ์‹œ์ž‘ ์ค„๊ณผ "Host" ํ—ค๋”๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ํ•œ ๋ฒˆ์— ํ•œ ๋‹จ๊ณ„์”ฉ ๋ชจ๋“  ๊ฒƒ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. HTTP ์š”์ฒญ์—๋Š” ์ผ๋ถ€ ๋ฉ”์„œ๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. GET, POST, PUT, OPTIONS, HEAD, PATCH, DELETE, TRACE, CONNECT์˜ 9๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๊ฒƒ์€ GET ๋ฐ POST์ž…๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ์ด ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. GET โ€” ์ด ๋ฉ”์„œ๋“œ๋Š” ์„œ๋ฒ„์—์„œ ์ฝ˜ํ…์ธ ๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ GET ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์š”์ฒญ์—๋Š” ๋ฉ”์‹œ์ง€ ๋ณธ๋ฌธ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋‹ค์Œ ํ˜•์‹์œผ๋กœ ๊ฒฝ๋กœ(์‹œ์ž‘ ์ค„)๋ฅผ ํ†ตํ•ด ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
https://cdn.codegym.cc/images/article/155cea79-acfd-4968-9361-ad585e939b82/original.pngsend?name1=value1&name2=value2
์—ฌ๊ธฐ์„œ codegym.cc ๋Š” ํ˜ธ์ŠคํŠธ์ด๊ณ  /send ๋Š” ์š”์ฒญ์˜ ๊ฒฝ๋กœ์ด๋ฉฐ ? ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋’ค๋”ฐ๋ฅธ๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ตฌ๋ถ„ ๊ธฐํ˜ธ์ž…๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์—๋Š” ํ‚ค-๊ฐ’ ์Œ("key=value")์ด ์•ฐํผ์ƒŒ๋“œ๋กœ ๊ตฌ๋ถ„๋˜์–ด ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค. POST โ€” ์ด ๋ฐฉ๋ฒ•์€ ์„œ๋ฒ„์— ์ •๋ณด๋ฅผ ๊ฒŒ์‹œํ•ฉ๋‹ˆ๋‹ค. POST ์š”์ฒญ์€ "key=value" ์Œ, JSON, HTML ์ฝ”๋“œ ๋˜๋Š” ํŒŒ์ผ๊ณผ ๊ฐ™์€ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ์ •๋ณด๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์ •๋ณด๋Š” ๋ฉ”์‹œ์ง€ ๋ณธ๋ฌธ์œผ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: codegym.cc

{
  "Id": 12345,
  "User": "John"
}
์š”์ฒญ์€ codegym.cc/user/create/json์œผ๋กœ ์ „์†ก๋˜๋ฉฐ ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „์€ HTTP/1.1์ž…๋‹ˆ๋‹ค. "์ˆ˜๋ฝ"์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฐ›์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜๋Š” ์‘๋‹ต ํ˜•์‹์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. "Content-Type"์€ ์š”์ฒญ์—์„œ ๋ณด๋‚ธ ๋ฉ”์‹œ์ง€ ๋ณธ๋ฌธ์˜ ํ˜•์‹์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. "Content-Length"๋Š” ๋ณธ๋ฌธ์˜ ๋ฌธ์ž ์ˆ˜์ž…๋‹ˆ๋‹ค. HTTP ์š”์ฒญ์—๋Š” ๋‹ค์–‘ํ•œ ํ—ค๋”๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ”„๋กœํ† ์ฝœ ์‚ฌ์–‘์„ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค .

HTTP ์‘๋‹ต

์š”์ฒญ์„ ๋ฐ›์€ ํ›„ ์„œ๋ฒ„๋Š” ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ์— ์‘๋‹ต์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 98

<html>
  <head>
    <title>An Example Page</title>
  </head>
  <body>
    <p>Hello World</p>
  </body>
</html>
์‘๋‹ต์˜ ์‹œ์ž‘ ์ค„์—๋Š” ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „(HTTP/1.1), ์ƒํƒœ ์ฝ”๋“œ(200) ๋ฐ ์ƒํƒœ ์„ค๋ช…(OK)์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ํ—ค๋”์—๋Š” ๋‚ด์šฉ์˜ ์œ ํ˜•๊ณผ ๊ธธ์ด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์‘๋‹ต ๋ณธ๋ฌธ์—๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ HTML ํŽ˜์ด์ง€๋กœ ๋ Œ๋”๋งํ•˜๋Š” HTML ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์‘๋‹ต ์ƒํƒœ ์ฝ”๋“œ

๋ฉ”์‹œ์ง€ ๋ณธ๋ฌธ๊ณผ ํ—ค๋”์— ๊ด€ํ•œ ๋ชจ๋“  ๊ฒƒ์ด ๋ช…ํ™•ํ•˜์ง€๋งŒ ์ƒํƒœ ์ฝ”๋“œ์— ๋Œ€ํ•ด ๋ช‡ ๋งˆ๋”” ๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‘๋‹ต ์ƒํƒœ ์ฝ”๋“œ๋Š” ํ•ญ์ƒ 3์ž๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ์˜ ์ฒซ ๋ฒˆ์งธ ์ˆซ์ž๋Š” ์‘๋‹ต ๋ฒ”์ฃผ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • 1xx โ€” ์ •๋ณด์šฉ. ์š”์ฒญ์ด ์ ‘์ˆ˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ๊ณ„์†ํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • 2xx โ€” ์„ฑ๊ณต. ์š”์ฒญ์ด ์ ‘์ˆ˜, ์ดํ•ด ๋ฐ ์ฒ˜๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • 3xx โ€” ๋ฆฌ๋””๋ ‰์…˜. ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด ์ถ”๊ฐ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • 4xx - ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜. ์š”์ฒญ์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ํ”„๋กœํ† ์ฝœ์„ ์ค€์ˆ˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • 5xx - ์„œ๋ฒ„ ์˜ค๋ฅ˜. ์š”์ฒญ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘์„ฑ๋˜์—ˆ์ง€๋งŒ ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์ฝ”๋“œ์˜ ๋‘ ๋ฒˆ์งธ ๋ฐ ์„ธ ๋ฒˆ์งธ ์ˆซ์ž๋Š” ๋ณด๋‹ค ๊ตฌ์ฒด์ ์ธ ์‘๋‹ต์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:
  • 200 OK - ์š”์ฒญ์ด ์ˆ˜์‹ ๋˜์–ด ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • 201 ์ƒ์„ฑ๋จ - ์š”์ฒญ์ด ์ˆ˜์‹ ๋˜๊ณ  ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์–ด ์ƒˆ ๋ฆฌ์†Œ์Šค ๋˜๋Š” ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • 301 Moved Permanently โ€” ์š”์ฒญ๋œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์˜๊ตฌ์ ์œผ๋กœ ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ํ›„์† ์š”์ฒญ์€ ์ƒˆ ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • 307 ์ž„์‹œ ๋ฆฌ๋””๋ ‰์…˜ โ€” ๋ฆฌ์†Œ์Šค๊ฐ€ ์ผ์‹œ์ ์œผ๋กœ ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ์ž๋™ ์ „๋‹ฌ์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • 403 ๊ธˆ์ง€๋จ โ€” ์š”์ฒญ์ด ์ดํ•ด๋˜์—ˆ์ง€๋งŒ ์ธ์ฆ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • 404 ์ฐพ์„ ์ˆ˜ ์—†์Œ โ€” ์„œ๋ฒ„๊ฐ€ ์ด ์ฃผ์†Œ์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.
  • 501 Not Implemented โ€” ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์— ์‘๋‹ตํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • 505 HTTP ๋ฒ„์ „์ด ์ง€์›๋˜์ง€ ์•Š์Œ - ์„œ๋ฒ„๊ฐ€ ์ง€์ •๋œ ๋ฒ„์ „์˜ HTTP ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์‘๋‹ต ์ƒํƒœ ์ฝ”๋“œ ์™ธ์— ์ƒํƒœ ์„ค๋ช…๋„ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฐ๊ฐ์˜ ํŠน์ • ์ƒํƒœ๊ฐ€ ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. HTTP ํ”„๋กœํ† ์ฝœ์€ ๋งค์šฐ ์‹ค์šฉ์ ์ž…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ๋งค์šฐ ์œ ์—ฐํ•œ ํ†ต์‹ ์„ ์กฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋งŽ์€ ์ˆ˜์˜ ํ—ค๋”๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์š”์ฒญ ๋ฐ ์‘๋‹ต ํ—ค๋”, ์š”์ฒญ ๋ฐฉ๋ฒ• ๋ฐ ์‘๋‹ต ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ๋ชจ๋‘ ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ์€ ๋‹จ์ผ ๊ธฐ์‚ฌ์— ๋Œ€ํ•ด ๋„ˆ๋ฌด ๋งŽ์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํ”„๋กœํ† ์ฝœ์˜ ๊ณต์‹ ์‚ฌ์–‘์„ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค., ๋ชจ๋“  ๋‰˜์•™์Šค๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ํฌํŠธ 80์—์„œ HTTP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋ฏ€๋กœ ํฌํŠธ 80์œผ๋กœ ๋๋‚˜๋Š” URL์ด ํ‘œ์‹œ๋˜๋ฉด HTTP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šคํ•ด์•ผ ํ•œ๋‹ค๊ณ  ํ™•์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์ˆ ์ด ๋ฐœ์ „ํ•˜๊ณ  ๊ฐœ์ธ ๋ฐ์ดํ„ฐ๊ฐ€ ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ์ „์†ก๋˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด์„œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๋Š” ์ •๋ณด์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๋ณดํ˜ธ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒ๊ฐ์˜ ๊ฒฐ๊ณผ๊ฐ€ HTTPS ํ”„๋กœํ† ์ฝœ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

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

๊ตฌ๋ฌธ ์ธก๋ฉด์—์„œ HTTPS๋Š” HTTP ํ”„๋กœํ† ์ฝœ๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋™์ผํ•œ ์‹œ์ž‘ ๋ผ์ธ๊ณผ ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์œ ์ผํ•œ ์ฐจ์ด์ ์€ ์ถ”๊ฐ€ ์•”ํ˜ธํ™”์™€ ๊ธฐ๋ณธ ํฌํŠธ(443) ์ž…๋‹ˆ๋‹ค . HTTPS๋Š” HTTP์™€ TCP ์‚ฌ์ด, ์ฆ‰ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์ „์†ก ๊ณ„์ธต ์‚ฌ์ด์—์„œ ์•”ํ˜ธํ™”๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์žŠ์—ˆ๋‹ค๋ฉด OSI ๋ชจ๋ธ์— ๋Œ€ํ•œ ๊ธฐ์‚ฌ๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค . ์˜ค๋Š˜๋‚ ์˜ ์•”ํ˜ธํ™” ํ‘œ์ค€์€ TLS์ž…๋‹ˆ๋‹ค. ์ด ์ฃผ์ œ๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ๋‹ค๋ฃจ์ง€๋Š” ์•Š๊ฒ ์ง€๋งŒ ์ •๋ณด๊ฐ€ ์ „์†ก ๊ณ„์ธต์— ๋„๋‹ฌํ•˜๊ธฐ ์ „์— ์•”ํ˜ธํ™”๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค.. HTTPS์—์„œ๋Š” ์š”์ฒญ์ด ์ „์†ก๋˜๋Š” ํ˜ธ์ŠคํŠธ์™€ ํฌํŠธ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์ •๋ณด๊ฐ€ ์ ˆ๋Œ€์ ์œผ๋กœ ์•”ํ˜ธํ™”๋ฉ๋‹ˆ๋‹ค. HTTP ๋Œ€์‹  HTTPS ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„œ๋ฒ„๋ฅผ ์ „ํ™˜ํ•˜๋ฉด ์„œ๋ฒ„ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ์—์„œ ํ™œ์„ฑํ™”๋˜๋ฉฐ ํ›„์† ๊ธฐ์‚ฌ์—์„œ ๋…ผ์˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ์—ฌ๊ธฐ๊นŒ์ง€์ž…๋‹ˆ๋‹ค. ์‚ฌ์‹ค, ์ž ์‹œ๋งŒ์š”. ์ผ๋ถ€ HTTP ์š”์ฒญ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Google Chrome์„ ์—ด๊ณ  F12๋ฅผ ๋ˆ„๋ฅธ ๋‹ค์Œ "๋„คํŠธ์›Œํฌ" ํƒญ์„ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค. ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ณด๋‚ด๊ฑฐ๋‚˜ ๋ฐ›์€ ๋ชจ๋“  ์š”์ฒญ ๋ฐ ์‘๋‹ต์ด ์—ฌ๊ธฐ์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ํŒŒํŠธ 4. Maven์˜ ๊ธฐ์ดˆ ํŒŒํŠธ 5. ์„œ๋ธ”๋ฆฟ ๋ฐ Java ์„œ๋ธ”๋ฆฟ API. ๊ฐ„๋‹จํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž‘์„ฑ 6๋ถ€. ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ 7๋ถ€. MVC(Model-View-Controller) ํŒจํ„ด ์†Œ๊ฐœ
์ฝ”๋ฉ˜ํŠธ
  • ์ธ๊ธฐ
  • ์‹ ๊ทœ
  • ์ด์ „
์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋‚จ๊ธฐ๋ ค๋ฉด ๋กœ๊ทธ์ธ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
์ด ํŽ˜์ด์ง€์—๋Š” ์•„์ง ์ฝ”๋ฉ˜ํŠธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค