๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • Dev Blog
CS/Network

[HTTP] - HTTP ํ”„๋กœํ† ์ฝœ์˜ ํŠน์ง•

by ์œ ์ง„์˜ 2022. 8. 3.
์ธํ”„๋Ÿฐ ๊ฐ•์˜ ์ค‘ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹์ด๋ผ๋Š” ๊ฐ•์˜์— ๋Œ€ํ•œ TIL์ž…๋‹ˆ๋‹ค.

 

HTTP ๊ธฐ๋ณธ ํŠน์ง•

  • ํด๋ผ์ด์–ธํŠธ ์„œ๋ฒ„ ๊ตฌ์กฐ
  • ๋ฌด์ƒํƒœ(Stateless) ํ”„๋กœํ† ์ฝœ
  • ๋น„์—ฐ๊ฒฐ์„ฑ(Connectionless)
  • HTTP ๋ฉ”์‹œ์ง€

 

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

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

 

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

๋ฌด์ƒํƒœ, ์ฆ‰ Stateless๋ž€ ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ๋ฅผ ๋ณด์กดํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ๋ฐ˜๋Œ€ ์šฉ์–ด๋กœ๋Š” Stateful, ์ฆ‰ ์ƒํƒœ ์œ ์ง€์ด๋‹ค.

Stateful๊ณผ Stateless์˜ ์ฐจ์ด๋ฅผ ์•„๋ž˜ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด์„œ ์•Œ์•„๋ณด์ž.

Stateful(์ƒํƒœ ์œ ์ง€)

๊ณ ๊ฐ: ์ด ๋…ธํŠธ๋ถ ์–ผ๋งˆ์ธ๊ฐ€์š”?
์ ์›: 100๋งŒ ์›์ž…๋‹ˆ๋‹ค.

๊ณ ๊ฐ: 2๊ฐœ ๊ตฌ๋งคํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
์ ์›: 200๋งŒ ์›์ž…๋‹ˆ๋‹ค. ํ˜„๊ธˆ, ์นด๋“œ ์ค‘ ์–ด๋Š ๊ฑธ๋กœ ๊ตฌ๋งคํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๊ณ ๊ฐ: ์นด๋“œ๋กœ ๊ตฌ๋งคํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
์ ์›: 200๋งŒ ์› ๊ฒฐ์ œ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.  

 

์ ์›์€ ๊ณ ๊ฐ์˜ ์ด์ „ ๋ง๋“ค์„ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ์–ด์•ผ์ง€๋งŒ ํ•ด๋‹น ๋Œ€ํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด, 2๊ฐœ ๊ตฌ๋งคํ•˜๊ฒ ๋‹ค๋Š” ๊ณ ๊ฐ์˜ ๋ง์„ ์ดํ•ดํ•˜๋ ค๋ฉด ์ด์ „์˜ ๋…ธํŠธ๋ถ์„ ๊ตฌ๋งคํ•˜๊ฒ ๋‹ค๋Š” ๊ณ ๊ฐ์˜ ๋ง์„ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๋ง์ด๋‹ค. ๋˜ํ•œ, ์นด๋“œ๋กœ ๊ตฌ๋งคํ•˜๊ฒ ๋‹ค๋Š” ๊ณ ๊ฐ์˜ ๋ง์„ ์ดํ•ดํ•˜๋ ค๋ฉด ์ด์ „์˜ ๋…ธํŠธ๋ถ 2๊ฐœ๋ฅผ ๊ตฌ๋งคํ•˜๊ฒ ๋‹ค๋Š” ๊ณ ๊ฐ์˜ ๋ง์„ ๊ธฐ์–ต, ์ฆ‰ ์ ์› ์ชฝ์—์„œ ๊ณ ๊ฐ์˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

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

๊ณ ๊ฐ: ์ด ๋…ธํŠธ๋ถ ์–ผ๋งˆ์ธ๊ฐ€์š”?
์ ์›: 100๋งŒ ์›์ž…๋‹ˆ๋‹ค.

๊ณ ๊ฐ: ๋…ธํŠธ๋ถ 2๊ฐœ ๊ตฌ๋งคํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
์ ์›: 200๋งŒ ์›์ž…๋‹ˆ๋‹ค. ํ˜„๊ธˆ, ์นด๋“œ ์ค‘ ์–ด๋Š ๊ฑธ๋กœ ๊ตฌ๋งคํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๊ณ ๊ฐ: ๋…ธํŠธ๋ถ 2๊ฐœ๋ฅผ ์นด๋“œ๋กœ ๊ตฌ๋งคํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
์ ์›: 200๋งŒ ์› ๊ฒฐ์ œ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋ฒˆ์—๋Š” ๊ตณ์ด ์ ์› ์ชฝ์—์„œ ๊ณ ๊ฐ์˜ ๋ง์„ ๊ธฐ์–ตํ•˜์ง€ ์•Š์•„๋„ ๋Œ€ํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ์™œ๋ƒํ•˜๋ฉด, ๊ณ ๊ฐ์˜ ๋ง์— ๋ชจ๋“  ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํƒœ๋ฅผ ๋ฌด์ƒํƒœ, ์ฆ‰ Stateless๋ผ๊ณ  ํ•œ๋‹ค.

 

Stateful๊ณผ Stateless์˜ ์ฐจ์ด์ ์„ ๋‹ค์‹œ ์ •๋ฆฌํ•ด๋ณด์ž๋ฉด, Stateful์€ ์ค‘๊ฐ„์— ๋‹ค๋ฅธ ์ ์›์œผ๋กœ ๋ฐ”๋€Œ๋ฉด ์•ˆ ๋˜๊ณ , ํ˜น์—ฌ ๋ฐ”๋€Œ๋”๋ผ๋„ ๋‹ค๋ฅธ ์ ์›์—๊ฒŒ ์ƒํƒœ ์ •๋ณด๋ฅผ ๋„˜๊ฒจ์ค˜์•ผ ํ•œ๋‹ค. Stateless๋Š” ์ค‘๊ฐ„์— ๋‹ค๋ฅธ ์ ์›์œผ๋กœ ๋ฐ”๋€Œ์–ด๋„ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ‘์ž๊ธฐ ๊ณ ๊ฐ์ด ์ฆ๊ฐ€ํ•ด๋„ ์ ์›์„ ๋Œ€๊ฑฐ ํˆฌ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ๊ฐ‘์ž๊ธฐ ์ฆ๊ฐ€ํ•ด๋„ ์„œ๋ฒ„๋ฅผ ๋Œ€๊ฑฐ ํˆฌ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ๋”ฐ๋ผ์„œ Stateless๋Š” ์‘๋‹ต ์„œ๋ฒ„๋ฅผ ์‰ฝ๊ฒŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

 

๋งŒ์•ฝ, ์ค‘๊ฐ„์— ์„œ๋ฒ„๊ฐ€ ์žฅ์• ๊ฐ€ ๋‚œ๋‹ค๋ฉด ๋‘ ๊ฐ€์ง€ ํ”„๋กœํ† ์ฝœ์€ ์–ด๋–ป๊ฒŒ ๋™์ž‘๋ ๊นŒ?

 

์ถœ์ฒ˜) https://www.inflearn.com/course/http-์›น-๋„คํŠธ์›Œํฌ ๊ฐ•์˜์ž๋ฃŒ

 

์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด Stateful ํ”„๋กœํ† ์ฝœ์€ ์ œ๋Œ€๋กœ ๋œ ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์—†๋‹ค.

 

์ถœ์ฒ˜) https://www.inflearn.com/course/http-์›น-๋„คํŠธ์›Œํฌ ๊ฐ•์˜์ž๋ฃŒ

 

๋ฐ˜๋ฉด์— Stateless ํ”„๋กœํ† ์ฝœ์€ ๋‹ค๋ฅธ ์‘๋‹ต ์„œ๋ฒ„๋ฅผ ์ด์šฉํ•ด์„œ ํ†ต์‹ ์„ ์ด์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

 

์ด๋Ÿฌํ•œ Stateless ํ”„๋กœํ† ์ฝœ์—๋„ ํ•œ๊ณ„์ ์ด ์กด์žฌํ•œ๋‹ค. ์›น ์„œ๋น„์Šค๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ๋ฌด์ƒํƒœ๋กœ ์„ค๊ณ„ํ•  ์ˆ˜ ์—†์„ ์„œ๋น„์Šค๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋กœ๊ทธ์ธ์ด ํ•„์š” ์—†๋Š” ๋‹จ์ˆœํ•œ ์„œ๋น„์Šค ์†Œ๊ฐœ ํ™”๋ฉด์ด๋ผ๋ฉด ๋ฌด์ƒํƒœ๋กœ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋กœ๊ทธ์ธ์„ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค๋ผ๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ–ˆ๋‹ค๋Š” ์ƒํƒœ๋ฅผ ์„œ๋ฒ„์— ์œ ์ง€ํ•ด์•ผ๋งŒ ํ•œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์›น ๋ธŒ๋ผ์šฐ์ €์˜ ์ฟ ํ‚ค์™€ ์„œ๋ฒ„์˜ ์„ธ์…˜ ๋“ฑ์„ ์‚ฌ์šฉํ•ด์„œ ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ์ด์ฒ˜๋Ÿผ ๋ถˆ๊ฐ€ํ”ผํ•˜๊ฒŒ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๋ฉด ์ƒํƒœ ์œ ์ง€, ์ฆ‰ Stateful์€ ์ตœ์†Œํ•œ๋งŒ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

3. ๋น„์—ฐ๊ฒฐ์„ฑ(Connectionless) 

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

 

ํ•˜์ง€๋งŒ, ํ•œ๊ณ„๋„ ๋ถ„๋ช…ํžˆ ์กด์žฌํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ์—ฐ๊ฒฐ์ด๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ์€ ๋ณดํ†ต TCP/IP ์—ฐ๊ฒฐ์„ ์˜๋ฏธํ•˜๋Š”๋ฐ TCP/IP ์—ฐ๊ฒฐ์€ 3 way Handshake ๋ฐฉ์‹ ๋•Œ๋ฌธ์— ์ƒ๋Œ€์ ์œผ๋กœ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์—ฐ๊ฒฐ์ด๋‹ค. ์ด๋Ÿฌํ•œ ์—ฐ๊ฒฐ์„ ์š”์ฒญ์ด ๋ฐœ์ƒํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ ํ•ด์ค˜์•ผ ํ•˜๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ์ ์ผ ์ˆ˜๋ฐ–์— ์—†๋‹ค. ๋˜ํ•œ, ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์›น ์‚ฌ์ดํŠธ๋ฅผ ํ•˜๋‚˜ ์š”์ฒญํ•˜๋ฉด HTML ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, CSS, JavaScript, ์ถ”๊ฐ€ ์ด๋ฏธ์ง€ ๋“ฑ ์ˆ˜๋งŽ์€ ์ž์›์ด ํ•จ๊ป˜ ๋‹ค์šด๋กœ๋“œ๋˜๋Š”๋ฐ ์ด๋Š” ํ•œ ๋ฒˆ ์‚ฌ์ดํŠธ๋ฅผ ์š”์ฒญํ•  ๋•Œ ๊ฐ๊ฐ์˜ ์ž์›์„ ๋”ฐ๋กœ๋”ฐ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ์•„๋ž˜์˜ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด ์‰ฝ๊ฒŒ ์ดํ•ด๋œ๋‹ค.

 

์ถœ์ฒ˜) https://www.inflearn.com/course/http-์›น-๋„คํŠธ์›Œํฌ ๊ฐ•์˜์ž๋ฃŒ

 

๋”ฐ๋ผ์„œ, ์ด๋Ÿฌํ•œ ํ•œ๊ณ„์ ์„ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด์„œ HTTP ์ง€์† ์—ฐ๊ฒฐ(Persistent Connections)์ด ๋„์ž…๋˜์—ˆ๋‹ค.

 

์ถœ์ฒ˜) https://www.inflearn.com/course/http-์›น-๋„คํŠธ์›Œํฌ ๊ฐ•์˜์ž๋ฃŒ

 

๋ชจ๋“  ์ž์›์„ ๋‹ค ์‘๋‹ต๋ฐ›์„ ๋•Œ๊นŒ์ง€ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•จ์œผ๋กœ์จ ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

 

4. HTTP ๋ฉ”์‹œ์ง€

HTTP ๋ฉ”์‹œ์ง€๋Š” ์•„๋ž˜์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

์ถœ์ฒ˜) https://www.inflearn.com/course/http-์›น-๋„คํŠธ์›Œํฌ ๊ฐ•์˜์ž๋ฃŒ

 

์‹œ์ž‘ ๋ผ์ธ(start-line)

๐Ÿ’ก ์š”์ฒญ ๋ฉ”์‹œ์ง€

 

์ถœ์ฒ˜) https://www.inflearn.com/course/http-์›น-๋„คํŠธ์›Œํฌ ๊ฐ•์˜์ž๋ฃŒ

 

HTTP ์š”์ฒญ ๋ฉ”์‹œ์ง€์—์„œ์˜ ์‹œ์ž‘ ๋ผ์ธ์€ request-line์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. request-line์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

method SP(๊ณต๋ฐฑ) request-target SP HTTP-version CRLF(๊ฐœํ–‰)

 

method

HTTP ๋ฉ”์„œ๋“œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ข…๋ฅ˜๋กœ๋Š” GET, POST, PUT, DELETE ๋“ฑ์ด ์žˆ๋‹ค. HTTP ๋ฉ”์„œ๋“œ๋Š” ์„œ๋ฒ„๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋™์ž‘์„ ์ง€์ •ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, GET์€ ๋ฆฌ์†Œ์Šค ์กฐํšŒ, POST๋Š” ์š”์ฒญ ๋‚ด์—ญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์ž‘์„ ์˜๋ฏธํ•œ๋‹ค.

 

request-target

์š”์ฒญ ๋Œ€์ƒ์ด๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ์€ absolute-path[?query]์ด๋‹ค. ๋ฆฌ์†Œ์Šค์˜ ๊ฒฝ๋กœ๋ฅผ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

 

HTTP-version

HTTP ๋ฒ„์ „์„ ์˜๋ฏธํ•œ๋‹ค.

 

 

๐Ÿ’ก ์‘๋‹ต ๋ฉ”์‹œ์ง€

 

์ถœ์ฒ˜) https://www.inflearn.com/course/http-์›น-๋„คํŠธ์›Œํฌ ๊ฐ•์˜์ž๋ฃŒ

 

HTTP ์‘๋‹ต ๋ฉ”์‹œ์ง€์—์„œ์˜ ์‹œ์ž‘ ๋ผ์ธ์€ status-line์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. status-line์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

HTTP-version SP status-code SP reason-phrase CRLF

 

status-code

HTTP ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์š”์ฒญ์— ๋Œ€ํ•œ ์„ฑ๊ณต, ์‹คํŒจ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 200์€ ์„ฑ๊ณต, 400์€ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ์˜ค๋ฅ˜, 500์€ ์„œ๋ฒ„ ๋‚ด๋ถ€ ์˜ค๋ฅ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

reason-phrase

์‚ฌ๋žŒ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์งง์€ ์ƒํƒœ ์ฝ”๋“œ ์„ค๋ช… ๊ธ€์ด๋‹ค.

 

 

HTTP ๋ฉ”์‹œ์ง€ ํ—ค๋”

HTTP ํ—ค๋” ๋ถ€๋ถ„์—๋Š” header-field๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. header-field๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

field-name ":" OWS(๋„์–ด์“ฐ๊ธฐ ํ—ˆ์šฉ) field-value OWS

 

์ด๋•Œ, field-name์€ ๋Œ€์†Œ๋ฌธ์ž์— ๋Œ€ํ•œ ๊ตฌ๋ถ„์ด ์—†๋‹ค. ํ—ค๋”์—๋Š” HTTP ์ „์†ก์— ํ•„์š”ํ•œ ๋ชจ๋“  ๋ถ€๊ฐ€ ์ •๋ณด๋“ค์ด ๋‹ด๊ฒจ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, HTTP ๋ฉ”์‹œ์ง€ ๋ฐ”๋””์˜ ๋‚ด์šฉ๊ณผ ํฌ๊ธฐ, ์••์ถ•, ์ธ์ฆ, ์š”์ฒญ ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €)์˜ ์ •๋ณด ๋“ฑ์ด ๋‹ด๊ฒจ ์žˆ๋‹ค. ํ‘œ์ค€ ํ—ค๋”๊ฐ€ ์กด์žฌํ•ด์„œ ํ‘œ์ค€ ํ—ค๋” ๋ฆฌ์ŠคํŠธ๋ฅผ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•„์š”์‹œ ์ž„์˜์˜ ํ—ค๋”๋„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

HTTP ๋ฉ”์‹œ์ง€ ๋ฐ”๋””

์‹ค์ œ ์ „์†กํ•  ๋ฐ์ดํ„ฐ๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. HTML ๋ฌธ์„œ, ์ด๋ฏธ์ง€, ์˜์ƒ, JSON ๋“ฑ๋“ฑ byte๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋“ค์ด ๋‹ด๊ธธ ์ˆ˜ ์žˆ๋‹ค.

๋Œ“๊ธ€