HTTP ( HyperText Transfer Protocol)
by rlaehddnd0422HTTP ( HyperText Transfer Protocol)
- HTTP ๋ฉ์์ง์ ๋ชจ๋ ๊ฒ์ ๋ด์ ์ ์กํ ์ ์๋ค.
- ex) HTML, TEXT, ์ด๋ฏธ์ง, ์์ฑ, ์์, ํ์ผ, json, xml ๋ฑ๋ฑ...
- ๊ฑฐ์ ๋ชจ๋ ํํ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์์
- ์๋ฒ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋์๋ ๋๋ถ๋ถ HTTP๋ฅผ ์ฌ์ฉํ๋ค.
- HTTP 1.1, HTTP 2์์๋ TCP ๊ธฐ๋ฐ ( ํ์ฌ๋ ์ฃผ๋ก 1.1์ ์ฌ์ฉํ๋ค )
- HTTP 3์์๋ UDP ๊ธฐ๋ฐ
HTTP ํน์ง
- ํด๋ผ์ด์ธํธ-์๋ฒ ๊ตฌ์กฐ
- Stateless ํ๋กํ ์ฝ, ๋น์ฐ๊ฒฐ์ฑ
- ๋จ์ํจ, ํ์ฅ๊ฐ๋ฅ
ํด๋ผ์ด์ธํธ-์๋ฒ ๊ตฌ์กฐ๋?
์์ฒญ-์๋ต ๊ตฌ์กฐ(Request - Response ๊ตฌ์กฐ).
ํด๋ผ์ด์ธํธ๋ ์๋ฒ๋ก ์์ฒญ์ ๋ณด๋ด๊ณ , ์๋ต์ ๋๊ธฐ. ์๋ฒ๋ ์์ฒญ์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด์ ์๋ตํ๋ ๊ตฌ์กฐ.
Stateless ํ๋กํ ์ฝ์ด๋?
์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๋ณด์กดํ์ง ์๋ ๋ฐฉ์์ ๋๋ค.(๋ฌด์ํ)
- ์ฅ์ : ์๋ฒ์ ํ์ฅ์ฑ์ด ๋์ต๋๋ค.
- ๋จ์ : ํด๋ผ์ด์ธํธ๊ฐ ์ถ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์กํด์ผ ํฉ๋๋ค.
Stateful์ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์์ฒญ ์ํ๋ฅผ ๋ณด๊ดํ๊ธฐ ๋๋ฌธ์ ์๋ฒ๊ฐ ์ฅ์ ๊ฐ ์๊ฒจ๋ ์๋ฒ๋ฅผ ๋ฐ๊ฟ ์ ์์ต๋๋ค.
Stateless๋ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์์ฒญ ์ํ๋ฅผ ๋ณด๊ดํ์ง ์๊ธฐ ๋๋ฌธ์ ์ค๊ฐ์ ์๋ฒ๊ฐ ์ฅ์ ๊ฐ ๋ฐ์ํด๋ ์๋ฒ๋ฅผ ๋ฐ๊ฟ ์ ์์ต๋๋ค.
Stateless (๋ฌด์ํ)์ ์ค๋ฌด ํ๊ณ
- ๋ชจ๋ ๊ฒ์ ๋ฌด์ํ๋ก ์ค๊ณํ ์ ์๋ ๊ฒฝ์ฐ๋ ์๊ณ ์๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
- ex ) stateful -> ๋ก๊ทธ์ธ, stateless -> ๋ก๊ทธ์ธ์ด ํ์์๋ ๋จ์ ์๋น์ค ์๊ฐ ํ๋ฉด
- ๋ก๊ทธ์ธํ ์ฌ์ฉ์์ ๊ฒฝ์ฐ ๋ก๊ทธ์ธ ํ๋ค๋ ์ํ๋ฅผ ์๋ฒ์ ์ ์ง
- ์ผ๋ฐ์ ์ผ๋ก ๋ธ๋ผ์ฐ์ ์ฟ ํค์ ์๋ฒ ์ธ์ ๋ฑ์ ์ฌ์ฉํด์ ์ํ๋ฅผ ์ ์งํฉ๋๋ค.
๋น์ฐ๊ฒฐ์ฑ
- HTTP๋ ๊ธฐ๋ณธ์ด ์ฐ๊ฒฐ์ ์ ์งํ์ง ์๋ ๋ชจ๋ธ์ ๋๋ค.
- ์ฌ๋ฌ ํด๋ผ์ด์ธํธ์์ ์์ฒญ์ด ๋ค์ด์ฌ ๋๋ง๋ค ์ฐ๊ฒฐ์ ํ๊ธฐ ๋๋ฌธ์ ์ต์ํ์ ์์์ ์ฌ์ฉํด์ ์๋ฒ ์์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ๊ณ์ ์ฐ๊ฒฐ์ ์ ์งํ์ง ์์ต๋๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ์ด ๋จ์ ์ดํ์ ๋น ๋ฅธ์๋๋ก ์๋ตํ๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ ์ ์ฅ์์๋ ์ฌ๋ฌ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ฐ๊ฒฐ๋์ด ์๋ค๊ณ ์๊ฐํ ์ ์์ต๋๋ค.
๋น์ฐ๊ฒฐ์ฑ์ ํ๊ณ์ ๊ทน๋ณต
์ฐ๊ฒฐํ ๋๋ง๋ค TCP/IP ์ฐ๊ฒฐ์ ์๋ก ๋งบ์ด์ผ ํด์ 3 way handshake ์๊ฐ์ด ์ถ๊ฐ๋ฉ๋๋ค.
์ง๊ธ์ HTTP ์ง์์ฐ๊ฒฐ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐ -> ์๋ฒ๊ฐ ์๋ต์ ๋ณด๋ธ ํ์ TCP ์ฐ๊ฒฐ์ ๊ณ์ ์ ์งํ๋ ๋ฐฉ์
HTTP 2, HTTP 3์์ ๋ ๋ง์ ์ต์ ํ๋ฅผ ์ด๋ฃจ์์ต๋๋ค.
HTTP Message
์์ฒญ, ์๋ต ๋ฉ์์ง๋ ๋ชจ๋
start line - header - empty line - message body ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
์์ฒญ ๋ฉ์์ง
GET /search?q=hello&hl=ko HTTP/1.1 - Start line
Host: www.google.com - header
(๊ณต๋ฐฑ) - empty line
<html> <body>...</body> - message body
</html>
1. start line ( request line )
GET /search?q=hello&hl=ko HTTP/1.1
method SP(๊ณต๋ฐฑ) request-target SP HTTP-version CRLF(์ํฐ) ๊ตฌ์กฐ
- method์๋ GET(์กฐํ) , POST(์ฒ๋ฆฌ), PUT(์ฝ์ ), DELETE(์ญ์ ) ๋ฑ์ด ์๊ณ ์๋ฒ๊ฐ ์ํํด์ผ ํ ๋์์ ์ง์ ํ๋ค.
- request-target์ ์์ฒญ ๋์์ผ๋ก ์ ๋ ๊ฒฝ๋ก๋ก ์ง์
- HTTP-version์ ๋ง๊ทธ๋๋ก HTTP ๋ฒ์
2. header
Host: www.google.com
field-name ':' OWS(๋์ด์ฐ๊ธฐ ํ์ฉ) field-value OWS
3. message body
<html> <body>...</body> - message body
</html>
์ฃผ๋ก POST(๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์ฒญ) ํ ๋ ์ฌ์ฉ
์๋ต ๋ฉ์์ง
HTTP/1.1 200 OK - Start line
Content-Type: text/html;charset=UTF-8 Content-Length: 3423 - header
(๊ณต๋ฐฑ) - empty line
<html> <body>...</body> - message body
</html>
1. Start line ( status line )
HTTP/1.1 200 OK
HTTP-version SP status-code SP reason-phrase CRLF(์ํฐ) ๊ตฌ์กฐ
- HTTP-version์ HTTP ๋ฒ์
- status code๋ ์์ฒญ ์ฑ๊ณต/์คํจ๋ฅผ ๋ํ๋ด๋๋ฐ 200์ ์ฑ๊ณต 400์ ํด๋ผ์ด์ธํธ ์์ฒญ์ค๋ฅ, 500์ ์๋ฒ ๋ด๋ถ ์ค๋ฅ๋ฅผ ๋ปํจ
- reason-phrase๋ ์ฌ๋์ด ์ดํดํ ์ ์๋ ์งง์ ์ํ์ฝ๋ ์ค๋ช ๊ธ
2. header
Content-Type: text/html;charset=UTF-8 Content-Length: 3423 - header
HTTP ์ ์ก์ ํ์ํ ๋ชจ๋ ๋ถ๊ฐ์ ๋ณด๊ฐ ๋ค์ด์์ต๋๋ค.
๋ฉ์์ง ๋ฐ๋์ ๋ด์ฉ, ๋ฐ๋์ ํฌ๊ธฐ, ์์ถ, ์ธ์ฆ, ์์ฒญ ํด๋ผ์ด์ธํธ ์ ๋ณด, ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด, ์บ์ ๊ด๋ฆฌ ์ ๋ณด ๋ฑ๋ฑ..
3. message body
<html> <body>...</body> - message body
</html>
์ค์ ์ ์กํ ๋ฐ์ดํฐ.
HTML, ์ด๋ฏธ์ง, ์์, json ๋ฑ๋ฑ.. ๋ฐ์ดํธ๋ก ํํ๊ฐ๋ฅํ ๋ชจ๋ ๋ฐ์ดํฐ ์ ์ก ๊ฐ๋ฅ
์ ๋ฆฌ
1. HTTP๋ ๋จ์ํ์ง๋ง ํ์ฅ์ด ๊ฐ๋ฅํ๋ค.
2. HTTP๋ ํด๋ผ์ด์ธํธ-์๋ฒ๊ตฌ์กฐ, ๋ฌด์ํ ํ๋กํ ์ฝ์ ์ฌ์ฉํจ.
'๐ CS > HTTP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
HTTP ์ํ์ฝ๋ / 1~5XX (0) | 2023.02.16 |
---|---|
HTTP ๋ฉ์๋ ํ์ฉ (0) | 2023.02.15 |
HTTP ๋ฉ์๋ - GET, POST, PUT, PATCH, DELETE in Start line (0) | 2023.02.15 |
URI(Uniform Resource Identifier) - URL, URN (0) | 2023.02.14 |
์ธํฐ๋ท ๋คํธ์ํฌ ํต์ - IP, TCP/UDP, PORT, DNS (0) | 2023.02.14 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
Study Repository
rlaehddnd0422