๐Ÿ’ปNetwork

HTTP๋ž€? HTTP ์„ค๋ช…

IOTrue 2023. 3. 30. 21:46

๐Ÿ˜ŽHTTP๋ž€?

 

HTTP(HyperText Transfer Protocol)
์ธํ„ฐ๋„ท ์ƒ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ์„ ๋งํ•˜๋ฉฐ
์›น ๋ธŒ๋ผ์šฐ์ €์™€ ์›น ์„œ๋ฒ„์˜ ์†Œํ†ต์„ ์œ„ํ•ด ๋””์ž์ธ๋˜์—ˆ๋‹ค.

 

โœ… HTTP์˜ ํŠน์ง•

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

HTTP๋Š” ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ๋งŒ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜๊ณ , ์‘๋‹ต์„ ์ฃผ๊ณ ๋‚˜๋ฉด ์„œ๋ฒ„์™€์˜ ์—ฐ๊ฒฐ์„ ๋Š๋Š”๋‹ค.

 

Stateless(๋ฌด์ƒํƒœ์„ฑ)

์ปค๋„ฅ์…˜์„ ๋Š๋Š” ์ˆœ๊ฐ„ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ํ†ต์‹ ์ด ๋๋‚˜๋ฉฐ ์ƒํƒœ ์ •๋ณด๋Š” ์œ ์ง€(์ €์žฅ)ํ•˜์ง€ ์•Š๋Š”๋‹ค.

Stateless ํŠน์ง•์œผ๋กœ ์ธํ•ด ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ ๋“ค๊ณ  ์žˆ์ง€ ์•Š์•„์„œ

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ƒํƒœ ์ •๋ณด๋ฅผ ๋งค๋ฒˆ http์— ๋‹ด์•„์„œ ์š”์ฒญํ•ด์•ผํ•œ๋‹ค.

 

 

โœ… HTTP messages

HTTP messages๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์‚ฌ์ด์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ตํ™˜๋˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

์œ ํ˜•์€ ์š”์ฒญ(Requests)๊ณผ ์‘๋‹ต(Responses)์ด ์žˆ๋‹ค.

 

HTTP message ๊ตฌ์„ฑ

1. ์‹œ์ž‘ ๋ผ์ธ(Start Line)

ํ•ญ์ƒ ์ฒซ ๋ฒˆ์งธ ์ค„์— ์œ„์น˜ํ•˜๋ฉฐ ์š”์ฒญ์ด๋‚˜ ์‘๋‹ต์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

  • ์š”์ฒญ
    • Method : GET / POST / PUT / DELTE ๋“ฑ (HTTP ๋ฉ”์„œ๋“œ)
    • URL : ์š”์ฒญ ๋Œ€์ƒ ๊ฒฝ๋กœ ํ‘œ์‹œ
    • Version : ์‚ฌ์šฉ๋œ http ๋ฒ„์ „
  • ์‘๋‹ต
    • Version : ์‚ฌ์šฉ๋œ http ๋ฒ„์ „
    • Status Code : ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์˜ ์„ฑ๊ณต, ์‹คํŒจ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ˆซ์ž ์ฝ”๋“œ (200, 404, 500 ๋“ฑ)
    • Status Message : Status Code ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ธ€๋กœ ํ‘œํ˜„

2. ํ—ค๋”(Header)

์š”์ฒญ์„ ์ง€์ •ํ•˜๊ฑฐ๋‚˜, ๋ฉ”์‹œ์ง€์— ํฌํ•จ๋œ ๋ณธ๋ฌธ์„ ์„ค๋ช…ํ•˜๋Š” ํ—ค๋”์˜ ์ง‘ํ•ฉ์œผ๋กœ

HTTP ์ „์†ก์— ํ•„์š”ํ•œ ๋ชจ๋“  ๋ถ€๊ฐ€ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค.

๋ฉ”์„ธ์ง€ ํฌ๊ธฐ, ์••์ถ• ์—ฌ๋ถ€, ์ธ์ฆ, ๋ธŒ๋ผ์šฐ์ € ์ •๋ณด, ์„œ๋ฒ„ ์ •๋ณด, ์บ์‹œ ๋“ฑ

 

  • ์š”์ฒญ
    • Host : ์š”์ฒญํ•˜๋ ค๋Š” ์„œ๋ฒ„ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„๊ณผ ํฌํŠธ ๋ฒˆํ˜ธ
    • User-agent : ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ ์ •๋ณด
      ์ด ์ •๋ณด๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ(๋ธŒ๋ผ์šฐ์ €)์— ๋งž๋Š” ์ตœ์ ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‘๋‹ตํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Referer : ๋ฐ”๋กœ ์ง์ „์— ๋จธ๋ฌผ๋ €๋˜ ๋„๋ฉ”์ธ ์ฃผ์†Œ 
    • Accept : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ ๋ฏธ๋””์–ด ํƒ€์ž… ์ข…๋ฅ˜
    • If-Modified-Since : ์—ฌ๊ธฐ์— ์“ฐ์—ฌ์ง„ ์‹œ๊ฐ„ ์ดํ›„๋กœ ๋ณ€๊ฒฝ๋œ ๋ฆฌ์†Œ์Šค ์ทจ๋“
      ํŽ˜์ด์ง€๊ฐ€ ์ˆ˜์ •๋˜์—ˆ์œผ๋ฉด ์ตœ์‹  ํŽ˜์ด์ง€๋กœ ๊ต์ฒดํ•œ๋‹ค.
    • Authorization : ์ธ์ฆ ํ† ํฐ์„ ์„œ๋ฒ„๋กœ ๋ณด๋‚ผ ๋•Œ ์‚ฌ์šฉ
    • Origin : ์„œ๋ฒ„๋กœ Post ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ์š”์ฒญ์ด ์–ด๋А ์ฃผ์†Œ์—์„œ ์‹œ์ž‘๋˜์—ˆ๋Š”์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’
      ์ด ๊ฐ’์œผ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ธ ์ฃผ์†Œ์™€ ๋ฐ›๋Š” ์ฃผ์†Œ๊ฐ€ ๋‹ค๋ฅด๋ฉด CORS(Cross-Origin Resource Sharing) ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
    • Cookie : key-value๋กœ ๊ตฌ์„ฑ๋œ ์ฟ ํ‚ค
  • ์‘๋‹ต
    • Location : 301, 302 ์ƒํƒœ์ฝ”๋“œ์ผ ๋•Œ๋งŒ ๋ณผ ์ˆ˜ ์žˆ๋Š” Header๋กœ
      ์„œ๋ฒ„์˜ ์‘๋‹ต์ด ๋‹ค๋ฅธ ๊ณณ์— ์žˆ๋‹ค๊ณ  ์•Œ๋ ค์ฃผ๋ฉด์„œ ํ•ด๋‹น ์œ„์น˜(URI)๋ฅผ ์ง€์ •ํ•œ๋‹ค.
    • Server : ์›น ์„œ๋ฒ„ ์ข…๋ฅ˜
    • Age : max-age ์‹œ๊ฐ„๋‚ด์—์„œ ์–ผ๋งˆ๋‚˜ ํ˜๋ €๋Š”์ง€ ์ดˆ ๋‹จ์œ„๋กœ ์•Œ๋ ค์ฃผ๋Š” ๊ฐ’
    • Referrer-policy : ์„œ๋ฒ„ referrer ์ •์ฑ…์„ ์•Œ๋ ค์ฃผ๋Š” ๊ฐ’ ex) origin, no-referrer, unsafe-url
    • WWW-Authenticate : ์‚ฌ์šฉ์ž ์ธ์ฆ์ด ํ•„์š”ํ•œ ์ž์›์„ ์š”๊ตฌํ•  ์‹œ, ์„œ๋ฒ„๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ธ์ฆ ๋ฐฉ์‹
    • Proxy-Authenticate : ์š”์ฒญํ•œ ์„œ๋ฒ„๊ฐ€ ํ”„๋ก์‹œ ์„œ๋ฒ„์ธ ๊ฒฝ์šฐ ์œ ์ € ์ธ์ฆ์„ ์œ„ํ•œ ๊ฐ’

 

3. ๊ณต๋ฐฑ ๋ผ์ธ(Empty Line)

ํ—ค๋”์™€ ๋ฐ”๋””๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ธ

 

4. ๋ฐ”๋””(Message Body)

  • ์š”์ฒญ
    • ์‹ค์ œ ์ „์†กํ•  ๋ฐ์ดํ„ฐ (HTML ๋ฌธ์„œ, ์ด๋ฏธ์ง€, ์˜์ƒ, JSON ๋ฐ์ดํ„ฐ ๋“ฑ)
  • ์‘๋‹ต
    • ์ „์†ก ๋ฐ›์€ ๋ฐ์ดํ„ฐ

 

 

โœ… HTTP ๋ฉ”์†Œ๋“œ

HTTP ๋ฉ”์†Œ๋“œ๋Š” ์ด 9๊ฐœ๊ฐ€ ์žˆ๊ณ  ์ด ์ค‘ ์ฃผ๋กœ ์“ฐ์ด๋Š” ๋ฉ”์†Œ๋“œ๋Š” 5๊ฐœ์ด๋‹ค.

์ฃผ์š” ๋ฉ”์†Œ๋“œ 5๊ฐœ

  • GET : ๋ฆฌ์†Œ์Šค ์กฐํšŒ
  • POST : ์š”์ฒญ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ์ฃผ๋กœ ๋ฐ์ดํ„ฐ ๋“ฑ๋ก์— ์‚ฌ์šฉ
  • PUT : ๋ฆฌ์†Œ์Šค๋ฅผ ๋Œ€์ฒด, ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†์œผ๋ฉด ์ƒ์„ฑ (์ „์ฒด ์—…๋ฐ์ดํŠธ)
  • PATCH : ๋ฆฌ์†Œ์Šค ์ผ๋ถ€ ๋ณ€๊ฒฝ (๋ถ€๋ถ„ ์—…๋ฐ์ดํŠธ)
  • DELETE : ๋ฆฌ์†Œ์Šค ์‚ญ์ œ

๊ทธ์™ธ ๋ฉ”์†Œ๋“œ 4๊ฐœ

  • HEAD : GET๊ณผ ๋™์ผํ•˜์ง€๋งŒ ๋ฉ”์„ธ์ง€ ๋ถ€๋ถ„์„ ์ œ์™ธํ•˜๊ณ , ์ƒํƒœ ์ค„๊ณผ ํ—ค๋”๋งŒ ๋ฐ˜ํ™˜
  • OPTIONS : ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ํ†ต์‹  ๊ฐ€๋Šฅ ์˜ต์…˜์„ ์„ค๋ช… (์ฃผ๋กœ CORS์—์„œ ์‚ฌ์šฉ)
  • CONNECT : ๋Œ€์ƒ ์ž์›์œผ๋กœ ์‹๋ณ„๋˜๋Š” ์„œ๋ฒ„์— ๋Œ€ํ•œ ํ„ฐ๋„์„ ์„ค์ •
  • TRACE : ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ผ ๋ฉ”์„ธ์ง€ ๋ฃจํ”„๋ฐฑ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰

 

 

โœ… HTTP ์ƒํƒœ์ฝ”๋“œ

์ƒํƒœ ์ฝ”๋“œ๋Š” ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์˜ ์ฒ˜๋ฆฌ ์ƒํƒœ๋ฅผ ์‘๋‹ต์—์„œ ์•Œ๋ ค์ฃผ๋Š” ์ฝ”๋“œ๋ฅผ ๋งํ•˜๊ณ 

์ผ๋ฐ˜์ ์œผ๋กœ๋Š” 3์ž๋ฆฌ ์ˆซ์ž๋กœ ๋˜์–ด ์žˆ์œผ๋ฉฐ, 100 ~ 500๋ฒˆ๋Œ€ ์ˆซ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

 

1xx(์ •๋ณด) : ์š”์ฒญ์„ ๋ฐ›์•˜์œผ๋ฉฐ ํ”„๋กœ์„ธ์Šค ๊ณ„์† ์ง„ํ–‰
2xx(์„ฑ๊ณต) : ์š”์ฒญ์„ ์„ฑ๊ณต์ ์œผ๋กœ ๋ฐ›์•˜์œผ๋ฉฐ ์ธ์‹ํ–ˆ๊ณ  ์ˆ˜์šฉ
3xx(๋ฆฌ๋‹ค์ด๋ ‰์…˜) : ์š”์ฒญ ์™„๋ฃŒ๋ฅผ ์œ„ํ•ด ์ถ”๊ฐ€ ์ž‘์—… ์กฐ์น˜ ํ•„์š”
4xx(ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜) : ์š”์ฒญ์˜ ๋ฌธ๋ฒ•์ด ์ž˜๋ชป๋˜์—ˆ๊ฑฐ๋‚˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์Œ
5xx(์„œ๋ฒ„ ์˜ค๋ฅ˜) : ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์— ๋Œ€ํ•œ ์„œ๋ฒ„์˜ ์‘๋‹ต ์‹คํŒจ

 

 

 

 

 

์ฐธ๊ณ 

https://developer.mozilla.org/ko/docs/Web/HTTP

 

HTTP | MDN

ํ•˜์ดํผํ…์ŠคํŠธ ์ „์†ก ํ”„๋กœํ† ์ฝœ(HTTP)์€ HTML๊ณผ ๊ฐ™์€ ํ•˜์ดํผ๋ฏธ๋””์–ด ๋ฌธ์„œ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ์ด์–ด ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ์›น ์„œ๋ฒ„๊ฐ„์˜ ํ†ต์‹ ์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์ง€๋งŒ ๋‹ค๋ฅธ ๋ชฉ์ ์œผ๋กœ

developer.mozilla.org