์ฑ ์ ์ฝ๊ณ ๊ณต๋ถํ ๋ด์ฉ์ ๊ธฐ๋กํ ๊ธ์ ๋๋ค.
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 (1) | 2024.02.12 |
[1์ฅ] 1.1 ~ 1.6 (1) | 2024.02.06 |