HTTP ํ†ต์‹ 

์ •์Šน์›ยท2023๋…„ 3์›” 31์ผ
0
post-thumbnail
post-custom-banner

๐Ÿ“’ ๋ชฉ์ฐจ

  • ๐Ÿ“Œ HTTP ํ†ต์‹ ์ด๋ž€?
  • ๐Ÿ“Œ HTTP ํ”„๋กœํ† ์ฝœ์˜ ํŠน์ง•
  • ๐Ÿ“Œ HTTP ํ†ต์‹ ์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต (Request, Response)
  • ๐Ÿ“Œ ์ฐธ์กฐ

๐Ÿ“Œ HTTP ํ†ต์‹ ์ด๋ž€?

HTTP๋Š” Hyper Text Ytansfer Protocal์˜ ์•ฝ์ž๋กœ, ์›น๋ธŒ๋ผ์šฐ์ €์™€ ์›น ์„œ๋ฒ„ ์‚ฌ์ด์—์„œ HTML ๋ฌธ์„œ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š”๋ฐ ์“ฐ์ด๋Š” ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์ด๋‹ค.

์ดˆ์ฐฝ๊ธฐ์—๋Š” HTML ๋ฌธ์„œ๋ฅผ ์†ก์ˆ˜์‹ ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ์ง€๋งŒ, ์ตœ๊ทผ์—๋Š” JSON๊ณผ ๊ฐ™์€ ๊ฒƒ ๋˜ํ•œ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.

HTPP๋Š” ์ „์†ก ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ๋กœ๋Š” TCP๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๋„คํŠธ์›Œํฌ ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ๋กœ๋Š” IP๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์ด ๋‘˜์„ ํ•ฉ์ณ์„œ TCP/IP๋ผ๊ณ  ๋ถ€๋ฅด๋Š”๋ฐ, IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ†ต์‹ ํ•  ์ปดํ“จํ„ฐ๋ฅผ ์ •ํ•˜๊ณ , ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์ปดํ“จํ„ฐ๊ฐ€ ์–ด๋–ค ์ปดํ“จํ„ฐ์™€ ํ†ต์‹ ํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.

์ถ”๊ฐ€์ ์œผ๋กœ, HTTP์—์„œ์˜ ๊ธฐ๋ณธ ํฌํŠธ๋Š” 80๋ฒˆ ํฌํŠธ์ด๋‹ค.

๐Ÿ“Œ HTTP ํ”„๋กœํ† ์ฝœ์˜ ํŠน์ง•

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

์ด๊ฒƒ์€ ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” ๋น„์—ฐ๊ฒฐ์„ฑ ํ”„๋กœํ† ์ฝœ์ด๋ฉฐ, ์š”์ฒญ๊ณผ ์‘๋‹ต(request, response)๋ฐฉ์‹์„ ํ†ตํ•ด ํ”„๋กœํ† ์ฝœ์ด ์ด๋ฃจ์–ด์ง„๋‹ค.

์—ฌ๊ธฐ์„œ, ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋ง์€ ์„œ๋ฒ„๋Š” ์‘๋‹ต ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•œ ํ›„์— ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ, HTTP ํ”„๋กœํ† ์ฝœ์€ ์ƒํƒœ๊ฐ€ ์—†๋Š” ํ”„๋กœํ† ์ฝœ ์ฆ‰, ๋ฌด์ƒํƒœ์„ฑ(stateless)๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค.

๐Ÿ“Œ HTTP ํ†ต์‹ ์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต (Request, Response)

์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ํด๋ผ์ด์–ธํŠธ(Client)์™€ ์„œ๋ฒ„(Server)๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๋ž€ ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ์ชฝ์„ ์˜๋ฏธํ•˜๋ฉฐ ์„œ๋ฒ„๋ž€ ์š”์ฒญ์„ ๋ฐ›๋Š” ์ชฝ์„ ์˜๋ฏธํ•œ๋‹ค.

Http Request์˜ ๊ตฌ์กฐ๋Š” Request Line, Header Lines, Body๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

โœ… Request

Request Line

  • request๊ฐ€ ์‹œ์ž‘๋˜๋Š” ์ค„์ด๋ฉฐ, (request line)์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์ •๋ณด๋ฅผ ๋‹ด๋Š”๋‹ค.
  1. HTTP ๋ฉ”์„œ๋“œ (GET, POST ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•ด ์„œ๋ฒ„๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ๋™์ž‘์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  2. ์š”์ฒญ ํƒ€๊ฒŸ (URL, ๋˜๋Š” ํฌ๋ฅดํ† ์ฝœ, ํฌํŠธ, ๋„๋ฉ”์ธ)์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ์ด๋“ค์€ ์š”์ฒญ ์ปจํ…์ŠคํŠธ์— ์˜ํ•ด ํŠน์ • ์ง€์–ด์ง„๋‹ค.
  3. HTTP ๋ฒ„์ „. ์‘๋‹ต ๋ฉ”์‹œ์ง€์— ์‚ฌ์šฉํ•  HTTP ๋ฒ„์ „์„ ์•Œ๋ ค์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

Header

  • ์š”์ฒญ์— ๋“ค์–ด๊ฐ€๋Š” HTTP ํ—ค๋”๋Š” HTTP ํ—ค๋” ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฅธ๋‹ค.
  • ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์—†๋Š” ๋ฌธ์ž์—ด ๋‹ค์Œ ์ฝœ๋ก  (' : ')์ด ๋ถ™์œผ๋ฉฐ, ๊ทธ ๋’ค์— ์˜ค๋Š” ๊ฐ’์€ ํ—ค๋”์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค.
  • ํ—ค๋”๋ฅผ ์„ธ๋ถ„ํ™”ํ•˜๋ฉด General Header, Request Header, Entity Header์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

Body

  • request์˜ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์— ๋“ค์–ด๊ฐ„๋‹ค. ๋ชจ๋“  ์š”์ฒญ์— ๋“ค์–ด๊ฐ€์ง€๋Š” ์•Š๊ณ  Get, HEAD, DELETE, OPTIONS์ฒ˜๋Ÿผ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ค๋Š” ์š”์ฒญ์€ body๋ฅผ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š๋Š”๋‹ค.

  • ๋ฐ”๋””๋Š” ๋‹จ์ผ-๋ฆฌ์†Œ์Šค ๋ณธ๋ฌธ(single-resource bodies), ๋‹ค์ค‘-๋ฆฌ์†Œ์Šค ๋ณธ๋ฌธ(multiple-resource bodies)์œผ๋กœ ๋‚˜๋ˆ ์ง„๋‹ค.


Http Response์˜ ๊ตฌ์กฐ๋Š” Status Line, Header Lines, Body๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

โœ… Response

Status Line

  • response๊ฐ€ ์‹œ์ž‘๋˜๋Š” ์ค„ (status line)์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  1. ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „, ๋ณดํ†ต HTTP/1.1์ด๋‹ค.
  2. ์ƒํƒœ ์ฝ”๋“œ, ์š”์ฒญ์˜ ์„ฑ๊ณต ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. (200, 404, 302 ๋“ฑ์˜ ์ฝ”๋“œ)
  3. ์ƒํƒœ ํ…์ŠคํŠธ, ์งง๊ณ  ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ƒํƒœ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ๊ธ€๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค. (Not Found)

Header

  • ์‘๋‹ต์— ๋“ค์–ด๊ฐ€๋Š” HTTP ํ—ค๋”๋Š” ์š”์ฒญ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ HTTP ํ—ค๋”์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฅธ๋‹ค.
  • ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์—†๋Š” ๋ฌธ์ž์—ด ๋‹ค์Œ ์ฝœ๋ก  (' : ')์ด ๋ถ™์œผ๋ฉฐ, ๊ทธ ๋’ค์— ์˜ค๋Š” ๊ฐ’์€ ํ—ค๋”์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค.
  • ํ—ค๋”๋ฅผ ์„ธ๋ถ„ํ™”ํ•˜๋ฉด General Header, Request Header, Entity Header์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

Body

  • response์˜ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์— ๋“ค์–ด๊ฐ„๋‹ค. ๋ชจ๋“  ์‘๋‹ต์— ๋“ค์–ด๊ฐ€์ง€๋Š” ์•Š๊ณ  201, 204 ๊ฐ™์€ ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ง„ ์‘๋‹ต์—๋Š” ๋ณดํ†ต ๋ณธ๋ฌธ์ด ์—†๋‹ค.

  • response body๋Š” ์ด๋ฏธ ๊ธธ์ด๊ฐ€ ์•Œ๋ ค์ง„ ๋‹จ์ผ ํŒŒ์ผ๋กœ ๊ตฌ์„ฑ๋œ ํ—ค๋” ๋‘ ๊ฐœ(Content-Type, Content-Length)๋ฅผ ๊ฐ€์ง„ ๋‹จ์ผ-๋ฆฌ์†Œ์Šค ๋ณธ๋ฌธ, ๊ธธ์ด๋ฅผ ๋ชจ๋ฅด๋Š” ๋‹จ์ผ ํŒŒ์ผ๋กœ ๊ตฌ์„ฑ๋œ ๋‹จ์ผ-๋ฆฌ์†Œ์Šค ๋ณธ๋ฌธ, ์„œ๋กœ ๋‹ค๋ฅธ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ฉ€ํ‹ฐํŒŒํŠธ๋กœ ์ด๋ฃจ์–ด์ง„ ๋‹ค์ค‘-๋ฆฌ์†Œ์Šค ๋ณธ๋ฌธ ์ด๋ ‡๊ฒŒ ํฌ๊ฒŒ 3๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ“Œ ์ฐธ์กฐ

https://wildeveloperetrain.tistory.com/37

post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€