์ด ์๋ฃ๋ "์ํฐํ๋ผ์ด์ฆ ๊ฐ๋ฐ ์๊ฐ" ์๋ฆฌ์ฆ์ ์ผ๋ถ์
๋๋ค. ์ด์ ๊ธฐ์ฌ:
์๋
! ์ค๋ ์ฐ๋ฆฌ๋ HTTP์ HTTPS ํ๋กํ ์ฝ์ ๋ํด ๋ฐฐ์ธ ๊ฒ์
๋๋ค. ํ์ง๋ง ๋จผ์ ํ ๊ฐ์ง ์ ์ ๋ถ๋ช
ํ ํ๊ฒ ์ต๋๋ค. ์ฐ๋ฆฌ๋ OSI ๋ชจ๋ธ์ ์ ํ๋ฆฌ์ผ์ด์
์์ค์์ ๋คํธ์ํฌ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ํ ํ๋กํ ์ฝ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค. ์ด์ ๊ธฐ์ฌ ์ค ํ๋์์ OSI ๋ชจ๋ธ์ ์๊ฒ ๋ ๊ฒ์ ๊ธฐ์ตํ ์ ์์ต๋๋ค. ๊ธฐ์ต์ด ๋์ง ์๋๋ค๋ฉด ์ฌ๊ธฐ ์์ต๋๋ค .
๋ฐ์ดํฐ ํต์ ํ๋กํ ์ฝ์ด๋ ๋ฌด์์ ๋๊น?
์ด๊ฒ์ ์๋ก ๋ค๋ฅธ ์๋น์ค์ ๊ฐ๋ฐ์๊ฐ ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ดํดํ ์ ์๋ ํ์์ผ๋ก ์ ๋ณด๋ฅผ ๋ณด๋ผ ์ ์๋๋ก ํ๋ ํฉ์๋ ๊ท์น ์งํฉ์ด๋ผ๊ณ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๊ฐ๋ฐ์๊ฐ ๋ธ๋ผ์ฐ์ ์์ ์ฒ๋ฆฌํ ์ ์๋ ํ์ค HTTP ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ์ ๋ณด๋ฅผ ์ ์กํ๊ธฐ ๋๋ฌธ์ Google ํฌ๋กฌ์ ์ฌ์ฉํ์ฌ Facebook๊ณผ Twitter์์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ๊ท ์ผํ ๊ท์น์ ์๋ฒ ๋ถ๋ถ์ ๊ฐ๋ฐํ๋ ์ฌ๋๋ค์๊ฒ ๋งค์ฐ ํธ๋ฆฌํฉ๋๋ค. ์ ๋ณด๋ฅผ ๋ณํํ๊ณ ์ ์ ํ ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ๋ณด๋ผ ์ ์๋ ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ต๋๋ค. HTTP๋ ์ฒ์์ HTML ํ์ด์ง๋ฅผ ์ ์กํ๊ธฐ ์ํ ํ๋กํ ์ฝ๋ก ์ธ์๋์์ต๋๋ค. ๊ทธ๊ฒ์ด ์ค๋ซ๋์ ์ฌ์ฉ๋์๋ ๋ฐฉ์์ด์ง๋ง, ์ง๊ธ์ ํ๋ก๊ทธ๋๋จธ๋ค์ด ๋ฌธ์์ด๊ณผ ๋ฏธ๋์ด ํ์ผ์ ๋ชจ๋ ๋ณด๋ด๋ ๋ฐ ์์ฃผ ์ฌ์ฉํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด ํ๋กํ ์ฝ์ ๋ณดํธ์ ์ผ๋ก ์์ฉ๋๊ณ ๋ค์ฌ๋ค๋ฅํ๋ฉฐ ์ฌ์ฉํ๊ธฐ ์ ๋ง ์ฝ์ต๋๋ค. ์ด์ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์กฐ์ฌํ ๊ฒ์ ๋๋ค.HTTP์ ๊ตฌ์กฐ
HTTP ํ๋กํ ์ฝ์ ํ ์คํธ๋ก๋ง ๊ตฌ์ฑ๋์ด ์๋ค๋ ์ ์ ์ฆ์ ์ฃผ๋ชฉํด์ผ ํฉ๋๋ค. ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ด ๊ฒ์ ์ด ํ ์คํธ์ ๊ตฌ์กฐ์ ๋๋ค. ๊ฐ ๋ฉ์์ง๋ ์ธ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.- ์์ ๋ผ์ธ โ ์ผ๋ถ ๊ด๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ํฉ๋๋ค.
- ํค๋ - ๋ฉ์์ง ๋งค๊ฐ๋ณ์๋ฅผ ์ค๋ช ํฉ๋๋ค.
- ๋ณธ๋ฌธ โ ๋ฉ์์ง์ ๋ด์ฉ์ ๋๋ค. ๋ณธ๋ฌธ์ ๋น ์ค๋ก ํค๋์ ๊ตฌ๋ถ๋์ด์ผ ํฉ๋๋ค.
๊ฐ๋จํ HTTP ์์ฒญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
GET / HTTP/1.1
Host: codegym.cc
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
์์ ๋ผ์ธ์ ๋ค์์ ๋ํ๋
๋๋ค.
- GET โ ์์ฒญ ๋ฐฉ๋ฒ
- / โ ์์ฒญ ๊ฒฝ๋ก
- HTTP/1.1 โ ํ๋กํ ์ฝ ๋ฒ์
- ํธ์คํธ โ ์์ฒญ์ด ์ ๋ฌ๋๋ ํธ์คํธ
- User-Agent โ ์์ฒญ์ ๋ณด๋ด๋ ํด๋ผ์ด์ธํธ
https://cdn.codegym.cc/images/article/155cea79-acfd-4968-9361-ad585e939b82/original.pngsend?name1=value1&name2=value2
์ฌ๊ธฐ์ codegym.cc ๋ ํธ์คํธ์ด๊ณ /send ๋ ์์ฒญ์ ๊ฒฝ๋ก์ด๋ฉฐ ? ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์๊ฐ ๋ค๋ฐ๋ฅธ๋ค๋ ๊ฒ์ ๋ํ๋ด๋ ๊ตฌ๋ถ ๊ธฐํธ์
๋๋ค. ๋ง์ง๋ง์๋ ํค-๊ฐ ์("key=value")์ด ์ฐํผ์๋๋ก ๊ตฌ๋ถ๋์ด ๋์ด๋ฉ๋๋ค. POST โ ์ด ๋ฐฉ๋ฒ์ ์๋ฒ์ ์ ๋ณด๋ฅผ ๊ฒ์ํฉ๋๋ค. POST ์์ฒญ์ "key=value" ์, JSON, HTML ์ฝ๋ ๋๋ ํ์ผ๊ณผ ๊ฐ์ ๋งค๊ฐ๋ณ์์ ๊ฐ์ ๋ค์ํ ์ข
๋ฅ์ ์ ๋ณด๋ฅผ ๋ณด๋ผ ์ ์์ต๋๋ค. ๋ชจ๋ ์ ๋ณด๋ ๋ฉ์์ง ๋ณธ๋ฌธ์ผ๋ก ์ ์ก๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด:
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: codegym.cc
{
"Id": 12345,
"User": "John"
}
์์ฒญ์ codegym.cc/user/create/json์ผ๋ก ์ ์ก๋๋ฉฐ ํ๋กํ ์ฝ ๋ฒ์ ์ HTTP/1.1์
๋๋ค. "์๋ฝ"์ ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ์ ๊ฒ์ผ๋ก ์์ํ๋ ์๋ต ํ์์ ๋ํ๋
๋๋ค. "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 ์ฝ๋๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
์๋ต ์ํ ์ฝ๋
๋ฉ์์ง ๋ณธ๋ฌธ๊ณผ ํค๋์ ๊ดํ ๋ชจ๋ ๊ฒ์ด ๋ช ํํ์ง๋ง ์ํ ์ฝ๋์ ๋ํด ๋ช ๋ง๋ ๋งํด์ผ ํฉ๋๋ค. ์๋ต ์ํ ์ฝ๋๋ ํญ์ 3์๋ฆฌ์ ๋๋ค. ์ฝ๋์ ์ฒซ ๋ฒ์งธ ์ซ์๋ ์๋ต ๋ฒ์ฃผ๋ฅผ ๋ํ๋ ๋๋ค.- 1xx โ ์ ๋ณด์ฉ. ์์ฒญ์ด ์ ์๋์์ต๋๋ค. ์๋ฒ๋ ๊ณ์ํ ์ค๋น๊ฐ ๋์์ต๋๋ค.
- 2xx โ ์ฑ๊ณต. ์์ฒญ์ด ์ ์, ์ดํด ๋ฐ ์ฒ๋ฆฌ๋์์ต๋๋ค.
- 3xx โ ๋ฆฌ๋๋ ์ . ์์ฒญ์ ์ฒ๋ฆฌํ๋ ค๋ฉด ์ถ๊ฐ ์์ ์ ์ํํด์ผ ํฉ๋๋ค.
- 4xx - ํด๋ผ์ด์ธํธ ์ค๋ฅ. ์์ฒญ์ ์ค๋ฅ๊ฐ ์๊ฑฐ๋ ํ๋กํ ์ฝ์ ์ค์ํ์ง ์์ต๋๋ค.
- 5xx - ์๋ฒ ์ค๋ฅ. ์์ฒญ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์์ฑ๋์์ง๋ง ์๋ฒ์์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- 200 OK - ์์ฒญ์ด ์์ ๋์ด ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌ๋์์ต๋๋ค.
- 201 ์์ฑ๋จ - ์์ฒญ์ด ์์ ๋๊ณ ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌ๋์ด ์ ๋ฆฌ์์ค ๋๋ ์ธ์คํด์ค๊ฐ ์์ฑ๋์์ต๋๋ค.
- 301 Moved Permanently โ ์์ฒญ๋ ๋ฆฌ์์ค๊ฐ ์๊ตฌ์ ์ผ๋ก ์ด๋๋์์ต๋๋ค. ์ด์ ๋ํ ํ์ ์์ฒญ์ ์ ์ฃผ์๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
- 307 ์์ ๋ฆฌ๋๋ ์ โ ๋ฆฌ์์ค๊ฐ ์ผ์์ ์ผ๋ก ์ด๋๋์์ต๋๋ค. ์ง๊ธ์ ์๋ ์ ๋ฌ์ ์ฌ์ฉํ์ฌ ์ก์ธ์คํ ์ ์์ต๋๋ค.
- 403 ๊ธ์ง๋จ โ ์์ฒญ์ด ์ดํด๋์์ง๋ง ์ธ์ฆ์ด ํ์ํฉ๋๋ค.
- 404 ์ฐพ์ ์ ์์ โ ์๋ฒ๊ฐ ์ด ์ฃผ์์์ ๋ฆฌ์์ค๋ฅผ ์ฐพ์ง ๋ชปํ์ต๋๋ค.
- 501 Not Implemented โ ์๋ฒ๊ฐ ์์ฒญ์ ์๋ตํ๋ ๋ฐ ํ์ํ ๊ธฐ๋ฅ์ ์ง์ํ์ง ์์ต๋๋ค.
- 505 HTTP ๋ฒ์ ์ด ์ง์๋์ง ์์ - ์๋ฒ๊ฐ ์ง์ ๋ ๋ฒ์ ์ HTTP ํ๋กํ ์ฝ์ ์ง์ํ์ง ์์ต๋๋ค.