Skip to content

Latest commit

ย 

History

History
98 lines (64 loc) ยท 4.27 KB

http_basic.md

File metadata and controls

98 lines (64 loc) ยท 4.27 KB

HTTP Basic

HTTP๋ž€? (HyperText Transfer Protocol) (ํ•˜์ดํผํ…์ŠคํŠธ ์ „์†ก ๊ทœ์•ฝ)

HTTP ๋ฉ”์‹œ์ง€์— ๋ชจ๋“  ๊ฒƒ์„ ์ „์†ก ๊ฐ€๋Šฅํ•˜๋‹ค.

  • HTML, TEXT, ์ด๋ฏธ์ง€, ์Œ์„ฑ ๋ฐ ์˜์ƒ, ํŒŒ์ผ, JSON, XML๋“ฑ ๊ฑฐ์˜ ๋ชจ๋“  ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์„œ๋ฒ„๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ๋„ ๋Œ€๋ถ€๋ถ„ HTTP๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

HTTP ๊ธฐ๋ฐ˜ ํ”„๋กœํ† ์ฝœ

  • TCP: HTTP/1.1, HTTP/2
  • UDP: HTTP/3

  • ๊ตฌ๊ธ€ ํฌ๋กฌ์œผ๋กœ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ๋ˆŒ๋Ÿฌ ์‚ฌ์šฉ์ค‘์ธ ํ”„๋กœํ† ์ฝœ์„ ํ™•์ธํ•ด๋ณด์•˜๋‹ค.
  • ๊ฑฐ์˜ h3(HTTP/3)์„ ์‚ฌ์šฉ์ค‘์ด๋‹ค.

HTTP์˜ ํŠน์ง•

ํด๋ผ์ด์–ธํŠธ ์„œ๋ฒ„ ๊ตฌ์กฐ

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

๋ฌด์ƒํƒœ ํ”„๋กœํ† ์ฝœ (Stateless)

  • ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์ด์ „ ์ƒํƒœ๋ฅผ ๋ณด์กดํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋ฌด์ƒํƒœ๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ๊ฐ‘์ž๊ธฐ ์ฆ๊ฐ€ํ•ด๋„ ์„œ๋ฒ„๋ฅผ ๋Œ€๊ฑฐ ํˆฌ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์™œ? ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ๋งŒ์•ฝ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•œ๋‹ค๋ฉด, ํด๋ผ์ด์–ธํŠธ๋Š” ํ•ด๋‹น ์„œ๋ฒ„์™€์˜ ํ†ต์‹ ๋งŒ์ด ๊ฐ€๋Šฅํ•  ๊ฒƒ.
    • ํ•ด๋‹น ์„œ๋ฒ„๊ฐ€ ๊ฐ‘์ž๊ธฐ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด, ํด๋ผ์ด์–ธํŠธ๋Š” ์ƒˆ๋กœ์šด ์„œ๋ฒ„์™€ ๋‹ค์‹œ ์ฒ˜์Œ๋ถ€ํ„ฐ ํ†ต์‹ ์„ ํ•ด์•ผํ•œ๋‹ค.
  • ์‘๋‹ต ์„œ๋ฒ„๋ฅผ ์‰ฝ๊ฒŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค -> ๋ฌดํ•œํ•œ ์„œ๋ฒ„ ํ™•์žฅ์„ฑ์„ ๊ฐ€์ง„๋‹ค!
  • ๋ฐ˜๋Œ€์˜ ๊ฐœ๋…์€ ์ƒํƒœ์œ ์ง€ (Statefull) ์ด๋‹ค.

๋ฌด์ƒํƒœ ํ”„๋กœํ† ์ฝœ์˜ ์‹ค๋ฌด ํ•œ๊ณ„

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

๋น„ ์—ฐ๊ฒฐ์„ฑ(connectionless)

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

๋น„ ์—ฐ๊ฒฐ์„ฑ์˜ ํ•œ๊ณ„์™€ ๊ทน๋ณต

  • ๋งค์šฐ ์งง์€ ์ˆœ๊ฐ„์—๋„ ์—ฐ๊ฒฐ์„ ๋‹ค์‹œ ์‹œ๋„ํ•˜๋ฉด TCP/IP ์—ฐ๊ฒฐ์„ ์ƒˆ๋กœ ๋งบ์–ด์•ผํ•˜๋Š” ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค.
    • HTML, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ, css, ์ถ”๊ฐ€ ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ ๋“ฑ
  • ์ด๋ฅผ ํ˜„์žฌ๋Š” HTTP ์ง€์† ์—ฐ๊ฒฐ(Persistent Connections)๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค.

์ตœ๋Œ€ํ•œ Stateless ์ƒํƒœ๋กœ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค!

  • ๊ฐ™์€ ์‹œ๊ฐ„์— ๋Œ€์šฉ๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. (์˜ˆ: ์„ ์ฐฉ์ˆœ ์ด๋ฒคํŠธ, ์ˆ˜๊ฐ•์‹ ์ฒญ, ๋ช…์ ˆ KTX ์˜ˆ์•ฝ ๋“ฑ)
  • ์ด ๋•Œ Stateless๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜์—ฌ ์„œ๋ฒ„์˜ ScaleOut์„ ํ™œ์šฉํ•˜์ž.

HTTP ๋ฉ”์‹œ์ง€ ๊ตฌ์กฐ

  • HTTP ๋ฉ”์‹œ์ง€์˜ ๊ตฌ์กฐ๋Š” ์‹œ์ž‘ ๋ผ์ธ, ํ—ค๋”, ๊ณต๋ฐฑ ๋ผ์ธ, ๋ฉ”์‹œ์ง€ ๋ฐ”๋””๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

  • ์š”์ฒญ ๋ฉ”์‹œ์ง€์˜ ๊ฒฝ์šฐ ์‹œ์ž‘ ๋ผ์ธ์— HTTP ๋ฉ”์„œ๋“œ์™€ ์š”์ฒญ ๋Œ€์ƒ path ๋ฐ ์ฟผ๋ฆฌํŒŒ๋ผ๋ฏธํ„ฐ, HTTP ๋ฒ„์ „ ๋“ฑ์ด ํฌํ•จ๋œ๋‹ค.
  • ํ—ค๋”๋Š” ํ•„๋“œ ์ด๋ฆ„ ๋ฐ ํ•„๋“œ ๊ฐ’์„ ํฌํ•จํ•œ๋‹ค.
    • ์—ฌ๊ธฐ์„œ field-name ":" OWS field-value์˜ ํ˜•์‹์ด ์ง€์ผœ์ ธ์•ผ ํ•œ๋‹ค.
  • ๋ฉ”์‹œ์ง€ ๋ฐ”๋””๊ฐ€ ์—†๋‹ค๋ฉด ๊ณต๋ฐฑ ๋ผ์ธ๊ณผ ํ•จ๊ป˜ ์š”์ฒญ ๋ฉ”์‹œ์ง€๊ฐ€ ๋์ด ๋‚œ๋‹ค.

  • ์‘๋‹ต ๋ฉ”์‹œ์ง€์˜ ๊ฒฝ์šฐ์—๋Š” HTTP ๋ฒ„์ „์ด ๋จผ์ € ๋“ค์–ด๊ฐ€๊ณ , ๋’ค์— HTTP ์ƒํƒœ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.
    • ๋ณดํ†ต 200์€ ์„ฑ๊ณต, 400์€ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ์˜ค๋ฅ˜, 500์€ ์„œ๋ฒ„ ๋‚ด๋ถ€์˜ ์˜ค๋ฅ˜์ด๋‹ค.
  • ํ—ค๋”์—๋Š” HTTP ์ „์†ก์— ํ•„์š”ํ•œ ๋ชจ๋“  ๋ถ€๊ฐ€์ •๋ณด๊ฐ€ ๋“ค์–ด์žˆ๋‹ค.
    • ๋ฉ”์‹œ์ง€ ๋ฐ”๋””์˜ ๋‚ด์šฉ ํƒ€์ž…, ๋ฉ”์‹œ์ง€ ๋ฐ”๋””์˜ ํฌ๊ธฐ, ์••์ถ•, ์ธ์ฆ, ์š”์ฒญ ํด๋ผ์ด์–ธํŠธ ์ •๋ณด ๋“ฑ๋“ฑ
    • ํ•„์š”์‹œ ์ž„์˜์˜ ํ—ค๋” ์ถ”๊ฐ€๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋ฉ”์‹œ์ง€ ๋ฐ”๋””์—๋Š” ์‹ค์ œ ์ „์†กํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ๋‹ค.
    • HTML๋ฌธ์„œ, ์ด๋ฏธ์ง€, ์˜์ƒ, JSON ๋“ฑ๋“ฑ

Reference