HTTP and Web structure

a1.png

-๊ทธ๋ฆผ 1. ๋ชจ๋˜ ์›น ๊ตฌ์กฐ-

์›น์€ HTTP๋ฅผ ์ด์šฉํ•ด์„œ ํ†ต์‹ ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋กœ ๊ตฌ์„ฑ๋จ

  • ์„œ๋ฒ„: ๋Œ€ใ…”์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐํฌํ•˜๋Š” ์‹œ์Šคํ…œ
    • ์›น ์„œ๋ฒ„: ์ •์ ์ธ ํŽ˜์ด์ง€๋ฅผ ์„œ๋น„์Šคํ•จ
    • ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„: ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋™์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ์ง€์›ํ•จ
  • ํด๋ผ์ด์–ธํŠธ: ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ํ•„์š”ํ•œ ์„œ๋น„์Šค๋ฅผ ์š”์ฒญํ•˜๋Š” ์‹œ์Šคํ…œ

์›น ํ”„๋ ˆ์ž„์›Œํฌ ๊ตฌ์กฐ

a2.png

-๊ทธ๋ฆผ 2. ์ž๋ฐ” WAS-

  • ์ •์  ์š”์ฒญ: ๋กœ์ปฌ ์ €์žฅ์†Œ์—์„œ ํŒŒ์ผ์„ ์ฐพ์•„์„œ ์‘๋‹ต
  • ๋™์  ์š”์ฒญ: ๋™์  ์š”์ฒญ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ˜ธ์ถœ
  • ์„œ๋ธ”๋ฆฟ(servlet): ์›น ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค, HTTP ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ทœ๊ฒฉ

์ฟ ํ‚ค์™€ ์„ธ์…˜

HTTP ํ”„๋กœํ† ์ฝœ์˜ ๋‘ ๊ฐ€์ง€ ํŠน์ง•

  1. ๋น„์—ฐ๊ฒฐ์ง€ํ–ฅ(Connectionless)
  • HTTP๋Š” ํ•œ ๋ฒˆ์˜ TCP ์—ฐ๊ฒฐ์—์„œ ํ•˜๋‚˜์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•จ
  • ํด๋ผ์ด์–ธํŠธ์˜ ์ •๋ณด๊ฐ€ ์ง€์†์ ์œผ๋กœ ์„œ๋ฒ„์—์„œ ๊ด€๋ฆฌ๋˜์ง€ ์•Š์Œ
  1. ๋ฌด์ƒํƒœ ํ”„๋กœํ† ์ฝœ(Stateless)
  • ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜๋Š” ์ˆœ๊ฐ„ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ํ†ต์‹ ์ด ๋๋‚จ, ์ƒํƒœ ์ •๋ณด ์œ ์ง€ํ•˜์ง€ ์•Š์Œ

์ฟ ํ‚ค

  • ์ฟ ํ‚ค๋Š” HTTP ํ†ต์‹ ์‹œ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„์—์„œ ์ƒ์„ฑํ•˜์—ฌ ์‘๋‹ต ํ—ค๋”์— ๋ถ™์—ฌ ํด๋ผ์ด์–ธํŠธ์— ์ „์†กํ•˜๋Š” ์ •๋ณด์ด๋‹ค.
  • ์ฟ ํ‚ค ์ •๋ณด๋Š” ํ•ด๋‹น ์‚ฌ์ดํŠธ์— ์š”์ฒญ์„ ์ „์†กํ•  ๋•Œ ์ด๋ฆ„ = ๊ฐ’ ํ˜•์‹์œผ๋กœ ์š”์ฒญ ํ—ค๋”์— ํฌํ•จ๋˜์–ด ์„œ๋ฒ„์— ์ „๋‹ฌ๋œ๋‹ค.
  • ์ฟ ํ‚ค์˜ ์ œ์•ฝ ์‚ฌํ•ญ์€ ๋ธŒ๋ผ์šฐ์ €๋‹น ์ตœ๋Œ€ 300๊ฐœ, ๊ฐ ํ˜ธ์ŠคํŠธ๋งˆ๋‹ค ์ตœ๋Œ€ 20๊ฐœ ๊นŒ์ง€ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํฌ๊ธฐ๋Š” ์ตœ๋Œ€ 4KB์ด๋‹ค.
์„ธ์…˜ ์ฟ ํ‚ค ์˜์† ์ฟ ํ‚ค
๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์—ด๋ ค์žˆ๋Š” ๋™์•ˆ ์œ ํšจํ•œ ์ฟ ํ‚ค, ์„œ๋ฒ„๋ฅผ ์ด์šฉํ•˜๋Š” ๋™์•ˆ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ ํ•˜๋“œ๋””์Šคํฌ์— ์œ ํšจ๊ธฐ๊ฐ„ ๋™์•ˆ ์ €์žฅ๋˜๋Š” ์ฟ ํ‚ค, ์‚ฌ์ดํŠธ ์žฌ ๋ฐฉ๋ฌธ ์‹œ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๊ธฐ์–ตํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ๋กœ ์‚ฌ์šฉ

๋Œ€ํ‘œ์ ์ธ ์ฟ ํ‚ค ์˜ต์…˜

  • Domain: ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฟ ํ‚ค๊ฐ’์„ ์ „์†กํ•  ์„œ๋ฒ„์˜ ๋„๋ฉ”์ธ ์ง€์ •
  • Path: ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฟ ํ‚ค๊ฐ’์„ ์ „์†กํ•  URL ์ง€์ •
  • Expires: ์ฟ ํ‚ค์˜ ์œ ํšจ ๊ธฐ๊ฐ„ ์„ค์ •
  • Secure: SSL ํ†ต์‹ ์ฑ„๋„ ์—ฐ๊ฒฐ์‹œ๋งŒ ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•˜๋„๋ก ์„ค์ •
  • HttpOnly: ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ์—์„œ ์ฟ ํ‚ค๊ฐ’์„ ์ฝ์–ด๊ฐ€์ง€ ๋ชปํ•˜๋„๋ก ์„ค์ •

์„ธ์…˜

a3.png

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

์„ธ์…˜ ID๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•

  1. HTML ํžˆํŠผ ํ•„๋“œ๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
    • HTML์˜ ํžˆ๋“  ํ•„๋“œ๋กœ ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌ
    • ์›น ํŽ˜์ด์ง€์—์„œ ๋ณด์—ฌ์ง€์ง€ ์•Š์Œ
    • ์†Œ์Šค ๋ณด๊ธฐ๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ID๊ฐ’ ์ถ”์ถœ ๊ฐ€๋Šฅ
  2. URL rewriting์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
    • ํด๋ผ์ด์–ธํŠธ ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฟ ํ‚ค ์‚ฌ์šฉ์„ ์ œํ•œํ•œ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•, URL rewriting์„ ์‚ฌ์šฉํ•˜์—ฌ ID๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.
    • ์›น ์„œ๋ฒ„์—์„œ ์„œ๋น„์Šค๋˜๋Š” ํŽ˜์ด์ง€์˜ ๋ชจ๋“  URL์— ์„ธ์…˜ ID๋ฅผ request parameter๋กœ ๋ถ™์—ฌ์„œ ์‚ฌ์šฉ
    • localhost:8080/โ€ฆ/jsessionid=1284AH8AJDAJD78123UASD28D7

  3. ์ฟ ํ‚ค๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
    • ํด๋ผ์ด์–ธํŠธ ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฟ ํ‚ค ์‚ฌ์šฉ์„ ํ—ˆ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉ๋จ
์„ธ์…˜์˜ ์žฅ์  ์„ธ์…˜์˜ ๋‹จ์ 
์ •๋ณด๋ฅผ ์„œ๋ฒ„์—์„œ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฟ ํ‚ค๋ณด๋‹ค ๋ณด์•ˆ์— ์šฐ์ˆ˜ ์„œ๋ฒ„ ๋ถ€ํ•˜ ์ฆ๊ฐ€