# HTTP ( HyperText Transfer Protocol)
Study Repository

HTTP ( HyperText Transfer Protocol)

by rlaehddnd0422

HTTP ( HyperText Transfer Protocol)

  • HTTP ๋ฉ”์‹œ์ง€์— ๋ชจ๋“  ๊ฒƒ์„ ๋‹ด์•„ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ex) HTML, TEXT, ์ด๋ฏธ์ง€, ์Œ์„ฑ, ์˜์ƒ, ํŒŒ์ผ, json, xml ๋“ฑ๋“ฑ...
  • ๊ฑฐ์˜ ๋ชจ๋“  ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ์Œ
  • ์„œ๋ฒ„๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ์—๋„ ๋Œ€๋ถ€๋ถ„ HTTP๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • HTTP 1.1, HTTP 2์—์„œ๋Š” TCP ๊ธฐ๋ฐ˜ ( ํ˜„์žฌ๋Š” ์ฃผ๋กœ 1.1์„ ์‚ฌ์šฉํ•œ๋‹ค )
  • HTTP 3์—์„œ๋Š” UDP ๊ธฐ๋ฐ˜

HTTP ํŠน์ง•

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

 

ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ตฌ์กฐ๋ž€?

์š”์ฒญ-์‘๋‹ต ๊ตฌ์กฐ(Request - Response ๊ตฌ์กฐ).

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

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

 

Stateless ํ”„๋กœํ† ์ฝœ์ด๋ž€?

์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ๋ฅผ ๋ณด์กดํ•˜์ง€ ์•Š๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.(๋ฌด์ƒํƒœ)

  • ์žฅ์  : ์„œ๋ฒ„์˜ ํ™•์žฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.
  • ๋‹จ์  : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Stateful์€ ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ ์ƒํƒœ๋ฅผ ๋ณด๊ด€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๊ฐ€ ์žฅ์• ๊ฐ€ ์ƒ๊ฒจ๋„ ์„œ๋ฒ„๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Stateless๋Š” ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ ์ƒํƒœ๋ฅผ ๋ณด๊ด€ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๊ฐ„์— ์„œ๋ฒ„๊ฐ€ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ์„œ๋ฒ„๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Stateless (๋ฌด์ƒํƒœ)์˜ ์‹ค๋ฌด ํ•œ๊ณ„

  • ๋ชจ๋“  ๊ฒƒ์„ ๋ฌด์ƒํƒœ๋กœ ์„ค๊ณ„ํ• ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๊ณ  ์—†๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ex ) stateful -> ๋กœ๊ทธ์ธ, stateless -> ๋กœ๊ทธ์ธ์ด ํ•„์š”์—†๋Š” ๋‹จ์ˆœ ์„œ๋น„์Šค ์†Œ๊ฐœ ํ™”๋ฉด
  • ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ ๋กœ๊ทธ์ธ ํ–ˆ๋‹ค๋Š” ์ƒํƒœ๋ฅผ ์„œ๋ฒ„์— ์œ ์ง€
  • ์ผ๋ฐ˜์ ์œผ๋กœ ๋ธŒ๋ผ์šฐ์ € ์ฟ ํ‚ค์™€ ์„œ๋ฒ„ ์„ธ์…˜ ๋“ฑ์„ ์‚ฌ์šฉํ•ด์„œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

 

๋น„์—ฐ๊ฒฐ์„ฑ

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

๋น„์—ฐ๊ฒฐ์„ฑ์˜ ํ•œ๊ณ„์™€ ๊ทน๋ณต

์—ฐ๊ฒฐํ•  ๋•Œ๋งˆ๋‹ค TCP/IP ์—ฐ๊ฒฐ์„ ์ƒˆ๋กœ ๋งบ์–ด์•ผ ํ•ด์„œ 3 way handshake ์‹œ๊ฐ„์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

 

์ง€๊ธˆ์€ HTTP ์ง€์†์—ฐ๊ฒฐ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ -> ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต์„ ๋ณด๋‚ธ ํ›„์— TCP ์—ฐ๊ฒฐ์€ ๊ณ„์† ์œ ์ง€ํ•˜๋Š” ๋ฐฉ์‹

 

HTTP 2, HTTP 3์—์„œ ๋” ๋งŽ์€ ์ตœ์ ํ™”๋ฅผ ์ด๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค.


HTTP Message

์š”์ฒญ, ์‘๋‹ต ๋ฉ”์‹œ์ง€๋Š” ๋ชจ๋‘

start line - header - empty line - message body ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

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

GET /search?q=hello&hl=ko HTTP/1.1         -  Start line
Host: www.google.com			 -  header 
(๊ณต๋ฐฑ)					- empty line
<html> <body>...</body>			- message body
</html>

1. start line ( request line )

GET /search?q=hello&hl=ko HTTP/1.1

method SP(๊ณต๋ฐฑ) request-target SP HTTP-version CRLF(์—”ํ„ฐ) ๊ตฌ์กฐ

  • method์—๋Š” GET(์กฐํšŒ) , POST(์ฒ˜๋ฆฌ), PUT(์‚ฝ์ž…), DELETE(์‚ญ์ œ) ๋“ฑ์ด ์žˆ๊ณ  ์„œ๋ฒ„๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ๋™์ž‘์„ ์ง€์ •ํ•œ๋‹ค.
  • request-target์€ ์š”์ฒญ ๋Œ€์ƒ์œผ๋กœ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋กœ ์ง€์ •
  • HTTP-version์€ ๋ง๊ทธ๋Œ€๋กœ HTTP ๋ฒ„์ „

 

2. header

Host: www.google.com

field-name ':' OWS(๋„์–ด์“ฐ๊ธฐ ํ—ˆ์šฉ) field-value OWS

 

 

3. message body 

<html> <body>...</body>			- message body
</html>

์ฃผ๋กœ POST(๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์š”์ฒญ) ํ•  ๋•Œ ์‚ฌ์šฉ


์‘๋‹ต ๋ฉ”์‹œ์ง€

HTTP/1.1 200 OK            - Start line
Content-Type: text/html;charset=UTF-8 Content-Length: 3423      - header
(๊ณต๋ฐฑ) -     empty line
<html> <body>...</body>   - message body
</html>

1. Start line ( status line )

HTTP/1.1 200 OK

HTTP-version SP status-code SP reason-phrase CRLF(์—”ํ„ฐ) ๊ตฌ์กฐ

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

2. header 

Content-Type: text/html;charset=UTF-8 Content-Length: 3423      - header

HTTP ์ „์†ก์— ํ•„์š”ํ•œ ๋ชจ๋“  ๋ถ€๊ฐ€์ •๋ณด๊ฐ€ ๋“ค์–ด์žˆ์Šต๋‹ˆ๋‹ค.

๋ฉ”์‹œ์ง€ ๋ฐ”๋””์˜ ๋‚ด์šฉ, ๋ฐ”๋””์˜ ํฌ๊ธฐ, ์••์ถ•, ์ธ์ฆ, ์š”์ฒญ ํด๋ผ์ด์–ธํŠธ ์ •๋ณด, ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ •๋ณด, ์บ์‹œ ๊ด€๋ฆฌ ์ •๋ณด ๋“ฑ๋“ฑ..

 

3. message body

<html> <body>...</body>			- message body
</html>

์‹ค์ œ ์ „์†กํ•  ๋ฐ์ดํ„ฐ.

HTML, ์ด๋ฏธ์ง€, ์˜์ƒ, json ๋“ฑ๋“ฑ.. ๋ฐ”์ดํŠธ๋กœ ํ‘œํ˜„๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์ „์†ก ๊ฐ€๋Šฅ


์ •๋ฆฌ 

1. HTTP๋Š” ๋‹จ์ˆœํ•˜์ง€๋งŒ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

2. HTTP๋Š” ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„๊ตฌ์กฐ, ๋ฌด์ƒํƒœ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•จ.

 

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

Study Repository

rlaehddnd0422

ํ™œ๋™ํ•˜๊ธฐ