-
[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' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ