-
[HTTP] ๋น ์ฐ๊ฒฐ์ฑ(connectionless), HTTP ๋ฉ์ธ์งHTTP 2023. 7. 10. 04:33728x90
๐ท๋น ์ฐ๊ฒฐ์ฑ (connectionless)
๐ฝ ์ด๋ฏธ์ง ์ค๋ช ๐ฝ
๋๋ณด๊ธฐTCP๋ IP๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐ๊ฒฐ์ ์ ์งํ๋ค.
ํด๋ผ์ด์ธํธ 1-> 2 -> 3์ผ๋ก ์งํ๋ ๋ ์๋ฒ๋ ์ฐ๊ฒฐ๋ ์ํ๋ฅผ ์ ์งํ๊ธฐ ๋๋ฌธ์ ์์์ด ์๋ชจ๋จ
= ํด๋ผ์ด์ธํธ๊ฐ ๋๊ณ ์์ด๋ ๊ณ์ ์ฐ๊ฒฐํ๊ณ ์์
์์ ์ด ๋๋๋ฉด ์ฐ๊ฒฐ์ ๋์ด์ ์ต์ํ์ ์์์ ์ฌ์ฉํ๊ฒ ๋จ
TCP๋ IP๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐ๊ฒฐ์ ์ ์งํ๋ค.
์๋ฒ์ฐ๊ฒฐ์ด ์ฐ๊ฒฐ์ฑ์ ์ ์งํ๋ ๊ฒฝ์ฐ ๊ฐ๊ฐ์ ํด๋ผ์ด์ธํธ๋ฅผ ์งํํ ๋
์๋ฒ๋ ์ฐ๊ฒฐ๋ ์ํ๋ฅผ ์ ์งํ๊ธฐ ๋๋ฌธ์ ์์์ด ์๋ชจ๋๋ค.
= ํด๋ผ์ด์ธํธ๊ฐ ๋๊ณ ์์ด๋ ๊ณ์ ์ฐ๊ฒฐํ๊ณ ์์
HTTP๋ ๋น ์ฐ๊ฒฐ์ฑ์ ๊ธฐ๋ณธ์ผ๋ก ์งํํ๊ณ ์์ผ๋ฉฐ, ๋น ์ฐ๊ฒฐ์ฑ์ด๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ์์ ์ด ๋๋ ๊ฒฝ์ฐ ์ฐ๊ฒฐ์ ๋์ด์ ์ต์ํ์ ์์์ ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค.
๐ธ ๋น ์ฐ๊ฒฐ์ฑ
โข HTTP๋ ๊ธฐ๋ณธ์ด ์ฐ๊ฒฐ์ ์ ์งํ์ง ์๋ ๋ชจ๋ธ
โข ์ผ๋ฐ์ ์ผ๋ก ์ด ๋จ์์ ์ดํ์ ๋น ๋ฅธ ์๋๋ก ์๋ต
โข 1์๊ฐ ๋์ ์์ฒ๋ช ์ด ์๋น์ค๋ฅผ ์ฌ์ฉํด๋ ์ค์ ์๋ฒ์์ ๋์์ ์ฒ๋ฆฌํ๋ ์์ฒญ์ ์์ญ๊ฐ ์ดํ๋ก ๋งค์ฐ ์์
โข ์) ์น ๋ธ๋ผ์ฐ์ ์์ ๊ณ์ ์ฐ์ํด์ ๊ฒ์ ๋ฒํผ์ ๋๋ฅด์ง๋ ์๋๋ค.
โข ์๋ฒ ์์์ ๋งค์ฐ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์๐ธ๋น ์ฐ๊ฒฐ์ฑ ํ๊ณ์ ๊ทน๋ณต
โข TCP/IP ์ฐ๊ฒฐ์ ์๋ก ๋งบ์ด์ผ ํจ
๐ 3 way handshake ์๊ฐ ์ถ๊ฐ๋จ
โข ์น ๋ธ๋ผ์ฐ์ ๋ก ์ฌ์ดํธ๋ฅผ ์์ฒญํ๋ฉด HTML ๋ฟ๋ง ์๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ, css, ์ถ๊ฐ ์ด๋ฏธ์ง ๋ฑ๋ฑ ์ ๋ง์ ์์์ด ํจ๊ป ๋ค์ด๋ก๋ ํจ
๐ ๊ฐ๊ฐ ์ ๋ณด๋ฅผ ํ๋์ฉ ๋ค์ด๋ฐ๊ณ ์๋ฒ๋ฅผ ์ฌ์ฐ๊ฒฐํ๊ธฐ์ ๋ญ๋น์
๐ HTTP ์ง์ ์ฐ๊ฒฐ(Persistent Connections)๋ก ๋ฌธ์ ํด๊ฒฐ
โข HTTP/2, HTTP/3์์ ๋ ๋ง์ ์ต์ ํ๐ป HTTP ์ด๊ธฐ ์ฐ๊ฒฐ๋ญ๋น์ ํ์ฌ ์ฐ๊ฒฐ์ํ
๋๋ณด๊ธฐ์คํ์๋๋ ์์์
๐ธ์คํ ์ด์ค๋ฆฌ์ค๋ฅผ ๊ธฐ์ตํ์- ์๋ฒ ๊ฐ๋ฐ์๋ค์ด ์ด๋ ค์ํ๋ ์ ๋ฌด
โข ๊ฐ์ ์๊ฐ์ ๋ฑ ๋ง์ถ์ด ๋ฐ์ํ๋ ๋์ฉ๋ ํธ๋ํฝ
โข ์) ์ ์ฐฉ์ ์ด๋ฒคํธ, ๋ช ์ KTX ์์ฝ, ํ๊ณผ ์์ ๋ฑ๋ก
โข ์) ์ ๋ 6:00 ์ ์ฐฉ์ 1000๋ช ์นํจ ํ ์ธ ์ด๋ฒคํธ -> ์๋ง๋ช ๋์ ์์ฒญ๐ ์ด๋ป๊ฒ๋ ๋จธ๋ฆฌ๋ฅผ ์ฅ์ด ์ง์ ์ต๋ํ ์คํ ์ด์ค๋ฆฌ์คํ ์ค๊ณ๋ฅผ ๋ง๋๋๊ฒ์ด ์ค์ํ๋ค!
๐ธHTTP ๋ฉ์ธ์ง
์) HTTP ์์ฒญ ๋ฉ์์ง
GET /search?q=hello&hl=ko HTTP/1.1 Host: www.google.com
์) HTTP ์๋ต ๋ฉ์์ง
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423
<html>
<body>...</body>
</html>HTTP๋ ์์ฒญ๋ฉ์ธ์ง์ ์๋ต๋ฉ์ธ์ง์ ๊ตฌ์กฐ๊ฐ ๋ค๋ฅด๋ค.
๐ป ์์ ๋ผ์ธ1) ์์ฒญ ๋ฉ์์ง = request-line /
โข start-line = request-line / status-line
โข request-line = method SP(๊ณต๋ฐฑ) request-target SP HTTP-version CRLF(์ํฐ)
โข HTTP ๋ฉ์๋ (GET: ์กฐํ)
โข ์์ฒญ ๋์ (/search?q=hello&hl=ko)
โข HTTP Version2) ์์ฒญ ๋ฉ์์ง - HTTP ๋ฉ์๋
โข ์ข ๋ฅ: GET, POST, PUT, DELETE...
โข ์๋ฒ๊ฐ ์ํํด์ผ ํ ๋์ ์ง์
โข GET: ๋ฆฌ์์ค ์กฐํ
โข POST: ์์ฒญ ๋ด์ญ ์ฒ๋ฆฌ3) ์์ฒญ ๋ฉ์์ง - ์์ฒญ ๋์
โข absolute-path[?query] (์ ๋๊ฒฝ๋ก[?์ฟผ๋ฆฌ])
โข ์ ๋๊ฒฝ๋ก= "/" ๋ก ์์ํ๋ ๊ฒฝ๋ก
โข ์ฐธ๊ณ : *, http://...?x=y ์ ๊ฐ์ด ๋ค๋ฅธ ์ ํ์ ๊ฒฝ๋ก์ง์ ๋ฐฉ๋ฒ๋ ์๋ค
4) ์๋ต ๋ฉ์์ง = status-line
โข start-line = request-line / status-line
โข status-line = HTTP-version SP status-code SP reason-phrase CRLF
< HTTP ์ํ ์ฝ๋> : ์์ฒญ ์ฑ๊ณต, ์คํจ๋ฅผ ๋ํ๋
โข 200: ์ฑ๊ณต
โข 400: ํด๋ผ์ด์ธํธ ์์ฒญ ์ค๋ฅ
โข 500: ์๋ฒ ๋ด๋ถ ์ค๋ฅ
โข ์ด์ ๋ฌธ๊ตฌ: ์ฌ๋์ด ์ดํดํ ์ ์๋ ์งง์ ์ํ ์ฝ๋ ์ค๋ช ๊ธ
๐ธ HTTP ํค๋
โข HTTP ์ ์ก์ ํ์ํ ๋ชจ๋ ๋ถ๊ฐ์ ๋ณด
(๋ฉ์ธ์ง body๋นผ๊ณ ํ์ํ ๋ชจ๋ ์ ๋ณด๊ฐ ๋ค ๋ค์ด์๋ค๊ณ ๋ณด๋ฉด ๋จ)
โข ์) ๋ฉ์์ง ๋ฐ๋์ ๋ด์ฉ, ๋ฉ์์ง ๋ฐ๋์ ํฌ๊ธฐ, ์์ถ, ์ธ์ฆ, ์์ฒญ ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ ) ์ ๋ณด,
์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด, ์บ์ ๊ด๋ฆฌ ์ ๋ณด...
โข ํ์ค ํค๋๊ฐ ๋๋ฌด ๋ง์
โข https://en.wikipedia.org/wiki/List_of_HTTP_header_fields
โข ํ์์ ์์์ ํค๋ ์ถ๊ฐ ๊ฐ๋ฅ
โข helloworld: hihi๐ธ HTTP ๋ฉ์ธ์ง ๋ฐ๋
โข ์ค์ ์ ์กํ ๋ฐ์ดํฐ
โข HTML ๋ฌธ์, ์ด๋ฏธ์ง, ์์, JSON ๋ฑ๋ฑ byte๋ก ํํํ ์ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ ์ ์ก ๊ฐ๋ฅHTTP๋ ๋งค์ฐ ๋จ์ํด์ ํ์ฅ ๊ฐ๋ฅํ ๊ธฐ์ ๋ก ๋ง์ด ์ฌ์ฉํ๊ณ ์๋ค.
<์ ๋ฆฌ>
โข HTTP ๋ฉ์์ง์ ๋ชจ๋ ๊ฒ์ ์ ์กํ๋ค
โข HTTP ์ญ์ฌ HTTP/1.1์ ๊ธฐ์ค์ผ๋ก ํ์ตํ๋ฉด ๋๋ค.
โขํด๋ผ์ด์ธํธ ์๋ฒ ๊ตฌ์กฐ
โข ๋ฌด์ํ ํ๋กํ ์ฝ(์คํ ์ด์ค๋ฆฌ์ค)
โข HTTP ๋ฉ์์ง(์์๋ผ์ธ, ํค๋, ๋ฐ๋)
โข ๋จ์ํจ, ํ์ฅ ๊ฐ๋ฅ728x90'HTTP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ