[HTTP] HTTP ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ํŠน์ง•

2022. 3. 13. 14:55ยทWEB

๐Ÿ“Œ HTTP

  • HTTP : HyperText Transfer Protocol
  • ๋ฌธ์„œ ๊ฐ„ ๋งํฌ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๋ฌธ์„œ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ํ”„๋กœํ† ์ฝœ์ด์ง€๋งŒ ํ˜„์žฌ ๊ฑฐ์˜ ๋ชจ๋“  ์ž๋ฃŒ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.
  • HTML, TEXT
  • IMAGE, ์Œ์„ฑ, ์˜์ƒ, ํŒŒ์ผ
  • JSON, XML (API)
  • ์„œ๋ฒ„ ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ๋„ ๋Œ€๋ถ€๋ถ„ HTTP๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

โœ… HTTP ๋ฒ„์ „

  • HTTP/1.1 : ํ˜„์žฌ ์‚ฌ์šฉ๋˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๋Šฅ, ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•จ, ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ฒ„์ „ 
  • HTTP/2์™€ HTTP/3์€ 1.1 ๋ฒ„์ „์— ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•œ ๋ฒ„์ „์ด๋‹ค.
  • 1.1๊ณผ 2๋Š” TCP ํ”„๋กœํ† ์ฝœ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ 3 way handshake๋ฅผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ „์†กํ•ด์•ผ ํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ๊ณ  ์†๋„๊ฐ€ UDP ๋ณด๋‹ค๋Š” ๋А๋ฆฌ๋‹ค.
  • ๋ฐ˜๋ฉด 3์€ UDP ํ”„๋กœํ† ์ฝœ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ๋ฒจ์—์„œ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜์˜€๋‹ค.

 

โœ… HTTP ํŠน์ง•

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

 

๐Ÿ“Œ ํด๋ผ์ด์–ธํŠธ ์„œ๋ฒ„ ๊ตฌ์กฐ

  • Request Response ๊ตฌ์กฐ
  • ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์‘๋‹ต์„ ๋Œ€๊ธฐ (HTTP ๋ฉ”์„ธ์ง€๋ฅผ ํ†ตํ•ด ํ†ต์‹ )
  • ์„œ๋ฒ„๋Š” ์š”์ฒญ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์‘๋‹ต
  • ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋ฅผ ๊ตฌ๋ถ„ํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ ์ชฝ์€ UI, ์‚ฌ์šฉ์„ฑ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ณ  ์„œ๋ฒ„ ์ชฝ์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง, DB ๋“ฑ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋‹ค → ๊ฐ๊ฐ ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐœ์ „ํ•  ์ˆ˜ ์žˆ์Œ e.g. ๋Œ€์šฉ๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๋ณ€๊ฒฝํ•  ๋•Œ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์†๋Œˆ ํ•„์š”๊ฐ€ ์—†์Œ

 

๐Ÿ“Œ ๋ฌด์ƒํƒœ ํ”„๋กœํ† ์ฝœ

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

  • ํ•ญ์ƒ ๊ฐ™์€ ์„œ๋ฒ„๊ฐ€ ์œ ์ง€๋˜์–ด์•ผ ํ•จ
  • ์ค‘๊ฐ„์— ์„œ๋ฒ„์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ์š”์ฒญ์„ ๋‹ค์‹œ ํ•ด์•ผํ•จ

 

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

  • ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ(๋ฌธ๋งฅ)๋ฅผ ๋ณด์กดํ•˜์ง€ ์•Š์Œ
  • ์žฅ์  : ์„œ๋ฒ„ ํ™•์žฅ์„ฑ์ด ๋†’์Œ(์Šค์ผ€์ผ ์•„์›ƒ - ์ˆ˜ํ‰ ํ™•์žฅ ์œ ๋ฆฌ)
  • ๋‹จ์  : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ด์•ผ ํ•จ (์ „์†กํ•ด์•ผ ํ•  ๋ฐ์ดํ„ฐ ์–‘์ด ๋งŽ์Œ)

→ ์ตœ๋Œ€ํ•œ ๋ฌด์ƒํƒœ๋กœ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ (e.g. ๋Œ€์šฉ๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ ๋ฐœ์ƒ์‹œ ์„œ๋ฒ„ ์ฆ์„ค ํŽธ๋ฆฌ)

 

โœ… ์‹ค๋ฌด ํ•œ๊ณ„

  • ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ ๋กœ๊ทธ์ธํ•œ ์ƒํƒœ๋ฅผ ์„œ๋ฒ„์— ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค. → ๋ธŒ๋ผ์šฐ์ € ์ฟ ํ‚ค์™€ ์„œ๋ฒ„ ์„ธ์…˜๋“ฑ์„ ์‚ฌ์šฉํ•ด์„œ ์œ ์ง€
  • ์ƒํƒœ ์œ ์ง€๋Š” ๊ผญ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— ์ตœ์†Œํ•œ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

๐Ÿ“Œ ๋น„์—ฐ๊ฒฐ์„ฑ

โœ… ์—ฐ๊ฒฐ ์œ ์ง€

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

 

 

 

โœ… ์—ฐ๊ฒฐ ์œ ์ง€ X

  • ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ๋ฐœ์ƒํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ๋งŒ ์—ฐ๊ฒฐ
  • ์„œ๋ฒ„ ์ž์›์„ ๋งค์šฐ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

โœ… ํ•œ๊ณ„์™€ ๊ทน๋ณต

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

 

โœ… HTTP ์ง€์† ์—ฐ๊ฒฐ

  • HTTP ์ดˆ๊ธฐ : ๊ฐ ์ž์›์„ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ๋งˆ๋‹ค ์—ฐ๊ฒฐ์„ ์ƒˆ๋กœ ๋งบ์Œ

 

  • HTTP ์ง€์† ์—ฐ๊ฒฐ : ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ–ˆ์„ ๋•Œ ๊ด€๋ จ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ชจ๋‘ ๋ฐ›์„ ๋•Œ๊นŒ์ง€ ์—ฐ๊ฒฐ์„ ์ง€์†ํ•จ

 

๐Ÿ“Œ HTTP ๋ฉ”์„ธ์ง€

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

  •  start-line, header, CRLF, message body๋กœ ๊ตฌ์„ฑ

 

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

๐Ÿ”ป ์š”์ฒญ ๋ฉ”์„ธ์ง€

  • start-line = request-line
  • request-line = method SP(๊ณต๋ฐฑ) request-target SP HTTP-version CRLF(์—”ํ„ฐ)
  • HTTP ๋ฉ”์„œ๋“œ
    • ์ข…๋ฅ˜ : GET (๋ฆฌ์†Œ์Šค ์กฐํšŒ), POST (์š”์ฒญ ๋‚ด์—ญ ์ฒ˜๋ฆฌ), PUT, DELETE
    • ์„œ๋ฒ„๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ๋™์ž‘ ์ง€์ •
  • ์š”์ฒญ ๋Œ€์ƒ
    • ์ ˆ๋Œ€๊ฒฝ๋กœ[?์ฟผ๋ฆฌ]
  • HTTP Version

 

๐Ÿ”ป ์‘๋‹ต ๋ฉ”์„ธ์ง€

.

  • start-line = status-line
  • status-line = HTTP-version SP status-code SP reason-phrase CRLF
  • HTTP ๋ฒ„์ „
  • HTTP ์ƒํƒœ ์ฝ”๋“œ : ์š”์ฒญ ์„ฑ๊ณต, ์‹คํŒจ๋ฅผ ๋‚˜ํƒ€๋ƒ„
    • 200 : ์„ฑ๊ณต
    • 400 : ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ์˜ค๋ฅ˜
    • 500 : ์„œ๋ฒ„ ๋‚ด๋ถ€ ์˜ค๋ฅ˜
  • ์ด์œ  ๋ฌธ๊ตฌ : ์‚ฌ๋žŒ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์งง์€ ์ƒํƒœ ์ฝ”๋“œ ์„ค๋ช…๊ธ€

 

โœ… ํ—ค๋” (header)

๐Ÿ”ป ๊ตฌ์กฐ

  • header-field = field-name ":" OWS field-value OWS (OWS : ๋„์–ด์“ฐ๊ธฐ ํ—ˆ์šฉ)
  • field-name์€ ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ X

 

๐Ÿ”ป ์šฉ๋„

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

 

โœ… ๋ฉ”์„ธ์ง€ ๋ฐ”๋”” (message body)

  • ์‹ค์ œ ์ „์†กํ•  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ์Œ
  • HTML ๋ฌธ์„œ, ์ด๋ฏธ์ง€, ์˜์ƒ, JSON ๋“ฑ byte๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์ „์†Œ ใ…‡๊ฐ€๋Šฅ

 


๊ฐ•์˜ ์ž๋ฃŒ

 

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

์‹ค๋ฌด์— ๊ผญ ํ•„์š”ํ•œ HTTP ํ•ต์‹ฌ ๊ธฐ๋Šฅ๊ณผ ์˜ฌ๋ฐ”๋ฅธ HTTP API ์„ค๊ณ„ ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค., - ๊ฐ•์˜ ์†Œ๊ฐœ | ์ธํ”„๋Ÿฐ...

www.inflearn.com

 

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'WEB' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[HTTP] API URI ์„ค๊ณ„์™€ HTTP ๋ฉ”์„œ๋“œ  (0) 2022.03.13
[HTTP] URI์™€ ์›น ๋ธŒ๋ผ์šฐ์ € ์š”์ฒญ ํ๋ฆ„  (0) 2022.03.12
[HTTP] ์ธํ„ฐ๋„ท ๋„คํŠธ์›Œํฌ  (0) 2022.03.10
'WEB' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [HTTP] HTTP ๋ฉ”์„œ๋“œ ํ™œ์šฉ
  • [HTTP] API URI ์„ค๊ณ„์™€ HTTP ๋ฉ”์„œ๋“œ
  • [HTTP] URI์™€ ์›น ๋ธŒ๋ผ์šฐ์ € ์š”์ฒญ ํ๋ฆ„
  • [HTTP] ์ธํ„ฐ๋„ท ๋„คํŠธ์›Œํฌ
Sue
Sue
๊ฐœ๋ฐœ ๊ณต๋ถ€ ๋กœ๊ทธ
  • Sue
    Sue's devlog
    Sue
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (122)
      • Algorithm (2)
      • WEB (8)
      • Java & Kotlin (83)
      • Spring (26)
      • Database (1)
      • Infra (0)
      • Git (1)
      • devlog (1)
  • ์ธ๊ธฐ ๊ธ€

  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
Sue
[HTTP] HTTP ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ํŠน์ง•
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”