Skip to content

Latest commit

ย 

History

History
139 lines (85 loc) ยท 5.18 KB

HTTP.md

File metadata and controls

139 lines (85 loc) ยท 5.18 KB

HTTP

1. HTTP Messages

์ •์˜

  • ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์‚ฌ์ด์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ตํ™˜๋˜๋Š” ๋ฐฉ์‹
  • ์š”์ฒญ๊ณผ ์‘๋‹ต์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์œ ์‚ฌํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋ฉฐ, start line๊ณผ HTTP headers๋ฅผ ๋ฌถ์–ด ์š”์ฒญ์ด๋‚˜ ์‘๋‹ต์˜ head๋ผ๊ณ  ํ•˜๋ฉฐ, Payload๋Š” body๋ผ๊ณ  ํ•จ

๊ตฌ์กฐ

http_message

  • start line: ์š”์ฒญ์ด๋‚˜ ์‘๋‹ต์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ํ•ญ์ƒ ์ฒซ ๋ฒˆ์งธ ์ค„์— ์œ„์น˜ํ•˜๊ณ , ์‘๋‹ต์—์„œ๋Š” status line์ด๋ผ ๋ถ€๋ฆ„
  • HTTP headers: ์š”์ฒญ์„ ์ง€์ •ํ•˜๊ฑฐ๋‚˜, ๋ฉ”์‹œ์ง€์— ํฌํ•จ๋œ ๋ณธ๋ฌธ์„ ์„ค๋ช…ํ•˜๋Š” ํ—ค๋”์˜ ์ง‘ํ•ฉ
  • empty line: ํ—ค๋”์™€ ๋ณธ๋ฌธ์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๋นˆ ์ค„
  • body: ์š”์ฒญ๊ณผ ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ๋‚˜ ์‘๋‹ต๊ณผ ๊ด€๋ จ๋ด ๋ฐ์ดํ„ฐ ๋˜๋Š” ๋ฌธ์„œ ํฌํ•จ, ์œ ํ˜•์— ๋”ฐ๋ผ ์„ ํƒ์  ์‚ฌ์šฉ

2. HTTP Requests

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ๋ณด๋‚ด๋Š” ๋ฉ”์‹œ์ง€

start line์˜ ์„ธ ๊ฐ€์ง€ ์š”์†Œ

  • ์ˆ˜ํ–‰ํ•  ์ž‘์—…์ด๋‚˜ ๋ฐฉ์‹์„ ์„ค๋ช…ํ•˜๋Š” HTTP method
  • ์š”์ฒญ ๋Œ€์ƒ ๋˜๋Š” ํ”„๋กœํ† ์ฝœ, ํฌํŠธ, ๋„๋ฉ”์ธ์˜ ์ ˆ๋Œ€๊ฒฝ๋กœ๋Š” ์š”์ฒญ ์ปจํ…์ŠคํŠธ์— ์ž‘์„ฑ๋จ

Headers

  • ํ—ค๋”์ด๋ฆ„, ์ฝœ๋ก , ๊ฐ’์„ ์ž…๋ ฅ
  • General headers
  • Request headers
  • Representation headers

Body

  • ๋ชจ๋“  ์š”์ฒญ์— ํ•„์š”ํ•˜์ง„ ์•Š์Œ
  • Single-resource bodies(๋‹จ์ผ-๋ฆฌ์†Œ์Šค ๋ณธ๋ฌธ)
  • Multiple-resource bodies(๋‹ค์ค‘-๋ฆฌ์†Œ์Šค ๋ณธ๋ฌธ)

3. HTTP Responses

์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ด๋Š” ๋ฉ”์‹œ์ง€

Status line

  • ํ˜„์žฌ ํ”„๋กœํ† ์ฝœ์˜ ๋ฒ„์ „(HTTP/1.1)
  • ์ƒํƒœ ์ฝ”๋“œ: ์š”์ฒญ์˜ ๊ฒฐ๊ณผ (ex. 200, 302, 404 ๋“ฑ)
  • ์ƒํƒœ ํ…์ŠคํŠธ: ์ƒํƒœ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์„ค๋ช…

Header

  • ์š”์ฒญ ํ—ค๋”์™€ ๋™์ผํ•œ ๊ตฌ์กฐ

4. Stateful vs. Stateless

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

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

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

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

5. Connection Oriented vs. Connectionless

Connection Oriented

  • ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜๋Š” ๋ชจ๋ธ
  • ํด๋ผ์ด์–ธํŠธ๋“ค์ด ์š”์ฒญ์„ ๋ณด๋‚ด์ง€ ์•Š๋”๋ผ๋„ ๊ณ„์† ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์„œ๋ฒ„์˜ ์ž์›์ด ์†Œ๋ชจ๋จ

Connectionless

  • ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” ๋ชจ๋ธ
  • ์‹ค์ œ ์š”์ฒญ์„ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ๋งŒ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜๊ณ , ์‘๋‹ต์„ ์ฃผ๊ณ  ๋‚˜๋ฉด TCP/IP ์—ฐ๊ฒฐ์„ ๋Š๊ธฐ์— ์ตœ์†Œํ•œ์˜ ์„œ๋ฒ„ ์ž์› ์‚ฌ์šฉ

6. HTTP์˜ ํŠน์ง•

HTTP 1.0

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

HTTP ์ง€์† ์—ฐ๊ฒฐ(Persistent Connections)

  • ์œ„์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์—ฌ HTTP2, 3์—์„œ ๋” ๋งŽ์ด ์ตœ์ ํ™”๋จ
  • ์—ฐ๊ฒฐ์ด ์ด๋ฃจ์–ด์ง€๊ณ  ๋‚œ ๋’ค ๊ฐ๊ฐ์˜ ์ž์›๋“ค์„ ์š”์ฒญํ•˜๊ณ , ๋ชจ๋“  ์ž์›์— ๋Œ€ํ•œ ์‘๋‹ต์ด ๋Œ์•„์˜จ ํ›„์— ์—ฐ๊ฒฐ ์ข…๋ฃŒํ•˜๊ธฐ์— ์‹œ๊ฐ„์ด ๊ฐ์†Œ

7. HTTPS

์˜๋ฏธ์™€ ํŠน์ง•

  • HTTP Secure์˜ ์•ฝ์ž๋กœ, HTTP ํ”„๋กœํ† ์ฝœ์„ ๋” ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ
  • HTTP์™€๋Š” ๋‹ฌ๋ฆฌ ์š”์ฒญ๊ณผ ์‘๋‹ต์œผ๋กœ ์˜ค๊ฐ€๋Š” ๋‚ด์šฉ์„ ์•”ํ˜ธํ™”ํ•˜๊ธฐ ๋•Œ๋ฌธ
  • ๋”ฐ๋ผ์„œ ์ œ 3์ž๊ฐ€ HTTPS ์š”์ฒญ๊ณผ ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ํƒˆ์ทจํ•˜๋”๋ผ๋„ ๊ทธ ๋‚ด์šฉ์„ ์•Œ์•„๋ณผ ์ˆ˜ ์—†์Œ

์•”ํ˜ธํ™” ๋ฐฉ์‹

๋Œ€์นญ ํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹

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

๋น„๋Œ€์นญ ํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹ (๊ณต๊ฐœ ํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹)

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

8. SSL/TLS ํ”„๋กœํ† ์ฝœ

  • HTTPS๋Š” HTTP ํ†ต์‹ ์„ ํ•˜๋Š” ์†Œ์ผ“ ๋ถ€๋ถ„์—์„œ SSL ํ˜น์€ TLS ๋ผ๋Š” ํ”„๋กœํ† ์ฝœ๋กœ ์„œ๋ฒ„ ์ธ์ฆ๊ณผ ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”๋ฅผ ์ง„ํ–‰
  • SSL์ด ํ‘œ์ค€ํ™”๋˜๋ฉฐ ๋ฐ”๋€ ์ด๋ฆ„์ด TLS์ด๋ฏ€๋กœ ์‚ฌ์‹ค์ƒ ๊ฐ™์€ ํ”„๋กœํ† ์ฝœ์ž„

SSL/TLS์˜ ํŠน์ง•

  • CA(Certificate Authority)๋ฅผ ํ†ตํ•œ ์ธ์ฆ์„œ ์‚ฌ์šฉ
  • ๋Œ€์นญ ํ‚ค, ๊ณต๊ฐœ ํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ ๋ชจ๋‘ ์‚ฌ์šฉ