[๋„คํŠธ์›Œํฌ] HTTP

๐Ÿ“„ HTTP๋ž€?

HyperText Transfer Protocol์˜ ์•ฝ์ž๋กœ HTML๋ฌธ์„œ์™€ ๊ฐ™์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ„์˜ ์ „์†ก๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์„œ๋ฒ„๊ฐ„์˜ ์ „์†ก์—๋„ HTTP๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋ฉฐ ๊ฑฐ์˜ ๋ชจ๋“  ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โ–ช ๊ธฐ๋ฐ˜ ํ”„๋กœํ† ์ฝœ

  • TCP: HTTP.1.1, HTTP/2: HTTP/1.1, HTTP/2
  • UDP: HTTP/3
  • ํ˜„์žฌ HTTP/1.1 ์ฃผ๋กœ ์‚ฌ์šฉ, HTTP/2, HTTP/3๋„ ์ ์  ์ฆ๊ฐ€

๐Ÿ“„ HTTP ํŠน์ง•

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

  • Request Response ๊ตฌ์กฐ
  • ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ , ์‘๋‹ต์„ ๋Œ€๊ธฐํ•œ๋‹ค.
  • ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์‘๋‹ตํ•œ๋‹ค.

2. ๋ฌด์ƒํƒœ ํ”„๋กœํ† ์ฝœ(์Šคํ…Œ์ดํŠธ๋ฆฌ์Šค Stateless: ์ƒํƒœ๋ฅผ ๋ณด์กดํ•˜์ง€ ์•Š์Œ), ๋น„์—ฐ๊ฒฐ์„ฑ

stateless

  • Stateless

    • ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ๋ฅผ ๋ณด์กดํ•˜์ง€ ์•Š๋Š”๋‹ค.
    • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ„์† ๋„˜๊ธด๋‹ค.
    • ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ‘์ž๊ธฐ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ์ฆ๊ฐ€ํ•ด๋„ ์„œ๋ฒ„๋ฅผ ๋Œ€๊ฑฐ ํˆฌ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋”ฐ๋ผ์„œ ๋ฌด์ƒํƒœ๋Š” ์‘๋‹ต ์„œ๋ฒ„๋ฅผ ์‰ฝ๊ฒŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์–ด ๋ฌดํ•œํ•œ ์„œ๋ฒ„ ์ฆ์„ค์ด ๊ฐ€๋Šฅํ•˜๊ณ  ์Šค์ผ€์ผ ์•„์›ƒ(์ˆ˜ํ‰ ํ™•์žฅ)์— ์œ ๋ฆฌํ•˜๋‹ค.
  • Stateless ํ•œ๊ณ„

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

3. HTTP ๋ฉ”์‹œ์ง€๋ฅผ ํ†ตํ•ด์„œ ํ†ต์‹ 

http๋ฉ”์‹œ์ง€

๐Ÿ”ด ์‹œ์ž‘ ๋ผ์ธ

  • ์š”์ฒญ ๋ฉ”์‹œ์ง€

    • HTTP ๋ฉ”์„œ๋“œ (ex. GET: ์กฐํšŒ): ์„œ๋ฒ„๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ๋™์ž‘ ์ง€์ •
    • ์š”์ฒญ ๋Œ€์ƒ (/search?q=hello&hl=ko): ์ ˆ๋Œ€๊ฒฝ๋กœ=โ€/โ€๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ๋กœ
    • HTTP Version
  • ์‘๋‹ต ๋ฉ”์‹œ์ง€

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

๐ŸŸก HTTP ํ—ค๋”

  • header-filed = field-name โ€œ:โ€ OWS field-value OWS (OWS: ๋„์–ด์“ฐ๊ธฐ ํ—ˆ์šฉ)
  • field-name ์€ ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์—†์Œ
  • ์šฉ๋„
    1. HTTP ์ „์†ก์— ํ•„์š”ํ•œ ๋ชจ๋“  ๋ถ€๊ฐ€์ •๋ณด
    2. ์˜ˆ) ๋ฉ”์‹œ์ง€ ๋ฐ”๋””์˜ ๋‚ด์šฉ, ๋ฉ”์‹œ์ง€ ๋ฐ”๋””์˜ ํฌ๊ธฐ, ์••์ถ•, ์ธ์ฆ..
    3. ํ‘œ์ค€ํ—ค๋”๊ฐ€ ๋งŽ์Œ. . ํ•„์š”์‹œ ์ž„์˜์˜ ํ—ค๋” ์ถ”๊ฐ€ ๊ฐ€๋Šฅ

๐Ÿ”ต HTTP ๋ฉ”์‹œ์ง€ ๋ฐ”๋””

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

์ถœ์ฒ˜

Tags:

Categories:

Updated:

Leave a comment