02
14

์ฑ…์„ ์ฝ๊ณ  ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ๊ธฐ๋กํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

HTTP ์š”์ฒญ - ์‘๋‹ต์€ HTTP ๋ฉ”์‹œ์ง€๋กœ ์ด๋ค„์ง„๋‹ค. ํด๋ผ์ด์–ธํŠธ(User-Agent) → ํ”„๋ฝ์‹œ → ์„œ๋ฒ„๋ฅผ ์ง€๋‚˜๋Š”๋ฐ, ๋ฉ”์‹œ์ง€์˜ ๋ฐฉํ–ฅ์— ๋”ฐ๋ผ ์ธ๋ฐ”์šด๋“œ(์„œ๋ฒ„๋กœ ๋“ค์–ด๊ฐˆ ๋•Œ), ์•„์›ƒ๋ฐ”์šด๋“œ(ํด๋ผ์ด์–ธํŠธ๋กœ ๋“ค์–ด๊ฐˆ ๋•Œ), ์—…์ŠคํŠธ๋ฆผ, ๋‹ค์šด์ŠคํŠธ๋ฆผ์œผ๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ธ๋ฐ”์šด๋“œ, ์•„์›ƒ๋ฐ”์šด๋“œ๋Š” ํŠธ๋žœ์žญ์…˜ ๋ฐฉํ–ฅ์ด๊ณ  ๋ฉ”์‹œ์ง€์˜ ํ๋ฆ„์€ ๋ชจ๋‘ ๋‹ค์šด์ŠคํŠธ๋ฆผ์ด๋‹ค.(ํƒ€๊ณ  ๋‚ด๋ ค๊ฐ€๋Š” ๊ฒƒ)

graph LR
    A --> B
    B --> C
		C --> B
		B --> A

 

A→B→C ๋ผ๋ฉด A๋Š” C์˜ ์—…์ŠคํŠธ๋ฆผ์ด๊ณ , C๋Š” A์˜ ๋‹ค์šด์ŠคํŠธ๋ฆผ์ด๋‹ค. ํ™”์‚ดํ‘œ ๋ฐฉํ–ฅ์ด ๋ฐ”๋€Œ๋ฉด A๋Š” C์˜ ๋‹ค์šด์ŠคํŠธ๋ฆผ์ด ๋œ๋‹ค. ์ด ๋ง์€ ์š”์ฒญ, ์‘๋‹ต ๋ชจ๋‘ ๋‹ค์šด์ŠคํŠธ๋ฆผ์ด๋ผ๋Š” ๋œป์ด๋‹ค.

HTTP ๋ฉ”์‹œ์ง€

HTTP๋ฉ”์‹œ์ง€๋Š” ์•ž์—์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ดค๋Š”๋ฐ, ์‹œ์ž‘์ค„(์–ด๋–ค ๋ฉ”์‹œ์ง€์ธ์ง€), ํ—ค๋”(์†์„ฑ), ๋ณธ๋ฌธ(๋ฐ์ดํ„ฐ)์œผ๋กœ ์ด๋ค„์ ธ์žˆ๋‹ค.

์‹œ์ž‘์ค„์ด๋ž‘ ํ—ค๋”๋Š” ์ค„ ๋‹จ์œ„๋กœ ๊ตฌ๋ถ„๋œ ๋ฌธ์ž์—ด์ธ๋ฐ ์ด๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ ํ–‰ ๋งจ ๋์— ๋ถ™๋Š” ์ค„๋ฐ”๊ฟˆ ๋ฌธ์ž์—ด์€ CRLF(์บ๋ฆฌ์ง€ ๋ฆฌํ„ด, ๋ผ์ธํ”ผ๋“œ \r\n)์ด๋‹ค.

CRLF๋ž‘ LF๋Š” OS์˜ ์ฐจ์ด์ธ๋ฐ MS์—์„œ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ CRLF, Linux, Mac OS์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœํ–‰๋ฌธ์ž๊ฐ€ LF(\n)๋กœ CRLF๋ฅผ ๋ฆฌ๋ˆ…์Šค๋‚˜ Unix๊ธฐ๋ฐ˜์œผ๋กœ ์˜ฎ๊ธฐ๋ฉด ์ถฉ๋Œ์ด ๋‚  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ ์ด์œ ์—์„ ์ง€ HTTP๋ฉ”์‹œ์ง€์˜ CRLF, LF ๋ชจ๋‘ ์ „์†กํ•˜์ง€์•Š๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋„ ์žˆ๋Š”๋ฐ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋ฉด(๋ณ€ํ™˜) ๊ฐœํ–‰๋ฌธ์ž๋„ ๋ฉ”์‹œ์ง€์—์„œ ์ถ”์ถœ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

์‹œ์ž‘์ค„๊ณผ ํ—ค๋”๋Š” ํ•„์ˆ˜์ง€๋งŒ ๋ณธ๋ฌธ์€ ๋น„์–ด์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค.(๋‹จ์ˆœ GET์š”์ฒญ์ผ ๊ฒฝ์šฐ)

#### Request
<๋ฉ”์„œ๋“œ ๋ช…> <์š”์ฒญ URL> <HTTP๋ฒ„์ „>
<ํ—ค๋”>
<๋ณธ๋ฌธ>
#### Response
<HTTP๋ฒ„์ „> <์ƒํƒœ์ฝ”๋“œ> <์‚ฌ์œ  ๊ตฌ์ ˆ(์ƒํƒœ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋ฉ”์‹œ์ง€ - ์•„๋ฌด๋Ÿฐ ์˜ํ–ฅ์—†์Œ)>
<ํ—ค๋”>
<๋ณธ๋ฌธ>

์š”์ฒญ์ด๋ž‘ ์‘๋‹ต ๊ตฌ์กฐ๋Š” ๋น„์Šทํ•˜๋‹ค. ๋ฉ”์„œ๋“œ๋Š” GET, POST, DELETE, HEAD ๊ฐ™์€ ์ต์ˆ™ํ•œ ์ด๋ฆ„์ด๋‹ค. ๋Œ€ํ‘œ์ ์ธ ๋ช‡ ๊ฐœ๋งŒ ์•Œ์•„๋ณด์ž๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ์„œ๋ฒ„์˜ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€์— ๋”ฐ๋ผ ์•ˆ์ „ํ•œ ๋ฉ”์„œ๋“œ๋ผ๊ณ  ์ •์˜ํ•œ๋‹ค. ๋‹ค๋งŒ ์ด๊ฑฐ๋„ ์„œ๋ฒ„์˜ ๊ตฌ์„ฑ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š”๋ฐ, HTTP๋ช…์„ธ๋Š” ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์•Œ๋ฆฌ์ง€์•Š๊ณ  ๋ฌด์‹œํ•˜๋Š” ๊ฒŒ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— PUT, POST, DELETE์™€ ๊ฐ™์€ ์š”์ฒญ์— ๋Œ€ํ•ด 200์ด๋ผ๊ณ  ๋ณด๋‚ด๋ฉด์„œ ์‹ค์ œ๋กœ ์•„๋ฌด๊ฒƒ๋„ ์•ˆํ•˜๋„๋ก ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

  • GET
    • ์„œ๋ฒ„์—์„œ ๋ฌธ์„œ ๊ฐ€์ ธ์˜จ๋‹ค.
  • HEAD
    • ์„œ๋ฒ„์—์„œ ๊ฐ€์ ธ์˜ฌ ๋ฌธ์„œ์— ๋Œ€ํ•œ ํ—ค๋”๋งŒ ๊ฐ€์ ธ์˜จ๋‹ค.(์‘๋‹ต ๋ฉ”์‹œ์ง€์—์„œ๋ถ€ํ„ฐ ์—”ํ‹ฐํ‹ฐ ๋ณธ๋ฌธ์ด ์—†๋‹ค.)
      • ์™œ ์“ธ๊นŒ? → ๋ฌด๊ฒฐ์„ฑ, ์กด์žฌ ๊ฒ€์‚ฌ ์šฉ๋„
  • POST
    • ์„œ๋ฒ„๊ฐ€ ์ฒ˜๋ฆฌํ•ด์•ผ ๋  ๋ฐ์ดํ„ฐ๋ฅผ ๋ณธ๋ฌธ์— ๋‹ด์•„ ๋ณด๋‚ธ๋‹ค. → ๋ณธ๋ฌธ ์žˆ์Œ
  • PUT
    • ์„œ๋ฒ„์— ๋ณธ๋ฌธ์„ ์ €์žฅํ•œ๋‹ค. → ๋ณธ๋ฌธ ์žˆ์Œ
    • ์„œ๋ฒ„๊ฐ€ ๋ณธ๋ฌธ์˜ ๋‚ด์šฉ์œผ๋กœ ์ƒˆ ๋ฌธ์„œ๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜, ์กด์žฌํ•˜๋Š” ๋ฌธ์„œ์— ๋ฎ์–ด์“ฐ๊ธฐ๋ฅผ ์›ํ•  ๋•Œ.
    • ์„œ๋ฒ„์˜ ์ฝ˜ํ…์ธ ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๊ฐ€ ์ธ์ฆ์„ ์š”๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • TRACE
    • ๋ฉ”์‹œ์ง€์˜ ๊ฒฝ๋กœ๋ฅผ ์ถ”์ ํ•œ๋‹ค. → ๋ณธ๋ฌธ ์—†๋‹ค. ์‘๋‹ต์œผ๋กœ๋Š” ๋ณด๋‚ธ ๋ฉ”์‹œ์ง€๊ฐ€ ๊ทธ๋Œ€๋กœ ๋“ค์–ด์žˆ๋‹ค.
  • OPTIONS
    • ์„œ๋ฒ„๊ฐ€ ์–ด๋–ค ๋ฉ”์„œ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  • DELETE
    • ์š”์ฒญํ•œ ๋ฌธ์„œ๋ฅผ ์„œ๋ฒ„์—์„œ ์ œ๊ฑฐํ•œ๋‹ค.

HTTP ๋ฒ„์ „์€ HTTP/1.1๋กœ ํ”ํ•˜๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ ๋ฉ”์ด์ € 1๋ฒ„์ „์˜ ๋งˆ์ด๋„ˆ 1๋ฒ„์ „์ž„์„ ์˜๋ฏธํ•œ๋‹ค. ์ด ๋ง์€ 1.11๊ณผ 1.2๋ฒ„์ „์ด ์žˆ๋‹ค๋ฉด, ๊ฐ๊ฐ ๋งˆ์ด๋„ˆ 11๋ฒ„์ „๊ณผ ๋งˆ์ด๋„ˆ 2๋ฒ„์ „์œผ๋กœ 11๋ฒ„์ „์ด ์ตœ์‹ ๋ฒ„์ „์ด๋ผ๋Š” ์˜๋ฏธ๋‹ค. ๋งŒ์•ฝ ํด๋ผ์ด์–ธํŠธ - ์„œ๋ฒ„์˜ HTTP ๋ฒ„์ „์ด ๋‹ค๋ฅด๋‹ค๋ฉด ํ•˜์œ„๋ฒ„์ „์„ ๋”ฐ๋ฅธ๋‹ค.

๋ณธ๋ฌธ์€ ๋น„์–ด์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ ์ด ๊ฒฝ์šฐ CRLFํ•˜๋‚˜๋งŒ ๋“ค์–ด์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. CRLF๊ฐ€ ์•ˆ๋“ค์–ด์žˆ๋Š” ๋นˆ ๋ณธ๋ฌธ์„ ๋ฐ›์œผ๋ฉด ๋ฉ”์‹œ์ง€๋ฅผ ๋‹ค ๋ชป ๋ฐ›์€ ๊ฑธ๋กœ ๊ฐ„์ฃผํ•˜๊ธฐ CRLF๊ฐ€ ์—†๋Š” ๋นˆ ๋ณธ๋ฌธ์„ ๊ฐ–๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•„๋“ค์ด๋Š” ๊ตฌํ˜„์ฒด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

ํ—ค๋”๋Š” ์ผ๋ฐ˜ํ—ค๋”, ์š”์ฒญํ—ค๋”, ์‘๋‹ต ํ—ค๋”, Entity ํ—ค๋”, ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ํ™•์žฅํ—ค๋”๋กœ ๊ตฌ๋ถ„๋œ๋‹ค. ๊ฐ ํ—ค๋”๋Š” ์ด๋ฆ„, ์‰ผํ‘œ, ํ•„๋“œ๊ฐ’, CRLF๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์˜จ๋‹ค. ํ—ค๋”๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•œ์ค„์ด์ง€๋งŒ ๊ฐ€๋…์„ฑ์„ ์ข‹๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์—ฌ๋Ÿฌ์ค„๋กœ ์ชผ๊ฐœ๊ณ  ์‹ถ์„ ๋•Œ๋Š” ํƒญ์ด๋‚˜ ์ŠคํŽ˜์ด์Šค๋กœ indent๋ฅผ ๋„ฃ์–ด์ค˜์•ผ ํ•œ๋‹ค.

 

 

 

๋„์›€์ด ๋๋‹ค๋ฉด ๋Œ“๊ธ€์ด๋‚˜ ๊ณต๊ฐ ๋ฒ„ํŠผ ํ•œ ๋ฒˆ์”ฉ ๋ˆ„๋ฅด๊ณ  ๊ฐ€์ฃผ์„ธ์š”! ๋กœ๊ทธ์ธ ์•ˆํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค ^_^

 

๋ฐ˜์‘ํ˜•

'๐Ÿ“– > HTTP ์™„๋ฒฝ ๊ฐ€์ด๋“œ๐Ÿ“–' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[6์žฅ] 6.1~  (0) 2024.02.29
[5์žฅ] 5.1~5.10  (0) 2024.02.28
[3์žฅ ~ 4์žฅ] 3.4 ~ 4.7  (0) 2024.02.16
[1์žฅ ~ 2์žฅ] 1.7 ~ 2.4  (0) 2024.02.12
[1์žฅ] 1.1 ~ 1.6  (0) 2024.02.06
COMMENT