HTTP

HTTP?

HyperText Transfer Protocol์˜ ์•ฝ์ž์ด๊ณ , protocol์ด ๋“ค์–ด๊ฐ”๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•ฝ์†, ๊ทœ์•ฝ์„ ์˜๋ฏธํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํฌ๊ฒŒ request์™€ response ์œผ๋กœ ์ฃผ๊ณ  ๋ฐ›๋Š”๋‹ค.

๊ทธ๋ฆฌ๊ณ  OSI 7 layer์—์„œ 7์ธต์ธ application layer์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค.

  • ์ธํ„ฐ๋„ท์—์„œ๋Š” TCP ์œผ๋กœ ์ธํ„ฐ๋„ท์„ ๊ฑฐ์นœ๋‹ค.

OSI 7 layer

  1. (Physical)๋ฌผ๋ฆฌ ๊ณ„์ธต

  2. (DataLink)๋ฐ์ดํ„ฐ๋งํฌ ๊ณ„์ธต

  3. (Network)๋„คํŠธ์›Œํฌ ๊ณ„์ธต

  4. (Transfer)์ „์†ก ๊ณ„์ธต

  5. (Session)์„ธ์…˜ ๊ณ„์ธต

  6. (Presentation)ํ‘œํ˜„ ๊ณ„์ธต

  7. (Application)์‘์šฉ ๊ณ„์ธต

์ด๋ ‡๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

๋‹ค์‹œ HTTP์˜ ํŠน์ง•์œผ๋กœ ๋Œ์•„๊ฐ€์„œ, HTTP๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ stateless ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ connectless ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค.

connectless๋Š” ์„œ๋ฒ„์— ์—ฐ๊ฒฐ์„ ์š”์ฒญํ•˜๊ณ  ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ๋ฐ›์œผ๋ฉด ์—ฐ๊ฒฐ์„ ๋Š์–ด๋ฒ„๋ฆฐ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

stateless๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ํ†ต์‹  ์‹œ, ์ˆ˜์‹ ์ž๋Š” ์ด์ „์˜ ์š”์ฒญ์„ ๊ธฐ์–ต(์œ ์ง€)ํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ฆ‰, ๊ฐ๊ฐ์˜ ํ†ต์‹ ์ด ๋…๋ฆฝ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด์ „์˜ ํ†ต์‹ ๊ณผ๋Š” ์•„๋ฌด๋Ÿฐ ์ƒ๊ด€์ด ์—†๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ด๋Ÿฌํ•œ ํŠน์ง•์œผ๋กœ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์€

  1. ์•ˆ์ •์„ฑ : ๋ถ€๋ถ„์  ์‹คํŒจ์— ๋Œ€ํ•ด์„œ ๋ณต๊ตฌํ•˜๋Š” ๊ฒƒ์ด ์‰ฌ์›Œ์ง„๋‹ค

  2. ํ™•์žฅ์„ฑ : ์„ธ์…˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ํ•„์š”๊ฐ€ ์—†์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„์˜ ๋ถ€๋‹ด์ด ์ค€๋‹ค

์ด๋Ÿฌํ•œ stateless์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ฟ ํ‚ค / ์„ธ์…˜์ด๋‹ค.

HTTP ๊ตฌ์„ฑ

์ฐธ๊ณ  : https://velog.io/@teddybearjung/HTTP-%EA%B5%AC%EC%A1%B0-%EB%B0%8F-%ED%95%B5%EC%8B%AC-%EC%9A%94%EC%86%8C

Request = start line + headers + body

start line = http method + request target + http version

GET /login HTTP/1.1 โ† ์ด๋ ‡๊ฒŒ ์ƒ๊น€

http method : ์ฃผ์–ด์ง„ ๋ฆฌ์†Œ์Šค์— ์ˆ˜ํ–‰ํ•˜๊ธธ ์›ํ•˜๋Š” ํ–‰๋™์„ ์˜๋ฏธํ•˜๊ณ , ์ข…๋ฅ˜๋กœ๋Š” GET, POST, PUT, DELETE ๋“ฑ์ด ์žˆ๋‹ค.

request target : ํ•ด๋‹น request๊ฐ€ ์ „์†ก๋  url

headers

ํ•ด๋‹น request์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๊ฐ€ ๋“ค์–ด์žˆ์Œ, key : value ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Œ

body

ํ•ด๋‹น request์˜ ์‹ค์ œ ๋‚ด์šฉ์ด ๋‹ด๊ฒจ์žˆ์Œ

Response = status line + headers + body

status line = http version + status code + status text

HTTP/1.1 404 Not Found โ† ์ด๋ ‡๊ฒŒ ์ƒ๊น€

status code : ์‘๋‹ต ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ฝ”๋“œ๋กœ, ๋‚˜๋ˆ„์ž๋ฉด

  • 1xx : ์ •๋ณด / ์š”์ฒญ์„ ๋ฐ›์•˜์œผ๋ฉฐ, ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ณ„์†ํ•œ๋‹ค.

    • ex) 100(continue) : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋กœ ๋ณด๋‚ธ ์š”์ฒญ์— ๋ฌธ์ œ๊ฐ€ ์—†์œผ๋‹ˆ ๋‹ค์Œ ์š”์ฒญ์„ ์ด์–ด์„œ ๋ณด๋‚ด๋„ ๋œ๋‹ค๋Š” ์˜๋ฏธ

  • 2xx : ์„ฑ๊ณต / ์š”์ฒญ์„ ์„ฑ๊ณต์ ์œผ๋กœ ๋ฐ›์•˜๋‹ค.

  • 3xx : ๋ฆฌ๋‹ค์ด๋ ‰์…˜ / ์š”์ฒญ ์™„๋ฃŒ๋ฅผ ์œ„ํ•ด ์ถ”๊ฐ€ ์ž‘์—… ์กฐ์น˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

  • 4xx : ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜

  • 5xx : ์„œ๋ฒ„ ์˜ค๋ฅ˜

headers : ์„œ๋ฒ„์™€ ๋™์ผํ•œ ๊ฐœ๋…

body : ์„œ๋ฒ„์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ๋น„์–ด์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค

HTTP ContentType

  • Application/x-www-form-urlencoded : HTML Form ํ˜•ํƒœ

  • Application/json : JSON ํ˜•ํƒœ ๊ฐ’

  • multipart/form-data : ํŒŒ์ผ ์ฒจ๋ถ€

  • text/* : ๋‹จ์ˆœ html, css, javascript ํŒŒ์ผ

HTTP ํ†ต์‹  ์›๋ฆฌ

๊ฐ ๊ธฐ๊ธฐ์—๋Š” ์ธํ„ฐ๋„ท์—์„œ ์„œ๋กœ๋ฅผ ๊ตฌ๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ๊ณ ์œ  ์ฃผ์†Œ๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๊ณ ์œ  ์ฃผ์†Œ๋ฅผ IP์ฃผ์†Œ๋ผ๊ณ  ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด IP์ฃผ์†Œ๋ฅผ ๋งค๋ฒˆ ๊ธฐ์–ตํ•˜๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋„๋ฉ”์ธ ์ด๋ฆ„์ด๋‹ค.

๋„๋ฉ”์ธ ์ด๋ฆ„๋Š” ์ˆซ์ž์˜ ์กฐํ•ฉ์œผ๋กœ ๋˜์–ด์žˆ๋Š” IP์ฃผ์†Œ๋ฅผ ์•”๊ธฐํ•˜๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ž ๋ฐฉ์‹์œผ๋กœ ํ’€์–ด๋‘” ๊ฒƒ์ด๋‹ค.

๋„๋ฉ”์ธ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๋ฉด, ํ•ด๋‹น ์ด๋ฆ„์— ํ•ด๋‹นํ•˜๋Š” IP์ฃผ์†Œ๋ฅผ DNS(Domain Name System)์—์„œ ์ฐพ๊ฒŒ ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  HTTP๋กœ ์—ฐ๊ฒฐํ•˜๊ฒŒ ๋˜๋ฉด TCP์œ„์—์„œ ์—ฐ๊ฒฐ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„ ์—ฐ๊ฒฐ์„ 3-way-handshake ๋ฐฉ์‹์œผ๋กœ ์—ฐ๊ฒฐํ•˜๊ฒŒ ๋œ๋‹ค.

  • 3-way-handshake ๋ฐฉ์‹์€ ์„œ๋กœ๊ฐ€ ์ค€๋น„๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธ ๊ณผ์ •์„ ๊ฑฐ์น˜๊ณ  ํ†ต์‹ ์„ ์ง„ํ–‰ํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

  • TCP๋Š” ์—ฐ๊ฒฐ ์ง€ํ–ฅ ํ”„๋กœํ† ์ฝœ์ด๊ธฐ ๋•Œ๋ฌธ์— ์–‘๋ฐฉํ–ฅ์ด ๋ชจ๋‘ ์—ฐ๊ฒฐ๋˜๊ณ  ๋‚˜์„œ ํ†ต์‹ ์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

  • ์—ฐ๊ฒฐ์˜ ์ข…๋ฃŒ๋Š” 4-way-handshake ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ณด๋ƒˆ๋˜ request์„ ์„œ๋ฒ„์—๊ฒŒ ๋ณด๋‚ด๊ฒŒ ๋˜๊ณ 

์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌํ•˜๊ณ 

ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ response์„ ๋ณด๋‚ด์ค€๋‹ค.

Last updated

Was this helpful?