๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ’ป Computer Science/- Network

[HTTP] ๊ธฐ๋ณธ์ ์ธ HTTP ํ†ต์‹ ์˜ ๊ตฌ์„ฑ ์š”์†Œ์™€ ํ๋ฆ„ ๋ฐ HTTP ๋ฉ”์‹œ์ง€ ๊ตฌ์„ฑ์š”์†Œ

by Wonit 2020. 10. 9.

HTTP ํ†ต์‹ ์€ ์ž˜ ์•Œ๋‹ค์‹ถ์ด ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ํ”„๋กœํ† ์ฝœ์ด๋‹ค.

 

HTTP์˜ ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„๊ตฌ์กฐ์— ๋Œ€ํ•ด์„œ ์•„์ง ๊ฐœ๋…์ด ์žกํžˆ์ง€ ์•Š์€ ์‚ฌ๋žŒ์€ HTTP ํ†ต์‹ ์˜ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ํ™•์ธํ•˜๊ณ  ์˜ค๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค.

 

๋‹ค์‹œ ๋ณธ๋ก ์œผ๋กœ ๋“ค์–ด๊ฐ€์„œ HTTP ์š”์ฒญ๊ณผ ์‘๋‹ต์—๋Š” ์—ฌ๋Ÿฌ ๊ณผ์ •์„ ๊ฑฐ์น  ์ˆ˜ ์žˆ๋‹ค.

Request & Response 

ํ†ต์‹  ์š”์†Œ๋“ค์„ 3๊ฐ€์ง€๋กœ ๋‚˜๋ˆ ๋ณด์ž.

  • ํด๋ผ์ด์–ธํŠธ
  • ํ”„๋ก์‹œ
  • ์„œ๋ฒ„

 

HTTP ํ†ต์‹ ์˜ ๊ตฌ์„ฑ ์š”์†Œ

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋Š” ์ง€๋‚œ ์‹œ๊ฐ„ ์ด์•ผ๊ธฐ ํ–ˆ๊ณ , ํ”„๋ก์‹œ์— ๋Œ€ํ•ด์„œ๋Š” ํ•  ์ด์•ผ๊ธฐ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ์— ํ•˜๋‚˜์˜ ์ƒˆ๋กœ์šด ํŒŒํŠธ๋กœ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด๋ณด๊ณ  ์˜ค๋Š˜์€ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด๋ณด์ž.

ํด๋ผ์ด์–ธํŠธ

ํด๋ผ์ด์–ธํŠธ๋Š” User Agent๋ผ๊ณ  ํ•œ๋‹ค.


์ด๋Š” ์‚ฌ์šฉ์ž๋ฅผ ๋Œ€์‹ ํ•ด์„œ ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ์ผ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.


๋ณดํ†ต HTML ๋ฌธ์„œ๋ฅผ ์‚ฌ์šฉ์ž ๋ˆˆ์— ๋ณด์ด๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„๋กœ html์„ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•œ ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ๋ธŒ๋ผ์šฐ์ €๊ฐ€ CSS์— ๋Œ€์‘ํ•˜๋Š” ์Šคํƒ€์ผ ์ •๋ณด์™€ HTML ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.

 

์„œ๋ฒ„

์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ํ•˜๋Š” ๋Œ€์ƒ์ด๋‹ค.


์„œ๋ฒ„๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ํŠน์ • ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์„ค๊ณ„ํ•ด๋†“์€ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œ์ผœ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

 

ํ”„๋ก์‹œ

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์‚ฌ์ด์—๋Š” ๋งŽ์€ HTTP ๋ฉ”์‹œ์ง€๊ฐ€ ์˜ค๊ณ  ๊ฐ„๋‹ค.


ํ”„๋ก์‹œ๋„ ํ•˜๋‚˜์˜ ์„œ๋ฒ„๋กœ์จ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ, ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ๋กœ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธธ์„ ์—ด์–ด์ค€๋‹ค.


๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ํ”„๋ก์‹œ ์„œ๋ฒ„๋ฅผ ์ค‘๊ณ„์„œ๋ฒ„๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ํ”„๋ก์‹œ ์„œ๋ฒ„๋ฅผ ๋„์‹ํ™”ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

ํ”„๋ก์‹œ ์„œ๋ฒ„๋Š” ๋Œ€ํ‘œ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์บ์‹ฑ
  • ํ•„ํ„ฐ๋ง
  • ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ
  • ์ธ์ฆ
  • ๋กœ๊น…

๊ฐ๊ฐ์˜ ๊ฐœ๋…๊ณผ ์„ธ๋ถ€ ๋‚ด์šฉ์€ ํ•ด๋‹น ์นดํ…Œ๊ณ ๋ฆฌ์˜ ํ”„๋ก์‹œ๋ฅผ ์ฐธ๊ณ ํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค.

 

HTTP ํ†ต์‹ ์˜ ํ๋ฆ„

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•  ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

  1. TCP ์—ฐ๊ฒฐ
  2. HTTP ๋ฉ”์‹œ์ง€ ์ „์†ก
  3. ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต - ์„œ๋ฒ„๊ฐ€ ๋ณด๋‚ธ ์‘๋‹ต ๋ถ„์„
  4. TCP ์—ฐ๊ฒฐ ๋‹ซ๊ธฐ ํ˜น์€ ๋‹ค๋ฅธ ์š”์ฒญ์„ ์œ„ํ•ด ์žฌ์‚ฌ์šฉ

TCP ์—ฐ๊ฒฐ

TCP ์—ฐ๊ฒฐ์€ Request, Response์— ์‚ฌ์šฉ๋œ๋‹ค.


ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ๋Š” 3๊ฐ€์ง€ ์„ ํƒ์ง€๊ฐ€ ์žˆ๋Š”๋ฐ, ์ƒˆ๋กœ์šด TCPํฌํŠธ๋ฅผ ์—ด๊ฑฐ๋‚˜, ๊ธฐ์กด ์—ฐ๊ฒฐ์„ ์žฌ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ์—ฌ๋Ÿฌ TCP๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

HTTP ๋ฉ”์‹œ์ง€ ์ „์†ก

HTTP ๋ฉ”์‹œ์ง€๋Š” ์šฐ๋ฆฌ(์ธ๊ฐ„๋“ค)์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ํ‰๋ฌธ์˜ ํ˜•ํƒœ์ด๋‹ค.


๊ทธ๋ž˜์„œ ๋ณด์•ˆ์ด ์ทจ์•ฝํ•˜๋Š” ํŠน์ง•๋•Œ๋ฌธ์— ๋‚˜์˜จ ๊ฒƒ์ด HTTPS ํ”„๋กœํ† ์ฝœ์ธ๋ฐ, ํ•ด๋‹น ์นดํ…Œ๊ณ ๋ฆฌ์— ๋‚˜์™€์žˆ์œผ๋‹ˆ ํ™•์ธํ•ด๋ณด๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค.

MDN-HTTP

 

์„œ๋ฒ„๊ฐ€ ์‘๋‹ต - ์„œ๋ฒ„๊ฐ€ ๋ณด๋‚ธ ์‘๋‹ต ๋ถ„์„

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

MDN HTTP

 

์„œ๋ฒ„๊ฐ€ ๋ณด๋‚ธ ์‘๋‹ต ๋ถ„์„

๊ทธ๋ฆฌ๊ณ  ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ์„œ๋ฒ„๊ฐ€ ๋ณด๋‚ธ ์‘๋‹ต์„ ๋ถ„์„ํ•˜๋Š”๋ฐ, ๋งŒ์•ฝ HTML ๋ฌธ์„œ๊ฐ€ ์™”๋‹ค๋ฉด Element์— ์ ์šฉ๋œ CSS ์Šคํƒ€์ผ๋ง์„์ ์šฉํ•˜๊ณ  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰์‹œํ‚ค๋Š”๋“ฑ ๋‹ค์–‘ํ•œ ํ–‰๋™์ด ์ทจํ•ด์ง„๋‹ค.

 

TCP ์—ฐ๊ฒฐ ๋‹ซ๊ธฐ ํ˜น์€ ๋‹ค๋ฅธ ์š”์ฒญ์„ ์œ„ํ•ด ์žฌ์‚ฌ์šฉ

๊ทธ๋ฆฌ๊ณ  ๋งŒ์•ฝ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ค๋ฅธ ์—ฐ๊ฒฐ์„ ๋˜ ํ•ด์•„ ํ•œ๋‹ค๋ฉด connectionํ—ค๋”๋ฅผ ํ†ตํ•ด keep-aliveํ˜น์€ close์˜ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์—ฐ๊ฒฐ์ด ์ข…๋ฃŒ๋œ๋‹ค.

 

 

HTTP ๋ฉ”์‹œ์ง€

 

์œ„์—์„œ ๋ดค๋˜ HTTP ํ†ต์‹  ๊ณผ์ •์—์„œ ์šฐ๋ฆฌ๋Š” HTTP ๋ฉ”์‹œ์ง€๊ฐ€ ๊ตํ™˜๋˜๊ฑฐ๋‚˜ ์ „์†ก๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  HTTP ๋ฉ”์‹œ์ง€๋ฅผ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋‹ค.

MDN http 

์š”์ฒญ : Request

Method : HTTP ๋ฉ”์„œ๋“œ๋กœ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ํ–‰๋™์„ ๊ตฌ๋ถ„ํ•œ๋‹ค.

Path : ๋ฆฌ์†Œ์Šค ๊ฒฝ๋กœ

Version of the protocol : ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „

Headers : ์„œ๋ฒ„์— ๋Œ€ํ•œ ์„ ํƒ์  ํ—ค๋”๋“ค

์‘๋‹ต : Response

Version of the protocol : ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „

Status Code : ๋ฆฌ์†Œ์Šค ๊ฒฝ๋กœ

Status Message : HTTP ๋ฉ”์„œ๋“œ

Headers : ์„œ๋ฒ„์— ๋Œ€ํ•œ ์„ ํƒ์  ํ—ค๋”๋“ค

 

๋Œ“๊ธ€