๐ŸŒ Network/๐Ÿ“œHTTP

[HTTP] HTTP๋ž€?

junbin2 2024. 12. 18. 15:08

HTTP

HTTP๋Š” HyperText Transfer Protocol์˜ ์•ฝ์ž์ด๋‹ค.

 

HyperText

- HyperText ํ•˜์ดํผ๋งํฌ์™€ ๊ฐ™์€ ์ฐธ์กฐ๋ฅผ ๊ฑธ์–ด ๋‹ค๋ฅธ ๋ฌธ์„œ๋กœ ์ด๋™์„ ํ•˜๊ฒŒ ๋„์™€์ฃผ๋Š” ํ…์ŠคํŠธ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

Transfer

- "์˜ฎ๊ธฐ๋‹ค" ๋ผ๋Š” ๋œป์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ.

Protocol

- "๊ทœ์•ฝ" ์ด๋ผ๋Š” ๋œป์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ.

 

์ฆ‰, HyperText๋ฅผ ์˜ฎ๊ธฐ๊ฒŒ ๋„์™€์ฃผ๋Š” ๊ทœ์•ฝ์„ ์˜๋ฏธํ•œ๋‹ค.

์‰ฝ๊ฒŒ ๋งํ•ด, ์›น์—์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ„์˜ HyperText ๊ธฐ๋Šฅ์ด ๋“ค์–ด๊ฐ€์žˆ๋Š” ๋ฌธ์„œ๋“ค์„ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ํ†ตํ•ด ์ œ๊ณต์„ ํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์„ ๊ทœ์•ฝ์„ ํ•ด๋†“๊ณ  ํ•ด๋‹น ๊ทœ์•ฝ ํ‹€์•ˆ์—์„œ ์ œ๊ณต์„ ํ•ด์ฃผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

 

Protocol(๊ทœ์•ฝ)์˜ ์กด์žฌ ์ด์œ 

HTTP์™€ ๊ฐ™์ด ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์ด ์—†๋‹ค๋ฉด, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ„ ๋„ˆ๋ฌด ๋‹ค์–‘ํ•œ ํ†ต์‹  ๋ฐฉ๋ฒ•์ด ๋งŒ๋“ค์–ด์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ํ†ต์ผํ•˜์ž๋Š” ๊ฐœ๋…์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ํ†ต์‹  ๊ทœ์•ฝ์ด๋‹ค.

 

HTTP ํ†ต์‹  ํ”„๋กœํ† ์ฝœ ๊ทœ์•ฝ

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

์›ํ•˜๋Š” ๋ฌธ์„œ๋ฅผ ์š”์ฒญ์„ ํ•˜๋Š” ๊ณณ์„ ํด๋ผ์ด์–ธํŠธ, ์š”์ฒญ์„ ๋ฐ›์•„์„œ ๋ฌธ์„œ๋ฅผ ์ œ๊ณตํ•ด์ฃผ๋Š” ๊ณณ์„ ์„œ๋ฒ„๋กœ ๋‚˜๋ˆˆ๋‹ค๋Š” ์ผ๋ฐ˜์ ์ธ ์›น ๋ธŒ๋ผ์šฐ์ €์˜ ํ˜•ํƒœ๋ฅผ ์ •์˜ํ•œ ๊ตฌ์กฐ๋ฅผ ๊ทœ์•ฝ์œผ๋กœ์จ ์ •ํ•ด๋†“๋Š”๋‹ค.

2. ๋ฌด์ƒํƒœ ํ”„๋กœํ† ์ฝœ

HTTP๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ„์— ์š”์ฒญ๊ณผ ์‘๋‹ต ๊ณผ์ •์—์„œ ์š”์ฒญ ํ›„ ์‘๋‹ต์ด ๊ฐ€๋ฉด ๋ฐ”๋กœ ์—ฐ๊ฒฐ์„ ๋Š๋Š” ๋ฌด์ƒํƒœ ํ”„๋กœํ† ์ฝœ ์ง€์–‘

3. HTTP๋ฉ”์‹œ์ง€ & Request & Response

์•ž์„œ ๋งํ•œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ„์˜ ๊ตฌ์กฐ์—์„œ ์š”์ฒญ์ธ Request ์‘๋‹ต์ธ Response์— ๋Œ€ํ•œ ๊ตฌ์กฐ๋ฅผ HTTP ๋ฉ”์‹œ์ง€๋กœ์จ ํ†ต์‹ ์„ ํ•˜๊ฒŒ ๋œ๋‹ค. HTTP ๋ฉ”์‹œ์ง€๋Š” ์š”์ฒญ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์„œ๋ฒ„์— ๊ฐ™์ด ๋„˜๊ธฐ๊ฒŒ ๋œ๋‹ค. ์ด๋•Œ ๋“ค์–ด๊ฐ€๋Š” ์ •๋ณด๋กœ๋Š” URL, ํ—ค๋”, ์š”์ฒญ ๋ณธ๋ฌธ ๋“ฑ์„ ํฌํ•จํ•˜์—ฌ ์„œ๋ฒ„์— ์ฃผ๊ฒŒ ๋˜๊ณ  ์„œ๋ฒ„ ๋˜ํ•œ, HTTP ๋ฉ”์‹œ์ง€๋ฅผ ๋งŒ๋“ค์–ด์„œ ์‘๋‹ต์„ ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋•Œ ๋“ค์–ด๊ฐ€๋Š” ์ •๋ณด๋Š” ์ƒํƒœ ์ฝ”๋“œ, ํ—ค๋”, ๋ณธ๋ฌธ ๋“ฑ์„ ํฌํ•จํ•˜์—ฌ Response๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค.

4. HTTP ๋ฉ”์„œ๋“œ

๋Œ€ํ‘œ์ ์œผ๋กœ๋Š” GET, POST, PUT, DELETE, PATCH ์ด๋Ÿฌํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ HTTP ๋ฉ”์‹œ์ง€์— ๊ฐ™์ด ๋‹ด์•„์„œ ๋ณด๋‚ด๊ฒŒ ๋œ๋‹ค. ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋“ค์˜ ์˜๋ฏธ๋Š” ๊ฐ๊ฐ 

 

  • GET: ์„œ๋ฒ„์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ•˜๋Š” ๋ฉ”์„œ๋“œ. ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Œ.
  • POST: ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜์—ฌ ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๋Š” ๋ฉ”์„œ๋“œ.
  • PUT: ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๋Š” ๋ฉ”์„œ๋“œ.
  • DELETE: ์„œ๋ฒ„์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋ฉ”์„œ๋“œ.
  • HEAD: GET๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ, ์‘๋‹ต ๋ณธ๋ฌธ ์—†์ด ํ—ค๋”๋งŒ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ.
  • OPTIONS: ์„œ๋ฒ„๊ฐ€ ์ง€์›ํ•˜๋Š” HTTP ๋ฉ”์„œ๋“œ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฉ”์„œ๋“œ.
  • PATCH: ๋ฆฌ์†Œ์Šค์˜ ์ผ๋ถ€๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ฉ”์„œ๋“œ.

 

์ด๋Ÿฌํ•œ ์˜๋ฏธ๋ฅผ ๋„๊ฒŒ ๋˜๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์„ ํ† ๋Œ€๋กœ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์„ API ํ˜ธ์ถœ์ด๋ผ๊ณ  ํ•˜๋ฉฐ, ์œ„์˜ ๋ฐฉ๋ฒ•๋“ค์„ ๋‹ค ์ง€ํ‚ค๊ฒŒ ๋˜๋ฉด RESTfulํ•œ API๋ผ๊ณ  ๋ถ€๋ฅด๊ฒŒ ๋œ๋‹ค.

5. ์ƒํƒœ ์ฝ”๋“œ

Response๊ณผ์ •์—์„œ๋Š” ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋˜์—ˆ๋А๋ƒ์— ๋”ฐ๋ผ์„œ ์ƒํƒœ์ฝ”๋“œ๋ฅผ ๋ณด๋‚ด์ฃผ๊ฒŒ ๋˜๊ณ , ์ƒํƒœ์ฝ”๋“œ์— ๋”ฐ๋ผ์„œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ๊ณผ ์‘๋‹ต์— ๋Œ€ํ•œ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

* ๋Œ€ํ‘œ์  ์ƒํƒœ ์ฝ”๋“œ

 

  • 1xx (์ •๋ณด ์‘๋‹ต): ์š”์ฒญ์„ ์ฒ˜๋ฆฌ ์ค‘์ธ ์ƒํƒœ. ์˜ˆ: 100 Continue.
  • 2xx (์„ฑ๊ณต ์‘๋‹ต): ์š”์ฒญ์ด ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋œ ์ƒํƒœ. ์˜ˆ: 200 OK.
  • 3xx (๋ฆฌ๋‹ค์ด๋ ‰์…˜): ์š”์ฒญ์„ ๋‹ค๋ฅธ ์œ„์น˜๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ํ•ด์•ผ ํ•˜๋Š” ์ƒํƒœ. ์˜ˆ: 301 Moved Permanently.
  • 4xx (ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜): ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” ์ƒํƒœ. ์˜ˆ: 404 Not Found.
  • 5xx (์„œ๋ฒ„ ์˜ค๋ฅ˜): ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌ ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ์ƒํƒœ. ์˜ˆ: 500 Internal Server Error.

 

6. ํ—ค๋”

- HTTP ๋ฉ”์‹œ์ง€์— ์ •๋ณด๋ฅผ ๋„˜๊ธธ ๋•Œ ์ฆ‰, ์š”์ฒญ๊ณผ ์‘๋‹ต์— ์ถ”๊ฐ€์ ์ธ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ๋•Œ ์‚ฌ์šฉ์ด ๋œ๋‹ค.

- ๋ฉ”์‹œ์ง€์— ํฌํ•จ์ด ๋˜์–ด์„œ ์š”์ฒญ๊ณผ ์‘๋‹ต์ด ์ „๋‹ฌ์ด ๋˜๊ฒŒ ๋œ๋‹ค.

์˜ˆ์‹œ๋กœ๋Š”

Content-Type : ์‘๋‹ต ๋ณธ๋ฌธ์— ์ฝ˜ํ…์ธ  ์œ ํ˜•

Authorization : ์ธ์ฆ ์ •๋ณด

User-Agent : ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ •๋ณด

 

7. URL

HTTP ์š”์ฒญ์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•œ ์ฃผ์†Œ์ด๋‹ค. URL์€ ํ”„๋กœํ† ์ฝœ, ๋„๋ฉ”์ธ, ๊ฒฝ๋กœ, ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด ๋“ฑ์œผ๋กœ ๊ตฌ์„ฑ์ด ๋œ๋‹ค.

์˜ˆ์‹œ๋กœ๋Š”

[http://www.example.com/hello?search=query]

http : ํ”„๋กœํ† ์ฝœ

[www.example.com] : ๋„๋ฉ”์ธ

/hello : ๋ฆฌ์†Œ์Šค ๊ฒฝ๋กœ

?search=query : ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด

 

๊ฒฐ๋ก 

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