HTTP(HyperText Transfer Protocol)

HTML/TEXT, IMAGE, ์Œ์„ฑ, ์˜์ƒ, ํŒŒ์ผ, JSON, XML ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†ก ๊ฐ€๋Šฅํ•œ ํ”„๋กœํ† ์ฝœ๋กœ, ํ˜„์žฌ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ์ฃผ๋กœ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด์—์„œ ์š”์ฒญ/์‘๋‹ต์„ ์ฃผ๊ณ ๋ฐ›๋Š”๋ฐ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค.

์—ญ์‚ฌ

  • HTTP/0.9: ์ดˆ๊ธฐ ๋ฒ„์ „(GET ๋ฉ”์„œ๋“œ๋งŒ ์ง€์› / ํ—ค๋” ์—†์Œ)

  • HTTP/1.0: ๋ฉ”์„œ๋“œ์™€ ํ—ค๋”๋ฅผ ์ถ”๊ฐ€๋กœ ์ง€์›ํ•˜๋Š” ๋ฒ„์ „(์ง€์† ์—ฐ๊ฒฐ ๋ฏธ์ง€์›)

  • HTTP/1.1: ํ˜„์žฌ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ฒ„์ „์œผ๋กœ, ์ง€์† ์—ฐ๊ฒฐ, ํŒŒ์ดํ”„๋ผ์ด๋‹(pipelining)์„ ์ง€์›ํ•˜์—ฌ ์„ฑ๋Šฅ ํ–ฅ์ƒ

  • HTTP/2: HTTP/1.1์˜ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ๋ฒ„์ „์œผ๋กœ, ํ—ค๋” ์••์ถ•, ์ŠคํŠธ๋ฆผ ๋‹ค์ค‘ํ™” ๋“ฑ์œผ๋กœ ์„ฑ๋Šฅ์„ ๊ฐœ์„ 

  • HTTP/3: TCP ๋Œ€์‹  UDP ํ”„๋กœํ† ์ฝœ ์œ„์—์„œ ์ž‘๋™ํ•˜๋ฉฐ, ๊ธฐ์กด TCP ๊ธฐ๋ฐ˜์˜ ๋ฌธ์ œ์ ์„ ๊ฐœ์„ ํ•˜์—ฌ ๋” ๋น ๋ฅธ ์„ฑ๋Šฅ ์ œ๊ณต

์ „์†ก ๊ณ„์ธต๊ณผ HTTP

  • TCP: HTTP/1.1, HTTP/2

  • UDP: HTTP/3

HTTP/3๋Š” UDP ํ”„๋กœํ† ์ฝœ ์œ„์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ๋ฒจ์—์„œ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๋„๋ก ์ƒˆ๋กœ ์„ค๊ณ„๋œ ํ”„๋กœํ† ์ฝœ์ด๋‹ค. (์ฐธ๊ณ  ๋งํฌ)

HTTP ํŠน์ง•

  • ์š”์ฒญ-์‘๋‹ต ๊ธฐ๋ฐ˜์˜ Client-Server ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง

  • request๋ฅผ ๋ณด๋‚ด๋ฉด response๋กœ ๋Œ์•„์˜ค๋ฉฐ, request ์—†์ด๋Š” response๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Œ

  • ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š์Œ(stateless)

  • HTMP / ์ด๋ฏธ์ง€ / ์˜์ƒ / ํŒŒ์ผ / JSON / XML ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†ก ๊ฐ€๋Šฅ(๋ฏธ๋””์–ด ๋…๋ฆฝ์ )

  • ๋น„์—ฐ๊ฒฐ์„ฑ(connectionless)

  • ์ง€์† ์—ฐ๊ฒฐ(Keep-Alive)์„ ํ†ตํ•ด ํ•˜๋‚˜์˜ TCP ์ปค๋„ฅ์…˜ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ฒ˜๋ฆฌ(Three-way Handshake๋ฅผ ํ•œ ๋ฒˆ๋งŒ ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ ํ–ฅ์ƒ)

  • GET / POST / PUT / HEAD / DELETE / OPTIONS ๋ฉ”์„œ๋“œ ์กด์žฌ

์ „์†ก ๋ฐฉ์‹

HTTP๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š”๋ฐ, ์ด ๋ฐฉ์‹์€ ๋ฉ”์‹œ์ง€ ์ „์†ก ์‹œ ์‚ฌ์šฉํ•˜๋Š” ํ—ค๋”์— ๋”ฐ๋ผ ๊ฒฐ์ •๋œ๋‹ค.

์ „์†ก ๋ฐฉ์‹์‚ฌ์šฉ ํ—ค๋”์„ค๋ช…

๋‹จ์ˆœ ์ „์†ก(Simplest Transfer)

Content-Length

๋ฉ”์‹œ์ง€ ๋ฐ”๋””์˜ ํฌ๊ธฐ๋ฅผ ์•Œ๋ ค์คŒ

์••์ถ• ์ „์†ก(Compressed Transfer)

Content-Encoding

๋ฉ”์‹œ์ง€ ๋ฐ”๋””๋ฅผ ์••์ถ•ํ•œ ๋ฐฉ์‹์„ ์•Œ๋ ค์คŒ

๋ถ„ํ•  ์ „์†ก(Chunked Transfer)

Transfer-Encoding

๋ฉ”์‹œ์ง€ ๋ฐ”๋””๋ฅผ ์—ฌ๋Ÿฌ ์กฐ๊ฐ์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ „์†ก

๋ฒ”์œ„ ์ „์†ก(Ranged Transfer)

Content-Range

๋ฉ”์‹œ์ง€ ๋ฐ”๋””์˜ ์ผ๋ถ€๋งŒ ์š”์ฒญ

Content Negotiation

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ์–ด๋–ค ์ปจํ…์ธ ๋ฅผ ์›ํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ๋Š” ๊ธฐ๋Šฅ์œผ๋กœ, ์„œ๋ฒ„๋Š” ์ด ์ •๋ณด๋ฅผ ํ†ตํ•ด ๊ฐ€์žฅ ์ ์ ˆํ•œ ์ปจํ…์ธ ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ํด๋ผ์ด์–ธํŠธ๋Š” request message์— Accept* ํ—ค๋” ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ

  • ์„œ๋ฒ„๋Š” response message์— Content* ํ—ค๋” ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‘๋‹ต

  • ์–ธ์–ด ํƒœ๊ทธ(Accept-Language) / ๋ฌธ์ž์…‹(Accept-Charset) / ์ธ์ฝ”๋”ฉ(Accept-Encoding) / ๋ฏธ๋””์–ด ํƒ€์ž…(Accept) ๋“ฑ์„ ์‚ฌ์šฉ

  • 0 ~ 1 ์‚ฌ์ด์˜ Quality Value(QValue)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‚˜ํƒ€๋ƒ„(Accept-Language: ko-KR, en-US;q=0.9, en;q=0.8)

Status Code

request์— ๋Œ€ํ•œ ์„œ๋ฒ„์˜ ์‘๋‹ต ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์„ธ ์ž๋ฆฌ ์ˆซ์ž ์ฝ”๋“œ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์‘๋‹ต ์ƒํƒœ๋ฅผ ํฌ๊ฒŒ 5๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

codeclassdescription

1xx

information

๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๋ฐ›์•„๋“ค์—ฌ ์ฒ˜๋ฆฌ ์ค‘

2xx

success

๋ฆฌํ€˜์ŠคํŠธ ์ •์ƒ ์ฒ˜๋ฆฌ

3xx

redirection

๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์™„๋ฃŒํ•˜๋ ค๋ฉด ์ถ”๊ฐ€ ํ–‰๋™ ํ•„์š”

4xx

client error

๋ฆฌํ€˜์ŠคํŠธ ์ดํ•ด ๋ถˆ๊ฐ€๋Šฅ

5xx

server error

์„œ๋ฒ„๊ฐ€ ๋ฆฌํ€˜์ŠคํŠธ ์ฒ˜๋ฆฌ ์‹คํŒจ

์ž์„ธํ•œ ๋‚ด์šฉ์€ HTTP Status ์ฐธ๊ณ 

MIME(Multipurpose Internet Mail Extensions)

ํ…์ŠคํŠธ/์˜์ƒ/์ด๋ฏธ์ง€ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ์œผ๋กœ Content-Type ํ—ค๋” ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์›น ์„œ๋ฒ„์—์„œ MIME ํƒ€์ž…์„ ์ง€์ •ํ•˜๋ฉด ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด์ธ์ง€ ํ™•์ธํ•˜๊ณ , ํ•ด๋‹น ํƒ€์ž…์— ๋งž๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.

  • ์ด๋ฏธ์ง€ ๋“ฑ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์•„์Šคํ‚ค(ASCII) ๋ฌธ์ž์—ด์— ์ธ์ฝ”๋”ฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋ฐ์ดํ„ฐ ์ข…๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ๋ฒ• ๋“ฑ์„ ๊ทœ์ •

  • ํ™•์žฅ ์‚ฌ์–‘์— ์žˆ๋Š” ๋ฉ€ํ‹ฐํŒŒํŠธ(Multipart)๋ผ๊ณ  ํ•˜๋Š” ์—ฌ๋Ÿฌ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• ์‚ฌ์šฉ

  • HTTP๋„ ๋ฉ€ํ‹ฐํŒŒํŠธ์— ๋Œ€์‘ํ•˜๊ณ  ์žˆ์–ด ํ•˜๋‚˜์˜ ๋ฉ”์‹œ์ง€ ๋ฐ”๋”” ๋‚ด๋ถ€์— ์—ฌ๋Ÿฌ ์—”ํ‹ฐํ‹ฐ๋ฅผ ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ

  • ์ „์†ก ๋ฐฉ์‹

    • multipart/form-data: Web ํผ์œผ๋กœ๋ถ€ํ„ฐ ํŒŒ์ผ ์—…๋กœ๋“œ์— ์‚ฌ์šฉ

    • multipart/byteranges: ์ƒํƒœ ์ฝ”๋“œ 206(Partial Content) response message๊ฐ€ ๋ณต์ˆ˜ ๋ฒ”์œ„์˜ ๋‚ด์šฉ์„ ํฌํ•จํ•  ๋•Œ ์‚ฌ์šฉ

์ฐธ๊ณ ์ž๋ฃŒ

Last updated