[HTTP] 3.HTTP ๊ธฐ๋ณธ
1. ๋ชจ๋ ๊ฒ์ด HTTP
- HTML, TEXT
- IMAGE, ์์ฑ, ์์, ํ์ผ
- JSON, XML (API)
- ๊ฑฐ์ ๋ชจ๋ ํํ์ ๋ฐ์ดํฐ ์ ์ก ๊ฐ๋ฅ
- ์๋ฒ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋๋ ๋๋ถ๋ถ HTTP ์ฌ์ฉ
HTTP/1.1 ๋ฒ์ (1997)
- ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ
TCP ๊ธฐ๋ฐ : HTTP/1.1, HTTP/2
UDP ๊ธฐ๋ฐ : HTTP/3
-> 2,3 ์ ์ ์ฆ๊ฐ
ํ์ธํ๋๋ฒ : ํฌ๋กฌ - F12 - Network - ์ค๋ฅธ์ชฝ๋ฒํผ - ํ๋กํ ์ฝ
HTTP ํน์ง
- ํด๋ผ์ด์ธํธ ์๋ฒ ๊ตฌ์กฐ
- ๋ฌด์ํ ํ๋กํ ์ฝ(์คํ ์ด์ค ๋ฆฌ์ค), ๋น์ฐ๊ฒฐ์ฑ
- HTTP ๋ฉ์์ง
- ๋จ์ํจ, ํ์ฅ ๊ฐ๋ฅ
2. ํด๋ผ์ด์ธํธ ์๋ฒ ๊ตฌ์กฐ
- Request / Response ๊ตฌ์กฐ
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ต์ ๋๊ธฐ
- ์๋ฒ๊ฐ ์์ฒญ์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด์ ์๋ต
- ๋น์ฆ๋์ค ๋ก์ง, ๋ฐ์ดํฐ -> ์๋ฒ์ ๋ฐ์ด๋ฃ์ - UI, ์ฌ์ฉ์ฑ -> ํด๋ผ์ด์ธํธ์ ์ง์ค -> ์ด๋ ๊ฒํ๋ฉด ์๋ฒ์ ํด๋ผ์ด์ธํธ ๋ ๋ฆฝ์ ์ผ๋ก ์งํ ๊ฐ๋ฅ |
3. ๋ฌด์ํ ํ๋กํ ์ฝ (Stateless, ์คํ ์ด์ค๋ฆฌ์ค)
[HTTP๋ ๋ฌด์ํ ํ๋กํ ์ฝ ์งํฅ]
- ์๋ฒ : ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๋ณด์กด X
์ฅ์ ) ์๋ฒ ํ์ฅ์ฑ ๋์ (์ค์ผ์ผ ์์)
๋จ์ ) ํด๋ผ์ด์ธํธ ์ถ๊ฐ ๋ฐ์ดํฐ ์ ์ก
Stateful, Stateless ์ฐจ์ด
- Stateful : ์ํ ์ ์ง
- Stateless : ์ํ ์ ์ง X
[๋ฌด์ํ ์์]
- ์ํ์ ์ง : ์ค๊ฐ์ ๋ค๋ฅธ ์ ์์ผ๋ก ๋ฐ๋๋ฉด ์๋จ
(์ค๊ฐ์ ๋ค๋ฅธ ์ ์์ผ๋ก ๋ฐ๋ ๋ ์ํ ์ ๋ณด๋ฅผ ๋ค๋ฅธ ์ ์์๊ฒ ๋ฏธ๋ฆฌ ์๋ ค์ค์ผํจ)
- ๋ฌด์ํ : ์ค๊ฐ์ ๋ค๋ฅธ ์ ์์ผ๋ก ๋ฐ๋์ด๋ ๋จ
> ๊ฐ์๊ธฐ ๊ณ ๊ฐ์ด ์ฆ๊ฐํด๋ ์ ์ ๋๊ฑฐ ํฌ์ ๊ฐ๋ฅ
> ๊ฐ์๊ธฐ ํด๋ผ์ด์ธํธ ์์ฒญ์ด ์ฆ๊ฐํด๋ ์๋ฒ ๋๊ฑฐ ํฌ์ ๊ฐ๋ฅ
- ๋ฌด์ํ๋ ์๋ต ์๋ฒ๋ฅผ ์ฝ๊ฒ ๋ฐ๊ฟ ์ ์์ = ๋ฌดํํ ์๋ฒ ์ฆ์ค ๊ฐ๋ฅ
Stateless ์ค๋ฌด ํ๊ณ
- ๋ชจ๋ ๊ฒ์ ๋ฌด์ํ๋ก ์ค๊ณ ํ ์ ์๋ ๊ฒฝ์ฐ๋ ์๊ณ ์๋ ๊ฒฝ์ฐ๋ ์๋ค.
- ๋ฌด์ํ ์) ๋ก๊ทธ์ธ์ด ํ์์๋ ๋จ์ํ ์๋น์ค ์๊ฐ ํ๋ฉด
- ์ํ์ ์ง ์ ) ๋ก๊ทธ์ธ
- ๋ก๊ทธ์ธํ ์ฌ์ฉ์์ ๊ฒฝ์ฐ ๋ก๊ทธ์ธ ํ๋ค๋ ์ํ๋ฅผ ์๋ฒ์ ์ ์ง
- ์ผ๋ฐ์ ์ผ๋ก ๋ธ๋ผ์ฐ์ ์ฟ ํค์ ์๋ฒ ์ธ์ ๋ฑ์ ์ฌ์ฉํด์ ์ํ ์ ์ง
- ์ํ ์ ์ง๋ ์ต์ํ๋ง ์ฌ์ฉ
4. ๋น ์ฐ๊ฒฐ์ฑ (Connectionelss)
[HTTP๋ ๋ฌด์ํ ํ๋กํ ์ฝ ์งํฅ]
1) ์ฐ๊ฒฐ์ ์ ์งํ๋ ๋ชจ๋ธ (์๋ฒ-ํด๋ผ์ด์ธํธ)
- ์ฌ๋ฌ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ฐ๊ฒฐ ์ ์ง (์์ฒญ-์๋ต)
- ํด๋ผ์ด์ธํธ 3์ด ์ฐ๊ฒฐ ์์ฒญํ๋๋์ ํด๋ผ์ด์ธํธ1,2๋ ์ฐ๊ฒฐ์ด ์ ์ง๋๊ณ ์์
-> ์ฐ๊ฒฐ์ ์ ์งํ๋ ์๋ฒ์ ์์ ์๋ชจ
2) ์ฐ๊ฒฐ์ ์ ์งํ์ง ์๋ ๋ชจ๋ธ (์๋ฒ-ํด๋ผ์ด์ธํธ)
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญํ๊ณ ์๋ต์ ๋ฐ์ ํ ์ฐ๊ฒฐ์ด ๋์ด์ง
๋น ์ฐ๊ฒฐ์ฑ
- HTTP๋ ๊ธฐ๋ณธ์ด ์ฐ๊ฒฐ์ ์ ์งํ์ง ์๋ ๋ชจ๋ธ
- ์ผ๋ฐ์ ์ผ๋ก ์ด ๋จ์ ์ดํ์ ๋น ๋ฅธ ์๋๋ก ์๋ต
- 1์๊ฐ ๋์ ์์ฒ๋ช ์ด ์๋น์ค๋ฅผ ์ฌ์ฉํด๋ ์ค์ ์๋ฒ์์ ๋์์ ์ฒ๋ฆฌํ๋ ์์ฒญ์ ์์ญ๊ฐ ์ดํ๋ก ๋งค์ฐ ์์
ex) ์น ๋ธ๋ผ์ฐ์ ์์ ๊ณ์ ์ฐ์ํด์ ๊ฒ์ ๋ฒํผ์ ๋๋ฅด์ง ์๋๋ค
- ์๋ฒ ์์์ ๋งค์ฐ ํจ์จ์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
๋น ์ฐ๊ฒฐ์ฑ ํ๊ณ์ ๊ทน๋ณต
- TCP/IP ์ฐ๊ฒฐ์ ์๋ก ๋งบ์ด์ผ ํจ - 3way handshake ์๊ฐ ์ถ๊ฐ
- ์น ๋ธ๋ผ์ฐ์ ๋ก ์ฌ์ดํธ๋ฅผ ์์ฒญํ๋ฉด HTML ๋ฟ๋ง ์๋๋ผ, JS/css/์ถ๊ฐ์ด๋ฏธ์ง ๋ฑ ์ ๋ง์ ์์์ด ํจ๊ป ๋ค์ด๋ก๋
- ์ง๊ธ์ HTTP ์ง์ ์ฐ๊ฒฐ (Persistent Connections)๋ก ๋ฌธ์ ํด๊ฒฐ
- HTTP/2, HTTP/3์์ ๋ ๋ง์ ์ต์ ํ
HTTP ์ด๊ธฐ - ์ฐ๊ฒฐ, ์ข ๋ฃ ๋ญ๋น
HTTP ์ง์์ฐ๊ฒฐ(Persistent Connections) - ์ฐ๊ฒฐ-> ์์ฒญ/HTML์๋ต -> ์์ฒญ/JS์๋ต -> ์์ฒญ/์ด๋ฏธ์ง์๋ต -> ์ข ๋ฃ
Stateless ๊ธฐ์ตํ์
- ์๋ฒ ๊ฐ๋ฐ์๋ค์ด ์ด๋ ค์ํ๋ ์ ๋ฌด
- ๊ฐ์ ์๊ฐ์ ๋ฑ ๋ง์ถ์ด ๋ฐ์ํ๋ ๋์ฉ๋ ํธ๋ํฝ ex) ์ ์ฐฉ์ ์ด๋ฒคํธ, ๋ช ์ KTX, ์๊ฐ ์ ์ฒญ |
5. HTTP ๋ฉ์์ง
[HTTP ๋ฉ์์ง ๊ตฌ์กฐ]
[HTTP ์์ฒญ ๋ฉ์์ง]
- ์์ฒญ ๋ฉ์์ง๋ body ๋ณธ๋ฌธ์ ๊ฐ์ง ์ ์์
[HTTP ์๋ต ๋ฉ์์ง]
1) ์์๋ผ์ธ (start-line)
[์์ฒญ๋ฉ์์ง]
- ๊ตฌ์ฑ : request-line / status-line
- request-line = <1> method SP(๊ณต๋ฐฑ) <2> request-target SP <3> HTTP-version CRLF(์ํฐ)
<1> HTTP ๋ฉ์๋
- ์ข ๋ฅ : GET, POST, PUT, DELETE
- ์๋ฒ๊ฐ ์ํํด์ผํ ๋์ ์ง์
> GET : ๋ฆฌ์์ค ์กฐํ
> POST : ์์ฒญ ๋ด์ญ ์ฒ๋ฆฌ
<2> ์์ฒญ ๋์
- absolute-path[?query] (์ ๋๊ฒฝ๋ก[?์ฟผ๋ฆฌ])
* ์ ๋๊ฒฝ๋ก = "/"๋ก ์์ํ๋ ๊ฒฝ๋ก
<3> HTTP ๋ฒ์
[์๋ต๋ฉ์์ง]
- ๊ตฌ์ฑ : request-line / status-line
- status-line = HTTP-version SP status-code SP reason-phrase CRLF
<1> HTTP ๋ฒ์
- HTTP ์ํ ์ฝ๋ : ์์ฒญ ์ฑ๊ณต, ์คํจ๋ฅผ ๋ํ๋
- 200 : ์ฑ๊ณต - 400 : ํด๋ผ์ด์ธํธ ์์ฒญ ์ค๋ฅ - 500 : ์๋ฒ ๋ด๋ถ ์ค๋ฅ |
- ์ด์ ๋ฌธ๊ตฌ : ์ฌ๋์ด ์ดํดํ ์ ์๋ ์งง์ ์ํ ์ฝ๋ ์ค๋ช ๊ธ
2) HTTP ํค๋
- header-field = field-name ":" OWS field-value OWS (OWS : ๋์ด์ฐ๊ธฐ ํ์ฉ)
- filed-name์ ๋์๋ฌธ์ ๊ตฌ๋ถ ์์
์ฉ๋
- HTTP ์ ์ก์ ํ์ํ ๋ชจ๋ ๋ถ๊ฐ์ ๋ณด
- ex) ๋ฉ์์ง ๋ฐ๋์ ๋ด์ฉ, ๋ฉ์์ง ๋ฐ๋์ ํฌ๊ธฐ, ์์ถ, ์ธ์ฆ, ์์ฒญ ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ ) ์ ๋ณด, ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด, ์บ์ ๊ด๋ฆฌ ์ ๋ณด ๋ฑ
- ํ์ค ํค๋๊ฐ ๋๋ฌด ๋ง์
- ํ์์ ์์์ ํค๋ ์ถ๊ฐ ๊ฐ๋ฅ
3) ๋ฉ์์ง ๋ฐ๋
์ฉ๋
- ์ค์ ์ ์กํ ๋ฐ์ดํฐ
- HTML ๋ฌธ์, ์ด๋ฏธ์ง, ์์, JSON ๋ฑ byte๋ก ํํ ๊ฐ๋ฅํ ๋ชจ๋ ๋ฐ์ดํฐ ์ ์ก ๊ฐ๋ฅ
๋จ์ํจ + ํ์ฅ ๊ฐ๋ฅ
- HTTP๋ ๋จ์ํ๋ค
- HTTP ๋ฉ์์ง๋ ๋งค์ฐ ๋จ์
- ํฌ๊ฒ ์ฑ๊ณตํ๋ ํ์ค ๊ธฐ์ ์ ๋จ์ํ์ง๋ง ํ์ฅ ๊ฐ๋ฅํ ๊ธฐ์ !
'๐จโ๐ป Web Development > HTTP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[HTTP] 6.HTTP ์ํ์ฝ๋ (0) | 2023.03.03 |
---|---|
[HTTP] 5.HTTP ๋ฉ์๋ ํ์ฉ (0) | 2023.03.03 |
[HTTP] 4.HTTP ๋ฉ์๋ (0) | 2023.03.02 |
[HTTP] 2.URI์ ์น๋ธ๋ผ์ฐ์ ์์ฒญ ํ๋ฆ (0) | 2023.03.02 |
[HTTP] 1.์ธํฐ๋ท ๋คํธ์ํฌ (0) | 2023.03.02 |
์ต๊ทผ๋๊ธ