๊ฐœ๋ฐœ ์ง€์‹/HTTP ์ง€์‹

๐ŸŒ HTTP๋Š” ๋ฌด์—‡์ผ๊นŒ์š”? - ๊ธฐ๋ณธ ํ•ต์‹ฌ ์š”์•ฝ ์ด์ •๋ฆฌ

์ธํŒŒ_ 2022. 12. 12. 08:18

HTTP-๋ฐฑ์—”๋“œ-๋กœ๋“œ๋งต

HTTP ๋ž€? - Hyper Text Transfer Protocol

HTTP๋Š” ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ํ†ต์‹  ๊ทœ์•ฝ์„ ๋ง์ผ์ปท๋Š”๋‹ค.

์›น๋ฌธ์„œ๊ฐ„์— ๋งํฌ๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ์ด๋ฉฐ, ๋ฌธ์„œ๋ฟ ์•„๋‹ˆ๋ผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋“ค์„ ํญ ๋„“๊ฒŒ ์ „์†กํ•  ์ˆ˜ ๊ฐ€ ์žˆ๋‹ค.

  • โ€‹HTML, TEXT 
  • IMAGE, ์Œ์„ฑ, ์˜์ƒ, ํŒŒ์ผ 
  • JSON, XML(API) 
  • ๊ฑฐ์˜ ๋ชจ๋“  ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก ๊ฐ€๋Šฅ

์„œ๋ฒ„๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ ๋Œ€๋ถ€๋ถ„ HTTP๋ผ๋Š” ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ด์„œ ํ†ต์‹ ํ•œ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด ์ธํ„ฐ๋„ท ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ• ๋•Œ http://www.naver.com ์™€ ๊ฐ™์ด ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์€ www.naver.com ์ด๋ผ๋Š” ์ธํ„ฐ๋„ท ์ฃผ์†Œ๊ฐ€ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ ์ •๋ณด ๋“ฑ์˜ ๊ตํ™˜์„ HTTP์˜ ํ†ต์‹  ๊ทœ์•ฝ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ ์ธํ„ฐ๋„ท ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค์—๋Š” HTTP ์™ธ์—๋„ Email, FTP, DNS, NEWS ๋“ฑ์ด ์žˆ๋‹ค.

HTTP ๋ž€?
์ด๋ฏธ์ง€๋‚˜ ๋™์˜์ƒ ๋“ฑ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋“ค์„ HTTP๋ฅผ ํ†ตํ•ด์„œ ์„œ๋ฒ„์— ์š”์ฒญํ•ด ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด๋‹ค


HTTP์˜ ์—ญ์‚ฌ

HTTP์˜ ์—ญ์‚ฌ

  1. HTTP/0.9 (1991๋…„) : GET ๋ฉ”์„œ๋“œ๋งŒ ์ง€์›, HTTP ํ—ค๋” X 
  2. HTTP/1.0 (1996๋…„) : ๋ฉ”์„œ๋“œ, ํ—ค๋”, ์ƒํƒœ์ฝ”๋“œ ์ถ”๊ฐ€
    1. ์š”์ฒญ ํ—ค๋” : http ๋ฒ„์ „์ด ์ƒ๊น€
    2. ์‘๋‹ต ํ—ค๋” : ์ƒํƒœ์ฝ”๋“œ์™€ content-type์ด ์ƒ๊ฒจ html ํŒŒ์ผ ์™ธ ๋‹ค๋ฅธ ํƒ€์ž…์˜ ํŒŒ์ผ๋„ ์ „์†ก 
    3. ๋‹จ๊ธฐ์ปค๋„ฅ์…˜ : connection ํ•˜๋‚˜๋‹น 1 ์š”์ฒญ, 1 ์‘๋‹ต๋งŒ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ. ๊ทธ๋ž˜์„œ ๋งค๋ฒˆ ์ƒˆ๋กœ์šด ์—ฐ๊ฒฐ๋กœ ์„ ๋Šฅ ์ €ํ•˜ ๋ฐ ์„œ๋ฒ„ ๋ถ€ํ•˜ ๋น„์šฉ ์ฆ๊ฐ€ 
  3. HTTP/1.1 (1997๋…„) : ํ˜„์žฌ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋ฉฐ, ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€
    1. Persistent connection : ์ง€์ •ํ•œ timeout ๋™์•ˆ ์—ฐ์†์ ์ธ ์š”์ฒญ ์‚ฌ์ด์— ์ปค๋„ฅ์…˜์„ ๋‹ซ์ง€ ์•Š์Œ 
    2. Pipelining : ํ•˜๋‚˜์˜ ์ปค๋„ฅ์…˜์—์„œ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์ˆœ์ฐจ์ ์ธ ์—ฌ๋Ÿฌ ์š”์ฒญ์„ ์—ฐ์†์ ์œผ๋กœ ๋ณด๋‚ด ๊ทธ ์ˆœ์„œ์— ๋งž์ถฐ ์‘๋‹ต์„ ๋ฐ›๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ค„์ด๋Š” ๋ฐฉ์‹. ๊ทธ๋Ÿฌ๋‚˜ Head Of Line Blocking์™€ ๊ฐ™์€ ๋ฌธ์ œ์ ์ด ๋งŽ์•„ ์‚ฌ์žฅ๋จ
    3. Head Of Line Blocking : ์šฐ์„ ์ˆœ์œ„๋กœ ๋“ค์–ด์˜จ ์š”์ฒญ์˜ ์‘๋‹ต ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๋ฉด ํ›„ ์ˆœ์œ„์— ์žˆ๋Š” ์š”์ฒญ์˜ ์‘๋‹ต ์‹œ๊ฐ„๋„ ๊ธธ์–ด์ง„๋‹ค๋Š” ๋‹จ์ 
    4. ์šฐ๋ฆฌ๊ฐ€ ์•„๋Š” ๋Œ€๋ถ€๋ถ„์˜ HTTP ๊ธฐ๋Šฅ์ด 1.1์— ๊ตฌํ˜„ ๋œ ๊ฒƒ์ด๊ณ , 2์™€ 3์—์„œ๋Š” ์„ฑ๋Šฅ ๊ฐœ์„ ์— ์ดˆ์ ์ด ๋งž์ถฐ์ ธ ์žˆ๋‹ค.
  4. HTTP/2.0 (2015๋…„) : HTTP 1.1 ์„ฑ๋Šฅ ๊ฐœ์„  ๋ฐ ํ™•์žฅ
    1. ๋ฉ”์‹œ์ง€ ์ „์†ก ๋ฐฉ์‹์˜ ๋ณ€ํ™” : ๋ฐ”์ด๋„ˆ๋ฆฌ ํ”„๋ ˆ์ด๋ฐ ๊ณ„์ธต ์‚ฌ์šฉ
    2. ํŒŒ์‹ฑ, ์ „์†ก์†๋„ ์ฆ๊ฐ€
    3. ์˜ค๋ฅ˜ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ ์ €ํ•˜
    4. ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ
    5. HPACK ์••์ถ• : ํ—ค๋” ์ค‘๋ณต๊ฐ’ ๊ฐœ์„ 
  5. HTTP/3.0 (2019๋…„ ~ ์ง„ํ–‰์ค‘): TCP ๋Œ€์‹ ์— UDP๋ฅผ ์ด์šฉํ•œ QUIC ํ”„๋กœํ† ์ฝœ ์‚ฌ์šฉ
    1. UDP ๊ธฐ๋ฐ˜์˜ QUIC ํ”„๋กœ์ฝ”์ฝœ ๋ฐ”ํƒ•์œผ๋กœ ์ œ์ž‘
    2. ๊ธฐ์กด TCP์˜ ๊ณ ์งˆ์ ์ธ ์ง€์—ฐ์‹œ๊ฐ„(RTT)๋ฅผ ํ•ด๊ฒฐํ•จ
HTTP/1.1, HTTP/2๋Š” TCP ๊ธฐ๋ฐ˜์ด๋ฉฐ HTTP/3๋Š” UDP ๊ธฐ๋ฐ˜ ํ”„๋กœํ† ์ฝœ์ด๋‹ค.
๊ธฐ์กด TCP๋Š” 3 way hanshake๋ถ€ํ„ฐ ๋‚ด๋ถ€์ ์œผ๋กœ ํฌํ•จํ•˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€ํ•ด์•ผํ•˜๋Š” ์ž‘์—…๋“ค์ด ๋„ˆ๋ฌด ๋งŽ์•„์„œ ์‹ ๋ขฐ์„ฑ์ด๋‚˜ ์—ฐ๊ฒฐ์„ฑ์€ ๋ณด์žฅ๋˜์ง€๋งŒ ์†๋„๊ฐ€ ๋–จ์–ด์ง„๋‹ค. ๊ทธ๋ ‡๊ธฐ์— UDPํ”„๋กœํ† ์ฝœ์„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ๋ฒจ์—์„œ ์žฌ์„ค๊ณ„๋ฅผ ํ•ด์„œ ๋‚˜์˜ค๋Š”๊ฒŒ HTTP/3์ด๋‹ค.
 

[WEB] ๐ŸŒ HTTP 0.9 ~ HTTP 1.1 ๊นŒ์ง€ ์•Œ์•„๋ณด๋Š” ํ†ต์‹  ๊ธฐ์ˆ 

HTTP / 0.9 HTTP์˜ ์‹œ์ž‘์€ 1989๋…„ ํŒ€ ๋ฒ„๋„ˆ ๋ฆฌ(Tim Berners-LEE)์— ์˜ํ•ด ์ œ์•ˆ๋œ ์ธํ„ฐ๋„ท์˜ ํ•˜์ดํผ ํ…์ŠคํŠธ ์‹œ์Šคํ…œ์ด๋‹ค. ์ดˆ๊ธฐ ๋ฒ„์ „์ธ HTTP/0.9๋Š” ๋งค์šฐ ๋‹จ์ˆœํ•œ ํ”„๋กœํ† ์ฝœ์ด์—ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๋ฉ”์„œ๋“œ๋Š” ํ•˜์ดํผํ…์ŠคํŠธ ๋ฌธ์„œ

inpa.tistory.com

 

[WEB] ๐ŸŒ HTTP 2.0 ํ†ต์‹  ๊ธฐ์ˆ  - ์ž์‹ ์žˆ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ

HTTP / 2.0 HTTP 2.0์€ ๊ธฐ์กด HTTP 1.1 ๋ฒ„์ „์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ์ดˆ์ ์„ ๋งž์ถ˜ ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ ํ‘œ์ค€์˜ ๋Œ€์ฒด๊ฐ€ ์•„๋‹Œ ํ™•์žฅ์œผ๋กœ์จ, HTTP 1.1์˜ ์„ฑ๋Šฅ ์ €ํ•˜ ๋ถ€๋ถ„๊ณผ ๋น„ํšจ์œจ์ ์ธ ๊ฒƒ๋“ค์„ ๊ฐœ์„ ๋˜์–ด ํƒ„์ƒํ•œ

inpa.tistory.com

 

[WEB] ๐ŸŒ HTTP 3.0 ํ†ต์‹  ๊ธฐ์ˆ  - ์ž์‹ ์žˆ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ

HTTP / 3.0 HTTP 2.0 ์˜ ๋“ฑ์žฅ๊ณผ ํ•จ๊ป˜ ๊ธฐ์กด์˜ ํ”„๋กœํ† ์ฝœ ๋ฐ์ดํ„ฐ ์ฒด๊ณ„๋ฅผ ํ”„๋ ˆ์ž„๊ณผ ์ŠคํŠธ๋ฆผ ๊ฐœ๋…์œผ๋กœ ์žฌ๊ตฌ์ถ•ํ•œ ๊ฒฐ๊ณผ ๊ธฐ์กด ๋ณด๋‹ค ํ˜์‹ ์ ์œผ๋กœ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜๊ฒŒ ๋˜์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ HTTP๋Š” TCP ๊ธฐ๋ฐ˜ ์œ„์—์„œ ๋™

inpa.tistory.com


๊ฐœ๋ฐœ์ž๋„๊ตฌ์—์„œ HTTP ๋ฒ„์ „ ํ™•์ธํ•˜๊ธฐ

์‹ค์ œ๋กœ ๋ธŒ๋ผ์šฐ์ €์˜ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์—์„œ ํŽ˜์ด์ง€ ์š”์ฒญ์— ๋Œ€ํ•œ ํ”„๋กœํ† ์ฝœ์„ ํ™•์ธํ•ด๋ณด๋ฉด ์ตœ์‹  ๊ธฐ์ˆ ์ธ HTTP/2 ๋‚˜ HTTP/3์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

http-protocol
๊ฐœ๋ฐœ์ž ๋„๊ตฌ ๋„คํŠธ์›Œํฌ ํƒญ์—์„œ ์šฐ์ธก ํด๋ฆญํ•˜๊ณ  Protocol ํƒญ์„ ํ™œ์„ฑํ™” ์‹œํ‚จ๋‹ค

 

๋‹ค์Œ์€ ๊ตฌ๊ธ€์—์„œ ์•„๋ฌด ๋‹จ์–ด๋‚˜ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์˜ ๋„คํŠธ์›Œํฌ ํƒญ ์ƒํƒœ๋ฅผ ์ฐ์€ ๊ฒƒ์ด๋‹ค.

์š”์ฒญ ํ”„๋กœํ† ์ฝœ๋ณด๋ฉด h3 ์ด๋ผ๊ณ  ์ ํ˜€์ ธ ์žˆ๋Š” ๊ฑธ ๋ณผ์ˆ˜ ์žˆ๋Š”๋ฐ HTTP/3 ์˜ ์•ฝ์–ด์ด๋‹ค.

http-protocol

 

๋‹ค์Œ์€ ๋„ค์ด๋ฒ„์—์„œ ์•„๋ฌด ๋‹จ์–ด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์ฐ์€ ์‚ฌ์ง„์ธ๋ฐ h2์ธ HTTP/2์™€ ๊ฐ„ํ˜น http/1.1 ๋กœ ํ†ต์‹ ํ•˜๋Š” ๊ฒƒ๋„ ๋ณด์ธ๋‹ค.

http-protocol


HTTP์˜ ํ†ต์‹  ๊ตฌ์กฐ

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

HTTP ํ†ต์‹ ์€ ํด๋ผ์ด์–ธํŠธ(Front-End)์™€ ์„œ๋ฒ„(Back-End)๋กœ ๋‚˜๋‰˜์–ด์ง„ ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ(Request)ํ•˜๋ฉด ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต(Response) ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

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

 

๊ทธ๋Ÿผ HTTP ํ†ต์‹ ํ•˜๋Š”๋ฐ ์žˆ์–ด, ์–ด์งธ์„œ ์ด๋ ‡๊ฒŒ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋ฅผ ๋ถ„๋ฆฌํ•ด์•ผ๋งŒ ํ• ๊นŒ?

์ด์œ ๋Š” ๊ฐ์ž์˜ ์—ญํ• ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

ํด๋ผ์ด์–ธํŠธ์—์„œ๋Š” ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค๋กœ์ง์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ํ•„์š”์—†๊ณ , UI๋ฅผ ๊ทธ๋ฆฌ๋Š”๋ฐ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

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

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

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


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

  • ๋ฌด์ƒํƒœ(Stateless) : ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์‚ฌ์ด์— ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ์žฅ์ : ์„œ๋ฒ„ ํ™•์žฅ์„ฑ ๋†’์Œ(์Šค์ผ€์ผ ์•„์›ƒ)
  • ๋‹จ์ : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ ์ „์†ก (๋ฉ”๋ชจ๋ฆฌ ↑)
 

[WEB] ๐ŸŒ Stateful / Stateless ์ฐจ์ด ๐Ÿ’ฏ ์ •๋ฆฌ

Stateful ๊ณผ Stateless ์ฐจ์ด์  ์›น ๊ณต๋ถ€๋ฅผ ํ•˜๋‹ค๋ณด๋ฉด ํด๋ผ์ด์–ธํŠธ(Client)์™€ ์„œ๋ฒ„(Server)๊ฐ„์˜ ํ†ต์‹ ์„ ์ƒํƒœ์œ ์ง€(Stateful) ํ•˜๋Š๋ƒ, ์ƒํƒœ์œ ์ง€ํ•˜์ง€์•Š์Œ(Stateless) ์œผ๋กœ ํ•˜๋Š๋ƒ ๋ผ๋Š” ๋ง๊ท€๋ฅผ ํ•œ๋ฒˆ์ฏค์€ ๋“ค์–ด๋ณธ ์ ์ด ์žˆ

inpa.tistory.com

 

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

Stateful

  • ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ๋ฅผ ๋ณด์กดํ•œ๋‹ค.
  • ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ ํ™ˆํŽ˜์ด์ง€์—์„œ ํšŒ์› ๋กœ๊ทธ์ธ์„ ํ•˜๋ฉด, ํŽ˜์ด์ง€๋ฅผ ์˜ฎ๊ฒจ๊ฐ€๋„ ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ๋ฅผ ๋ณด์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํšŒ์›์ธ์ง€ ์•ˆ๋‹ค.
  • ํ•˜์ง€๋งŒ ์ค‘๊ฐ„์— ์„œ๋ฒ„๊ฐ€ ์žฅ์• ๋‚˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ž‘์—…์„ ์š”์ฒญํ•ด์•ผํ•œ๋‹ค.
  • ๊ทธ๋ž˜์„œ ์„œ๋ฒ„๊ฐ€ ๋ฐ”๋€”๋•Œ๋งˆ๋‹ค ํด๋ผ์ด์–ธํŠธ์˜ ๋‚ด์šฉ์„ ๊ธฐ๋กํ•ด์„œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ด์•ผ ๋˜๋Š”๋ฐ ์‰ฝ์ง€ ์•Š๋‹ค.

 

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

Stateless

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

HTTP์˜ ๋น„์—ฐ๊ฒฐ์„ฑ (Connectionless)

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

Stateless (๋ฌด์ƒํƒœ์„ฑ): ํ•„์š”ํ•œ ์ƒํƒœ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฐ€์ง€๊ณ  ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ์–ด๋Š ์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•ด๋„ ์ƒ๊ด€ ์—†์Œ. ๋”ฐ๋ผ์„œ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ๋Œ€ํญ ์ฆ๊ฐ€ํ•˜๋ฉด ์„œ๋ฒ„๋ฅผ ์ฆ์„คํ•ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ

Connectionless (๋น„์—ฐ๊ฒฐ์„ฑ): ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญ์„ ํ•˜๊ณ  ์‘๋‹ต์„ ๋ฐ›์œผ๋ฉด ๋ฐ”๋กœ TCP/IP ์—ฐ๊ฒฐ์„ ๋Š์–ด ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜์ง€ ์•Š์Œ์œผ๋กœ์จ ์„œ๋ฒ„์˜ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์ˆ˜ ๋งŽ์€ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ

์ฆ‰, ๋ฌด์ƒํƒœ์„ฑ์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— ์ƒํƒœ ์ •๋ณด๋ฅผ ๋“ค๊ณ ์žˆ์ง€์•Š์•„ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ƒํƒœ ์ •๋ณด๋ฅผ ์ผ์ผํžˆ http์— ์‹ค์–ด ์š”์ฒญํ•ด์•ผ๋˜๋Š” ๊ฒƒ์„ ๋งํ•˜๊ณ , ๋น„์—ฐ๊ฒฐ์„ฑ์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์ด ๋Š์–ด์ ธ ๋‹จ์ ˆ๋œ๋‹ค๊ณ  ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค.

์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜๋Š” ๋ชจ๋ธ

  • ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•œ๋‹ค๋ฉด, ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ์€ ์„œ๋กœ์˜ ๋„คํŠธ์›Œํ‚น ์š”์ฒญ์ด ์—†๋”๋ผ๋„ ๊ณ„์†ํ•ด์„œ ์œ ์ง€๋œ๋‹ค.
  • ์ž์›์ด ๊ณ„์†ํ•ด์„œ ์‚ฌ์šฉ๋œ๋‹ค. (์ด๋Ÿฌํ•œ ์  ๋•Œ๋ฌธ์—, HTTP๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” ๋ชจ๋ธ์ด๋‹ค)

http-Connectionlesshttp-Connectionlesshttp-Connectionlesshttp-Connectionless


์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” ๋ชจ๋ธ

  • ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์„œ๋ฒ„์˜ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹ค๋งŒ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฐ๊ฒฐ์„ ๊ณ„์† ๋Š๋Š” ๋‹ค๋Š” ๊ฒƒ์€ TCP/IP ์—ฐ๊ฒฐ์„ ๋งค๋ฒˆ ์ƒˆ๋กญ๊ฒŒ ๋งบ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋œปํ•œ๋‹ค.
  • ์ฆ‰, TCP 3 way handshake๋ฅผ ๋งค๋ฒˆ ํ•ด์•ผํ•˜๊ณ , ์ด๋Š” ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค.
  • ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋Š” ์ง€๊ธˆ HTTP ์ง€์† ์—ฐ๊ฒฐ(Persistent Connections)๋กœ ๋ฌธ์ œ ํ•ด๊ฒฐํ•˜๊ณ  ์žˆ๋‹ค.
  • HTTP/2, HTTP/3์—์„œ ๋” ๋งŽ์€ ์ตœ์ ํ™”๊ฐ€ ์ด๋ฃจ์–ด ์กŒ๋‹ค.

http-Connectionlesshttp-Connectionlesshttp-Connectionlesshttp-Connectionless

 

๋น„์—ฐ๊ฒฐ์„ฑ ํ•œ๊ณ„ - ๋‹จ๊ธฐ ์ปค๋„ฅ์…˜

  • HTTP ์ดˆ๊ธฐ - ์—ฐ๊ฒฐ, ์ข…๋ฃŒ ๋‚ญ๋น„
  • ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ ์‚ฌ์ดํŠธ๋ฅผ ์š”์ฒญํ•˜๋ฉด HTML ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ, css, ์ถ”๊ฐ€ ์ด๋ฏธ์ง€ ๋“ฑ๋“ฑ ์ˆ˜ ๋งŽ์€ ์ž์›์ด ํ•จ๊ป˜ ๋‹ค์šด๋กœ๋“œ ๋˜๋Š”๋ฐ, ์ƒˆ๋กœ ์—ฐ๊ฒฐ์„ ๋งบ์„ ๋•Œ ๋งˆ๋‹ค TCP Handshake๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๋ฌธ์ œ์ ์ด ์žˆ์Œ
  • ๊ทธ๋ž˜์„œ HTTP ์ดˆ๊ธฐ์—๋Š” ๋ชจ๋“  ์ž๋ฃŒ์— ๋Œ€ํ•ด์„œ ๋น„์—ฐ๊ฒฐ์„ฑ์œผ๋กœ ๊ฐ๊ฐ์˜ ์ž์›์— ๋Œ€ํ•ด ์—ฐ๊ฒฐ/์‘๋‹ต/์ข…๋ฃŒ๋ฅผ ๋ฐ˜๋ณตํ•˜๋‹ค๋ณด๋‹ˆ ๋Œ€๋žต์ ์œผ๋กœ 1์ดˆ๊ฐ€๋Ÿ‰ ์†Œ๋ชจ๋˜์—ˆ๋‹ค.

๋น„์—ฐ๊ฒฐ์„ฑ ํ•œ๊ณ„

 

๋น„์—ฐ๊ฒฐ์„ฑ ๊ทน๋ณต -  HTTP ์ง€์† ์—ฐ๊ฒฐ

  • ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์™€ ์†Œ์ผ“ ์—ฐ๊ฒฐ์„ ํ•œ ๋‹ค์Œ ํ•„์š”ํ•œ ์ž์›์„ ์š”์ฒญ/์‘๋‹ต์œผ๋กœ ๋‹ค์šด๋กœ๋“œ๋ฐ›๋Š”๋‹ค.
  • ์†Œ์ผ“ ์—ฐ๊ฒฐ์„ ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ๋” ์œ ์ง€ํ•จ์œผ๋กœ์จ, ํ•„์š”ํ•œ ์ž์›๋“ค์„ ๋ชจ๋‘ ๋‹ค์šด๋ฐ›์„๋•Œ๊นŒ์ง€ ์—ฐ๊ฒฐ์ด ์ข…๋ฃŒ๋˜์ง€์•Š๊ณ  ์š”์ฒญ/์‘๋‹ต์ด ๋ฐ˜๋ณต๋œ ๋’ค ์ข…๋ฃŒ

Persistent Connections


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

์ƒํƒœ ์ฝ”๋“œ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ธ ์š”์ฒญ์˜ ์ฒ˜๋ฆฌ ์ƒํƒœ๋ฅผ ์‘๋‹ต์—์„œ ์•Œ๋ ค์ฃผ๋Š” ๊ธฐ๋Šฅ์œผ๋กœ์„œ, 3์ž๋ฆฌ ์ˆซ์ž๋กœ ๋งŒ๋“ค์–ด์ ธ ์žˆ์œผ๋ฉฐ, 100 ~ 500 ๋ฒˆ๋Œ€ ์ˆซ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ฒซ๋ฒˆ์งธ ์ž๋ฆฌ๊ฐ€ 4์™€ 5์ธ ๊ฒฝ์šฐ๋Š” ์ •์ƒ์ ์ธ ์ƒํ™ฉ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์ดํŠธ ๊ด€๋ฆฌ์ž๊ฐ€ ์ฆ‰์‹œ ์•Œ์•„์•ผ ํ•˜๋Š” ์ •๋ณด์ด๋‹ค.

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

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

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


 

HTTP ๋ฉ”์„ธ์ง€

HTTP ๋ฉ”์„ธ์ง€

๊ฐœ๋ฐœ์ž ๋„๊ตฌ์˜ ๋„คํŠธ์›Œํฌ ์ฐฝ์—์„œ ์„œ๋ฒ„๋กœ ๋ถ€ํ„ฐ ๋‹ค์šด ๋ฐ›์€ ํŒŒ์ผ์„ ๋ˆŒ๋Ÿฌ๋ณด๋ฉด ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด Headers ๋ถ€๋ถ„์— ๋ญ๋ผ๋ญ๋ผ ์ ํ˜€์ ธ ์žˆ๋Š” ๊ฒƒ์„ ๋ณด์•˜์„ ๊ฒƒ์ด๋‹ค. ์ด๊ฒƒ์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— HTTP ๋ฉ”์„ธ์ง€๋ฅผ ํ†ตํ•ด ํ†ต์‹ ํ•œ ์ด๋ ฅ์ด๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค.

HTTP ๋ฉ”์„ธ์ง€

Request Headers ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ๋ณด๋‚ด๋Š” HTTP ๋ฉ”์„ธ์ง€ ์ด๋ ฅ์ด๋ฉฐ, Response Headers ๋Š” ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ตํ•˜๋Š” HTTP ๋ฉ”์„ธ์ง€ ์ด๋ ฅ์ด๋‹ค.

์ฒ˜์Œ์—๋Š” ๋‚ฏ์„  ์™ธ๊ณ„์–ด ์ฒ˜๋Ÿผ ๋˜์žˆ๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ, ์ž์„ธํžˆ ์‚ดํŽด๋ณด๋ฉด ๋‚˜๋ฆ„ ํƒ„ํƒ„ํ•œ ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ด HTTP ํ—ค๋” ๋‚ด์šฉ ๊ตฌ์„ฑ์ด ์–ด๋–ป๊ฒŒ ๋˜์–ด์žˆ๋Š”์ง€ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜ ํฌ์ŠคํŒ… ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค.


HTTP ๋ฉ”์„ธ์ง€ ๊ตฌ์กฐ

HTTP ๋ฉ”์„ธ์ง€ ๊ตฌ์กฐ

HTTP ๋ฉ”์‹œ์ง€๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์œ„์—์„œ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์‹œ์ž‘ ๋ผ์ธ(Start Line), ํ—ค๋”(Header), ๊ณต๋ฐฑ ๋ผ์ธ(Empty Line), ๋ฐ”๋””(Message Body)๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

์ฐธ๊ณ ๋กœ ๊ณต๋ฐฑ ๋ผ์ธ์€ HTTP ๋ฉ”์„ธ์ง€ ๊ฐ’ ๊ตฌ๋ถ„์„ ํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ธ์ด๋ฏ€๋กœ, ๋‹จ์ˆœํžˆ ๋ณด๊ธฐ ํŽธํ•˜๊ฒŒ ๋„ฃ๋Š” ๊ฒƒ์„ ๋„˜์–ด์„œ ๋ฐ˜๋“œ์‹œ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋งŒ์•ฝ ๋ณด๋‚ผ ๋ฉ”์„ธ์ง€ ๋ฐ”๋””๊ฐ€ ์—†๋‹ค๋ฉด ๊ณต๋ฐฑ๋งŒ ๋„ฃ๊ณ  ๋๋‚ด๋ฉด ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  HTTP ์š”์ฒญ ์ข…๋ฅ˜์— ๋”ฐ๋ผ Message Body๊ฐ€ ํฌํ•จ๋  ์ˆ˜๋„ ์žˆ๊ณ  ์•„๋‹ ์ˆ˜๋„ ์žˆ๋‹ค.

์ „์ฒด์ ์ธ ๊ณจ์ž๋Š” ์œ„์™€ ๊ฐ™๊ณ  HTTP ์š”์ฒญ(Request)๋ƒ ์‘๋‹ต(Response)๋ƒ์— ๋”ฐ๋ผ ์•ˆ์˜ ๋‚ด์šฉ๋ฌผ์ด ์•ฝ๊ฐ„ ๋‹ค๋ฅด๊ฒŒ ๋œ๋‹ค.

 

HTTP ์š”์ฒญ ๋ฉ”์„ธ์ง€

HTTP ์š”์ฒญ ๋ฉ”์„ธ์ง€

  • ์‹œ์ž‘ ๋ผ์ธ(Start Line)
    • Method : GET / POST / PUT / DELTE ๋“ฑ (HTTP ๋ฉ”์„œ๋“œ)
    • URL : ์š”์ฒญ ๋Œ€์ƒ ๊ฒฝ๋กœ ํ‘œ์‹œ
    • Version : ์‚ฌ์šฉ๋œ http ๋ฒ„์ „
  • ํ—ค๋”(Header)
    • Headers : HTTP ์ „์†ก์— ํ•„์š”ํ•œ ๋ชจ๋“  ๋ถ€๊ฐ€ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค. (๋ฉ”์„ธ์ง€ ํฌ๊ธฐ, ์••์ถ• ์—ฌ๋ถ€, ์ธ์ฆ, ๋ธŒ๋ผ์šฐ์ € ์ •๋ณด, ์„œ๋ฒ„ ์ •๋ณด, ์บ์‹œ ..๋“ฑ)
  • ๊ณต๋ฐฑ ๋ผ์ธ(Empty Line) : ํ—ค๋”์™€ ๋ฐ”๋””๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ธ
  • ๋ฐ”๋””(Message Body)
    • Message Body : ์‹ค์ œ ์ „์†กํ•  ๋ฐ์ดํ„ฐ (HTML ๋ฌธ์„œ, ์ด๋ฏธ์ง€, ์˜์ƒ, JSON ๋“ฑ)

 

HTTP ์‘๋‹ต ๋ฉ”์„ธ์ง€

HTTP ์‘๋‹ต ๋ฉ”์„ธ์ง€

  • ์‹œ์ž‘ ๋ผ์ธ(Start Line)
    • Version : ์‚ฌ์šฉ๋œ http ๋ฒ„์ „
    • Status Code : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ธ ์š”์ฒญ์ด ์„ฑ๊ณต์ธ์ง€ ์‹คํŒจ์ธ์ง€ ์ˆซ์ž ์ฝ”๋“œ๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค. (200, 404, 505)
    • Status Message : Status Code ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์‚ฌ๋žŒ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ธ€๋กœ ํ‘œํ˜„
  • ํ—ค๋”(Header)
    • Headers : HTTP ์ „์†ก์— ํ•„์š”ํ•œ ๋ชจ๋“  ๋ถ€๊ฐ€ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค. (๋ฉ”์„ธ์ง€ ํฌ๊ธฐ, ์••์ถ• ์—ฌ๋ถ€, ์ธ์ฆ, ๋ธŒ๋ผ์šฐ์ € ์ •๋ณด, ์„œ๋ฒ„ ์ •๋ณด, ์บ์‹œ ..๋“ฑ)
  • ๊ณต๋ฐฑ ๋ผ์ธ(Empty Line) : ํ—ค๋”์™€ ๋ฐ”๋””๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ธ
  • ๋ฐ”๋””(Message Body)
    • Message Body : ์ „์†ก ๋ฐ›์€ ๋ฐ์ดํ„ฐ

HTTP ๋ฉ”์„œ๋“œ

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

์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ์„œ๋ฒ„์— ์ฃผ์–ด์ง„ ๋ฆฌ์†Œ์Šค์— ์ˆ˜ํ–‰ํ•˜๊ธธ ์›ํ•˜๋Š” ํ–‰๋™, ์„œ๋ฒ„๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ๋™์ž‘์„ ์ง€์ •ํ•˜๋Š” ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.


HTTP ๋ฉ”์„œ๋“œ ์ข…๋ฅ˜

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

 

[WEB] ๐ŸŒ HTTP ๋ฉ”์„œ๋“œ ์ข…๋ฅ˜ & ์š”์ฒญ ํ๋ฆ„ ๐Ÿ’ฏ ์ด์ •๋ฆฌ

HTTP Method ์ข…๋ฅ˜ HTTP ๋ฉ”์„œ๋“œ๋ž€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์‚ฌ์ด์— ์ด๋ฃจ์–ด์ง€๋Š” ์š”์ฒญ(Request)๊ณผ ์‘๋‹ต(Response) ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๋ฐฉ์‹์„ ์ผ์ปซ๋Š”๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ์„œ๋ฒ„์— ์ฃผ์–ด์ง„ ๋ฆฌ์†Œ์Šค์— ์ˆ˜ํ–‰ํ•˜๊ธธ ์›ํ•˜๋Š” ํ–‰๋™,

inpa.tistory.com

 

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

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

 

๊ธฐํƒ€ ๋ฉ”์†Œ๋“œ 4๊ฐ€์ง€

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

 

๋ฉ”์„œ๋“œ  ์„ค๋ช… request
body
successful
response
body
์•ˆ์ „ ๋ฉฑ๋“ฑ ์บ์‹œ ๊ฐ€๋Šฅ allow in HTML
forms
GET ๋ฆฌ์†Œ์Šค ์š”์ฒญ NO YES YES YES YES YES
HEAD GET ๋ฉ”์„œ๋“œ์˜ ์š”์ฒญ๊ณผ ๋™์ผํ•œ ์‘๋‹ต์„ ์š”๊ตฌํ•˜์ง€๋งŒ, ์‘๋‹ต ๋ณธ๋ฌธ์„ ํฌํ•จ X NO NO YES YES YES NO
POST ๋‚ด์šฉ ์ „์†ก YES YES NO NO NO YES
PUT ๋‚ด์šฉ ๊ฐฑ์‹  YES YES NO YES NO NO
DELETE ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ญ์ œ ๊ถŒ์žฅํ•˜์ง€ ์•Š์œผ๋‚˜ ๊ฐ€๋Šฅ ๊ถŒ์žฅํ•˜์ง€ ์•Š์œผ๋‚˜ ๊ฐ€๋Šฅ NO YES NO NO
CONNECT ๋ชฉ์  ๋ฆฌ์†Œ์Šค๋กœ ์‹๋ณ„๋˜๋Š” ์„œ๋ฒ„๋กœ์˜ ํ„ฐ๋„์„ ๋งบ์Œ NO YES NO NO NO NO
OPTIONS ์›น ์„œ๋ฒ„์ธก ์ œ๊ณต ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•œ ์งˆ์˜ NO YES YES YES NO NO
TRACE ๋ชฉ์  ๋ฆฌ์†Œ์Šค์˜ ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ผ ๋ฉ”์‹œ์ง€ loop-back ํ…Œ์ŠคํŠธ NO YES NO YES NO NO
PATCH ๋‚ด์šฉ ๋ถ€๋ถ„ ๊ฐฑ์‹  YES YES NO NO NO NO

HTTP ๋ฉ”์„œ๋“œ ํŠน์„ฑ

 

[WEB] ๐ŸŒ HTTP์˜ ๋ฉฑ๋“ฑ์„ฑ · ์•ˆ์ •์„ฑ · ์บ์‹œ์„ฑ ๐Ÿ’ฏ ์™„๋ฒฝ ์ดํ•ดํ•˜๊ธฐ

HTTP ๋ฉ”์„œ๋“œ์˜ ์†์„ฑ ์ฃผ์š” HTTP Method์ธ GET / POST / PUT / PATCH / DELETE ๋Š” ๊ฐ ๋ฉ”์„œ๋“œ์˜ ๋™์ž‘ ๊ณผ์ • ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋ฉ”์„œ๋“œ์˜ ์†์„ฑ ๋˜ํ•œ ์•Œ ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์–ด๋– ํ•œ HTTP ๋ฉ”์„œ๋“œ๋กœ ์„œ๋ฒ„์— ์š”์ฒญํ–ˆ๋Š๋ƒ์— ๋”ฐ

inpa.tistory.com

 

์•ˆ์ „์„ฑ(Safe)

  • ํ˜ธ์ถœํ•ด๋„ ๋ฆฌ์†Œ์Šค ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š” ์†์„ฑ
  • ์—ฌ๊ธฐ์„œ ์•ˆ์ „์˜ ๊ธฐ์ค€์€ ์˜ค์ง ๋ฆฌ์†Œ์Šค ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ์„ฑ์ด๋ฉฐ, ์™ธ์ ์ธ ์š”์†Œ๋Š” ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • GET, HEAD๋ฅผ ์•ˆ์ „ํ•œ ๋ฉ”์†Œ๋“œ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. (POST, PUT, PATCH, DELETE๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฉ”์†Œ๋“œ์ด๋ฏ€๋กœ)

 

๋ฉฑ๋“ฑ์„ฑ(Idempotent)

  • ๋™์ผํ•œ ์š”์ฒญ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ณด๋‚ด๋„ ํ•œ ๋ฒˆ ๋ณด๋‚ด๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ฒƒ
  • ๊ฐ™์€ ํ–‰์œ„๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐ˜๋ณตํ•˜๋”๋ผ๋„ ๊ฐ™์€ ํšจ๊ณผ๋ฅผ ๋ฐ›์œผ๋ฉฐ, ์„œ๋ฒ„์˜ ์ƒํƒœ๋กœ ๋™์ผํ•˜๊ฒŒ ๋‚จ์Œ
  • ๋ฉฑ๋“ฑ์„ฑ์€ ์š”์ฒญ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ  ํŒ๋‹จ
  • TimeOut ๋“ฑ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ •์ƒ ์‘๋‹ต์„ ๋ฐ›์ง€ ๋ชป ํ–ˆ์„ ๋•Œ ๊ฐ™์€ ์š”์ฒญ์„ ๋‹ค์‹œ ํ•ด๋„ ๋˜๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ๊ทผ๊ฑฐ
  • GET : ๋ช‡ ๋ฒˆ์„ ์กฐํšŒํ•˜๋”๋ผ๋„ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ์กฐํšŒ๋œ๋‹ค. ⇒ ํšŒ์› ์ •๋ณด๋ฅผ ๋ช‡๋ฒˆ์„ ์กฐํšŒํ•œ๋‹ค๊ณ  ์ •๋ณด๊ฐ€ ๋‹ฌ๋ผ์ง€์ง€ ์•Š๋Š”๋‹ค. 
  • PUT : ๊ฒฐ๊ณผ๋ฅผ ๋Œ€์ฒดํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ™์€ ์š”์ฒญ์„ ์—ฌ๋Ÿฌ๋ฒˆํ•ด๋„ ์ตœ์ข… ๊ฒฐ๊ณผ๋Š” ๊ฐ™๋‹ค.
  • DELETE : ๊ฒฐ๊ณผ๋ฅผ ์‚ญ์ œํ•œ๋‹ค. ๊ฐ™์€ ์š”์ฒญ์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ•ด๋„ ์‚ญ์ œ๋œ ๊ฒฐ๊ณผ๋Š” ๊ฐ™๋‹ค.
  • POST : ๋ฉฑ๋“ฑ์ด ์•„๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ ํ˜ธ์ถœํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ• ์ˆ˜ ์žˆ๋‹ค. ⇒ POST๋กœ ์ฃผ๋ฌธ์„ ๋‘ ๋ฒˆ ํ˜ธ์ถœํ•˜๋ฉด ๊ฒฐ์ œ๊ฐ€ ์ค‘๋ณต๋  ์ˆ˜ ์žˆ๋‹ค.

 

์บ์‹œ ๊ฐ€๋Šฅ (Cacheable) 

  • ์‘๋‹ต ๊ฒฐ๊ณผ๋ฅผ ์บ์‹œํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ์ž…๋‹ˆ๋‹ค.
  • GET, HEAD, POST, PATCH๊ฐ€ ์บ์‹œ ๊ฐ€๋Šฅํ•˜๋‚˜, Message Body์˜ ์บ์‹œ ํ‚ค์˜ ๋ณต์žก์„ฑ ๋ฌธ์ œ๋กœ ์‹ค์ œ๋กœ๋Š” GET, HEAD๋งŒ ์‚ฌ์šฉ

# ์ฐธ๊ณ ์ž๋ฃŒ

๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - ๊น€์˜ํ•œ

https://medium.com/@maheshlsingh8412/cookie-session-story-of-a-stateless-http-3cd09cc01541 

https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview 

https://community.safe.com/s/article/HTTP-Requests-With-The-HTTPCaller 

https://dharmanikheem.medium.com/front-end-vs-back-end-what-is-the-difference-9a83a65ee74f