[ํผ์ ๊ณต๋ถํ๋ ๋คํธ์ํฌ] 5. ์์ฉ ๊ณ์ธต
DNS์ ์์
๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด์๋,
- ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์ก์์ ์ง ํ์ → IP ์ฃผ์, ๋๋ฉ์ธ ๋ค์
- ์ก์์ ํ๊ณ ์ ํ๋ ์ ๋ณด ํ์ → ์์
๋๋ฉ์ธ ๋ค์๊ณผ ๋ค์ ์๋ฒ
IP ์ฃผ์๋ง์ผ๋ก ์ก์์ ์ง ํน์ ํ๋ ๊ฒ์ ๋ฒ๊ฑฐ๋ก์
- ํต์ ํ๊ณ ์ ํ๋ ๋ชจ๋ ํธ์คํธ์ IP ์ฃผ์ ๊ธฐ์ตํ๊ธฐ ์ด๋ ค์
- IP ์ฃผ์๋ ์ธ์ ๋ ๋ฐ๋ ์๋ ์์
๊ทธ๋์ ์๋ ํธ์คํธ ํน์ ์ ์ํด ๋๋ฉ์ธ ๋ค์์ ์ฌ์ฉ
๋๋ฉ์ธ ๋ค์( = ์ ํ๋ฒํธ์ ๋์ํ๋ ์ฌ์ฉ์ ์ด๋ฆ): ํธ์คํธ์ IP ์ฃผ์์ ๋์๋๋ ๋ฌธ์์ด ํํ์ ํธ์คํธ ํน์ ์ ๋ณด
ex) www.example.com
- ๋๋ฉ์ธ ๋ค์์ ๋ค์ ์๋ฒ(DNS ์๋ฒ)์์ ๊ด๋ฆฌ๋จ(= ๊ณต์ฉ ์ ํ๋ฒํธ๋ถ)
- IP ์ฃผ์๊ฐ ๋ณ๊ฒฝ๋์ด๋ ๋๋ฉ์ธ ๋ค์ ๋ค์ ๋์ํ๋ฉด ๊ทธ๋ง
- hosts ํ์ผ: ํธ์คํธ๋ง๋ค ๋๋ฉ์ธ ๋ค์๊ณผ IP ์ฃผ์์ ๋์ ๊ด๊ณ๋ฅผ ๋ด์ ํ์ผ(= ๊ฐ์ธ ์ ํ๋ฒํธ๋ถ)
- hosts ํ์ผ ์์น: ๋งฅOS๋ ๋ฆฌ๋ ์ค(/etc/hosts), ์๋์ฐ(%SystemRoot%๏ฟฆSystem32๏ฟฆdrivers๏ฟฆetc๏ฟฆhosts)
๋ค์ ์๋ฒ์ ๊ด๋ฆฌ
๋ค์ ์๋ฒ๋ ์ (.)์ ๊ธฐ์ค์ผ๋ก ๊ณ์ธต์ ์ผ๋ก ๋ถ๋ฅํจ

- ๋ฃจํธ ๋๋ฉ์ธ(root domain)
- ์ต์์ ๋๋ฉ์ธ(TLD;Top-Level Domain)
- 2๋จ๊ณ ๋๋ฉ์ธ, 3๋จ๊ณ ๋๋ฉ์ธ, 4๋จ๊ณ ๋๋ฉ์ธ, ...
[๋ค์ ์๋ฒ๊ฐ ์ ์ฅํ๋ ๋ด์ฉ]
๋ค์ ์๋ฒ๋ DNS ์์ ๋ ์ฝ๋(DNS resource record)๋ฅผ ์ ์ฅํจ
- DNS ์์ ๋ ์ฝ๋ = ์ด๋ฆ(ํธ์คํธ ์ด๋ฆ), ๊ฐ(value), TTL, ๋ ์ฝ๋ ์ ํ, ๋ฑ
- ์น ์๋น์ค๋ฅผ ๋ฐฐํฌํ ๋, ๋จผ์ ๋๋ฉ์ธ ๋ค์์ ๊ตฌ์ ํ ํ, ํด๋น ๋๋ฉ์ธ ๋ค์๊ณผ IP ์ฃผ์๊ฐ ๋์๋จ์ ๋ค์ ์๋ฒ์ ์๋ ค์ผ ํจ
- ์ด๋ฅผ ์ํด ๋ง๋ค์ด์ผ ํ๋ ์ ๋ณด๊ฐ DNS ์์ ๋ ์ฝ๋์
- ex) ๋ค์ ์๋ฒ์ example.com์ ์ง์ํ๋ฉด 1.2.3.4 ์๋ต, DNS ์บ์๋ 300์ด๊ฐ ์ ์ฅ
www.example.com์ ์ง์ํ๋ฉด 1.2.3.4 ์๋ต
| ํ์ | ์ด๋ฆ | ๊ฐ | TTL |
| A | example.com | 1.2.3.4 | 300 |
| CNAME | www.example.com | example.com | 300 |
- ๋ ์ฝ๋ ์ ํ: ๋ ์ฝ๋ ์ ํ์ด ๋ฌ๋ผ์ง๋ฉด ๋ ์ฝ๋ ์ด๋ฆ๊ณผ ๊ฐ์ ์๋ฏธ๊ฐ ๋ฌ๋ผ์ง
| ๋ ์ฝ๋ ์ ํ | ์ค๋ช |
| A | ํน์ ํธ์คํธ์ ๋ํ ๋๋ฉ์ธ ๋ค์๊ณผ IPv4 ์ฃผ์์์ ๋์ ๊ด๊ณ |
| AAAA | ํน์ ํธ์คํธ์ ๋ํ ๋๋ฉ์ธ ๋ค์๊ณผ IPv6 ์ฃผ์์์ ๋์ ๊ด๊ณ |
| CNAME | ํธ์คํธ ๋ค์์ ๋ํ ๋ณ์นญ ์ง์ |
| NS | ํน์ ํธ์คํธ์ IP ์ฃผ์๋ฅผ ์ฐพ์ ์ ์๋ ๋ค์ ์๋ฒ |
| MX | ํด๋น ๋๋ฉ์ธ๊ณผ ์ฐ๋๋์ด ์๋ ๋ฉ์ผ ์๋ฒ |
์ ์ฒด ์ฃผ์ ๋๋ฉ์ธ ๋ค์(FQDN; Fully-Qualified Domain Name): ์ ์ฒด ๋๋ฉ์ธ ๊ณ์ธต์ ๋ชจ๋ ํฌํจํ๋ ๋๋ฉ์ธ ๋ค์
- FQDN๊น์ง ์๋ฉด ๋น๋ก์ ํ๋์ ํธ์คํธ๋ฅผ ์๋ณํ ์ ์๊ฒ ๋จ

์๋ธ ๋๋ฉ์ธ(subdomain): ๋ค๋ฅธ ๋๋ฉ์ธ์ด ํฌํจ๋ ๋๋ฉ์ธ
ex) google.com์ ์๋ธ ๋๋ฉ์ธ: mail.google.com, www.google.com, drive.google.com
๊ณ์ธต์ ๋๋ฉ์ธ ๋ค์
- ์ด๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ๋ค์ ์๋ฒ ๋๋ ๊ณ์ธต์ ์ผ๋ก ๊ด๋ฆฌ๋จ
- ๋ค์ ์๋ฒ๋ ์ ์ธ๊ณ ์ฌ๋ฌ ๊ตฐ๋ฐ ๋ถ์ฐ๋์ด ์์น๋์ด ์์
๊ณ์ธต์ ์ด๊ณ ๋ถ์ฐ๋ ๋๋ฉ์ธ ๋ค์์ ๋ํ ๊ด๋ฆฌ ์ฒด๊ณ = Domain Name System, DNS
๊ณ์ธต์ ๋ค์ ์๋ฒ
๋๋ฉ์ธ ๋ค์์ ๋์ํ๋ IP ์ฃผ์๋ฅผ ์์๋ด๋ ๊ณผ์
- ๋๋ฉ์ธ ๋ค์์ ํ์ด(resolve)ํ๋ค
- ๊ณ์ธต์ ์ด๊ณ ๋ถ์ฐ๋ ๋ค์ ์๋ฒ๋ค์ด ์ฌ์ฉ๋จ
- ์ฃผ์ ๋ค์ ์๋ฒ์ ์ ํ: ๋ก์ปฌ ๋ค์ ์๋ฒ, ๋ฃจํธ ๋ค์ ์๋ฒ, TLD ๋ค์ ์๋ฒ, ์ฑ ์ ๋ค์ ์๋ฒ

1. ๋ก์ปฌ ๋ค์ ์๋ฒ(local name server)
- ํด๋ผ์ด์ธํธ์ ๋ง๋ฟ์ ์๋ ๋ค์ ์๋ฒ
- ํด๋ผ์ด์ธํธ๊ฐ ๋๋ฉ์ธ ๋ค์์ ํตํด IP ์ฃผ์๋ฅผ ์์๋ด๊ณ ์ ํ ๋ ๊ฐ์ฅ ๋จผ์ ์ฐพ๊ฒ ๋๋ ๋ค์ ์๋ฒ
- ๋ก์ปฌ ๋ค์ ์๋ฒ์ ์ฃผ์๋ ์ผ๋ฐ์ ์ผ๋ก ISP์์ ํ ๋น
- ๊ณต๊ฐ DNS ์๋ฒ public DNS Server๋ฅผ ์ด์ฉํ ์๋ ์์ ex) ๊ตฌ๊ธ์ 8.8.8.8, 8.8.4.4
- ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์์ฒญ๋ฐ์ ๋๋ฉ์ธ ๋ค์์ด ์ฒ์ ๋ณด๋ ๋๋ฉ์ธ ๋ค์์ด๋ฉด, ๋ฃจํธ ๋ค์ ์๋ฒํํ ์ง์ํจ
2. ๋ฃจํธ ๋ค์ ์๋ฒ(root name server)
- ๋ฃจํธ ๋๋ฉ์ธ์ ๊ด์ฅํ๋ ๋ค์ ์๋ฒ
- ๋ก์ปฌ ๋ค์ ์๋ฒ๊ฐ ๋์๋๋ IP ์ฃผ์๋ฅผ ๋ชจ๋ฅผ ๊ฒฝ์ฐ
- TLD ๋ค์ ์๋ฒ์ IP ์ฃผ์๋ฅผ ๋ฐํํ ์ ์์

3. TLD ๋ค์ ์๋ฒ
- TLD๋ฅผ ๊ด๋ฆฌํ๋ ๋ค์ ์๋ฒ
- DNS ์ง์์ ๋ํด TLD์ ํ์ ๋๋ฉ์ธ ๋ค์์ ๊ด๋ฆฌํ๋ ๋ค์ ์๋ฒ ์ฃผ์ ๋ฐํ
- ํ์ ๋๋ฉ์ธ ๋ค์์ ๊ด๋ฆฌํ๋ ๋ค์ ์๋ฒ๋ ๊ทธ๋ณด๋ค ํ์ ๋๋ฉ์ธ ๋ค์์ ๊ด๋ฆฌํ๋ ๋ค์ ์๋ฒ ์ฃผ์ ๋ฐํ

4. ์ฑ ์ ๋ค์ ์๋ฒ(authoritative name server)
- ํน์ ๋๋ฉ์ธ ์์ญ(zone)์ ๊ด๋ฆฌํ๋ ๋ค์ ์๋ฒ
- ๋ค๋ฅธ ๋ค์ ์๋ฒ์๊ฒ ๋ ๋๊ธฐ์ง ์๊ณ ๊ณง๋ฐ๋ก ๋ตํ ์ ์๋ ๋ค์ ์๋ฒ
- ์ฆ, ์ฑ ์ ๋ค์ ์๋ฒ๋ ๋ก์ปฌ ๋ค์ ์๋ฒ๊ฐ ๋ง์ง๋ง์ผ๋ก ์ง์ํ๋ ๋ค์ ์๋ฒ
- ์ผ๋ฐ์ ์ผ๋ก ๋ก์ปฌ ๋ค์ ์๋ฒ๋ ์ฑ ์ ๋ค์ ์๋ฒ๋ก๋ถํฐ ์ํ๋ IP ์ฃผ์๋ฅผ ์ป์ด๋
๋ค์ ์๋ฒ์ ๊ณ์ธต์ ๊ตฌ์กฐ๋ฅผ ํ ๋๋ก IP ์ฃผ์๋ฅผ ์์๋ด๋ ๊ณผ์
1. ์ฌ๊ท์ ์ง์(recursive query)
- ํด๋ผ์ด์ธํธ → ๋ก์ปฌ ๋ค์ ์๋ฒ → ๋ฃจํธ ๋ค์ ์๋ฒ → TLD ๋ค์ ์๋ฒ → ์ฑ ์ ๋ค์ ์๋ฒ์๊ฒ ์ง์
- ์ต์ข ์๋ต ๊ฒฐ๊ณผ๋ฅผ ์ญ์์ผ๋ก ์ ๋ฌ

2. ๋ฐ๋ณต์ ์ง์(iterative query)
- ๋ค์ ์๋ฒ์ ์ผ์ผ์ด ์ง์-์๋ต ๋ฐ๋ณต
- ์ต์ข ์๋ต ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌ

์ฌ๊ท์ ์ง์์ ๋ฐ๋ณต์ ์ง์๋ก IP ์ฃผ์๋ฅผ ์์๋ด๋ ๊ณผ์ ์ ๋ฌธ์ ๊ฐ ์กด์ฌํจ.
- ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๊ณ ๋คํธ์ํฌ์์ ๋ฉ์์ง ์๊ฐ ์ง๋์น๊ฒ ๋์ด๋ ์ ์์
- ๋ฃจํธ ๋ค์ ์๋ฒ์ ๊ณผ๋ถํ ์ฐ๋ ค
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ฒ์ด DNS ์บ์(DNS cache)์
DNS ์บ์(DNS cache)
๋ค์ ์๋ฒ๋ค์ด ๊ธฐ์กด์ ์๋ต๋ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์์๋ก ์ ์ฅํ๋ค๊ฐ ์ถํ ๊ฐ์ ์ง์์ ์ด๋ฅผ ํ์ฉํ๋ ๊ฒ
- DNS ์บ์๋ฅผ ์ ์ฅํ๋ ์ฉ๋๋ก๋ง ์ฌ์ฉ๋๋ ์๋ฒ๋ ์์
- DNS ์บ์๋ฅผ ํ์ฉํ๋ฉด ๋ ์งง์ ์๊ฐ ์์ ์ํ๋ IP ์ฃผ์๋ฅผ ์ป์ด๋ผ ์ ์์
- DNS ์บ์๋ ์์ํ ๋จ์์๋ ๊ฒ์ ์๋
- ์์ ์ ์ฅ๋ ๊ฐ์ TTL(Time To Live: ์บ์๋ ์ ์๋ ์๊ฐ) ๊ฐ๊ณผ ํจ๊ป ์ ์ฅ๋จ
์์์ ์๋ณํ๋ URI
์์(resource): ๋คํธ์ํฌ์์ ๋ฉ์์ง๋ฅผ ํตํด ์ฃผ๊ณ ๋ฐ๋ ๋์
- ๋ ํธ์คํธ๊ฐ ๋คํธ์ํฌ๋ฅผ ํตํด ์๋ก ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋, ์ก์์ ํ๋ ๋์ ex) HTML ํ์ผ, ์ด๋ฏธ์ง๋ ๋์์ ํ์ผ, ํ ์คํธ ํ์ผ ๋ฑ
- ์์์ 'HTTP ์์ฒญ ๋ฉ์์ง์ ๋์'์ด๋ผ ๋ณด๊ธฐ๋ํจ
URI(Uniform Resource Ideontifier)
์์์ ์๋ณํ ์ ์๋ ์ ๋ณด
1. URL(Uniform Resource Locator): ์์น๋ฅผ ์ด์ฉํด ์์์ ์๋ณ
- ์ค๋๋ ์ธํฐ๋ท ํ๊ฒฝ์์ ์์ ์๋ณ์ ๋ ๋ง์ด ์ฌ์ฉ๋๋ ์๋ณ์

[URL ๊ตฌ์กฐ]
โ scheme: URL์ ์ฒซ ๋ถ๋ถ์ผ๋ก์จ, '์์์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ'์ ์๋ฏธ
- ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ ํ๋กํ ์ฝ์ด ๋ช
์
- HTTP๋ฅผ ์ฌ์ฉํ์ฌ ์์์ ์ ๊ทผํ ๋๋ http://๋ฅผ
- HTTPS๋ฅผ ์ฌ์ฉํ์ฌ ์์์ ์ ๊ทผํ ๋๋ https://๋ฅผ ์ฌ์ฉ
โก authority: 'ํธ์คํธ๋ฅผ ํน์ ํ ์ ์๋ ์ ๋ณด', ์ด๋ฅผํ ๋ฉด IP ์ฃผ์ ํน์ ๋๋ฉ์ธ ๋ค์์ด ๋ช ์
- ์ฝ๋ก (:) ๋ค์ ํฌํธ ๋ฒํธ๋ฅผ ๋ง๋ถ์ผ ์๋ ์์
โข path: '์์์ด ์์นํ ๊ฒฝ๋ก'๊ฐ ๋ช ์
- ์์์ ์์น๋ ์ฌ๋์(/)๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ณ์ธต์ ์ผ๋ก ํํ๋๊ณ , ์ต์์ ๊ฒฝ๋ก ๋ํ ์ฌ๋์๋ก ํํ
โฃ query: HTTP๋ ์์ฒญ-์๋ต ๊ธฐ๋ฐ์ ํ๋กํ ์ฝ
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ์๊ฒ URI(URL)๊ฐ ํฌํจ๋ HTTP ์์ฒญ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ ,
- HTTP ์๋ฒ๋ ์ด์ ๋ํด HTTP ์๋ต ๋ฉ์์ง๋ฅผ ๋ณด๋

- ์ด๋ฐ ์์ฒญ์ scheme, authority, path๋ง์ผ๋ก ์ด๋ป๊ฒ ํํํ ์ ์์๊น? ex: ๊ฒ์ ๊ฒฐ๊ณผ, ์ ๋ ฌ ๊ฒฐ๊ณผ

- ์ด๋ด ๋ ์ฌ์ฉํ๋ ์ฟผ๋ฆฌ ๋ฌธ์์ด(query string), ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ(query parameter)๋ผ๊ณ ๋ ๋ถ๋ฆ
- ๋ฌผ์ํ(?)๋ก ์์๋๋ <ํค, ๊ฐ> ํํ์ ๋ฐ์ดํฐ
- ์ฐํผ์๋(&)๋ก ์ฌ๋ฌ ์ฟผ๋ฆฌ ๋ฌธ์์ด์ ๋ง๋ถ์ผ ์ ์์
- ex) http://example.com/random/path?query=value&query2=value2
- ๊ฐ๋ฐ์๊ฐ ์ค๊ณํ๊ธฐ ๋๋ฆ์
โค fragment: '์์์ ํ ์กฐ๊ฐ์ ๊ฐ๋ฆฌํค๊ธฐ ์ํ ์ ๋ณด'
- HTML ํ์ผ๊ณผ ๊ฐ์ ์์์์ ํน์ ๋ถ๋ถ์ ๊ฐ๋ฆฌํค๊ธฐ ์ํด ์ฌ์ฉ

2. URN(Uniform Resource Name): ์ด๋ฆ์ ์ด์ฉํด ์์์ ์๋ณ
- URL์ ๋จ์
- ์์น๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์์ ์๋ณํ๋๋ฐ ์์์ ์์น๋ ์ธ์ ๋ ๋ณํ ์ ์์
- ์ฆ, ์์์ ์์น๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๊ธฐ์กด URL๋ก๋ ์์์ ์๋ณํ ์ ์์
- URN์ ์ฅ์
- ์์์ ๊ณ ์ ํ ์ด๋ฆ์ ๋ถ์ด๋ ์ด๋ฆ ๊ธฐ๋ฐ ์๋ณ์์ด๊ธฐ์ ์์์ ์์น์ ๋ฌด๊ดํ๊ฒ ์์์ ์๋ณ
- URN์ ์์ง URL๋งํผ ๋๋ฆฌ ์ฑํ๋ ๋ฐฉ์์ ์๋
ex) urn:isbn:04883920
HTTP
- ์ฌ์ฉ์์ ๋ฐ์ ํ๊ฒ ๋ง๋ฟ์ ์๋ ํ๋กํ ์ฝ
- ์น ์ธ์์ ๊ธฐ๋ฐ์ด ๋๋ ๊ฐ์ฅ ์ค์ํ ํ๋กํ ์ฝ
HTTP ์ค์ํ ํน์ฑ
1. ์์ฒญ-์๋ต ๊ธฐ๋ฐ ํ๋กํ ์ฝ์ด๋ค.
- HTTP๋ 'ํด๋ผ์ด์ธํธ-์๋ฒ ๊ตฌ์กฐ ๊ธฐ๋ฐ์ ์์ฒญ-์๋ต ํ๋กํ ์ฝ'
- HTTP ์์ฒญ ๋ฉ์์ง์ HTTP ์๋ต ๋ฉ์์ง๋ ๋ฉ์์ง ํํ๊ฐ ๋ค๋ฆ
2. ๋ฏธ๋์ด ๋ ๋ฆฝ์ ํ๋กํ ์ฝ์ด๋ค.
- HTTP๋ฅผ ์ ์ํ๋ ๊ณต์ ๋ฌธ์(RFC 9110)์ ๋ฐ๋ฅด๋ฉด,
HTTP๊ฐ ์์ฒญํ๋ ๋์์ '์์'์ด๋ค. HTTP๋ ์์์ ํน์ฑ์ ์ ํํ์ง ์์ผ๋ฉฐ,
์์๊ณผ ์ํธ์์ฉํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ ๋ฟ์ด๋ค.
๋๋ถ๋ถ์ ์์์ URI๋ก ์๋ณ๋๋ค"
- ์ฆ, HTTP๋ ์ฃผ๊ณ ๋ฐ์ ์์์ ํน์ฑ๊ณผ ๋ฌด๊ดํ๊ฒ ๊ทธ์ ์์์ ์ฃผ๊ณ ๋ฐ์ ์๋จ(์ธํฐํ์ด์ค) ์ญํ ๋ง ํจ
- HTTP๋ฅผ ํตํด HTML, JPEG, PNG, JSON, XML, PDF ๋ฑ ๋ค์ํ ์ข ๋ฅ์ ์์ ์ก์์ ๊ฐ๋ฅ
- ๋ฏธ๋์ด ํ์
(Media Type): HTTP์์ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์์์ ์ข
๋ฅ, ์น ์ธ์์ ํ์ฅ์ (= MIME ํ์
(Multipurpose Internet Mail Extension Type))
- ์ฌ๋์๋ฅผ ๊ธฐ์ค์ผ๋ก 'ํ์
/์๋ธํ์
(type/subtype)'ํ์์ผ๋ก ๊ตฌ์ฑ
- ํ์ : ๋ฐ์ดํฐ์ ์ ํ
- ์๋ธํ์ : ์ฃผ์ด์ง ํ์ ์ ๋ํ ์ธ๋ถ ์ ํ
- ๋ฏธ๋์ด ํ์
์๋ ๋ถ๊ฐ์ ์ธ ์ค๋ช
์ ์ํด ์ ํ์ ์ผ๋ก ๋งค๊ฐ๋ณ์ ํฌํจ ๊ฐ๋ฅ
- 'ํ์ /์๋ธํ์ ;๋งค๊ฐ๋ณ์=๊ฐ'์ ํ์์ผ๋ก ํํ → type/subtype;parameter=value (ex: type/html;charset=UTF-8)
- ๋ฏธ๋์ด ํ์ ์ ์ข ๋ฅ๋ ๋งค์ฐ ๋ค์ํ๋ฉฐ, ์๋ก์ด ๋ฏธ๋์ด ํ์ ์ ๋ฑ๋กํ ์๋ ์์
- ์ฌ๋์๋ฅผ ๊ธฐ์ค์ผ๋ก 'ํ์
/์๋ธํ์
(type/subtype)'ํ์์ผ๋ก ๊ตฌ์ฑ


- ์ฆ, HTTP๋ ์ฃผ๊ณ ๋ฐ์ ๋ฏธ๋์ด ํ์ ์ ํน๋ณํ ์ ํ์ ๋์ง ์๊ณ ๋์ํ๋ ๋ฏธ๋์ด ๋ ๋ฆฝ์ ํ๋กํ ์ฝ
- ์ฌ๋ฌ ๋ฏธ๋์ด ํ์
ํต์นญ: ๋ณํ ๋ฌธ์(*)
- ex) text/* = text ํ์ ์ ๋ชจ๋ ์๋ธํ์
- ex) image/* = image ํ์ ์ ๋ชจ๋ ์๋ธํ์
- ex) */* = ๋ชจ๋ ๋ฏธ๋์ด ํ์
3. ์ํ๋ฅผ ์ ์งํ์ง ์๋(=stateless) ํ๋กํ ์ฝ์ด๋ค.
- HTTP๋ ์ํ๋ฅผ ์ ์งํ์ง ์๋ ์คํ
์ดํธ๋ฆฌ์ค(stateless) ํ๋กํ ์ฝ
- ์๋ฒ๊ฐ HTTP ์์ฒญ์ ๋ณด๋ธ ํด๋ผ์ด์ธํธ์ ๊ด๋ จ๋ ์ํ๋ฅผ ๊ธฐ์ตํ์ง ์๋๋ค๋ ์๋ฏธ
- ํด๋ผ์ด์ธํธ์ ๋ชจ๋ HTTP ์์ฒญ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ ๋ฆฝ์ ์ธ ์์ฒญ์ผ๋ก ๊ฐ์ฃผ
- HTTP๊ฐ ์ํ๋ฅผ ์ ์งํ์ง ์๋ ์ด์ ๋, HTTP์ ํ์ฅ์ฑ๊ณผ ๊ฒฌ๊ณ ์ฑ ๋๋ฌธ
- HTTP ์๋ฒ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ง์ ํด๋ผ์ด์ธํธ์ ๋์์ ์ํธ ์์ฉํจ. ๋ํ, ์ค๋๋ ๋ง์ HTTP ์๋ฒ๋ ๋์ ๊ฐ์ฉ์ฑ(์ฅ์ ๊ฐ ์๊ฒจ๋ ๋ฌธ์ ์์ด ๋์๋๊ฒ๋)์ ์ํด ์ฌ๋ฌ ๋๋ก ๋ค์คํ๋์ด ๊ตฌ์ฑ๋์ด ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์
์ฆ, ์ฌ๋ฌ ์๋ฒ๋ค์ด ๋ชจ๋ ํด๋ผ์ด์ธํธ์ ์ํ ์ ๋ณด๋ฅผ ์ ์งํ๋ ๊ฒ์ ์๋ฒ์ ํฐ ๋ถ๋ด - ํน์ ํด๋ผ์ด์ธํธ๊ฐ ํน์ ์๋ฒ์ ์ข
์๋๋ ์ํฉ ๋ฐฉ์ง
HTTP๊ฐ ์ํ๋ฅผ ์ ์งํ๋ ํ๋กํ ์ฝ์ด๋ผ๋ฉด, ํด๋ผ์ด์ธํธ๋ ์์ ์ ์ํ๋ฅผ ๊ธฐ์ตํ๋ ํน์ ์๋ฒํ๊ณ ๋ง ํต์
- HTTP ์๋ฒ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ง์ ํด๋ผ์ด์ธํธ์ ๋์์ ์ํธ ์์ฉํจ. ๋ํ, ์ค๋๋ ๋ง์ HTTP ์๋ฒ๋ ๋์ ๊ฐ์ฉ์ฑ(์ฅ์ ๊ฐ ์๊ฒจ๋ ๋ฌธ์ ์์ด ๋์๋๊ฒ๋)์ ์ํด ์ฌ๋ฌ ๋๋ก ๋ค์คํ๋์ด ๊ตฌ์ฑ๋์ด ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์


- ์คํ
์ดํธ๋ฆฌ์ค ํ๋กํ ์ฝ์ ํ์ฅ์ฑ(scalability)๊ณผ ๊ฒฌ๊ณ ์ฑ(robustness)์ ์ํด ์ค๊ณ๋์์
- ์ํ๋ฅผ ์ ์งํ์ง ์๋ ํน์ฑ์, ํน์ ํด๋ผ์ด์ธํธ๊ฐ ํน์ ์๋ฒ์ ์ข ์๋์ง ์๊ฒ ํ๊ธฐ ์ํด์๊ณ , ๋ํ ์๋ฒ์ ๋ฌธ์ ๊ฐ ์๊ฒจ๋ ๋ค๋ฅธ ์๋ฒ๋ก ๋์ฒด ์ฉ์ดํ๊ฒ ํ๊ธฐ ์ํด์์ด๋ค.
4. ์ง์ ์ฐ๊ฒฐ์ ์ง์ํ๋ ํ๋กํ ์ฝ์ด๋ค.
- ๋น์ง์ ์ฐ๊ฒฐ
- ์ด๊ธฐ์ HTTP ๋ฒ์ (HTTP 1.0 ์ดํ)
- TCP ์ฐ๊ฒฐ ์๋ฆฝํ ํ, ์์ฒญ์ ๋ํ ์๋ต์ ๋ฐ์ผ๋ฉด ์ฐ๊ฒฐ ์ข ๋ฃ
- ์ถ๊ฐ์ ์ธ ์์ฒญ-์๋ต์ ํ๊ธฐ ์ํด์๋ ๋ค์ TCP ์ฐ๊ฒฐ ์๋ฆฝ๋ถํฐ ๋ฐ๋ณต
- ์ง์ ์ฐ๊ฒฐ(persistent connection) ๋๋ ํต ์ผ๋ผ์ด๋ธ(keep-alive)
- ์ต๊ทผ ๋์ค์ ์ผ๋ก ์ฌ์ฉ๋๋ HTTP ๋ฒ์ (HTTP 1.1 ์ด์)
- ํ๋์ TCP ์ฐ๊ฒฐ์์์ ์ฌ๋ฌ ๊ฐ์ ์์ฒญ-์๋ต์ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ ๊ธฐ์

HTTP ๋ฒ์
1. HTTP/0.9
- ํ์ฌ ๊ฑฐ์ ์ฌ์ฉ๋์ง ์๋ ์ด์ฐฝ๊ธฐ HTTP ๋ฒ์
- ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ์๋: GET
- ํค๋ ์ง์ X
2. HTTP/1.0
- HEAD, POST ๋ฑ GET ์ด์ธ์ ๋ฉ์๋ ๋์
- ํค๋ ์ง์ ์์
- ๊ณต์์ ์ผ๋ก๋ ์ง์ ์ฐ๊ฒฐ ๋ฏธ์ง์
3. HTTP/1.1
- ์ค๋๋ ๊น์ง ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ฒ์
- ์ง์ ์ฐ๊ฒฐ ๊ณต์์ ์ง์
- ํ์ดํ๋ผ์ด๋, ์ฝํ ์ธ ํ์ ๊ธฐ๋ฅ ๋ฑ ๋ค์ํ ํธ์ ๊ธฐ๋ฅ ์ถ๊ฐ
- ๋ฉ์์ง ๋ณธ๋ฌธ = ํ๋ฌธ
- HTTP/1.1์ ๊ณ ์ง์ ๋ฌธ์ : HOL ๋ธ๋กํน(Head-of-line blocking)
- ๊ฐ์ ํ์ ๋๊ธฐํ๋ฉฐ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ ์ฌ๋ฌ ํจํท์ด ์์ ๊ฒฝ์ฐ, ์ฒซ ๋ฒ์งธ ํจํท์ ์ฒ๋ฆฌ ์ง์ฐ์ผ๋ก ์ธํด ๋๋จธ์ง ํจํท ์ฒ๋ฆฌ๋ ๋ชจ๋ ์ง์ฐ๋๋ ๋ฌธ์ ์ํฉ

4. HTTP/2.0
- ์ค๋๋ ๊น์ง ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ฒ์
- HTTP/1.1์ ํจ์จ๊ณผ ์ฑ๋ฅ์ ๋์ด๊ธฐ ์ํ ๋ฒ์
- ๋ฉ์์ง ๋ณธ๋ฌธ = ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ
- ํค๋ ์์ถ ์ ์ก ๊ฐ๋ฅ
- ์๋ฒ ํธ์(server push) ๊ธฐ๋ฅ: ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ์ง ์์๋๋ผ๋ ๋ฏธ๋์ ํ์ํ ๊ฒ์ผ๋ก ์์๋๋ ์์ ๋ฏธ๋ฆฌ ์ ์กํ๋ ๊ธฐ๋ฅ
- HTTP ๋ฉํฐํ๋์ฑ(multiplexing)์ ํตํ HOL ๋ธ๋กํน ์ํ
- ์ฌ๋ฌ ์คํธ๋ฆผ(stream)์ ํ์ฉํด ๋ณ๋ ฌ์ ์ผ๋ก ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ธฐ์
- ์์ฒญ-์๋ต ๋จ์๋ ํ๋์ ์คํธ๋ฆผ์์ ์ด๋ฃจ์ด์ง
- ์คํธ๋ฆผ๋ณ ๋ ๋ฆฝ์ ์ธ ์ก์์ ๊ฐ๋ฅ
- ๋ณ๋์ ์คํธ๋ฆผ์ ํตํด ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฅผ ๋ณ๋ ฌ์ ์ผ๋ก ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ HOL ๋ธ๋กํน ์ํ
5. HTTP/3.0
- ์ด์ ๊น์ง์ HTTP ๋ฒ์ = TCP ๊ธฐ๋ฐ ๋์
- HTTP/3.0 = UDP ๊ธฐ๋ฐ ํ๋กํ ์ฝ์ธ QUIC(Quick UDP Internet Connections) ๊ธฐ๋ฐ์ผ๋ก ๋์
- ์ฐ๊ฒฐํ ํ๋กํ ์ฝ ๊ธฐ๋ฐ ์ก์์ ์๋ < ๋น์ฐ๊ฒฐํ ํ๋กํ ์ฝ ๊ธฐ๋ฐ ์ก์์ ์๋ → ๋น ๋ฅธ ์ก์์ ๊ฐ๋ฅ
HTTP ๋ฉ์์ง ๊ตฌ์กฐ
๏นก HTTP 1.1 ๋ฒ์ ๊ธฐ์ค์ผ๋ก ์์
- ์์ ๋ผ์ธ, ํ๋ ๋ผ์ธ, ๋ฉ์์ง ๋ณธ๋ฌธ์ผ๋ก ๊ตฌ์ฑ
- ํ๋ ๋ผ์ธ์ ์๊ฑฐ๋ ์ฌ๋ฌ ๊ฐ ์์ ์ ์์
- ๋ฉ์์ง ๋ณธ๋ฌธ์ ์์ ์ ์์
- ํ๋ ๋ผ์ธ๊ณผ ๋ฉ์์ง ๋ณธ๋ฌธ ์ฌ์ด์๋ ๋น ์ค๋ฐ๊ฟ์ด ์์

- HTTP ๋ฉ์์ง๋ HTTP ์์ฒญ ๋ฉ์์ง์ผ ์๋ ์๊ณ , HTTP ์๋ต ๋ฉ์์ง์ผ ์๋ ์์
1. ์์ ๋ผ์ธ(start-line)

- HTTP ์์ฒญ ๋ฉ์์ง์ผ ๊ฒฝ์ฐ, ์์ ๋ผ์ธ = '์์ฒญ ๋ผ์ธ'
- ๋ฉ์๋(method): ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์(์์ฒญ ๋์)์ ๋ํด ์ํํ ์์
์ ์ข
๋ฅ
๋ํ์ ์ผ๋ก GET, POST, PUT, DELETE ๋ฑ - ์์ฒญ ๋์(request-target): HTTP ์์ฒญ์ ๋ณด๋ผ ์๋ฒ์ ์์
- ๋ณดํต (์ฟผ๋ฆฌ๊ฐ ํฌํจ๋) URI์ ๊ฒฝ๋ก๊ฐ ๋ช
์
ex) ํด๋ผ์ด์ธํธ๊ฐ "http://www.example.com/hello?q=world"๋ก ์์ฒญ → ์์ฒญ ๋์์ "/hello?q=world" - ๋ง์ฝ ํ์ ๊ฒฝ๋ก๊ฐ ์๋๋ผ๋ ์์ฒญ ๋์์ ์ฌ๋์(/)๋ก ํ๊ธฐ
ex) ํด๋ผ์ด์ธํธ๊ฐ "http://www.example.com"์ผ๋ก ์์ฒญ → ์์ฒญ ๋์์ "/"
- ๋ณดํต (์ฟผ๋ฆฌ๊ฐ ํฌํจ๋) URI์ ๊ฒฝ๋ก๊ฐ ๋ช
์
- HTTP ๋ฒ์ (HTTP-version): ์ฌ์ฉ๋ HTTP ๋ฒ์
- 'HTTP/<๋ฒ์ >'์ด๋ผ๋ ํ๊ธฐ ๋ฐฉ์์ ๋ฐ๋ฅด๋ฉฐ, HTTP ๋ฒ์ 1.1์ HTTP/1.1๋ก ํ๊ธฐ
- ๋ฉ์๋(method): ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์(์์ฒญ ๋์)์ ๋ํด ์ํํ ์์
์ ์ข
๋ฅ

- HTTP ์๋ต ๋ฉ์์ง์ผ ๊ฒฝ์ฐ, ์์ ๋ผ์ธ = '์ํ ๋ผ์ธ'
- HTTP ๋ฒ์ (HTTP-version): ์ฌ์ฉ๋ HTTP ๋ฒ์
- 'HTTP/<๋ฒ์ >'์ด๋ผ๋ ํ๊ธฐ ๋ฐฉ์์ ๋ฐ๋ฅด๋ฉฐ, HTTP ๋ฒ์ 1.1์ HTTP/1.1๋ก ํ๊ธฐ
- ์ํ ์ฝ๋(status code): ์์ฒญ์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋ด๋ ์ธ ์๋ฆฌ ์ ์
- ์ด์ ๊ตฌ๋ฌธ(reason phrase): ์ํ ์ฝ๋์ ๋ํ ๋ฌธ์์ด ํํ์ ์ค๋ช
- ex) HTTP/1.1 200 OK, HTTP/1.1 404 Not Found
- HTTP ๋ฒ์ (HTTP-version): ์ฌ์ฉ๋ HTTP ๋ฒ์

2. ํ๋ ๋ผ์ธ ๋๋ ํค๋ ๋ผ์ธ(header-line)

- 0๊ฐ ์ด์์ HTTP ํค๋(HTTP header) ๋ช ์
- HTTP ํค๋: HTTP ํต์ ์ ํ์ํ ๋ถ๊ฐ ์ ๋ณด
- ์ฝ๋ก (:)์ ๊ธฐ์ค์ผ๋ก ํค๋ ์ด๋ฆ(header-name)๊ณผ ํ๋ ์ด์์ ํค๋๊ฐ(header-value)์ผ๋ก ๊ตฌ์ฑ
3. ๋ฉ์์ง ๋ณธ๋ฌธ(message-body)

- HTTP ์์ฒญ ํน์ ์๋ต ๋ฉ์์ง์์ ๋ณธ๋ฌธ์ด ํ์ํ ๊ฒฝ์ฐ ์ ํ์ ์ผ๋ก ๋ฉ์์ง ๋ณธ๋ฌธ์ ๋ช ์
- ๋ค์ํ ์ฝํ ์ธ ํ์ ์ด ์ฌ์ฉ ๊ฐ๋ฅ
HTTP ๋ฉ์๋
| HTTP ๋ฉ์๋ | ์ค๋ช |
| GET | ์์์ ์ต๋ํ๊ธฐ ์ํ ๋ฉ์๋ |
| HEAD | GET๊ณผ ๋์ผํ๋, ํค๋๋ง์ ์๋ต๋ฐ๋ ๋ฉ์๋ |
| POST | ์๋ฒ๋ก ํ์ฌ๊ธ ํน์ ์์ ์ ์ฒ๋ฆฌํ๊ฒ๋ ํ๋ ๋ฉ์๋ |
| PUT | ์์์ ๋์ฒดํ๊ธฐ ์ํ ๋ฉ์๋ |
| PATCH | ์์์ ๋ํ ๋ถ๋ถ์ ์์ ์ ์ํ ๋ฉ์๋ |
| DELETE | ์์์ ์ญ์ ํ๊ธฐ ์ํ ๋ฉ์๋ |
| CONNECT | ์์์ ๋ํ ์๋ฐฉํฅ ์ฐ๊ฒฐ์ ์์ํ๋ ๋ฉ์๋ |
| OPTIONS | ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ์๋ ๋ฑ ํต์ ์ต์ ์ ํ์ธํ๋ ๋ฉ์๋ |
| TRACE | ์์์ ๋ํ ๋ฃจํ๋ฐฑ ํ ์คํธ๋ฅผ ์ํํ๋ ๋ฉ์๋ |
1. GET - ๊ฐ์ ธ๋ค์ฃผ์ธ์
- ํน์ ์์์ ์กฐํํ ๋ ์ฌ์ฉ๋๋ ๋ฉ์๋ (ex: ์น ๋ธ๋ผ์ฐ์ URL ์
๋ ฅ)
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ '์ด๊ฒ์ ๊ฐ์ ธ๋ค์ฃผ์ธ์'๋ผ ์์ฒญ ๋ณด๋ด๋ ๊ฒ๊ณผ ๊ฐ์
- '์ด๊ฒ' = ์์ (HTML, JSON, ์ด๋ฏธ์ง ํ์ผ์ด๋ ์ผ๋ฐ ํ ์คํธ ํ์ผ ๋ฑ)
- ์์ฒญ ๋ฉ์์ง
ex) http://www.example.com/example-page์ ๋ํ ๊ฐ๋ตํ๋ GET ์์ฒญ ๋ฉ์์ง
๏นก GET ์์ฒญ ๋ฉ์์ง์์๋ ๋ฉ์์ง ๋ณธ๋ฌธ๋ณด๋ค ์ฟผ๋ฆฌ ๋ฌธ์์ด์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์- Host: ์์ฒญ์ ๋ณด๋ด๋ ๋์


- ์๋ต ๋ฉ์์ง: GET ์์ฒญ ๋ฉ์์ง๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌ๋์๋ค๋ฉด ์ด์ ๋ํ ์๋ต์ผ๋ก์ ์์ฒญํ ์์์ ์ ๋ฌ๋ฐ์

2. HEAD - ํค๋๋ง ๊ฐ์ ธ๋ค์ฃผ์ธ์
- HEAD ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ฒ๋ ์์ฒญ์ ๋ํ ์๋ต์ผ๋ก ์๋ต ๋ฉ์์ง์ ํค๋๋ง์ ๋ฐํ
- ์์ฒญ ๋ฉ์์ง
ex) http://www.example.com/example-page์ ๋ํ HEAD ์์ฒญ์ ๋ณด๋ธ ์์

- ์๋ต ๋ฉ์์ง

3. POST - ์ฒ๋ฆฌํด ์ฃผ์ธ์
- ์๋ฒ๋ก ํ์ฌ๊ธ ํน์ ์์
์ ์ฒ๋ฆฌํ๋๋ก ์์ฒญํ๋ ๋ฉ์๋
ex) ๊ฒ์ํ ๊ธ ์์ฑ, ๋๊ธ ์์ฑ, ์ด๋ฏธ์ง ์ ๋ก๋ ๋ฑ - ์์ฒญ ๋ฉ์์ง: ์ฒ๋ฆฌํ ๋์์ ํํ ๋ฉ์์ง ๋ณธ๋ฌธ์ผ๋ก ๋ช ์

- ๋ง์ ๊ฒฝ์ฐ 'ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์๋ก์ด ์์์ ์์ฑํ๊ณ ์ ํ ๋' ์ฌ์ฉ
- ์๋ก์ด ์์์ด ์์ฑ์ ์๋ฒ๋ ์๋ต ๋ฉ์์ง์ Location ํค๋๋ฅผ ํตํด ์๋ก ์์ฑ๋ ์์์ ์์น๋ฅผ ์๋ ค์ค

PUT - ๋ฎ์ด์จ ์ฃผ์ธ์
- ์์ฒญ ์์์ด ์๋ค๋ฉด ๋ฉ์์ง ๋ณธ๋ฌธ์ผ๋ก ์์์ ์๋กญ๊ฒ ์์ฑ
- ์์ฒญ ์์์ด ์กด์ฌํ๋ค๋ฉด ๋ฉ์์ง ๋ณธ๋ฌธ์ผ๋ก ์์์ ์์ ํ ๋์ฒด


PATCH - ์ผ๋ถ ์์ ํด ์ฃผ์ธ์
- PUT ๋ฉ์๋ โ ๋ฎ์ด์ฐ๊ธฐ/๋์ฒด, PATCH ๋ฉ์๋ โ ๋ถ๋ถ์ ์์
- ๋ฉ์์ง ๋ณธ๋ฌธ์ ๋ง๊ฒ ์์ ์ผ๋ถ ์์


DELETE - ์ญ์ ํด ์ฃผ์ธ์
- ํน์ ์์์ ์ญ์ ํ๊ณ ์ถ์ ๋ ์ฌ์ฉ
- ์์ฒญ ๋ฉ์์ง
ex) example.com/texts/a.txt๋ผ๋ ์์์ ์ญ์ ํ๋๋ก ์์ฒญํ๋ ๋ฉ์์ง

โป ๊ฐ๋ฐ์ ์ ์ฅ์์ HTTP ๋ฉ์๋๋ ์ค๊ณ์ ๋์์ด๋ค. ์ด๋ค ๋ฉ์๋๋ ๊ตฌํํ ์๋ ์๊ณ , ์ด๋ค ๋ฉ์๋๋ ๊ตฌํํ์ง ์์ ์๋ ์์.
๊ฐ์ URL์ ๋ํด ๋ฉ์๋๋ณ ๋์์ ์ฌ๋ฌ ๊ฐ ๊ตฌํํ ์๋ ์์
HTTP ์ํ ์ฝ๋
- ์ํ ์ฝ๋๋ ์์ฒญ์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋ด๋ ์ธ ์๋ฆฌ ์ ์๋ก, ์ํ ์ฝ๋์ ์ข ๋ฅ๋ ๋ฐฑ์ ์๋ฆฌ ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ํ์ ๊ตฌ๋ถ
| ์ํ ์ฝ๋ | ์ค๋ช |
| 100๋ฒ๋(100~199) | ์ ๋ณด์ฑ ์ํ ์ฝ๋ |
| 200๋ฒ๋(200~299) | ์ฑ๊ณต ์ํ ์ฝ๋ |
| 300๋ฒ๋(300~399) | ๋ฆฌ๋ค์ด๋ ์ ์ํ ์ฝ๋ |
| 400๋ฒ๋(400~499) | ํด๋ผ์ด์ธํธ ์๋ฌ ์ํ ์ฝ๋ |
| 500๋ฒ๋(500~599) | ์๋ฒ ์๋ฌ ์ํ ์ฝ๋ |
200๋ฒ๋: ์ฑ๊ณต ์ํ ์ฝ๋
- '์์ฒญ์ด ์ฑ๊ณตํ์'์ ์๋ฏธ
- ์ฃผ์ ์ํ ์ฝ๋
- 200(OK): ex) 'http://example.com/images/a.pn'๋ก GET ์์ฒญ์ ์ฑ๊ณต์ ์ผ๋ก ๋ณด๋ธ ๊ฒฝ์ฐ
- 201(Created)
- POST ์์ฒญ์ผ๋ก ์๋ฒ์ ์๋ก์ด ์์์ ์์ฑํ ๊ฒฝ์ฐ ์ํ ์ฝ๋ 201 ์๋ต
- ์ด๋, Location ํค๋๋ฅผ ํตํด ์์ฑ๋ ์์์ ์์น๋ฅผ ๋ช ์
- 202(Accepted): ์์ฒญ์ ์ ๋ฐ์์ผ๋, ์์ง ์์ฒญํ ์์
์ ๋๋ด์ง ์์์
- ์์ฒญ ๊ฒฐ๊ณผ๋ฅผ ๊ณง๋ฐ๋ก ์๋ตํ๊ธฐ ์ด๋ ค์ด ๊ฒฝ์ฐ
- ex) ์์ ์๊ฐ์ด ๊ธด ๋์ฉ๋ ํ์ผ ์ ๋ก๋ ์์ , ๋ฐฐ์น ์์ ๊ณผ ๊ฐ์ด
- 204(No Content): ์์ฒญ์ ์ ๋ฐ์๊ณ , ๋ง๋ ํ ๋ณธ๋ฌธ์ผ๋ก ํํํ ๊ฒ์ด ์์ ex) DELETE ๋ฉ์๋ ์์ฒญ
| ์ํ ์ฝ๋ | ์ด์ ๊ตฌ๋ฌธ | ์ค๋ช |
| 200 | OK | ์์ฒญ์ด ์ฑ๊ณตํ์ |
| 201 | Created | ์์ฒญ์ด ์ฑ๊ณตํ์ผ๋ฉฐ, ์๋ก์ด ์์์ด ์์ฑ๋์์ |
| 202 | Accepted | ์์ฒญ์ ์ ๋ฐ์์ผ๋, ์์ง ์์ฒญํ ์์ ์ ๋๋ด์ง ์์์ |
| 204 | No Content | ์์ฒญ์ด ์ฑ๊ณตํ์ง๋ง, ๋ฉ์์ง ๋ณธ๋ฌธ์ผ๋ก ํ์ํ ๋ฐ์ดํฐ๊ฐ ์์ |
300๋ฒ๋: ๋ฆฌ๋ค์ด๋ ์ ์ํ ์ฝ๋
- ๋ฆฌ๋ค์ด๋ ์ (redirection): '์์ฒญ์ ์์ํ๊ธฐ ์ํด ์ถ๊ฐ์ ์ธ ์กฐ์น๊ฐ ํ์ํ ์ํ'๋ก, ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ์์์ด ๋ค๋ฅธ ๊ณณ์ ์์ ๋, ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ค๋ฅธ ๊ณณ์ผ๋ก ์ด๋์ํค๋ ๊ฒ

1) ์๊ตฌ์ ์ธ ๋ฆฌ๋ค์ด๋ ์
(permanent redirection): ์์์ด ์์ ํ ์๋ก์ด ๊ณณ์ผ๋ก ์ด๋ํ์ฌ ๊ฒฝ๋ก๊ฐ ์๊ตฌ์ ์ผ๋ก ์ฌ์ง์
์ด ๊ฒฝ์ฐ ๊ธฐ์กด์ URL์ ์์ฒญ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ฉด ํญ์ ์๋ก์ด URL๋ก ๋ฆฌ๋ค์ด๋ ์
| ์ํ ์ฝ๋ | ์ด์ ๊ตฌ๋ฌธ | ์ค๋ช |
| 301 | Moved Permanently | ์๊ตฌ์ ๋ฆฌ๋ค์ด๋ ์ : ์ฌ์์ฒญ ๋ฉ์๋ ๋ณ๊ฒฝ๋ ์ ์์ |
| 308 | Permananet Redirect | ์๊ตฌ์ ๋ฆฌ๋ค์ด๋ ์ : ์ฌ์์ฒญ ๋ฉ์๋ ๋ณ๊ฒฝ๋์ง ์์ |
- ์๊ตฌ์ ์ธ ๋ฆฌ๋ค์ด๋ ์ ์ ๊ฒฝ์ฐ, ํด๋ผ์ด์ธํธ, ์น ํฌ๋กค๋ฌ ๋ฑ์ด ๊ธฐ์กด์ URL์ ๊ธฐ์ตํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ฒ์ ์์ง ํน์ ํฌ๋กค๋ฌ ๋ฑ์ ์ํฅ์ ๋ผ์น ๊ฐ๋ฅ์ฑ์ด ์์
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ GET ์์ฒญ ๋ฉ์์ง๋ฅผ ์ ์กํ๊ณ ,
301 ํน์ 308 ์๋ต์ ๋ฐ์ ํ,
์๋ต ๋ฉ์์ง์ Location ํค๋์ ๋ช ์๋ ๊ฒฝ๋ก๋ก ์ฌ์์ฒญ์ ๋ณด๋ผ ๊ฒฝ์ฐ,
ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ด๋ ๋ ๋ฒ์งธ ์์ฒญ ๋ฉ์๋๋ ์ฒซ ๋ฒ์งธ ์์ฒญ ๋ฉ์๋์ ๋์ผํ GET์ด ๋จ - ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ POST ์์ฒญ ๋ฉ์์ง(GET ๋ฉ์๋๊ฐ ์๋ ์์ฒญ ๋ฉ์์ง)๋ฅผ ์ ์กํ๊ณ ,
301 ์๋ต์ ๋ฐ์ ํ,
์๋ต ๋ฉ์์ง์ Location ํค๋์ ๋ช ์๋ ๊ฒฝ๋ก๋ก ์ฌ์์ฒญ์ ๋ณด๋ผ ๊ฒฝ์ฐ,
ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ด๋ ๋ ๋ฒ์งธ ์์ฒญ ๋ฉ์๋๋ GET ์์ฒญ์ผ๋ก ๋ฐ๋ '์๋' ์์


2) ์ผ์์ ์ธ ๋ฆฌ๋ค์ด๋ ์ (temporary redirection): ์์์ ์์น๊ฐ ์์๋ก ๋ณ๊ฒฝ๋์๊ฑฐ๋ ์์๋ก ์ฌ์ฉํ URL์ด ํ์ํ ๊ฒฝ์ฐ์ ์ฃผ๋ก ์ฌ์ฉ
์ด๋ค URL์ ๋ํด ์ผ์์ ์ธ ๋ฆฌ๋ค์ด๋ ์ ๊ด๋ จ ์ํ ์ฝ๋๋ฅผ ์๋ต๋ฐ์๋ค๋ฉด ์ฌ์ ํ ์์ฒญ์ ๋ณด๋ธ URL์ ๊ธฐ์ต!
| ์ํ ์ฝ๋ | ์ด์ ๊ตฌ๋ฌธ | ์ค๋ช |
| 302 | Found | ์ผ์์ ๋ฆฌ๋ค์ด๋ ์ : ์ฌ์์ฒญ ๋ฉ์๋ ๋ณ๊ฒฝ๋ ์ ์์ |
| 303 | See Other | ์ผ์์ ๋ฆฌ๋ค์ด๋ ์ : ์ฌ์์ฒญ ๋ฉ์๋ GET์ผ๋ก ๋ณ๊ฒฝ |
| 307 | Temporary Redirect | ์ผ์์ ๋ฆฌ๋ค์ด๋ ์ : ์ฌ์์ฒญ ๋ฉ์๋ ๋ณ๊ฒฝ๋์ง ์์ |

400๋ฒ๋: ํด๋ผ์ด์ธํธ ์๋ฌ ์ํ ์ฝ๋
- 'ํด๋ผ์ด์ธํธ์ ์ํ ์๋ฌ๊ฐ ์์'์ ์๋ ค ์ฃผ๋ ์ํ ์ฝ๋
| ์ํ ์ฝ๋ | ์ด์ ๊ตฌ๋ฌธ | ์ค๋ช |
| 400 | Bad Request | ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ์๋ชป๋์์ |
| 401 | Unauthorized | ์์ฒญํ ์์์ ๋ํ ์ ํจํ ์ธ์ฆ์ด ์์ |
| 403 | Forbidden | ์์ฒญ์ด ์๋ฒ์ ์ํด ๊ฑฐ๋ถ๋จ(ex: ์ ๊ทผ ๊ถํ์ด ์์ ๊ฒฝ์ฐ) |
| 404 | Not Found | ์์ฒญ๋ฐ์ ์์์ ์ฐพ์ ์ ์์ |
| 405 | Method Not Allowed | ์์ฒญํ ๋ฉ์๋๋ฅผ ์ง์ํ์ง ์์ |
- 400(Bad Request): ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ์๋ชป๋์์์ ์๋ ค ์ฃผ๋ ์ํ ์ฝ๋

- 401(Unauthorized): ํน์ ์์์ ์ ๊ทผํ๊ธฐ ์ํด ์ธ์ฆ์ด ํ์ํ ๊ฒฝ์ฐ, ์์ฒญ์ ๋ํ ์ธ์ฆ์ด ํ์ํ ๊ฒฝ์ฐ ์๋ฒ๋ 401(Unauthorized) ์ํ ์ฝ๋ ์๋ต
- ์๋ฒ๊ฐ ์ํ ์ฝ๋ 401(Unauthorized)๋ก ์๋ตํ ๋๋ ๋ฐ๋์ WWW-Authenticate๋ผ๋ ํค๋๋ฅผ ํตํด ์ธ์ฆ ๋ฐฉ๋ฒ์ ์๋ ค ์ฃผ์ด์ผ ํจ

- 403(Forbidden): ํด๋ผ์ด์ธํธ์ ๊ถํ์ด ์ถฉ๋ถํ์ง ์์ ๊ฒฝ์ฐ์ ์ํ ์ฝ๋
์ธ์ฆ(Authentication) ์ฌ๋ถ vs ๊ถํ ์ฌ๋ถ(Authorization) ์ฌ๋ถ
- ์ธ์ฆ: ์์ ์ด ๋๊ตฌ์ธ์ง ์ฆ๋ช ํ๋ ๊ฒ
- ๊ถํ ์ฌ๋ถ/์ธ๊ฐ: ์ธ์ฆ๋ ์ฃผ์ฒด์๊ฒ ์์ ์ ํ์ฉํ๋ ๊ฒ
- 404(Not Found): ์ ๊ทผํ๊ณ ์ ํ๋ ์์์ด ์กด์ฌํ์ง ์์์ ์๋ฆฌ๋ ์ํ์ฝ๋
- ์กด์ฌํ์ง๋ง ๊ณต๊ฐํ์ง ์๋ ์์์ ๋ํด 404(Not Found)๋ฅผ ์๋ตํ๋ ๊ฒฝ์ฐ๋ ์์
- 405(Method Not Allowed): ๊ตฌํ๋์ง ์์ ๋ฉ์๋๋ก ์์ฒญ์ ๋ณด๋ผ ๊ฒฝ์ฐ

500๋ฒ๋: ์๋ฒ ์๋ฌ ์ํ ์ฝ๋
- ํด๋ผ์ด์ธํธ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์์ฒญ์ ๋ณด๋์์ง๋ผ๋ ๋ฐ์ํ ์ ์๋ ์๋ฒ ์๋ฌ์ ๋ํ ์ํ ์ฝ๋
| ์ํ ์ฝ๋ | ์ด์ ๊ตฌ๋ฌธ | ์ค๋ช |
| 500 | Internal Server Error | ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์ |
| 502 | Bad Gateway | ์ค๊ฐ ์๋ฒ์ ํต์ ์ค๋ฅ |
| 503 | Service Unavailable | ํ์ฌ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์ผ๋ ์ถํ ๊ฐ๋ฅํ ์๋ ์์ |
- 500(Internal Server Error): '์๋ฒ์ ์๊ธฐ์น ๋ชปํ ์ํฉ์ผ๋ก ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์'
- ์ํ ์ฝ๋ 500์ ์๋ฒ ๋ด ์๋ฌ๋ฅผ ํต์นญ
- 502(Bad Gateway): ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฌ์ด์ ์์นํ ์ค๊ฐ ์๋ฒ์ ํต์ ์ค๋ฅ๋ฅผ ๋ํ๋ด๋ ์ํ ์ฝ๋

- 503(Service Unavailable): 'ํ์ฌ ์๋น์ค๋ฅผ ์ผ์์ ์ผ๋ก ์ด์ฉํ ์ ์์'
- ์๋ฒ๊ฐ ๊ณผ๋ถํ ์ํ์ ์๊ฑฐ๋ ์ผ์์ ์ธ ์ ๊ฒ ์ํ์ผ ๋ ๋ณผ ์ ์๋ ์ํ
HTTP ํค๋์ HTTP ๊ธฐ๋ฐ ๊ธฐ์
HTTP ํค๋
- ํ๋ ์ด๋ฆ(ํค๋ ์ด๋ฆ)๊ณผ ํ๋ ๊ฐ(ํค๋ ๊ฐ)์ด ์ฝ๋ก (:)์ ๊ธฐ์ค์ผ๋ก ๊ตฌ๋ถ
- ํค๋ ์ ํ
- ํน๋ณํ ์ฌ์ ์ง์์ด ํ์ํ์ง ์์ ํค๋
- ์ฌ์ ์ง์์ด ํ์ํ ํค๋ ex) ์บ์, ์ฟ ํค, ์ฝํ ์ธ ํ์ ๊ด๋ จ ํค๋

[ํน๋ณํ ์ฌ์ ์ง์์ด ํ์ํ์ง ์์ ํค๋]
1. HTTP ์์ฒญ ์ ์ฃผ๋ก ์ฌ์ฉ๋๋ ํค๋
- Host: ์์ฒญ์ ๋ณด๋ผ ํธ์คํธ๋ฅผ ๋ํ๋ด๋ ํค๋, ์ฃผ๋ก ๋๋ฉ์ธ ๋ค์ ๋ช
์, ํฌํธ ๋ฒํธ๊ฐ ํฌํจ๋์ด ์์ ์ ์์
ex) http://info.cern.ch/hypertext/WWW/TheProject.html์ ์ ์ํ ๋์ HTTP ์์ฒญ ๋ฉ์์ง์ ์ผ๋ถ

- User-Agent: HTTP ์์ฒญ์ ์์ํ๋ ํด๋ผ์ด์ธํธ ์ธก์ ํ๋ก๊ทธ๋จ ex) ์น ๋ธ๋ผ์ฐ์
- User-Agent ํค๋: ์์ฒญ ๋ฉ์์ง ์์ฑ์ ๊ด์ฌํ ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ๊ณผ ๊ด๋ จ๋ ๋ค์ํ ์ ๋ณด ๋ช ์

- Referer: ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ๋ณด๋ผ ๋ ๋จธ๋ฌด๋ฅด๊ณ ์๋ URL์ด ๋ช
์
- ํด๋ผ์ด์ธํธ์ ์ ์
๊ฒฝ๋ก๋ฅผ ํ์
ex) Referer: https://en.wikipedia.org/
- ํด๋ผ์ด์ธํธ์ ์ ์
๊ฒฝ๋ก๋ฅผ ํ์
- Authorization: ํด๋ผ์ด์ธํธ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ๋ด๋ ํค๋
- ์ธ์ฆ ํ์
(type)๊ณผ ์ธ์ฆ์ ์ํ ์ ๋ณด(credentials) ๋ช
์
→ Authorization: <type> <credentials> - ์ธ์ฆ ํ์ ์ ๋ฐ๋ผ ์ธ์ฆ ์ ๋ณด์ ๋ช ์๋ ๊ฐ์ด ๋ฌ๋ผ์ง
- ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ HTTP ์ธ์ฆ ํ์
์ Basic
- username:password๋ฅผ Base64 ์ธ์ฝ๋ฉํ ๊ฐ์ ์ธ์ฆ ์ ๋ณด๋ก ์ผ๋ ๋ฐฉ์
- Basic ์ด์ธ์๋ Token ์ธ์ฆ ํ์ ์ธ Bearer๋ ์กด์ฌํจ
- ์ธ์ฆ ํ์
(type)๊ณผ ์ธ์ฆ์ ์ํ ์ ๋ณด(credentials) ๋ช
์
2. HTTP ์๋ต ์ ์ฃผ๋ก ์ฌ์ฉ๋๋ ํค๋
- Server: ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์๋ฒ ์ธก์ ์ํํธ์จ์ด์ ๊ด๋ จ๋ ์ ๋ณด ๋ช
์
ex) 'Unix ์ด์์ฒด์ ์์ ๋์ํ๋ ์ํ์น HTTP ์๋ฒ'๋ฅผ ์๋ฏธํ๋ ํค๋ → Server: Apache/2.4.1 (Unix) - Allow: ํด๋ผ์ด์ธํธ์๊ฒ ํ์ฉ๋ HTTP ๋ฉ์๋ ๋ชฉ๋ก์ ์๋ ค์ฃผ๊ธฐ ์ํด ์ฌ์ฉ
- ์ํ ์ฝ๋ 405(Method Not Allowed)๋ฅผ ์๋ตํ๋ ๋ฉ์์ง์์ Allow ํค๋๊ฐ ํจ๊ป ์ฌ์ฉ
- Retry-After: ์ํ ์ฝ๋ 503(Service Unavailable)๊ณผ ํจ๊ป ์ฌ์ฉ๋ ์ ์๋ ํค๋
- ์์์ ์ฌ์ฉํ ์ ์๋ ๋ ์ง ํน์ ์๊ฐ์ ๋ํ๋
ex) '2024๋ 8์ 23์ผ ๊ธ์์ผ 09์ ์ดํ์ ์ฌ์ฉ ๊ฐ๋ฅํจ' → Retry-After: Fri, 23 Aug 2024 09:00:00 GMT
'120์ด ์ดํ์ ์ฌ์ฉ ๊ฐ๋ฅํจ' → Retry-After: 120
- ์์์ ์ฌ์ฉํ ์ ์๋ ๋ ์ง ํน์ ์๊ฐ์ ๋ํ๋
- Location: ํด๋ผ์ด์ธํธ์๊ฒ ์์์ ์์น๋ฅผ ์๋ ค ์ฃผ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํค๋
- ์ฃผ๋ก ๋ฆฌ๋ค์ด๋ ์ ์ด ๋ฐ์ํ์ ๋๋ ์๋ก์ด ์์์ด ์์ฑ๋์์ ๋ ์ฌ์ฉ
- WWW-Authenticate: ์ํ ์ฝ๋ 401(Unauthorized)๊ณผ ํจ๊ป ์ฌ์ฉ๋๋ ํค๋
- ์์์ ์ ๊ทผํ๊ธฐ ์ํ ์ธ์ฆ ๋ฐฉ์์ ์ค๋ช
ex) WWW-Authenticate: Basic
- ์์์ ์ ๊ทผํ๊ธฐ ์ํ ์ธ์ฆ ๋ฐฉ์์ ์ค๋ช
Authorization๊ณผ WWW-Authenticate ํค๋๋ฅผ ํตํ HTTP ์ธ์ฆ(Basic ์ธ์ฆ) ๊ณผ์ โ ์ธ์ฆ๋์ง ์์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ GET ์์ฒญ ๋ฉ์์ง๋ฅผ ์ ์ก
โก ์๋ฒ๋ 401(Unauthorized)๊ณผ ํจ๊ป WWW-Authenticate ํค๋๋ฅผ ํตํด ์ธ์ฆ ๋ฐฉ์์ ์๋ฆผ
โข ํด๋ผ์ด์ธํธ๋ ์ฌ์ฉ์๋ก๋ถํฐ ์ธ์ฆ ์ ๋ณด(์ฌ์ฉ์ ์์ด๋์ ๋น๋ฐ๋ฒํธ)๋ฅผ ์ ๋ฌ๋ฐ์
โฃ ํด๋ผ์ด์ธํธ๋ Base64 ์ธ์ฝ๋ฉํ ๊ฐ์ Authorization ํค๋๋ฅผ ํตํด ์์ฒญ ๋ฉ์์ง๋ฅผ ์ ์ก
โค ์๋ฒ๋ ์ธ์ฆ ์ ๋ณด๋ฅผ ํ์ธ
โค ์ธ์ฆ์ด ์ ํจํ๋ฉด ์ํ ์ฝ๋ 200์ผ๋ก ์๋ตํ๊ณ , ์ธ์ฆ๋์ง ์์์ผ๋ฉด ์ํ ์ฝ๋ 401๋ก ์๋ต
์์ฒญ๊ณผ ์๋ต ๋ชจ๋์์ ํ์ฉ๋๋ HTTP ํค๋
- Date: ๋ฉ์์ง๊ฐ ์์ฑ๋ ๋ ์ง์ ์๊ฐ์ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ ๋ด์ ํค๋
ex) Date: Tue, 15 Nov 1994 08:12:31 GMT - Connection: ํด๋ผ์ด์ธํธ์ ์์ฒญ๊ณผ ์๋ต ๊ฐ์ ์ฐ๊ฒฐ ๋ฐฉ์์ ์ค์ ํ๋ ํค๋
- ์ง์ ์ฐ๊ฒฐ์ด Connection์ ๋ช ์๋๋ ๋ํ์ ์ธ ์ฐ๊ฒฐ ๋ฐฉ์
- ๊ฐ์ฅ ๋ํ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ฐ์ keep-alive์ close

- Content-Length: ๋ณธ๋ฌธ์ ๋ฐ์ดํธ ๋จ์ ํฌ๊ธฐ(๊ธธ์ด)
ex) Content-Length: 100 - Content-Type, Content-Language, Content-Encoding: ๋ฉ์์ง ๋ณธ๋ฌธ์ ํํ ๋ฐฉ์์ ์ค๋ช
ํ๋ ํค๋,
ํํ ํค๋(reperesentation header)์ ์ผ์ข- Content-Type ํค๋: ๋ฉ์์ง ๋ณธ๋ฌธ์์ ์ฌ์ฉ๋ ๋ฏธ๋์ด ํ์
ex) png, html ๋ฑ - Content-Language ํค๋: ๋ฉ์์ง ๋ณธ๋ฌธ์์ ์ฌ์ฉ๋ ์์ฐ์ด๋ฅผ ๋ช
์,
- ์ธ์ด ํ๊ทธ๋ก ๋ช ์: ํ์ดํ(-)์ผ๋ก ๊ตฌ๋ถ๋ ๊ตฌ์กฐ
- ์ผ๋ฐ์ ์ผ๋ก ์ฒซ ๋ฒ์งธ ์๋ธ ํ๊ทธ = ์ธ์ด ์ฝ๋, ๋ ๋ฒ์งธ ์๋ธ ํ๊ทธ = ๊ตญ๊ฐ ์ฝ๋
- ์ธ์ด ์ฝ๋-๊ตญ๊ฐ ์ฝ๋์ ์กฐํฉ = "์ด๋ค ๊ตญ๊ฐ์์ ์ฌ์ฉํ๋ ์ด๋ค ์ธ์ด"
ex) ko-KR, en-GB, en-US - Content-Encoding ํค๋: ๋ฉ์์ง ๋ณธ๋ฌธ์ ์์ถํ๊ฑฐ๋ ๋ณํํ ๋ฐฉ์
- Content-Type ํค๋: ๋ฉ์์ง ๋ณธ๋ฌธ์์ ์ฌ์ฉ๋ ๋ฏธ๋์ด ํ์

HTTP ๊ธฐ๋ฐ ๊ธฐ์
1. ์บ์
์๋ต ๋ฐ์ ์์์ ์ฌ๋ณธ์ ์์ ์ ์ฅํ๋ ๊ธฐ์
- ์ถํ ๋์ผํ ์์ฒญ์ ๋ํด ์บ์๋ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ ์ ์์
- ๋ถํ์ํ ๋์ญํญ ๋ญ๋น ๋ฐฉ์ง, ์๋ต ์ง์ฐ ๋ฐฉ์ง
- ๋น ๋ฅธ ์์ ์ ๊ทผ ๊ฐ๋ฅ
- ๊ฐ์ธ ์ ์ฉ ์บ์(private cache): ์น ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ
- ๊ณต์ฉ ์บ์(public cache): ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฌ์ด์ ์์นํ ์ค๊ฐ ์๋ฒ์ ์ ์ฅ
- ์บ์๋ '์ฌ๋ณธ'์ด๊ธฐ ๋๋ฌธ์ ์ ์ ๋์ ๊ฒ์ฌ์ ์ ์ง ํ์
- ์บ์๋ ๋ฐ์ดํฐ๋ ์ผ๋ง๋ ์ง ์๋ณธ ๋ฐ์ดํฐ์ ๋ฌ๋ผ์ง ์ ์์
- ์บ์ ์ ์ ๋: ์บ์๋ ์ฌ๋ณธ ๋ฐ์ดํฐ๊ฐ ์ผ๋ง๋ ์ต์ ์๋ณธ ๋ฐ์ดํฐ์ ์ ์ฌํ์ง๋ฅผ ํํ์ผ๋ก,
- ์บ์ ์ ์ ๋๊ฐ ๋์์๋ก ํด๋ผ์ด์ธํธ๋ ์ต์ ์ ๋ณด๋ฅผ ์์ ์ ์ฅํ ์ํ๋ผ๋ ๊ฒ์ ์๋ฏธ
์บ์ ์ ์ ๋ ๊ฒ์ฌ: ์ ํจ ๊ธฐ๊ฐ ์ค์ → ๊ธฐ๊ฐ์ด ๋ง๋ฃ๋์๋ค๋ฉด ์๋ณธ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์์ฒญ
- ์๋ต ๋ฉ์์ง์ Expires ํค๋(๋ ์ง)์ Cache-Control ํค๋์ Max-Age ๊ฐ(์ด)์ ์ฌ์ฉ
ex) ์บ์์ ์ ํจ ์๊ฐ์ 2024๋ 2์ 6์ผ ํ์์ผ 12:00:00๋ก ์ค์ , ๋๋ 1200์ด๋ก ์ค์ ํ๋ ์๋ต ๋ฉ์์ง

- ์ ํจ ๊ธฐ๊ฐ์ด ๋๋ฌ์ด๋ ์๋ฒ์ ์๋ณธ ๋ฐ์ดํฐ๊ฐ ๋ณํํ์ง ์์๋ค๋ฉด, ์บ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํด๋ ๋จ. ์ด๋ฅผ ๊ฒ์ฌํ๊ธฐ ์ํด ํด๋ผ์ด์ธํธ๋ ์บ์ ์ ์ ๋์ ์ฌ๊ฒ์ฌ๋ฅผ ์ํํจ
์บ์ ์ ์ ๋ ์ฌ๊ฒ์ฌ
1) If-Modified-Since ํค๋: ๋ ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ฒ์๊ฒ ๋ฌผ์ด๋ณด๋ ๋ฐฉ๋ฒ
- If-Modified-Since ํค๋์ ๋ช ์๋ ์์ ์ดํ๋ก ์๋ณธ์ ๋ณ๊ฒฝ์ด ์์๋ค๋ฉด ๊ทธ๋๋ง ์ ์์์ผ๋ก ์๋ตํ๋๋ก ์๋ฒ์๊ฒ ์์ฒญํ๋ ํค๋

- ์๋ฒ์ Last-Modified ํค๋: ์ํ ์ฝ๋ 304(Not Modified)๋ฅผ ํตํ ์์์ '๋ณ๊ฒฝ ์ฌ๋ถ'๋ฟ๋ง ์๋๋ผ, ์์์ด ๋ง์ง๋ง์ผ๋ก ์์ ๋ ์์ ๋ ์๋ ค์ค ์ ์์

2) If-None-Match ํค๋: ์ํฐํฐ ํ๊ทธ(Etag)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ฒ์๊ฒ ๋ฌผ์ด๋ณด๋ ๋ฐฉ๋ฒ
- Etag๋ '์์์ ๋ฒ์ '์ ์๋ณํ๊ธฐ ์ํ ์ ๋ณด
- ๋ฒ์ (version): '์ ์๋ฏธํ ๋ณ๊ฒฝ ์ฌํญ'
- ์ฆ, ์์์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์์์ ๋ฒ์ ์ ์๋ณํ๋ Etag ๊ฐ์ด ๋ณ๊ฒฝ
- ๋ฐ๋๋ก ์์์ด ๋ณ๊ฒฝ๋์ง ์์๋ค๋ฉด Etag ๊ฐ๋ ๋ณ๊ฒฝ๋์ง ์์ → 304(Not Modified) ์ํ ์ฝ๋ ๋ฐํ

- '์ด Etag ๊ฐ๊ณผ ์ผ์นํ๋ ์์์ด ์๋๊ฐ?', 'ํน์ Etag ๊ฐ์ด abc์ธ www.example.com/index.html์ด๋ผ๋ ์์์ด ์๋๊ฐ? ์์์ด ๋ณ๊ฒฝ๋์๋ค๋ฉด(Etag ๊ฐ์ด ๋ฐ๋์๋ค๋ฉด) ๊ทธ๋๋ง ์ ์์์ผ๋ก ์๋ตํ๋ผ'์ ๊ฐ์ด ์ ์ ๋ ๊ฒ์ฌ

2. ์ฟ ํค(Cookie)
- HTTP๋ ์ํ๋ฅผ ์ ์งํ์ง ์๋ ์คํ ์ดํธ๋ฆฌ์คํ ํ๋กํ ์ฝ์
- ์๋ฒ์์ ์์ฑ๋์ด ํด๋ผ์ด์ธํธ ์ธก์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ
- ์ํ๋ฅผ ์ ์งํ์ง ์๋ HTTP์ ํน์ฑ์ ๋ณด์ํ๊ธฐ ์ํ ์๋จ
- ๊ธฐ๋ณธ์ ์ผ๋ก <์ด๋ฆ, ๊ฐ> ์์ ํํ, ์ถ๊ฐ๋ก ๋ค์ํ ์์ฑ์ ๊ฐ์ง ์ ์์
- ์๋ฒ๋ ์ฟ ํค๋ฅผ ์์ฑํ์ฌ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์ก
- ํด๋ผ์ด์ธํธ๋ ์ ๋ฌ๋ฐ์ ์ฟ ํค๋ฅผ ์ ์ฅํด ๋์๋ค๊ฐ ์ถํ ์์ฒญ ๋ฉ์์ง์ ์ฟ ํค๋ฅผ ํฌํจํ์ฌ ์ ์ก
- ์ฟ ํค๋ฅผ ํตํด ์์ฒญ์ด ๊ฐ์ ํด๋ผ์ด์ธํธ์์ ์๋์ง, ๋ก๊ทธ์ธ ์ํ๋ฅผ ์ ์งํ๊ณ ์๋์ง ๋ฑ์ ์ ์ ์์

[์ฟ ํค๋ฅผ ํ์ฉํ๋ ์ธ์ฆ ๊ธฐ์ , ์ธ์ ์ธ์ฆ]
- HTTP๋ ์คํ
์ดํธ๋ฆฌ์ค ํ๋กํ ์ฝ
- ๊ฐ์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ฌ๋ฌ ๋ฒ ์์ฒญ์ ๋ณด๋ธ๋ค๊ณ ํด๋, ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ฒ๋ ๋ชจ๋ ์์ฒญ๋ค์ ๋ณ๊ฐ์ ์์ฒญ์ผ๋ก ๊ฐ์ฃผ
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ๋๋ง๋ค (์์ด๋, ๋น๋ฐ๋ฒํธ์ ๊ฐ์) ์ธ์ฆ ์ ๋ณด๋ฅผ ๋ณด๋ด๊ณ ๋ฒ๊ฑฐ๋ก์ด ์ธ์ฆ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๋ ๊ฒ์ธ๊ฐ?
- ๊ทธ๋ด ํ์ ์์! ์ฟ ํค๋ฅผ ํ์ฉํ๋ ๊ธฐ์ ์กด์ฌ
- ์ธ์
์์ด๋(session id)์ ์ธ์
์ธ์ฆ(session authentication)
โ ํด๋ผ์ด์ธํธ๋ ์๋ฒ์๊ฒ (์์ด๋, ๋น๋ฐ๋ฒํธ์ ๊ฐ์) ์ธ์ฆ ์ ๋ณด๋ฅผ ์ ์ก
โก ์ธ์ฆ ์ ๋ณด๊ฐ ์ฌ๋ฐ๋ฅด๋ค๋ฉด, ์๋ฒ๋ ์ธ์ ์์ด๋๋ฅผ ์์ฑํด ํด๋ผ์ด์ธํธ์๊ฒ ์ ์ก
โข ์๋ฒ๋ ์์ฑํ ์ธ์ ์์ด๋๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ์ ์ ์ฅ
โฃ ํด๋ผ์ด์ธํธ๋ ์ถํ ์์ฒญ์ ๋ณด๋ผ ๋ ์ฟ ํค ๋ด์ ์ธ์ ์์ด๋๋ฅผ ํฌํจํ์ฌ ์ ์ก
โค ์๋ฒ๋ ์ฟ ํค ์ ์ธ์ ์์ด๋์ ์ ์ฅ๋ ์ธ์ ์์ด๋๋ฅผ ๋น๊ตํ์ฌ ํด๋ผ์ด์ธํธ๋ฅผ ์๋ณ
→ ์์ฒญ์ ๋ณด๋ผ ๋๋ง๋ค ๋ฒ๊ฑฐ๋ก์ด ์ธ์ฆ ๊ณผ์ ์ ๊ฑฐ์น ํ์๊ฐ ์์ - ์๋ฒ์ ์ฟ ํค ์์ฑ - ํด๋ผ์ด์ธํธ์ ์ฟ ํค ํ์ฉ
- ์๋ต ๋ฉ์์ง์ Set-Cookie ํค๋, ์์ฒญ ๋ฉ์์ง์ Cookie ํค๋ ํ์ฉ
- ์๋ต ๋ฉ์์ง์ Set-Cookie ํค๋
- ์ฟ ํค์ ์ด๋ฆ, ๊ฐ๊ณผ ๋๋ถ์ด ์ธ๋ฏธ์ฝ๋ก (;)์ผ๋ก ๊ตฌ๋ถ๋๋ ์์ฑ(๋ค)์ ์ ๋ฌ
- ํ ์๋ต ๋ฉ์์ง์ ์ ๋ฌํ ์ฟ ํค๊ฐ ์ฌ๋ฌ ๊ฐ๋ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ฌ๋ฌ ๊ฐ์ Set-Cookie

- ์์ฒญ ๋ฉ์์ง์ Cookie ํค๋
- ์๋ฒ์ ์ ๋ฌํ ์ฟ ํค์ ์ด๋ฆ๊ณผ ๊ฐ์ ๋ํ๋ด๋ ํค๋
- ์ฌ๋ฌ ๊ฐ์ ์ฟ ํค ๊ฐ์ ์๋ฒ์ ์ ๋ฌํด์ผ ํ ๋๋ ์ธ๋ฏธ ์ฝ๋ก (;)์ ์ฌ์ฉ

- ์ฟ ํค๋ ๋ธ๋ผ์ฐ์ ์์ ์ ์ฅ๋๊ณ ๊ด๋ฆฌ๋จ
- ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ์์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ด๊ณ , [Application] → [Storage] → [Cookies]
[์ฟ ํค์ ์์ฑ ๊ฐ]

- ์ฟ ํค๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๋๋ฉ์ธ์ด ์ ํด์ ธ ์์
- www.naver.com์๊ฒ ๋ฐ์ ์ฟ ํค๋ฅผ ์ ํ ๋ค๋ฅธ ์น ์ฌ์ดํธ์ธ www.google.com์๊ฒ ์ ์กํ๋ฉด ์๋จ
- ์๋ต ๋ฉ์์ง ์ Set-Cookie ํค๋์ 'domain' ์์ฑ์ผ๋ก ์ ํจ

- ๊ฐ์ ๋๋ฉ์ธ์ด๋ผ๋ ๊ฒฝ๋ก๋ณ๋ก ์ฟ ํค๋ฅผ ๊ตฌ๋ถํ์ฌ ์ฌ์ฉํ๊ณ ์ถ์ ๊ฒฝ์ฐ
- ex) www.example.com/lectures๋ฅผ ํฌํจํ ํ์ ๊ฒฝ๋ก์์ ์ฌ์ฉํ๊ณ ์ ํ๋ ์ฟ ํค์ www.example.com/books๋ฅผ ํฌํจํ ํ์ ๊ฒฝ๋ก์์ ์ฌ์ฉํ๊ณ ์ ํ๋ ์ฟ ํค๋ฅผ ๊ตฌ๋ถํ๊ณ ์ถ์ ๊ฒฝ์ฐ
- 'path' ์์ฑ์ผ๋ก ์ฟ ํค๊ฐ ์ ์ฉ๋ ๊ฒฝ๋ก๋ฅผ ๋ช ์: ์ง์ ๋ ๊ฒฝ๋ก + ํ์ ๊ฒฝ๋ก์์ ์ฟ ํค ํ์ฉ

- ์ฟ ํค ์ ํจ ๊ธฐ๊ฐ
- Expires ์์ฑ์ ํตํด ์ฟ ํค ๋ง๋ฃ ์์ ์ง์
- Max-Age ์์ฑ์ ํตํด ์ด ๋จ์ ์ ํจ ๊ธฐ๊ฐ ์ง์

[์ฟ ํค์ ํ๊ณ์ ๋ณด์ ๊ธฐ์ ]
์ฟ ํค์ ํ๊ณ
- ์ฟ ํค์ ๋ํ์ ์ธ ํ๊ณ๋ ๋ณด์์ด๋ค.
- ์ฟ ํค ์ ๋ณด๋ ์ฝ๊ฒ ๋ ธ์ถ๋๊ฑฐ๋ ์กฐ์๋ ์ ์์
Secure์ HttpOnly
- Secure: HTTPS ํ๋กํ ์ฝ์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ์๋ง ์ฟ ํค ์ ์ก
- HttpOnly: HTTP ์ก์์ ์ ํตํด์๋ง ์ฟ ํค๋ฅผ ์ด์ฉํ๋๋ก ์ ํํ๋ ์์ฑ
- ์ฟ ํค ๊ด๋ จ ๋ฐ์ดํฐ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ธ์ด๋ฅผ ํตํด์๋ ์ ๊ทผ ๊ฐ๋ฅ
- HttpOnly๋ ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฟ ํค์ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ํ๋ ์์ฑ
์ฟ ํค์ ์ ์ฌํ ์น ์คํ ๋ฆฌ์ง: ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ์ธ์ ์คํ ๋ฆฌ์ง
ํด๋ผ์ด์ธํธ๊ฐ ์ ์ฅํ๊ณ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ์ถ์ธกํ ์ ์๋ <ํค-๊ฐ> ์ ํํ์ ์ ๋ณด
- ์น ์คํ ๋ฆฌ์ง๋ ์น ๋ธ๋ผ์ฐ์ ๋ด์ ์ ์ฅ, ์ผ๋ฐ์ ์ผ๋ก ์ฟ ํค๋ณด๋ค ๋ ํฐ ๋ฐ์ดํฐ ์ ์ฅ ๊ฐ๋ฅ
- ์ฟ ํค๋ ์๋ฒ๋ก ์๋ ์ ์ก๋์ง๋ง, ์น ์คํ ๋ฆฌ์ง์ ์ ๋ณด๋ ์๋ฒ๋ก ์๋ ์ ์ก X
- ์น ์คํ ๋ฆฌ์ง ์ข ๋ฅ์๋ ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ์ธ์ ์คํ ๋ฆฌ์ง ์กด์ฌ
- ๋ก์ปฌ ์คํ ๋ฆฌ์ง(local storage): ๋ณ๋๋ก ์ญ์ ํ์ง ์๋ ํ ์๊ตฌ์ ์ผ๋ก ์ ์ฅ์ด ๊ฐ๋ฅํ ์ ๋ณด
- ์ธ์ ์คํ ๋ฆฌ์ง(session storage): ์ธ์ ์ด ์ ์ง๋๋ ๋์(๋ธ๋ผ์ฐ์ ๊ฐ ์ด๋ ค ์๋ ๋์) ์ ์ง๋๋ ์ ๋ณด
3. ์ฝํ ์ธ ํ์
๊ฐ์ URI์ ๋ํด ๊ฐ์ฅ ์ ํฉํ '์์์ ํํ'๋ฅผ ์ ๊ณตํ๋ ๋ฉ์ปค๋์ฆ
- ๊ฐ์ URI๋ก ์๋ณ ๊ฐ๋ฅํ HTML ๋ฌธ์๋ผ ํด๋, ์์ด๋ก ์์ฒญํ๋ฉด ์์ด๋ก ๋ ํํ๋ฅผ ์ ๊ณต, ํ๊ตญ์ด๋ก ์์ฒญํ๋ฉด ํ๊ตญ์ด๋ก ๋ ํํ ์ ๊ณต
- ์์์ ํํ(representation): ์ก์์ ๊ฐ๋ฅํ ์์์ ํํ
- ์ฆ, ์ฝํ ์ธ ํ์์ ํด๋ผ์ด์ธํธ์๊ฒ ๊ฐ์ฅ ์ ํฉํ ์์์ ํํ์ ์ ๊ณตํ๋ ๋ฉ์ปค๋์ฆ
- GET ๋ฉ์๋์ ์ ์: '์์์ ํน์ ํํ์ ์ต๋ํ๊ธฐ ์ํ ๋ฉ์๋'
- ์ฝํ
์ธ ํ์ ๊ด๋ จ HTTP ํค๋
- Accept ํค๋: ์ ํธํ๋ ๋ฏธ๋์ด ํ์
- Accept-Language: ์ ํธํ๋ ์ธ์ด
- Accept-Charset ๋ฐ Accept-Encoding: ์ ํธํ๋ ๋ฌธ์ ์ธ์ฝ๋ฉ๊ณผ ์์ถ ๋ฐฉ์
- ex) ํด๋ผ์ด์ธํธ๊ฐ ์ ํธํ๋ ์ธ์ด๊ฐ ํ๊ตญ์ด ๋ฐ ํด๋ผ์ด์ธํธ๊ฐ HTML ๋ฌธ์ ํ์ ์ ์ ํธ

- ์ ํธ๋์ ์ฐ์ ์์ ๋ฐ์ ๊ฐ๋ฅ
ex) '์ธ์ด๋ ํ๊ตญ์ด๋ฅผ ๊ฐ์ฅ ์ ํธํ์ง๋ง, ์์ด๋ ๋ฐ์ ์ฉ์๊ฐ ์๋ค.'
'๋ฏธ๋์ด ํ์ ์ HTML ๋ฌธ์๋ฅผ ๊ฐ์ฅ ์ ํธํ๊ณ , XML์ ๋ค์์ผ๋ก ์ ํธํ๊ณ , ์ผ๋ฐ ํ ์คํธ๋ฅผ ๋ค์์ผ๋ก ์ ํธํ๋ค'- ์ฐ์ ์์๋ ์ฝํ
์ธ ํ์ ๊ด๋ จ ํค๋์ q๊ฐ์ผ๋ก ํํ(q๋ Quality Value์ ์ฝ์)
- ๊ฐ์ด ํด์๋ก ์ฐ์ ์์๊ฐ ๋์
- ์๋ต๋์์ ๊ฒฝ์ฐ์๋ 1์ ์๋ฏธ
- ๋ฒ์๋ 0๋ถํฐ 1๊น์ง
- ex) ํ๊ตญ์ด(ko-KR, ko), ์์ด(en-US, en)์์ผ๋ก ์ ํธํ๊ณ , HTML, XML, ์ผ๋ฐ ํ ์คํธ ์์ผ๋ก ์ ํธ
- ์ฐ์ ์์๋ ์ฝํ
์ธ ํ์ ๊ด๋ จ ํค๋์ q๊ฐ์ผ๋ก ํํ(q๋ Quality Value์ ์ฝ์)

