์ด ์๋ฃ๋ "์ํฐํ๋ผ์ด์ฆ ๊ฐ๋ฐ ์๊ฐ" ์๋ฆฌ์ฆ์ ์ผ๋ถ์
๋๋ค. ์ด์ ๊ธฐ์ฌ:
์๋
ํ์ธ์! ์ค๋ ์ฐ๋ฆฌ๋ HTTP์ HTTPS ํ๋กํ ์ฝ์ ์ดํดํ๊ฒ ์ต๋๋ค. ํ์ง๋ง ๋จผ์ ํ ๊ฐ์ง ์ ์ ๋ช
ํํ ํฉ์๋ค. ์ฐ๋ฆฌ๋ OSI ๋ชจ๋ธ์ ์ ํ๋ฆฌ์ผ์ด์
๊ณ์ธต์์ ๋คํธ์ํฌ๋ฅผ ํตํ ๋ฐ์ดํฐ ์ ์ก ํ๋กํ ์ฝ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค. ๊ธฐ์ตํ์๊ฒ ์ง๋ง, ์ด์ ๊ธฐ์ฌ ์ค ํ๋์์ OSI ๋ชจ๋ธ์ ๋ํด ๋
ผ์ํ์ต๋๋ค. ๊ธฐ์ต๋์ง ์๋๋ค๋ฉด ์ฌ๊ธฐ ์์ต๋๋ค .
HTTP ํ๋กํ ์ฝ์ด ํ
์คํธ๋ก๋ง ๊ตฌ์ฑ๋์ด ์๋ค๋ ์ ์ ๋ฐ๋ก ์ฃผ๋ชฉํ ๊ฐ์น๊ฐ ์์ต๋๋ค. ๊ธ์, ์ฐ๋ฆฌ๋ ์ด ํ
์คํธ๊ฐ ์์นํ ๊ตฌ์กฐ์ ๊ฐ์ฅ ๊ด์ฌ์ด ์์ต๋๋ค. ๊ฐ ๋ฉ์์ง๋ ์ธ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
๋ฐ์ดํฐ ์ ์ก ํ๋กํ ์ฝ์ด๋ ๋ฌด์์ ๋๊น?
์ด๋ ๋ค์ํ ์๋น์ค ๊ฐ๋ฐ์๊ฐ ๋จ์ผ ํ์์ผ๋ก ์ ๋ณด๋ฅผ ๋ณด๋ด๋ ๋๋ถ์ ์ผ๋ฐ์ ์ผ๋ก ํ์ฉ๋๋ ๊ณ์ฝ์ ๋ถ์ฌ๋๋ ์ด๋ฆ์ ๋๋ค. ์๋ฅผ ๋ค์ด Google Chrome์ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๊ฐ ํ์ค HTTP ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ์ ๋ณด๋ฅผ ์ ์กํ๊ณ ๋ธ๋ผ์ฐ์ ๊ฐ ์ด๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ Facebook๊ณผ Twitter ๋ชจ๋์์ ์ ๋ณด๋ฅผ ์ป์ ์ ์์ต๋๋ค. ํต์ผ๋ ๊ท์น์ ์๋ฒ์ธก ๊ฐ๋ฐ์ ์์ ์๊ฒ๋ ๋งค์ฐ ํธ๋ฆฌํฉ๋๋ค. ์ ๋ณด๋ฅผ ๋ณํํ๊ณ ํ์ํ ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ์ ์กํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ง์ด ์์ต๋๋ค. HTTP๋ ์๋ HTML ํ์ด์ง๋ฅผ ์ ์กํ๊ธฐ ์ํ ํ๋กํ ์ฝ๋ก ๊ณ ์๋์์ต๋๋ค. ์ค๋ซ๋์ ์ด๋ฐ ์ผ์ด ์์์ง๋ง ์ด์ ๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ฌธ์์ด๊ณผ ๋ฏธ๋์ด ํ์ผ์ ๋ชจ๋ ์ ์กํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ ๋ฐ์ ์ผ๋ก ์ด ํ๋กํ ์ฝ์ ๋ค์ฌ๋ค๋ฅํ๊ณ ์ ์ฐํ๋ฉฐ ์ฌ์ฉํ๊ธฐ๊ฐ ์ ๋ง ์ฝ์ต๋๋ค. ์ด์ ์ด๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ์ ์์๋ด ์๋ค.
HTTP ๊ตฌ์กฐ
HTTP ํ๋กํ ์ฝ์ด ํ
์คํธ๋ก๋ง ๊ตฌ์ฑ๋์ด ์๋ค๋ ์ ์ ๋ฐ๋ก ์ฃผ๋ชฉํ ๊ฐ์น๊ฐ ์์ต๋๋ค. ๊ธ์, ์ฐ๋ฆฌ๋ ์ด ํ
์คํธ๊ฐ ์์นํ ๊ตฌ์กฐ์ ๊ฐ์ฅ ๊ด์ฌ์ด ์์ต๋๋ค. ๊ฐ ๋ฉ์์ง๋ ์ธ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- ์ถ๋ฐ์ - ์๋น์ค ๋ฐ์ดํฐ๋ฅผ ์ ์ํฉ๋๋ค.
- ํค๋ - ๋ฉ์์ง ๋งค๊ฐ๋ณ์์ ๋ํ ์ค๋ช ์ ๋๋ค.
- ๋ฉ์์ง ๋ณธ๋ฌธ(Body) - ๋ฉ์์ง ๋ฐ์ดํฐ์ ๋๋ค. ๋น ์ค๋ก ์ ๋ชฉ๊ณผ ๊ตฌ๋ถํด์ผ ํฉ๋๋ค.
๊ฐ๋จํ HTTP ์์ฒญ์ ๋ชจ์ต
GET / HTTP/1.1
Host: javarush.com
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
์ถ๋ฐ์ ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค.
- GET - ์์ฒญ ๋ฐฉ๋ฒ;
- / โ ์์ฒญ ๊ฒฝ๋ก(๊ฒฝ๋ก);
- HTTP/1.1 - ๋ฐ์ดํฐ ์ ์ก ํ๋กํ ์ฝ ๋ฒ์ .
- ํธ์คํธ โ ์์ฒญ์ด ์ฒ๋ฆฌ๋๋ ํธ์คํธ์ ๋๋ค.
- User-Agent๋ ์์ฒญ์ ๋ณด๋ด๋ ํด๋ผ์ด์ธํธ์ ๋๋ค.
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: javarush.com
{
"Id": 12345,
"User": "John"
}
์์ฒญ์ javarush.com/user/create/json์ผ๋ก ์ ์ก๋๋ฉฐ ํ๋กํ ์ฝ ๋ฒ์ ์ HTTP/1.1์
๋๋ค. Accept๋ ํด๋ผ์ด์ธํธ๊ฐ ์์ ํ ๊ฒ์ผ๋ก ์์๋๋ ์๋ต ํ์์ ์ง์ ํ๊ณ , Content-Type์ ๋ฉ์์ง ๋ณธ๋ฌธ์ด ์ ์ก๋๋ ํ์์ ์ง์ ํฉ๋๋ค. Content-Length - ๋ณธ๋ฌธ์ ๋ฌธ์ ์์
๋๋ค. HTTP ์์ฒญ์๋ ๋ค์ํ ํค๋๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ํ๋กํ ์ฝ ์ฌ์์์ ํ์ธํ ์ ์์ต๋๋ค .
HTTP ์๋ต
์์ฒญ์ ๋ฐ์ ํ ์๋ฒ๋ ์ด๋ฅผ ์ฒ๋ฆฌํ๊ณ ํด๋ผ์ด์ธํธ์ ์๋ต์ ๋ณด๋ ๋๋ค.HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 98
<html>
<head>
<title>An Example Page</title>
</head>
<body>
<p>Hello World</p>
</body>
</html>
์๋ต์ ์์ ์ค์๋ ํ๋กํ ์ฝ ๋ฒ์ (HTTP/1.1), ์ํ ์ฝ๋(200), ์ํ ์ค๋ช
(OK)์ด ํฌํจ๋ฉ๋๋ค. ์ ๋ชฉ์ ์ฝํ
์ธ ์ ์ ํ๊ณผ ๊ธธ์ด๋ฅผ ๋ํ๋
๋๋ค. ์๋ต ๋ณธ๋ฌธ์๋ ๋ธ๋ผ์ฐ์ ๊ฐ HTML ํ์ด์ง์ ๊ทธ๋ฆฌ๋ HTML ์ฝ๋๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
์๋ต ์ํ ์ฝ๋
๋ฉ์์ง ๋ณธ๋ฌธ๊ณผ ํค๋๋ฅผ ๋ณด๋ฉด ๋ชจ๋ ๊ฒ์ด ๋ช ํํ์ง๋ง ์ํ ์ฝ๋์ ๋ํด ๋ช ๋ง๋ ๋ง์๋๋ฆด ๊ฐ์น๊ฐ ์์ต๋๋ค. ์๋ต ์ํ ์ฝ๋๋ ํญ์ ์ธ ์๋ฆฌ์ด๋ฉฐ, ์ฝ๋์ ์ฒซ ๋ฒ์งธ ์ซ์๋ ์๋ต ๋ฒ์ฃผ๋ฅผ ๋ํ๋ ๋๋ค.- 1xx - ์ ๋ณด ์ ๊ณต์ฉ. ์์ฒญ์ด ์์ ๋์์ผ๋ฉฐ ์๋ฒ๋ ๊ณ์ํ ์ค๋น๊ฐ ๋์์ต๋๋ค.
- 2xx - ์ฑ๊ณตํ์ต๋๋ค. ์์ฒญ์ด ์ ์, ์ดํด ๋ฐ ์ฒ๋ฆฌ๋์์ต๋๋ค.
- 3xx - ๋ฆฌ๋๋ ์ . ์์ฒญ์ ์ฒ๋ฆฌํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ์ํํด์ผ ํฉ๋๋ค.
- 4xx - ํด๋ผ์ด์ธํธ ์ค๋ฅ์ ๋๋ค. ์์ฒญ์ ์ค๋ฅ๊ฐ ์๊ฑฐ๋ ํ๋กํ ์ฝ์ ์ค์ํ์ง ์์ต๋๋ค.
- 5xx - ์๋ฒ ์ค๋ฅ. ์์ฒญ์ด ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ๋์์์๋ ๋ถ๊ตฌํ๊ณ ์๋ฒ๊ฐ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- 200 OK โ ์์ฒญ์ด ์์ ๋์ด ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌ๋์์ต๋๋ค.
- 201 ์์ฑ๋จ - ์์ฒญ์ด ์์ ๋์ด ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌ๋์ด ์ ๋ฆฌ์์ค ๋๋ ํด๋น ์ธ์คํด์ค๊ฐ ์์ฑ๋์์ต๋๋ค.
- 301 ์๊ตฌ์ ์ผ๋ก ์ด๋๋จ - ์์ฒญ๋ ๋ฆฌ์์ค๊ฐ ์๊ตฌ์ ์ผ๋ก ์ด๋๋์์ผ๋ฉฐ ์ด์ ๋ํ ํ์ ์์ฒญ์ ์ ์ฃผ์์์ ๋ฐ์ํด์ผ ํฉ๋๋ค.
- 307 ์์ ๋ฆฌ๋๋ ์ - ๋ฆฌ์์ค๊ฐ ์ผ์์ ์ผ๋ก ์ด๋๋์์ต๋๋ค. ์ง๊ธ์ ์๋ ๋ฆฌ๋๋ ์ ์ ์ฌ์ฉํ์ฌ ์ก์ธ์คํ ์ ์์ต๋๋ค.
- 403 ๊ธ์ง๋จ - ์์ฒญ์ด ๋ช ํํ์ง๋ง ์น์ธ์ด ํ์ํฉ๋๋ค.
- 404 ์ฐพ์ ์ ์์ - ์๋ฒ๊ฐ ์ด ์ฃผ์์์ ๋ฆฌ์์ค๋ฅผ ์ฐพ์ง ๋ชปํ์ต๋๋ค.
- 501 ๊ตฌํ๋์ง ์์ - ์๋ฒ๊ฐ ์ด ์์ฒญ์ ์๋ตํ๋ ๊ธฐ๋ฅ์ ์ง์ํ์ง ์์ต๋๋ค.
- 505 HTTP ๋ฒ์ ์ด ์ง์๋์ง ์์ - ์๋ฒ๊ฐ ์ง์ ๋ HTTP ํ๋กํ ์ฝ ๋ฒ์ ์ ์ง์ํ์ง ์์ต๋๋ค.
GO TO FULL VERSION