HTTP
Hyper Text Transfer Protocol
HTTP ๋ฉ์์ง์ ๋ชจ๋ ๊ฒ์ ์ ์ก
→ HTML, TEXT
→ IMAGE, ์์ฑ, ์์, ํ์ผ
→ JSON, XML (API)
→ ๊ฑฐ์ ๋ชจ๋ ํํ์ ๋ฐ์ดํฐ ์ ์ก ๊ฐ๋ฅ
→ ์๋ฒ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋๋ ๋๋ถ๋ถ HTTP ์ฌ์ฉ
์ง๊ธ์ HTTP ์๋๋ผ๊ณ ๋ ํ ์ ์๋ค.
HTTP ์ญ์ฌ
→ HTTP/0.9 1991๋ : GET ๋ฉ์๋๋ง ์ง์, HTTP ํค๋ X
→ HTTP/1.0 1996๋ : ๋ฉ์๋, ํค๋ ์ถ๊ฐ
→ HTTP/1.1 1997๋ : ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ, ์ฐ๋ฆฌ์๊ฒ ๊ฐ์ฅ ์ค์ํ ๋ฒ์
→ RFC2068 (1997) โท RFC2616 (1999) โท RFC7230~7235 (2014)
→ HTTP/2 2015๋ : ์ฑ๋ฅ ๊ฐ์
→ HTTP/3 ์งํ ์ค: TCP ๋์ ์ UDP ์ฌ์ฉ, ์ฑ๋ฅ ๊ฐ์
๊ธฐ๋ฐ ํ๋กํ ์ฝ
TCP : HTTP/1.1, HTTP/2
UDP : HTTP/3
→ ํ์ฌ HTTP/1.1 ์ฃผ๋ก ์ฌ์ฉ
→ HTTP/2, HTTP/3๋ ์ ์ ์ฆ๊ฐ
HTTP ํน์ง
→ ํด๋ผ์ด์ธํธ ์๋ฒ ๊ตฌ์กฐ
→ ๋ฌด์ํ ํ๋กํ ์ฝ(์คํ ์ด์ค๋ฆฌ์ค), ๋น์ฐ๊ฒฐ์ฑ
→ HTTP ๋ฉ์์ง
→ ๋จ์ํจ, ํ์ฅ ๊ฐ๋ฅ
ํด๋ผ์ด์ธํธ ์๋ฒ ๊ตฌ์กฐ
→ Request Response ๊ตฌ์กฐ
→ ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ , ์๋ต์ ๋๊ธฐ
→ ์๋ฒ๊ฐ ์์ฒญ์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด์ ์๋ต
๋ฌด์ํ ํ๋กํ ์ฝ
์คํ ์ด์ค๋ฆฌ์ค(Stateless)
์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๋ณด์กดํ์ง ์๋๋ค.
→ ์ฅ์ : ์๋ฒ ํ์ฅ์ฑ์ด ๋์ ( ์ค์ผ์ผ ์์ )
→ ๋จ์ : ํด๋ผ์ด์ธํธ๊ฐ ์ถ๊ฐ ๋ฐ์ดํฐ ์ ์ก
์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๋ณด์กดํ์ง ์๋๋ค๋ผ๋ ๋ง์ ์ดํดํ๊ธฐ ์ํด์๋ stateful๊ณผ stateless์ ์ฐจ์ด๋ฅผ ์์์ผ ํ๋ค.
์ํ ์ ์ง - Stateful
๊ณ ๊ฐ: ์ด ๋ ธํธ๋ถ ์ผ๋ง์ธ๊ฐ์?
์ ์: 100๋ง์ ์ ๋๋ค. (๋ ธํธ๋ถ ์ํ ์ ์ง)
๊ณ ๊ฐ: 2๊ฐ ๊ตฌ๋งคํ๊ฒ ์ต๋๋ค.
์ ์: 200๋ง์ ์ ๋๋ค. ์ ์ฉ์นด๋,ํ๊ธ์ค์ ์ด๋ค ๊ฑธ๋ก ๊ตฌ๋งค ํ์๊ฒ ์ด์? (๋ ธํธ๋ถ, 2๊ฐ ์ํ ์ ์ง)
๊ณ ๊ฐ: ์ ์ฉ์นด๋๋ก ๊ตฌ๋งคํ๊ฒ ์ต๋๋ค.
์ ์: 200๋ง์ ๊ฒฐ์ ์๋ฃ๋์์ต๋๋ค. (๋ ธํธ๋ถ,2๊ฐ,์ ์ฉ์นด๋ ์ํ ์ ์ง)
๋ฌด์ํ - Stateless
๊ณ ๊ฐ: ์ด ๋ ธํธ๋ถ ์ผ๋ง์ธ๊ฐ์?
์ ์1: 100๋ง์ ์ ๋๋ค.
๊ณ ๊ฐ: ๋ ธํธ๋ถ 2๊ฐ ๊ตฌ๋งคํ๊ฒ ์ต๋๋ค.
์ ์2: ๋ ธํธ๋ถ 2๊ฐ๋ 200๋ง์ ์ ๋๋ค. ์ ์ฉ์นด๋,ํ๊ธ์ค์ ์ด๋ค ๊ฑธ๋ก ๊ตฌ๋งคํ์๊ฒ ์ด์?
๊ณ ๊ฐ: ๋ ธํธ๋ถ 2๊ฐ๋ฅผ ์ ์ฉ์นด๋๋ก ๊ตฌ๋งคํ๊ฒ ์ต๋๋ค.
์ ์3: 200๋ง์ ๊ฒฐ์ ์๋ฃ๋์์ต๋๋ค.
์ํ์ ์ง์์๋ ๋ง์ฝ ์ค๊ฐ์ ๋ค๋ฅธ ์ ์์ผ๋ก ๋ฐ๋๋ค๋ฉด ๊ฐ๋ฐํ๋ ์ ์ฅ์์๋ ์ฅ์ ๊ฐ ์ผ์ด๋๋ค.
ํ์ง๋ง, ๋ฌด์ํ์์๋ ์ค๊ฐ์ ๋ค๋ฅธ ์ ์์ผ๋ก ๋ฐ๋์ด๋ ๊ณ ๊ฐ์ด ํ์ํ ์ ๋ณด๋ฅผ ๋ชจ๋ ๋๊ธฐ๊ธฐ ๋๋ฌธ์ ์ ์์ด ๋ฐ๋์ด๋ ์ฅ์ ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
Stateful, Stateless ์ฐจ์ด
→ ์ํ ์ ์ง : ์ค๊ฐ์ ๋ค๋ฅธ ์ ์์ผ๋ก ๋ฐ๋๋ฉด ์๋๋ค.
( ์ค๊ฐ์ ๋ค๋ฅธ ์ ์์ผ๋ก ๋ฐ๋ ๋ ์ํ ์ ๋ณด๋ฅผ ๋ค๋ฅธ ์ ์์๊ฒ ๋ฏธ๋ฆฌ ์๋ ค์ค์ผ ํ๋ค. )
→ ๋ฌด์ํ : ์ค๊ฐ์ ๋ค๋ฅธ ์ ์์ผ๋ก ๋ฐ๋์ด๋ ๋๋ค.
· ๊ฐ์๊ธฐ ๊ณ ๊ฐ์ด ์ฆ๊ฐํด๋ ์ ์์ ๋๊ฑฐ ํฌ์ ํ ์ ์๋ค.
· ๊ฐ์๊ธฐ ํด๋ผ์ด์ธํธ ์์ฒญ์ด ์ฆ๊ฐํด๋ ์๋ฒ๋ฅผ ๋๊ฑฐ ํฌ์ ํ ์ ์๋ค.
→ ๋ฌด์ํ๋ ์๋ต ์๋ฒ๋ฅผ ์ฝ๊ฒ ๋ฐ๊ฟ ์ ์๋ค. โท ๋ฌดํํ ์๋ฒ ์ฆ์ค ๊ฐ๋ฅ
ํ์ง๋ง ์ด๋ฌํ stateless๋ ํ๊ณ๊ฐ ์กด์ฌํ๋ค.
Stateless ์ค๋ฌด ํ๊ณ
· ๋ชจ๋ ๊ฒ์ ๋ฌด์ํ๋ก ์ค๊ณํ ์ ์๋ ๊ฒฝ์ฐ๋ ์๊ณ ์๋ ๊ฒฝ์ฐ๋ ์๋ค.
· ๋ฌด์ํ
· ์) ๋ก๊ทธ์ธ์ด ํ์ ์๋ ๋จ์ํ ์๋น์ค ์๊ฐ ํ๋ฉด
· ์ํ ์ ์ง
· ์) ๋ก๊ทธ์ธ
· ๋ก๊ทธ์ธํ ์ฌ์ฉ์์ ๊ฒฝ์ฐ ๋ก๊ทธ์ธํ๋ค๋ ์ํ๋ฅผ ์๋ฒ์ ์ ์ง
· ์ผ๋ฐ์ ์ผ๋ก ๋ธ๋ผ์ฐ์ ์ฟ ํค์ ์๋ฒ ์ธ์ ๋ฑ์ ์ฌ์ฉํด์ ์ํ ์ ์ง
· ์ํ ์ ์ง๋ ์ต์ํ๋ง ์ฌ์ฉ
๋น ์ฐ๊ฒฐ์ฑ(connectionless)
ํด๋ผ์ด์ธํธ1์ด ์๋ฒ์๊ฒ ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ต์ ๋ฐ์ผ๋ฉด ํด๋ผ์ด์ธํธ1๊ณผ ์๋ฒ๋ ์ฐ๊ฒฐ๋์ด์๋ค.
๊ทธ๋ฆฌ๊ณ , ํด๋ผ์ด์ธํธ2์ ์๋ฒ๊ฐ ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ต์ ๋ฐ์ผ๋ฉด ํด๋ผ์ด์ธํธ1๊ณผ ํด๋ผ์ด์ธํธ2๋ ์๋ฒ์ ์ฐ๊ฒฐ๋์ด์๋ค.
์ด๋ ๊ฒ ์๋ง์ ํด๋ผ์ด์ธํธ๊ฐ ํ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ต์ ๋ฐ์ ํ ์๋ฒ์ ์ฐ๊ฒฐ์ด ๋์ด์๋ค๋ฉด
๊ทธ ์๋ฒ๋ ์ด๋ฏธ ํ์ํ ์ ๋ณด๋ฅผ ๋ณด๋์์๋ ๋ถ๊ตฌํ๊ณ ๊ณ์ํด์ ์๋ง์ ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ์ ํด์ผ ํ ๊ฒ์ด๋ค.
๊ทธ๋ ๊ฒ ๋๋ค๋ฉด ์๋ฒ๋ ๊ณ์ํด์ ์์์ ์๋ชจํ๊ฒ ๋ ๊ฒ์ด๋ค.
ํ์ง๋ง, ํด๋ผ์ด์ธํธ1์ด ์๋ฒ์๊ฒ ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ต์ ๋ฐ๋ ์ฆ์ ์ฐ๊ฒฐ์ ํด์ ํ๋ค๋ฉด
์๋ฌด๋ฆฌ ๋ง์ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ์ฐ๊ฒฐ์ ํด๋ ์๋ฒ์ ์์์ ์ต์ํ์ผ๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ด์ฐฎ์ ๊ฒ์ด๋ค.
๋น ์ฐ๊ฒฐ์ฑ
· HTTP๋ ๊ธฐ๋ณธ์ด ์ฐ๊ฒฐ์ ์ ์งํ์ง ์๋ ๋ชจ๋ธ
· ์ผ๋ฐ์ ์ผ๋ก ์ด ๋จ์์ ์ดํ์ ๋น ๋ฅธ ์๋๋ก ์๋ต
· 1์๊ฐ ๋์ ์์ฒ ๋ช ์ด ์๋น์ค๋ฅผ ์ฌ์ฉํด๋ ์ค์ ์๋ฒ์์ ๋์์ ์ฒ๋ฆฌํ๋ ์์ฒญ์ ์์ญ ๊ฐ ์ดํ๋ก ๋งค์ฐ ์์
· ์) ์น ๋ธ๋ผ์ฐ์ ์์ ๊ณ์ ์ฐ์ํด์ ๊ฒ์ ๋ฒํผ์ ๋๋ฅด์ง๋ ์๋๋ค.
· ์๋ฒ ์์์ ๋งค์ฐ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์
ํ์ง๋ง ์ด๋ฌํ ๋น ์ฐ๊ฒฐ์ฑ๋ ๋จ์ ์ด ์กด์ฌํ๋ค.
๋น ์ฐ๊ฒฐ์ฑ ํ๊ณ์ ๊ทน๋ณต
· TCP/IP ์ฐ๊ฒฐ์ ์๋ก ๋งบ์ด์ผ ํจ - 3 way handshake ์๊ฐ ์ถ๊ฐ
· ์น ๋ธ๋ผ์ฐ์ ๋ก ์ฌ์ดํธ๋ฅผ ์์ฒญํ๋ฉด HTML ๋ฟ๋ง ์๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ, css, ์ถ๊ฐ ์ด๋ฏธ์ง ๋ฑ
์๋ง์ ์์์ด ํจ๊ป ๋ค์ด๋ก๋
· ์ง๊ธ์ HTTP ์ง์ ์ฐ๊ฒฐ(Persistent Connections)๋ก ๋ฌธ์ ํด๊ฒฐ
· HTTP/2, HTTP/3์์ ๋ ๋ง์ ์ต์ ํ
์ฌ๊ธฐ์ ์ง์ ์ฐ๊ฒฐ(Persistent Connections)์ ์์ ์๋ ํด๋ผ์ด์ธํธ์์ ์๋ฒ์๊ฒ ์์ฒญ์ ๋ณด๋ด์
HTMLํ์ผ์ ๋ฐ๊ณ ์ฐ๊ฒฐ์ ์ข ๋ฃํ๊ณ , HTML์ ๋๋๋ง์ ํ๋๋ฐ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ํ์ํด์ ๋ค์ ์๋ฒ์๊ฒ ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ต์ ๋ฐ๊ณ , ๋ ๋๋๋ง์ ํ๋ค๋ณด๋ ์ด๋ฏธ์ง๊ฐ ํ์ํด์ ๋ค์ ์์ฒญ/์๋ต์ ๋ฐ๋ณตํ๋ค.
์ด๋ ๊ฒ ์งํํ๋ฉด ์์ฒญ๊ณผ ์๋ต์ ๋ฐ๋ ์๊ฐ ๊ณ์ ์ถ๊ฐ๊ฐ ๋๊ธฐ ๋๋ฌธ์ ๋๋๋ง์ ํ๋๋ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค.
ํ์ง๋ง HTTP ์ง์ ์ฐ๊ฒฐ์ ์ฌ์ฉํ๋ฉด ํ ๋ฒ์ ์ฐ๊ฒฐ๋ก HTML์๋ต, ์๋ฐ์คํฌ๋ฆฝํธ ์๋ต, ์ด๋ฏธ์ง ์๋ต์ ๋ชจ๋ ์ฒ๋ฆฌํ๊ณ ์ข ๋ฃ๋ฅผ ํ๊ฒ ๋๋ค. ์ด๋ ๊ฒ ํด์ ๋ฐ๋ณต์ ์ธ ์์ฒญ/์๋ต ์๊ฐ์ ์ค์ฌ์ ํจ์ฌ ๋น ๋ฅธ ์๋๋ก ๋๋๋ง ํ๊ฒ ๋๋ค.
์ด๋ฌํ ์ง์ ์ฐ๊ฒฐ์ HTTP/2์ HTTP/3์์ ๋ ๋ง์ด ์ต์ ํ๊ฐ ๋์๋ค.
HTTP/3์์๋ UDP๋ฅผ ์ฌ์ฉํ๋ฉด์ ์ฐ๊ฒฐํ๋ ์๊ฐ์กฐ์ฐจ๋ ๋จ์ถํ๊ฒ ๋์๋ค
์คํ ์ด์ค๋ฆฌ์ค๋ฅผ ๊ธฐ์ตํ์
์๋ฒ ๊ฐ๋ฐ์๋ค์ด ์ด๋ ค์ํ๋ ์ ๋ฌด
· ์ ๋ง ๊ฐ์ ์๊ฐ์ ๋ฑ ๋ง์ถ์ด ๋ฐ์ํ๋ ๋์ฉ๋ ํธ๋ํฝ
์) ์ ์ฐฉ์ ์ด๋ฒคํธ, ๋ช ์ KTX ์์ฝ, ํ๊ณผ ์์ ๋ฑ๋ก
์) ์ ๋ 6:00 ์ ์ฐฉ์ 1000๋ช ์นํจ ํ ์ธ ์ด๋ฒคํธ → ์๋ง ๋ช ๋์ ์์ฒญ
์คํ ์ด์ค๋ฆฌ์คํ ๋ฐฉ์์ผ๋ก ์๋ฒ๋ฅผ ์ค๊ณํด์ผ ํ๋ค.
๋ฌด์ํ๋ก ๊ฐ์์๋๊ฑด ์ต๋ํ ๋ฌด์ํ๋ก ๊ฐ๊ณ , ์ด์ฉ ์ ์๋ ๋ถ๋ถ์ ํํด์๋ง ์ํ ์ ์ง๋ฅผ ํ๋๋ก ํด์ผ ํ๋ค.
HTTP ๋ฉ์์ง
HTTP๋ฉ์์ง์ ๊ตฌ์กฐ๋ ์ ์ด๋ฏธ์ง์ ๊ฐ๋ค.
์์๋ผ์ธ, ํค๋, ๊ณต๋ฐฑ ๋ผ์ธ(CRLF), message body ์ด๋ ๊ฒ ๊ตฌ์กฐ๋ฅผ ์ด๋ฃจ๊ณ ์๋ค.
์์ ๋ผ์ธ
์์ฒญ ๋ฉ์์ง
· start-line = request-line / status-line
· request-line = method SP(๊ณต๋ฐฑ) request-target SP HTTP-version CRLF(์ํฐ)
· HTTP ๋ฉ์๋ (GET: ์กฐํ)
· ์์ฒญ ๋์ (/search?q=hello&hl=ko)
· HTTP Version
์์ฒญ ๋ฉ์์ง - HTTP ๋ฉ์๋
· ์ข ๋ฅ:GET,POST,PUT,DELETE...
· ์๋ฒ๊ฐ ์ํํด์ผ ํ ๋์ ์ง์
· GET: ๋ฆฌ์์ค ์กฐํ
· POST: ์์ฒญ ๋ด์ญ ์ฒ๋ฆฌ
์์ฒญ ๋ฉ์์ง - ์์ฒญ ๋์
· absolute-path[?query](์ ๋๊ฒฝ๋ก[?์ฟผ๋ฆฌ])
· ์ ๋๊ฒฝ๋ก="/"๋ก ์์ํ๋ ๊ฒฝ๋ก
· ์ฐธ๊ณ : *,http://...?x=y ์ ๊ฐ์ด ๋ค๋ฅธ ์ ํ์ ๊ฒฝ๋ก์ง์ ๋ฐฉ๋ฒ๋ ์๋ค.
์์ฒญ ๋ฉ์์ง - HTTP ๋ฒ์
· HTTP Version
์๋ต ๋ฉ์์ง
· start-line = request-line / status-line
· status-line = HTTP-version SP status-code SP reason-phrase CRLF
· HTTP ๋ฒ์
· HTTP ์ํ ์ฝ๋:์์ฒญ ์ฑ๊ณต, ์คํจ๋ฅผ ๋ํ๋
· 200: ์ฑ๊ณต
· 400: ํด๋ผ์ด์ธํธ ์์ฒญ ์ค๋ฅ
· 500: ์๋ฒ ๋ด๋ถ ์ค๋ฅ
· ์ด์ ๋ฌธ๊ตฌ: ์ฌ๋์ด ์ดํดํ ์ ์๋ ์งง์ ์ํ ์ฝ๋ ์ค๋ช
HTTP ํค๋
· header-field = field-name":" OWS field-value OWS (OWS:๋์ด์ฐ๊ธฐ ํ์ฉ)
· field-name์ ๋์๋ฌธ์ ๊ตฌ๋ฌธ ์์
HTTP ํค๋ - ์ฉ๋
· HTTP ์ ์ก์ ํ์ํ ๋ชจ๋ ๋ถ๊ฐ์ ๋ณด
์) ๋ฉ์์ง ๋ฐ๋์ ๋ด์ฉ, ๋ฉ์์ง ๋ฐ๋์ ํฌ๊ธฐ, ์์ถ, ์ธ์ฆ, ์์ฒญ ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ ) ์ ๋ณด,
์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด, ์บ์ ๊ด๋ฆฌ ์ ๋ณด...
· ํ์ค ํค๋๊ฐ ๋๋ฌด ๋ง์
· https://en.wikipedia.org/wiki/List of HTTP header fields
· ํ์์ ์์์ ํค๋ ์ถ๊ฐ ๊ฐ๋ฅ
· helloworld:hihi
HTTP ๋ฉ์์ง ๋ฐ๋ - ์ฉ๋
· ์ค์ ์ ์กํ ๋ฐ์ดํฐ
· HTML๋ฌธ์, ์ด๋ฏธ์ง, ์์, JSON ๋ฑ๋ฑ byte๋ก ํํํ ์ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ ์ ์ก ๊ฐ๋ฅ
HTTP๋ ๋งค์ฐ ๋จ์ํ๊ณ , HTTP ๋ฉ์์ง ๋ํ ๋งค์ฐ ๋จ์ํ๋ค.
์ด๋ ๊ฒ ํฌ๊ฒ ์ฑ๊ณตํ๋ ํ์ค ๊ธฐ์ ์ ๋จ์ํ์ง๋ง ํ์ฅ ๊ฐ๋ฅํ ๊ธฐ์ ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
์ถ์ฒ: [์ธํ๋ฐ]๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP ์น ๊ธฐ๋ณธ ์ง์
'๐ Web > HTTP ์น ๊ธฐ๋ณธ ์ง์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[HTTP]HTTP ํค๋2 - ์บ์์ ์กฐ๊ฑด๋ถ ์์ฒญ (0) | 2022.10.21 |
---|---|
[HTTP]HTTP ํค๋1 - ์ผ๋ฐ ํค๋ (0) | 2022.10.21 |
[HTTP]HTTP ์ํ์ฝ๋ (0) | 2022.10.20 |
[HTTP]HTTP ๋ฉ์๋ (0) | 2022.10.20 |
[HTTP]์ธํฐ๋ท ๋คํธ์ํฌ (0) | 2022.10.19 |