HTTP์™€ HTTPS

vvinterยท2024๋…„ 4์›” 12์ผ
0

๊ฐœ๋ฐœ์šฉ์–ด

๋ชฉ๋ก ๋ณด๊ธฐ
27/28

๐ŸŽฒย  HTTP๋ž€?

HTTP๋ž€ Hyper Text Transfer Protocol์˜ ์•ฝ์ž๋กœ ์„œ๋ฒ„/ํด๋ผ์ด์–ธํŠธ ๋ชจ๋ธ์„ ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ์ด๋‹ค.

  • ์ธํ„ฐ๋„ท์—์„œ ํ•˜์ดํผํ…์ŠคํŠธ๋ฅผ ๊ตํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ํ†ต์‹  ๊ทœ์•ฝ
  • 1989๋…„ ํŒ€ ๋ฒ„๋„ˆ์Šค ๋ฆฌ์— ์˜ํ•ด ์ฒ˜์Œ ์„ค๊ณ„, WWW(World Wide Web) ๊ธฐ๋ฐ˜์—์„œ ์„ธ๊ณ„์ ์ธ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•˜๋Š” ๋ฐ ํฐ ์—ญํ• ์„ ํ•จ
  • HTTP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ†ต์‹ ์„ ์ˆ˜ํ–‰ํ•˜๋ฉด, ํ™ˆํŽ˜์ด์ง€ URL์ด โ€˜http:// '๋กœ ์‹œ์ž‘ํ•จ.
  • 80๋ฒˆ ํฌํŠธ ์ด์šฉ

์ฆ‰, ๊ฐ„๋‹จํžˆ ๋งํ•˜๋ฉด HTTP ํ”„๋กœํ† ์ฝœ์€ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ์ž‘๋™ํ•˜๊ฒŒ ํ•˜๋Š” ๊ธฐ๋ณธ ๊ธฐ์ˆ ์ด๋‹ค.

๐Ÿงฉ ย ๊ตฌ์กฐ

HTTP๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ๋ฒจ์˜ ํ”„๋กœํ† ์ฝœ๋กœ TCP/IP ์œ„์—์„œ ์ž‘๋™ํ•œ๋‹ค. HTTP๋Š” ์ƒํƒœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์€ Stateless ํ”„๋กœํ† ์ฝœ์ด๋ฉฐ HTTP ๋™์ž‘ ๊ณผ์ •์—์„œ ํ•„์š”ํ•œ HTTP request์™€ response ๋ฉ”์‹œ์ง€๋Š” ํฌ๊ฒŒ 3๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.


โ˜๏ธ Stateless

state(์ƒํƒœ)๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š์Œ. ์ฆ‰, ์š”์ฒญ์ด ์˜ค๋ฉด ๊ทธ์— ์‘๋‹ตํ•  ๋ฟ, ์—ฌ๋Ÿฌ ์š”์ฒญ/์‘๋‹ต์ด ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋Š” ๋œป์ž„.


HTTP request ๊ตฌ์กฐ

(์ถœ์ฒ˜ : https://hahahoho5915.tistory.com/62)


๐Ÿ“Œ ย Start Line

  • HTTP Request Message์˜ ์‹œ์ž‘ ๋ผ์ธ
  • 3๊ฐ€์ง€๋กœ ๊ตฌ์„ฑ
    • HTTP Method
      • ์š”์ฒญ์˜ ์˜๋„๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ฉ”์†Œ๋“œ
      • HTTP Methods์—๋Š” GET, POST, PUT, DELETE, OPTIONS ๋“ฑ๋“ฑ์ด ์žˆ๋‹ค. โ†’ ์ฃผ๋กœ GET๊ณผ POST๊ฐ€ ์“ฐ์ž„.
    • Request target
      • ํ•ด๋‹น request๊ฐ€ ์ „์†ก๋˜๋Š” ๋ชฉํ‘œ URI
      • ์˜ˆ๋ฅผ ๋“ค์–ด /login.
    • HTTP Version
    • GET /background.png HTTP/1.0ย POST / HTTP 1.1

๐Ÿ“Œ ย Headers

  • ํ•ด๋‹น request์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ถ€๋ถ„
  • Key:Value ๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ
    • ์˜ˆ์‹œ) HOST: google.com => Key = HOST, Value = google.com
  • Headers๋„ ํฌ๊ฒŒ 3๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋จ(general headers / request headers / entity headers)
  • ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” header ์ •๋ณด
    • Host
      : ์š”์ฒญ์ด ์ „์†ก๋˜๋Š” target์˜ host url: ์˜ˆ๋ฅผ ๋“ค์–ด, google.com
    • User-Agent
      : ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•œ ์ •๋ณด: ์˜ˆ๋ฅผ ๋“ค์–ด, ์›น๋ธŒ๋ผ์šฐ์ €์— ๋Œ€ํ•œ ์ •๋ณด.
    • Accept
      : ํ•ด๋‹น ์š”์ฒญ์ด ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์‘๋‹ต(response) ํƒ€์ž….
    • Connection
      : ํ•ด๋‹น ์š”์ฒญ์ด ๋๋‚œ ํ›„์— ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ๊ณ„์†ํ•ด์„œ ๋„คํŠธ์›Œํฌ ์ปจ๋„ฅ์…˜์„ ์œ ์ง€ ํ•  ๊ฒƒ์ธ์ง€ ์•„๋‹ˆ๋ฉด ๋Š์„ ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•ด ์ง€์‹œํ•˜๋Š” ๋ถ€๋ถ„.
    • Content-Type
      : ํ•ด๋‹น ์š”์ฒญ์ด ๋ณด๋‚ด๋Š” ๋ฉ”์‹œ์ง€ body์˜ ํƒ€์ž…. ์˜ˆ๋ฅผ ๋“ค์–ด, JSON์„ ๋ณด๋‚ด๋ฉด application/json.
    • Content-Length
      : ๋ฉ”์„ธ์ง€ body์˜ ๊ธธ์ด.

๐Ÿ“Œ ย Blank Line

  • ์š”์ฒญ์— ๋Œ€ํ•œ ๋ชจ๋“  ๋ฉ”ํƒ€ ์ •๋ณด๊ฐ€ ์ „์†ก๋˜์—ˆ์Œ์„ ์•Œ๋ฆฌ๋Š” ์šฉ๋„

๐Ÿ“Œ ย Body

  • HTTP ์š”์ฒญ์ด ์ „์†กํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ถ€๋ถ„
  • ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ ์š”์ฒญ๊ณผ ๊ด€๋ จ๋œ ๋‚ด์šฉ
    • POST ์š”์ฒญ์ผ ๊ฒฝ์šฐ, ๋ณดํ†ต HTML ํผ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ
  • ์ „์†กํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค๋ฉด body๋Š” ๋น„์–ด์žˆ์Œ.
    โ‡’ GET, HEAD, DELETE, OPTIONS์ฒ˜๋Ÿผ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์š”์ฒญ์€ ๋ฐ”๋”” ๋ฏธํฌํ•จ

(์ถœ์ฒ˜ : https://mangkyu.tistory.com/98)


์š”์ฒญ๋ฉ”์†Œ๋“œ

์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญ์˜ ์ข…๋ฅ˜๋ฅผ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

  • GETย : ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ(SELECT)
  • POST : ์ •๋ณด๋ฅผ ๋ฐ€์–ด ๋„ฃ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ(INSERT)
  • PUT : ์ •๋ณด๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ(UPDATE)
  • DELETE : ์ •๋ณด๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ(DELETE)
  • HEAD : (HTTP) ํ—ค๋” ์ •๋ณด๋งŒ ์š”์ฒญ. ํ•ด๋‹น ์ž์›์ด ์กด์žฌํ•˜๋Š”์ง€ ํ˜น์€ ์„œ๋ฒ„์— ๋ฌธ์ œ๊ฐ€ ์—†๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ.
  • OPTIONS : ์›น ์„œ๋ฒ„๊ฐ€ ์ง€์›ํ•˜๋Š” ๋ฉ”์„œ๋“œ์˜ ์ข…๋ฅ˜๋ฅผ ์š”์ฒญ.
  • TRACE : ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜. ์ฃผ๋กœ echo ์„œ๋น„์Šค๋กœ ์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ธฐย ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ.

HTTP response ๊ตฌ์กฐ

(์ถœ์ฒ˜ : https://hahahoho5915.tistory.com/62)


๐Ÿ“Œ ย Status Line

  • HTTP Response์˜ ์ƒํƒœ๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ด์ฃผ๋Š” ๋ถ€๋ถ„
  • 3๊ฐ€์ง€๋กœ ๊ตฌ์„ฑ
    • HTTP version
    • Status Code : ์‘๋‹ต ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ฝ”๋“œ
    • Status Text : ์‘๋‹ต ์ƒํƒœ๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…

๐Ÿ“Œ ย Headers

  • Request์˜ header์™€ ๋™์ผ
  • ๋‹ค๋งŒ response์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋Š” header ๊ฐ’๋“ค์ด ์žˆ์Œ
    • ์˜ˆ๋ฅผ ๋“ค์–ด, User-Agent ๋Œ€์‹ ์— Server ํ—ค๋”๋ฅผ ์‚ฌ์šฉ

๐Ÿ“Œ ย Blank Line

  • ์š”์ฒญ์— ๋Œ€ํ•œ ๋ชจ๋“  ๋ฉ”ํƒ€ ์ •๋ณด๊ฐ€ ์ „์†ก๋˜์—ˆ์Œ์„ ์•Œ๋ฆฌ๋Š” ์šฉ๋„

๐Ÿ“Œ ย Body

  • ์‘๋‹ต ๋ฆฌ์†Œ์Šค ๋ฐ์ดํ„ฐ
  • Request์˜ body์™€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋™์ผ
  • Request์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ชจ๋“  response๊ฐ€ body๊ฐ€ ์žˆ์ง€๋Š” ์•Š์Œ.
    โ‡’ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉด body๋Š” ๋น„์–ด์žˆ๊ฒŒ ๋จ.
  • 201, 204 ์ƒํƒœ ์ฝ”๋“œ๋Š” ๋ฐ”๋”” ๋ฏธํฌํ•จ

(์ถœ์ฒ˜ : https://developer.mozilla.org/ko/docs/Web/HTTP/Messages)


๋™์ž‘๊ณผ์ •

์„œ๋ฒ„ ์ ‘์† โ†’ ํด๋ผ์ด์–ธํŠธ โ†’ ์š”์ฒญ โ†’ ์‘๋‹ต โ†’ ํด๋ผ์ด์–ธํŠธ โ†’ ์—ฐ๊ฒฐ ์ข…๋ฃŒ

(์ถœ์ฒ˜ : https://enai.tistory.com/26)


  1. ์‚ฌ์šฉ์ž๊ฐ€ ์›น ๋ธŒ๋ผ์šฐ์ €์— URL ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

  2. DNS ์„œ๋ฒ„์— ์›น ์„œ๋ฒ„์˜ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ IP ์ฃผ์†Œ๋กœ ๋ณ€๊ฒฝ ์š”์ฒญํ•œ๋‹ค.

  3. ์›น ์„œ๋ฒ„์™€ TCP ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•œ๋‹ค.

    • 3way-handshaking
  4. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญํ•œ๋‹ค.

    • HTTP Request Message = Request Header + blank line + Request Body
  5. ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์‘๋‹ตํ•œ๋‹ค.

    • HTTP Response Message = Response Header + blank line + Response Body
  6. ์„œ๋ฒ„ ํด๋ผ์ด์–ธํŠธ ๊ฐ„ ์—ฐ๊ฒฐ ์ข…๋ฃŒ (stateless์˜ ํŠน์ง•์ด ๋‚˜ํƒ€๋‚จ)

    • 4way-handshaking
  7. ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์›น ๋ฌธ์„œ ์ถœ๋ ฅ


  • 3way-handshaking
    • TCP์˜ ์ ‘์† ๊ณผ์ •
    • TCP ํ†ต์‹ ์„ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ๋„คํŠธ์›Œํฌย ์—ฐ๊ฒฐ์„ ์„ค์ •(Connection Establish)ํ•˜๋Š” ๊ณผ์ •
    • ์–‘์ชฝ ๋ชจ๋‘ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•˜๊ณ , ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์ด ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ํ•œ์ชฝ์ด ๋‹ค๋ฅธ ์ชฝ์ด ์ค€๋น„๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
  • 4way-handshaking
    • TCP์˜ ์ ‘์† ํ•ด์ œ ๊ณผ์ •
    • FIN ํ”Œ๋ž˜๊ทธ ์ด์šฉ
      • ์„ธ์…˜์„ ์ข…๋ฃŒ์‹œํ‚ค๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋” ์ด์ƒ ๋ณด๋‚ธ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์Œ์„ ๋‚˜ํƒ€๋ƒ„



๐ŸŽฒย  HTTPS๋ž€?

HTTPS๋Š” HyperText Transfer Protocol Secure์˜ ์•ฝ์ž์ด๋ฉฐ, HTTP์— ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”๊ฐ€ ์ถ”๊ฐ€๋œ ํ™•์žฅ ๋ฒ„์ „์œผ๋กœ ๋” ์•ˆ์ „ํ•œ ๋ฒ„์ „์ด๋‹ค.

  • ํ†ต์‹ ํ•˜๋Š” ๊ณผ์ •์— HTTPS๋Š” ์ „์†ก ๋‚ด์šฉ์„ SSL์„ ์‚ฌ์šฉํ•˜์—ฌ ์•”ํ˜ธํ™”ํ•จ.
    โ‡’ ์•”ํ˜ธํ™”๋ฅผ ํ†ตํ•ด ๋ฐœ์‹ ์ž์™€ ์ˆ˜์‹ ์ž๋ฅผ ์ œ์™ธํ•œ ์ค‘๊ฐ„ ๋งค๊ฐœ์ฒด์—์„œ ํ†ต์‹  ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐœ์‹ ์ž๊ฐ€ ์ „์†กํ•œ ์•”ํ˜ธ ๋ฐ ๊ธฐ๋ฐ€๋ฌธ์„œ๋ฅผ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ์Œ.
  • HTTPS ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ†ต์‹ ์„ ์ˆ˜ํ–‰ํ•˜๋ฉด, ํ™ˆํŽ˜์ด์ง€ URL์ด โ€˜https:// โ€™๋กœ ์‹œ์ž‘ํ•จ.
  • 443๋ฒˆ ํฌํŠธ ์ด์šฉ

(์ถœ์ฒ˜ : https://seo.tbwakorea.com/blog/https-http/)

๐Ÿ”ย SSL ์ธ์ฆ์„œ

  • ์›น์‚ฌ์ดํŠธ์˜ ID๋ฅผ ์ธ์ฆํ•˜๊ณ  ์•”ํ˜ธํ™”๋œ ์—ฐ๊ฒฐ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๋””์ง€ํ„ธ ์ธ์ฆ์„œ
  • ์›น ์„œ๋ฒ„์™€ ์›น ๋ธŒ๋ผ์šฐ์ € ์‚ฌ์ด์— ์•”ํ˜ธํ™”๋œ ๋งํฌ๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๋ณด์•ˆ ํ”„๋กœํ† ์ฝœ
  • ๊ณต๊ฐœํ‚ค/๊ฐœ์ธํ‚ค ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋Š” ์•”ํ˜ธํ™”๋˜๊ณ  ์ „์†ก๋˜์–ด ์ž„์˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜์—ฌ๋„ ์›๋ณธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์คŒ

๋™์ž‘ ๊ณผ์ •

๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹๊ณผ ๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์˜ ์žฅ์ ์„ ํ™œ์šฉํ•œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์•”ํ˜ธ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค. (๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€์นญํ‚ค ๋ฐฉ์‹์œผ๋กœ ์•”๋ณตํ˜ธํ™”ํ•˜๊ณ , ๊ณต๊ฐœํ‚ค ๋ฐฉ์‹์œผ๋กœ ๋Œ€์นญํ‚ค ์ „๋‹ฌ)


(์ถœ์ฒ˜ : https://velog.io/@averycode/๋„คํŠธ์›Œํฌ-HTTP์™€-HTTPS-๋™์ž‘-๊ณผ์ •)


  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„ ์ ‘์†ํ•˜์—ฌ Handshaking ๊ณผ์ •์—์„œ ์„œ๋กœ ํƒ์ƒ‰

    1.1.ย Client Hello

    • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ์ „์†กํ•  ๋ฐ์ดํ„ฐ
      • ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์ƒ์„ฑํ•œย ๋žœ๋ค ๋ฐ์ดํ„ฐ
      • ํด-์„œ ์•”ํ˜ธํ™” ๋ฐฉ์‹ ํ†ต์ผ์„ ์œ„ํ•ดย ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•”ํ˜ธํ™” ๋ฐฉ์‹
      • ์ด์ „์— ์ด๋ฏธ Handshaking ๊ธฐ๋ก์ด ์žˆ๋‹ค๋ฉด ์ž์› ์ ˆ์•ฝ์„ ์œ„ํ•ด ๊ธฐ์กด ์„ธ์…˜์„ ์žฌํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•œย ์„ธ์…˜ ์•„์ด๋””

    1.2.ย Server Hello

    • Client Hello์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ์ „์†กํ•  ๋ฐ์ดํ„ฐ
      • ์„œ๋ฒ„ ์ธก์—์„œ ์ƒ์„ฑํ•œย ๋žœ๋ค ๋ฐ์ดํ„ฐ
      • ์„œ๋ฒ„๊ฐ€ ์„ ํƒํ•œ ํด๋ผ์ด์–ธํŠธ์˜ ์•”ํ˜ธํ™” ๋ฐฉ์‹
      • SSL ์ธ์ฆ์„œ

    1.3.ย Client ์ธ์ฆ ํ™•์ธ

    • ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์ธ์ฆ์„œ๊ฐ€ CA(์ธ์ฆ ๊ธฐ๊ด€)์— ์˜ํ•ด ๋ฐœ๊ธ‰๋˜์—ˆ๋Š”์ง€ ๋ณธ์ธ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ชฉ๋ก์—์„œ ํ™•์ธํ•˜๊ณ , ๋ชฉ๋ก์— ์žˆ๋‹ค๋ฉด CA ๊ณต๊ฐœํ‚ค๋กœ ์ธ์ฆ์„œ ๋ณตํ˜ธํ™”
    • ํด-์„œ ๊ฐ๊ฐ์˜ ๋žœ๋ค ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํ•ฉํ•˜์—ฌ pre master secret ๊ฐ’ ์ƒ์„ฑ(๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹  ์‹œ ๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”์— ์‚ฌ์šฉํ•  ํ‚ค)
    • pre master secret ๊ฐ’์„ ๊ณต๊ฐœํ‚ค ๋ฐฉ์‹์œผ๋กœ ์„œ๋ฒ„ ์ „๋‹ฌ(๊ณต๊ฐœํ‚ค๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์ธ์ฆ์„œ์— ํฌํ•จ)
    • ์ผ๋ จ์˜ ๊ณผ์ •์„ ๊ฑฐ์ณ session key ์ƒ์„ฑ

    1.4.ย Server ์ธ์ฆ ํ™•์ธ

    • ์„œ๋ฒ„๋Š” ๋น„๊ณต๊ฐœํ‚ค๋กœ ๋ณตํ˜ธํ™”ํ•˜์—ฌ pre master secret ๊ฐ’ ์ทจ๋“(๋Œ€์นญํ‚ค ๊ณต์œ  ์™„๋ฃŒ)
    • ์ผ๋ จ์˜ ๊ณผ์ •์„ ๊ฑฐ์ณ session key ์ƒ์„ฑ

    1.5.ย Handshaking ์ข…๋ฃŒ

  2. ๋ฐ์ดํ„ฐ ์ „์†ก

    • ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๋Š” session key๋ฅผ ํ™œ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์•”๋ณตํ˜ธํ™”ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹ 
  3. ์—ฐ๊ฒฐ ์ข…๋ฃŒ ๋ฐ session key ํ๊ธฐ



HTTP์™€ HTTPS ๋น„๊ต

HTTPHTTPS
์˜๋ฏธHypertext Transfer ProtocolHypertext Transfer Protocol Secure
๊ธฐ๋ณธ ํ”„๋กœํ† ์ฝœHTTP/1๊ณผ HTTP/2๋Š” TCP/IP๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. HTTP/3์€ QUIC ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.HTTP ์š”์ฒญ ๋ฐ ์‘๋‹ต์„ ์ถ”๊ฐ€๋กœ ์•”ํ˜ธํ™”ํ•˜๊ธฐ ์œ„ํ•ด SSL/TLS์™€ ํ•จ๊ป˜ HTTP/2 ์‚ฌ์šฉ
ํฌํŠธ๊ธฐ๋ณธ ํฌํŠธ 80๊ธฐ๋ณธ ํฌํŠธ 443
์šฉ๋„์ด์ „ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ์›น ์‚ฌ์ดํŠธ๋ชจ๋“  ์ตœ์‹  ์›น ์‚ฌ์ดํŠธ
๋ณด์•ˆ์ถ”๊ฐ€ ๋ณด์•ˆ ๊ธฐ๋Šฅ ์—†์Œํผ๋ธ”๋ฆญ ํ‚ค ์•”ํ˜ธํ™”์— SSL ์ธ์ฆ์„œ ์‚ฌ์šฉ
์ด์ ์ธํ„ฐ๋„ท์„ ํ†ตํ•œ ํ†ต์‹  ์ง€์›์›น ์‚ฌ์ดํŠธ์— ๋Œ€ํ•œ ๊ถŒ์œ„, ์‹ ๋ขฐ์„ฑ ๋ฐ ๊ฒ€์ƒ‰ ์—”์ง„ ์ˆœ์œ„ ๊ฐœ์„ 

๐Ÿ’กย  ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ ๋ณด์•ˆ์ด๋ฉฐ HTTPS๋Š” HTTP์™€ ๋‹ค๋ฅด๊ฒŒ ๋ธŒ๋ผ์šฐ์ €์™€ ์„œ๋ฒ„๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์ „์— ์•ˆ์ „ํ•˜๊ณ ย ์•”ํ˜ธํ™”๋œ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด๋‹ค ์•ˆ์ „ํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.


๐Ÿ—’๏ธย  ์ž์ฃผ ์“ฐ์ด๋Š” HTTP Status Code

200 OK

  • ๊ฐ€์žฅ ์ž์ฃผ ๋ณด๊ฒŒ ๋˜๋Š” status code
  • ๋ฌธ์ œ์—†์ด ๋‹ค ์ž˜ ์‹คํ–‰ ๋˜์—ˆ์„ ๋•Œ ๋ณด๋‚ด๋Š” ์ฝ”๋“œ

301 Moved Permanently

  • ํ•ด๋‹น URI๊ฐ€ ๋‹ค๋ฅธ ์ฃผ์†Œ๋กœ ๋ฐ”๋€Œ์—ˆ์„ ๋•Œ ๋ณด๋‚ด๋Š” ์ฝ”๋“œ

400 Bad Request

  • ํ•ด๋‹น ์š”์ฒญ์ด ์ž˜๋ชป๋œ ์š”์ฒญ์ผ ๋•Œ ๋ณด๋‚ด๋Š” ์ฝ”๋“œ
  • ์ฃผ๋กœ ์š”์ฒญ์— ํฌํ•จ๋œ input ๊ฐ’๋“ค์ด ์ž˜๋ชป๋œ ๊ฐ’๋“ค์ด ๋ณด๋‚ด์กŒ์„ ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ์ฝ”๋“œ
  • ์˜ˆ๋ฅผ ๋“ค์–ด, ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ๋ณด๋‚ด์•ผ ํ•˜๋Š”๋ฐ text๊ฐ€ ๋ณด๋‚ด์กŒ์„ ๋•Œ ๋“ฑ๋“ฑ

401 Unauthorized

  • ์œ ์ €๊ฐ€ ํ•ด๋‹น ์š”์ฒญ์„ ์ง„ํ–‰ ํ•˜๋ ค๋ฉด ๋จผ์ € ๋กœ๊ทธ์ธ์ด๋‚˜ ํšŒ์›๊ฐ€์ž… ๋“ฑ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ด๋ ค ํ•  ๋•Œ ์“ฐ์ด๋Š” ์ฝ”๋“œ

403 Forbidden

  • ์œ ์ €๊ฐ€ ํ•ด๋‹น ์š”์ฒญ์— ๋Œ€ํ•œ ๊ถŒํ•œ์ด ์—†๋‹ค๋Š” ๋œป
  • ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ณผ๊ธˆํ•œ ์œ ์ €๋งŒ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญ ํ–ˆ์„ ๋•Œ ๋“ฑ

404 Not Found

  • ์š”์ฒญ๋œ URI๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋œป

500 Internal Server Error

  • ์„œ๋ฒ„์—์„œ ์—๋Ÿฌ๊ฐ€ ๋‚ฌ์„ ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ์ฝ”๋“œ


์›น์‚ฌ์ดํŠธ HTTPS ์ „ํ™˜์˜ ์ค‘์š”์„ฑ

1) ๋ณด์•ˆ์— ์šฐ์ˆ˜ํ•œ HTTPS

HTTPS๋Š” HTTP์™€ ๋‹ฌ๋ฆฌ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”๋œ ํ˜•ํƒœ๋กœ ์ „์†กํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์‚ฌ์šฉ์ž๊ฐ€ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ ์ œ3์ž๊ฐ€ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋กœ์ฑŒ ์ˆ˜ ์—†์–ด ๋ณด์•ˆ ์ธก๋ฉด์—์„œ ๋” ์šฐ์ˆ˜ํ•˜๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์‹ ์šฉ์นด๋“œ ์„ธ๋ถ€ ์ •๋ณด ํ˜น์€ ๊ณ ๊ฐ ๊ฐœ์ธ ์ •๋ณด์™€ ๊ฐ™์€ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” HTTPS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

2) ์‹ ๋ขฐ์„ฑ์ด ๋†’์€ HTTPS

๊ฒ€์ƒ‰ ์—”์ง„์€ ์‹ ๋ขฐ์„ฑ์ด ๋†’์€ HTTPS์˜ ์›น์‚ฌ์ดํŠธ ์ˆœ์œ„๋ฅผ HTTP ๋ณด๋‹ค ๋†’๊ฒŒ ์ง€์ •ํ•˜๋ฉฐ, ๋ธŒ๋ผ์šฐ์ € ์ฃผ์†Œ ํ‘œ์‹œ์ค„์—์„œ URL ์˜†์— ์ž๋ฌผ์‡  ์•„์ด์ฝ˜์„ ๋ฐฐ์น˜ํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ HTTPS ์—ฐ๊ฒฐ์„ ํ‘œ์‹œํ•œ๋‹ค.

๋˜ํ•œ ๊ตฌ๊ธ€์€ HTTPS๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ URL ์ฐฝ์— โ€œ์•ˆ์ „ํ•˜์ง€ ์•Š์Œโ€์ด๋ผ๋Š” ๊ฒฝ๊ณ ๋ฅผ ๋„์šฐ๋Š” ํŽ˜๋„ํ‹ฐ๋ฅผ ์ ์šฉํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๋ณดํ†ต ์‚ฌ์šฉ์ž๋“ค์€ ์ถ”๊ฐ€ ๋ณด์•ˆ์— ๋Œ€ํ•œ ์‹ ๋ขฐ๋กœ HTTP๋ณด๋‹ค๋Š” HTTPS๋ฅผ ์„ ํ˜ธํ•œ๋‹ค.

3) SEO์— ์ข‹์€ ์˜ํ–ฅ์„ ์ฃผ๋Š” HTTPS

๊ตฌ๊ธ€์€ ๋ช‡ ๋…„ ์ „๋ถ€ํ„ฐ HTTPS๋ฅผ ์ˆœ์œ„ ๊ฒฐ์ • ์‹ ํ˜ธ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ๋•Œ๋ฌธ์— HTTPS ์‚ฌ์šฉ์€ SEO(๊ฒ€์ƒ‰์—”์ง„์ตœ์ ํ™”)์—๋„ ์ข‹์€ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.






๐Ÿ“Žย  ์ฐธ๊ณ 

https://aws.amazon.com/ko/compare/the-difference-between-https-and-http/
https://mangkyu.tistory.com/98
https://hahahoho5915.tistory.com/62
https://seo.tbwakorea.com/blog/https-http/
https://suji-sw.tistory.com/entry/HTTP์™€-HTTPS์˜-๊ฐœ๋…๊ณผ-์ฐจ์ดhttps://velog.io/@averycode/๋„คํŠธ์›Œํฌ-HTTP์™€-HTTPS-๋™์ž‘-๊ณผ์ •https://velog.io/@averycode/๋„คํŠธ์›Œํฌ-TCPUDP์™€-3-Way-Handshake4-Way-Handshake
https://enai.tistory.com/26
https://developer.mozilla.org/ko/docs/Web/HTTP/Messages

profile
๐Ÿ“Ž

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