๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

2.1.1 ์›น์˜ ๋™์ž‘(HTTP ํ”„๋กœํ† ์ฝœ)

by nitronium102 2021. 6. 26.

01. ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋žจ ์–ธ์–ด๋“ค

์ €๊ธ‰ ์–ธ์–ด

์ €๊ธ‰ ์–ธ์–ด๋Š” ๊ธฐ๊ณ„ ์ค‘์‹ฌ์˜ ์–ธ์–ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๊ณ„๊ฐ€ ์ง์ ‘ ์•Œ์•„๋“ค์„ ์ˆ˜ ์žˆ๋Š” ๋ง๋กœ 'ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค'๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ปดํ“จํ„ฐ๋Š” ์ „๊ธฐ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, ์ „๊ธฐ์‹ ํ˜ธ์ธ ์ผœ์กŒ๋‹ค(on)์™€ ๊บผ์กŒ๋‹ค(off) 2๊ฐ€์ง€ ์ƒํƒœ ๊ฐ’์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณดํ†ต ์ˆซ์ž๋กœ ํ‘œํ˜„ํ•˜๋ฉด ์ผœ์กŒ๋‹ค๋Š” 1, ๊บผ์กŒ๋‹ค๋Š” 0์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. 0๊ณผ 1๋กœ ํ‘œํ˜„๋˜๋Š” ์ˆซ์ž๋ฅผ ์šฐ๋ฆฌ๋Š” 2์ง„์ˆ˜๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

2์ง„์ˆ˜๋กœ ์ด๋ค„์ง„ ๊ฐ’์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ๊ธฐ๊ณ„์–ด(Machine Language)๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

์ˆซ์ž๋กœ๋งŒ ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ ์ง€๋ณด์ˆ˜๋„ ๊ต‰์žฅํžˆ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์ˆซ์ž๋กœ๋งŒ ๋œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ์‚ฌ์šฉ์ด ๊ต‰์žฅํžˆ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ, ์ด ์ˆซ์ž๋กœ ๋œ ๋ฌธ์žฅ๊ณผ 1:1๋กœ ๋Œ€์‘ํ•˜๋Š” ๊ธฐํ˜ธ๋ฅผ ๋งŒ๋“ค๊ณ , ๊ทธ ๊ธฐํ˜ธ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹จ ๊ธฐํ˜ธ๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์€ ๊ธฐ๊ณ„๊ฐ€ ๋ฐ”๋กœ ์•Œ์•„๋“ค์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐํ˜ธ๋กœ ์ž‘์„ฑ๋œ ๋ฌธ์žฅ๋“ค์„ ์›๋ž˜์˜ ์ˆซ์ž๋กœ ๋ฐ”๊ฟ”์•ผ ํ•˜๋Š” ๊ณผ์ •์ด ๋” ํ•„์š”ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ณผ์ •์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋„๊ตฌ๋ฅผ ์ปดํŒŒ์ผ๋Ÿฌ(Compiler)๋ผ๊ณ  ๋งํ•˜๋ฉฐ, ์ด๋Ÿฌํ•œ ๊ธฐํ˜ธ๋กœ ์ž‘์„ฑ๋œ ์–ธ์–ด๋ฅผ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด(Assembly Language)๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ๋Š” ์•„์ฃผ ํŠน์ˆ˜ํ•œ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๊ธฐ๊ณ„์–ด์™€ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋งŒํผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์–ด๋ ต๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

๊ณ ๊ธ‰ ์–ธ์–ด

๊ณ ๊ธ‰ ์–ธ์–ด๋Š” ์‚ฌ๋žŒ ์ค‘์‹ฌ์˜ ์–ธ์–ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ๋žŒ์ด ์ข€ ๋” ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ๋ฌธ๋ฒ•์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฐ ์ผ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ์œ„ํ•ด์„  ์ž‘์„ฑ๋œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋ฒˆ์—ญํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ์ปดํŒŒ์ผํ•œ๋‹ค๊ณ  ๋งํ•˜๋ฉฐ, ์ด๋Ÿฌํ•œ ์ผ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์ปดํŒŒ์ผ๋Ÿฌ๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

์•ž์—์„œ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋„ ๊ธฐ๊ณ„์–ด๋กœ ์ปดํŒŒ์ผ์ด ๋œ๋‹ค๊ณ  ๋งํ–ˆ์—ˆ์ฃ ?

์ปดํ“จํ„ฐ ์„ฑ๋Šฅ์ด ์ข‹์•„์ง€๊ณ , ์ปดํŒŒ์ผ๋Ÿฌ์™€ ๊ด€๋ จ๋œ ๊ธฐ์ˆ ์ด ๋ฐœ์ „ํ•˜๋ฉด์„œ ์‚ฌ๋žŒ ์ค‘์‹ฌ์˜ ์–ธ์–ด๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ณ ๊ธ‰ ์–ธ์–ด๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์–ธ์–ด๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • FORTRAN : ์ตœ์ดˆ์˜ ๊ณ ๊ธ‰์–ธ์–ด ์ค‘์˜ ํ•˜๋‚˜๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ณผํ•™ ๊ณ„์‚ฐ์šฉ์œผ๋กœ ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ณต๋Œ€์—์„œ๋„ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • COBOL : FORTRAN๊ณผ ๋”๋ถˆ์–ด ์—ญ์‚ฌ๊ฐ€ ์˜ค๋ž˜๋œ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ์—…๋ฌด์—์„œ ์‚ฌ์šฉํ•  ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ์œผ๋ฉฐ, ํ˜„์žฌ๋„ ์€ํ–‰ ๋“ฑ์—์„œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • PROLOG : ๋…ผ๋ฆฌํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ์จ, ๋…ผ๋ฆฌ์‹์„ ํ† ๋Œ€๋กœ ์˜ค๋ธŒ์ ํŠธ์™€ ์˜ค๋ธŒ์ ํŠธ ๊ฐ„์˜ ๊ด€๊ณ„์— ๊ด€ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • C : 1972๋…„ ๋ฏธ๊ตญ ๋ฒจ ์—ฐ๊ตฌ์†Œ์˜ ๋ฐ๋‹ˆ์Šค ๋ฆฌ์น˜์— ์˜ํ•ด ๊ฐœ๋ฐœ๋œ ๊ณ ๊ธ‰ ์–ธ์–ด๋กœ์จ ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ํ‰๊ฐ€๋ฅผ ๋ฐ›๋Š” ์–ธ์–ด์ž…๋‹ˆ๋‹ค.
  • Erlang :์Šค์›จ๋ด์˜ ์—๋ฆญ์Šจ์—์„œ ๊ฐœ๋ฐœํ•œ ํ•จ์ˆ˜ํ˜• ๋ณ‘ํ–‰์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋ฉฐ ํ†ต์‹  ์ธํ”„๋ผ๋ฅผ ์œ„ํ•œ ์–ธ์–ด์ž…๋‹ˆ๋‹ค.
  • Lisp : LISt Processsor์˜ ์•ฝ์ž๋กœ์จ ๋Œ€ํ‘œ์ ์ธ ํ•จ์ˆ˜ํ˜• ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ์—ญ์‚ฌ๋ฅผ ๋งํ•  ๋•Œ, ํ˜„๋Œ€์˜ ์ปดํ“จํ„ฐ๋ฅผ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๊ณ ๊ธ‰ ์–ธ์–ด ์ค‘ ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ๊ฒƒ์ด ํฌํŠธ๋ž€์ด๊ณ , ๋‘ ๋ฒˆ์งธ๋กœ ์˜ค๋ž˜๋œ ๊ฒƒ์ด ๋ฐ”๋กœ ์ด ๋ฆฌ์Šคํ”„์ž…๋‹ˆ๋‹ค.
  • Swift : 2014๋…„ WWDC(Apple WorldWide Developers Conference)์—์„œ ๊ณต๊ฐœํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ์ตœ๊ทผ์— ๋งŒ๋“ค์–ด์ง„ ์–ธ์–ด๋กœ ํ˜„๋Œ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋ฐœ์ „์„ ๋Œ€๋‹ค์ˆ˜ ๊ณ„์Šนํ•œ ๋ชจ๋˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Kotlin : IntelliJ IDEA์˜ ๊ฐœ๋ฐœ์‚ฌ JetBrains์—์„œ 2011๋…„์— ๊ฐœ๋ฐœํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. JVM๊ธฐ๋ฐ˜์˜ ์–ธ์–ด์ด๋ฉฐ Java์™€์˜ ์ƒํ˜ธ ์šด์˜์ด 100% ์ง€์›๋ฉ๋‹ˆ๋‹ค. Swift์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ˜„๋Œ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋ฐœ์ „์„ ๋Œ€๋‹ค์ˆ˜ ๊ณ„์Šนํ•œ ๋ชจ๋˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ผ ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Clojure : ํด๋กœ์ €(Clojure)๋Š” ๋ฆฌ์น˜ ํžˆํ‚ค(Rich Hickey)๊ฐ€ ๋งŒ๋“  ๋ฆฌ์Šคํ”„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋ฐฉ์–ธ์œผ๋กœ์„œ, ๋ฒ”์šฉ ํ•จ์ˆ˜ํ˜• ์–ธ์–ด์ž…๋‹ˆ๋‹ค.
  • Python : ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ž…๋ฌธ์ž๊ฐ€ ์ฝ๊ธฐ ์‰ฝ๊ณ  ์ ์€ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ์—๊ฒŒ ์ถ”์ฒœ๋˜๋Š” ์–ธ์–ด์ด๋ฉฐ, ๋ฐ์ดํ„ฐ ๊ณผํ•™์—์„œ๋„ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋ฉฐ ์›น์‚ฌ์ดํŠธ ๊ฐœ๋ฐœ์—์„œ๋„ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ python์€ ML (machine learning)์—์„œ๋„ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • JAVA : 1995๋…„ ์ฌ ๋งˆ์ดํฌ๋กœ ์‹œ์Šคํ…œ์ฆˆ์—์„œ ๊ฐœ๋ฐœํ•œ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ๊ฑฐ์˜ ๋งค๋…„ ์„ธ๊ณ„์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์ธ๊ธฐ 1๋“ฑ์„ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 

์›น ๊ด€๋ จ ์ธ๊ธฐ ์–ธ์–ด

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

 

02. ์›น์˜ ๋™์ž‘(HTTP ํ”„๋กœํ† ์ฝœ ์ดํ•ด)

์ธํ„ฐ๋„ท ์ค‘ ์›น์—์„œ๋Š” ์„œ๋กœ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด HTTP๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

HTTP (Hypertext Transfer Protocol)๋ž€?

  • ํŒ€ ๋ฒ„๋„ˆ์Šค๋ฆฌ(Tim Berners-Lee)์™€ ๊ทธ๊ฐ€ ์†ํ•œ ํŒ€์€ CERN์—์„œ HTML๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์›น ๋ธŒ๋ผ์šฐ์ € ๋ฐ ์›น ๋ธŒ๋ผ์šฐ์ € ๊ด€๋ จ ๊ธฐ์ˆ ๊ณผ HTTP๋ฅผ ๋ฐœ๋ช…ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ๋ฌธ์„œํ™”๋œ ์ตœ์ดˆ์˜ HTTP๋ฒ„์ „์€ HTTP v0.9(1991๋…„)์ž…๋‹ˆ๋‹ค.
  • HTTP๋Š” ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ธํ„ฐ๋„ท์ƒ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ(protocol)์ž…๋‹ˆ๋‹ค.
  • ์–ด๋–ค ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋„ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.
  • HTTP๋Š” ๊ณ„์† ๋ฐœ์ „ํ•˜์—ฌ HTTP/2๊นŒ์ง€ ๋ฒ„์ „์ด ๋“ฑ์žฅํ•œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

 

HTTP ์ž‘๋™๋ฐฉ์‹

HTTP๋Š” ์„œ๋ฒ„/ํด๋ผ์ด์–ธํŠธ ๋ชจ๋ธ์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ์„œ๋ฒ„์—๊ฒŒ ๋ณด๋‚ด๋ฉด ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ต์„ ๋ณด๋‚ธ๋‹ค.

๋ฌด์ƒํƒœ(Stateless) ์—ฐ๊ฒฐ์„ ํ•˜๋Š”๋ฐ, ๋Œ€๋ถ€๋ถ„์˜ ์ ‘์†์€ ์—ฐ๊ฒฐ > ์š”์ฒญ > ์‘๋‹ต > ์ข…๋ฃŒ์‹์œผ๋กœ ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์˜ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฐ์†ํ•ด์„œ ์š”์ฒญ์„ ๋ณด๋‚ด๋”๋ผ๋„ ์„œ๋ฒ„ ์ธก์—์„œ๋Š” ํ•ด๋‹น ํด๋ผ์ด์–ธํŠธ์˜ ์ด์ „ ์ƒํ™ฉ์„ ์•Œ ์ˆ˜ ์—†๋‹ค. 

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

 

URL (Uniform Resource Locator)

  • ์ธํ„ฐ๋„ท ์ƒ์˜ ์ž์›์˜ ์œ„์น˜
  • ํŠน์ • ์›น ์„œ๋ฒ„์˜ ํŠน์ • ํŒŒ์ผ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๊ฒฝ๋กœ ํ˜น์€ ์ฃผ์†Œ

ํ•˜๋‚˜์˜ ๋ฌผ๋ฆฌ์  ์ปดํ“จํ„ฐ์—๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„œ๋ฒ„๊ฐ€ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์„œ๋ฒ„๋งˆ๋‹ค ํฌํŠธ๊ฐ’์€ ๊ฐ๊ฐ ๋‹ฌ๋ผ์•ผ ํ•œ๋‹ค.

- IP ์ฃผ์†Œ๊ฐ’์œผ๋กœ ๋ฌผ๋ฆฌ์ ์ธ ์ปดํ“จํ„ฐ ์ฃผ์†Œ๋ฅผ ์ฐพ๋Š”๋‹ค. (ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ์— IP ํ•˜๋‚˜ ํ• ๋‹น)

- ํฌํŠธ๊ฐ’์œผ๋กœ ํ•ด๋‹น ์ปดํ“จํ„ฐ ์•ˆ์— ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์„œ๋ฒ„๋ฅผ ์ฐพ๋Š”๋‹ค.

 

์š”์ฒญ ๋ถ€๋ถ„์€ ํฌ๊ฒŒ ์š”์ฒญ ํ—ค๋” / ๋นˆ ์ค„ / ์š”์ฒญ ๋ฐ”๋””, ์ด๋ ‡๊ฒŒ ์„ธ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋‰œ๋‹ค. 

 

1. ์š”์ฒญ ๋ฐ์ดํ„ฐ ํฌ๋งท : ์š”์ฒญ ํ—ค๋” / ๋นˆ ์ค„ / ์š”์ฒญ ๋ฐ”๋”” 

1) ์š”์ฒญ ํ—ค๋”

- ์š”์ฒญ ๋ฉ”์„œ๋“œ : GET, PUT, POST, PUSH, OPTIONS ๋“ฑ์˜ ์š”์ฒญ ๋ฐฉ์‹์ด ์˜จ๋‹ค.

- ์š”์ฒญ URI : ์š”์ฒญํ•˜๋Š” ์ž์›์˜ ์œ„์น˜๋ฅผ ๋ช…์‹œํ•œ๋‹ค.

- HTTP ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „ : ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „์ด๋‹ค.

 

์ฒซ ๋ฒˆ์งธ ์ค„์˜ ์š”์ฒญ ๋ฉ”์„œ๋“œ๋Š” ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญ์˜ ์ข…๋ฅ˜๋ฅผ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ ์ตœ์ดˆ์˜ ์›น ์„œ๋ฒ„๋Š” GET๋ฐฉ์‹๋งŒ ์ง€์›ํ•ด์คฌ์Šต๋‹ˆ๋‹ค.

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

2) ๋นˆ ์ค„

3) ์š”์ฒญ ๋ฐ”๋””

- GET์˜ ๊ฒฝ์šฐ์—๋Š” ๋’ค์— ์ž์›์„ ๋‹ฌ๊ณ  ๋‹ค๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์š”์ฒญ ๋ฐ”๋””๊ฐ€ ์—†๋‹ค

- ๋”ฐ๋ผ์„œ ๋ฐ”๋”” ์š”์†Œ๋Š” ์š”์ฒญ ๋ฉ”์†Œ๋“œ๊ฐ€ POST๋‚˜ PUT์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋์„ ๋•Œ ๋“ค์–ด์˜ค๊ฒŒ ๋œ๋‹ค.

 

2. ์‘๋‹ต ๋ฐ์ดํ„ฐ ํฌ๋งท : ํ—ค๋” / ๋นˆ ์ค„ / ์‘๋‹ต ๋ฐ”๋””

1) ํ—ค๋”

- ์‘๋‹ต HTTP ํ”„๋กœํ† ์ฝœ์˜ ๋ฒ„์ „

- ์‘๋‹ต ์ฝ”๋“œ

- ์‘๋‹ต ๋ฉ”์‹œ์ง€

ex) HTTP/1.1 200 OK

- ๋‚ ์งœ, ์›น์„œ๋ฒ„ ์ด๋ฆ„๊ณผ ๋ฒ„์ „, ์ฝ˜ํ…์ธ  ํƒ€์ž…, ์บ์‹œ ์ œ์–ด ๋ฐฉ์‹, ์ฝ˜ํ…์ธ  ๊ธธ์ด

 

2) ๋นˆ ์ค„

3) ์‘๋‹ต ๋ฐ”๋”” : ์‹ค์ œ ์‘๋‹ต ๋ฆฌ์†Œ์Šค ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜์˜จ๋‹ค. 

๋Œ“๊ธ€