๐ URI
URI(Uniform Resource Identifier)๋ ์์์ ์๋ณํ ์ ์๋ ์ ๋ณด๋ฅผ ๋งํฉ๋๋ค.
URI๋ ์๋ณ์ ์ฌ์ฉ๋๋ ์ ๋ณด์ ๋ฐ๋ผ ์์น ๊ธฐ๋ฐ ์๋ณ์์ธ URL(Uniform Resource Locator)๊ณผ ์ด๋ฆ ๊ธฐ๋ฐ ์๋ณ์์ธ URN(Uniform Resource Name)์ผ๋ก ๋๋์ด์ง๋๋ค.
์์(Resource)
- ๋คํธ์ํฌ ์์ ๋ฉ์ธ์ง๋ฅผ ํตํด ์ฃผ๊ณ ๋ฐ๋ ๋์์ ์๋ฏธํฉ๋๋ค.
- ์ค๋๋ ์ธํฐ๋ท ํ๊ฒฝ์ ์ด๋ฃจ๋ ๋๋ถ๋ถ์ ํต์ ์ HTTP๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด๋ฃจ์ด์ง๋ฏ๋ก HTTP ์์ฒญ ๋ฉ์ธ์ง์ ๋์์ ์๋ฏธํ๊ธฐ๋ ํฉ๋๋ค.
๐ URL
URL์ ํ๊ธฐ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
URL ๊ตฌ์ฑ์์ | ์ ์ | ์ฌ์ฉ |
---|---|---|
Scheme | ์์์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ | ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ฉํ Protocol์ด ๋ช ์ |
Authority | Host๋ฅผ ํน์ ํ ์ ์๋ ์ ๋ณด | IP Address ํน์ Domain Name |
Path | ์์์ด ์์นํ ๊ฒฝ๋ก | / ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ณ์ธต์ ์ผ๋ก ํํ |
Query | Query String(Query Parameter)๋ฅผ ์ด์ฉํด ๋ ์์ธํ ์์์ ์์ฒญ | โข ? ๋ก ์์ โข key = value ํํ์ด๋ฉฐ & ๋ก ์ฐ๊ฒฐ |
Fragment | ์์์ ํ ์กฐ๊ฐ์ ๊ฐ๋ฆฌํค๊ธฐ ์ํ ์ ๋ณด | ํํ HTML๊ณผ ๊ฐ์ ์์์์ ํน์ ๋ถ๋ถ์ ๊ฐ๋ฆฌํค๊ธฐ ์ํด ์ฌ์ฉ |
๐ URN
URL์ ๊ฐ์ฅ ํฐ ๋ฌธ์ ์ ์ ์์์ ์์น๊ฐ ๋ณํ๋ค๋ฉด ๋ ์ด์ ์ ์ํ์ง ์๋ค๋ ์ ์ ๋๋ค.
๊ทธ๋ฌ๋ URN์ ์์์ ๊ณ ์ ํ ์ด๋ฆ์ ๋ถ์ด๋ ์ด๋ฆ ๊ธฐ๋ฐ ์๋ณ์์ด๊ธฐ์ ์์์ ์์น์ ๋ฌด๊ดํ๊ฒ ์์์ ์๋ณํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
๋ค๋ง ์์ง ๋๋ฆฌ ์ฑํ๋ ๋ฐฉ์์ ์๋๋๋ค.
๐ Domain
๋คํธ์ํฌ ์์ ์ด๋ค Host๋ฅผ ํน์ ํ๊ธฐ ์ํด์๋ IP Address๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฌ๋ ํต์ ํ๊ณ ์ ํ๋ ๋ชจ๋ Host์ IP ์ฃผ์๋ฅผ ๊ธฐ์ตํ๊ณ ์๊ธฐ๋ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก IP Address๋ณด๋ค๋ Domain Name์ ๋ ๋ง์ด ์ฌ์ฉํฉ๋๋ค.
Name Server์์ IP Address์ Domain Name์ ๊ด๋ฆฌํ๊ณ ์๊ธฐ ๋๋ฌธ์ Name Server์ Domain Name์ ๋ฌผ์ด๋ณด๋ฉด ํด๋น Domain Name์ ๋ํ IP Address๋ฅผ ์๋ ค์ค๋๋ค.
Domain Name๊ณผ IP Address๋ฅผ ๋์์ํค๋ ๊ฒ์ IP Address๊ฐ ๋ฐ๋๋๋ผ๋ ๋ฐ๋ IP Address์ Domain Name์ ๋ค์ ๋์์ํค๋ฉด ๋๋ฏ๋ก IP Address๋ง์ผ๋ก Host๋ฅผ ํน์ ํ๋ ๊ฒ๋ณด๋ค ๋ ๊ฐํธํฉ๋๋ค.
๐ Domain Name
Domain Name์ .
์ ๊ธฐ์ค์ผ๋ก ๋ค์ ์ด๋ฏธ์ง์ ๊ฐ์ด ๊ณ์ธต์ ์ผ๋ก ๋ถ๋ฅ๋ฉ๋๋ค. ๋ํ www.naver.com
๊ณผ ๊ฐ์ด Domain Name์ ๋ชจ๋ ํฌํจํ๋ ๊ฒ์ FQDN(Fully-Qualified Domain Name)์ด๋ผ ํ๋ฉฐ Host Name์ด๋ผ ๋ถ๋ฅด๊ธฐ๋ ํฉ๋๋ค.
๐ DNS(Domain Name System)
DNS๋ ๊ณ์ธต์ ์ธ Domain Name์ ๋ํ ๊ด๋ฆฌ ์ฒด๊ณ์ด์ ์ด๋ฅผ ๊ด๋ฆฌํ๋ ํ๋กํ ์ฝ์ ๋๋ค.
Resolving ๊ณผ์ ์์ ๋ค์ํ Name Server๋ค์ด ์ฌ์ฉ๋๋๋ฐ, ์ค์ํ ์ญํ ์ ๋ด๋นํ๋ 4๊ฐ์ Name Server๋ฅผ ์์๋ณด๊ฒ ์ต๋๋ค.
Name Server | ์ค๋ช |
---|---|
Local Name Server(Local DNS Server, Resolver) | โข Client์ ๋ง๋ฟ์ ์๋ Name Server โข Client๊ฐ Domain Name์ ํตํด IP Address๋ฅผ ์์๋ด๊ณ ์ ํ ๋ ๊ฐ์ฅ ๋จผ์ ์ฐพ๊ฒ ๋๋ Name Server Local Name Server์ ์ฃผ์๋ ์ผ๋ฐ์ ์ผ๋ก ISP(Internet Service Provider)์์ ํ ๋น โข Public DNS Server๋ก ๋์ฒดํ ์ ์์ |
Root Name Server(Root DNS Server) | โข Root Domain์ ๊ด์ฅํ๋ Name Server โข Local Name Server๊ฐ Domain Name๊ณผ ๋์๋๋ IP Address๋ฅผ ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ TLD Name Server์ IP Address๋ฅผ ๋ฐํ |
TLD Name Server(TLD Server) | โข TLD(Top-Level Domain)๋ฅผ ๊ด๋ฆฌํ๋ Name Server โข TLD์ ํ์ Domain Name์ ๊ด๋ฆฌํ๋ Name Server์ IP Address๋ฅผ ๋ฐํ |
Authoritative Name Server | โข ํน์ Domain Zone์ ๊ด๋ฆฌํ๋ Name Server๋ก, ์์ ์ด ๊ด๋ฆฌํ๋ Domain Zone์ ๋ํด์๋ ๋ค๋ฅธ Name Server์๊ฒ ๋ ๋๊ธฐ์ง ์๊ณ ๊ณง๋ฐ๋ก ๋ตํ ์ ์๋ Server โข Local Name Server๊ฐ ๋ง์ง๋ง์ผ๋ก ์ง์ํ๋ Name Server |
Resolving: IP Address๋ฅผ ๋ชจ๋ฅด๋ ์ํ์์ Domain Name์ ๋์๋๋ IP Address๋ฅผ ์์๋ด๋ ๊ณผ์
๐ Resolving
Recursive Query / Iterative Query
Resolving ๊ณผ์ ์์ Local Name Server๊ฐ ๋ค๋ฅธ Name Server๋ค์๊ฒ ์ง์ํ๋ ๋ฐฉ๋ฒ์๋ ํฌ๊ฒ Recursive Query์ Iterative Query๊ฐ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ฌ๋ฌ ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ Resolving ๊ณผ์ ์ ๋ฐ๋ณต์ ์ผ๋ก ์ฌ๋ฌ Client๊ฐ ์ง์ํ ๊ฒฝ์ฐ Name Server์ ๊ณผ๋ถํ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ DNA Cache๋ฅผ ํ์ฉํฉ๋๋ค. ์ด๋ DNA Cache์ ์ ์ฅ๋ ๊ฐ์ TTL(Time To Live)๋์ ์ ์ง๋ฉ๋๋ค.
๐ Protocol
๐ HTTP(Hyper Text Transfer Protocol)
๐ HTTP Version
HTTP์ ๋ฐ์ ํด์จ Version์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
HTTP / Version | ์ค๋ช |
---|---|
HTTP / $0.9$ | โข ๊ฑฐ์ ์ฌ์ฉ๋์ง ์๋ ์ด์ฐฝ๊ธฐ HTTP Version โข ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ์๋๊ฐ GET ๋ฟ โข ์์ฒญ ๋ฉ์ธ์ง๋ ํ ์ค๋ก ๊ตฌ์ฑ โข Header๊ฐ ์ง์๋์ง ์์ |
HTTP / $1.0$ | โข HEAD , POST ์ ๊ฐ์ GET ์ด์ธ์ ๋ฉ์๋๊ฐ ๋์
โข Header ์ง์ โข ๋น์ง์ ์ฐ๊ฒฐ |
HTTP / $1.1$ | โข ์ง์ ์ฐ๊ฒฐ โข Pipelining ๊ธฐ๋ฅ ์ถ๊ฐ |
HTTP / $2.0$ | โข ์ก์์ ํจ์จ์ ๋์ด๊ธฐ ์ํด Header๋ฅผ ์์ถํ์ฌ ์ ์ก(Text ๊ธฐ๋ฐ์ ๋ฉ์ธ์ง โ Binary ๊ธฐ๋ฐ์ ๋ฉ์ธ์ง) โข Server Push ๊ธฐ๋ฅ ์ถ๊ฐ โข Multiplexing ๊ธฐ๋ฅ ์ถ๊ฐ |
HTTP / $3.0$ | UDP๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ๋ QUIC(Quick UDP Internet Connections) ํ๋กํ ์ฝ์ ๊ธฐ๋ฐ์ผ๋ก ๋์ |
- Pipelining: ํน์ ์์ฒญ์ ๋ํ ์๋ต์ด ์์ ๋๊ธฐ ์ ์ ๋ค์ ์์ฒญ์ ๋ณด๋ผ ์ ์๋ ๊ธฐ๋ฅ
- Server Push: Client๊ฐ ์์ฒญํ์ง ์์๋๋ผ๋ ๋ฏธ๋์ ํ์ํ ๊ฒ์ผ๋ก ์์๋๋ ์์์ ๋ฏธ๋ฆฌ ์ ์กํด์ฃผ๋ ๊ธฐ๋ฅ
- Multiplexing
- ์ฌ๋ฌ Stream์ ์ด์ฉํด ๋ณ๋ ฌ์ ์ผ๋ก ๋ฉ์ธ์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ธฐ์
- HOL(Hot-Of-Line) Blocking ๋ฌธ์ ๋ฅผ ํด๊ฒฐ
- ์ฌ๋ฌ ๊ฐ์ Stream๋ณ๋ก ๋ ๋ฆฝ์ ์ธ ์ก์์ ์ด ๊ฐ๋ฅํ๋ฉฐ Stream๋ณ ๋ฉ์ธ์ง๋ค์ ์ผ์ ํ ์์๋ฅผ ์ ์งํ ํ์๊ฐ ์์
- HOL(Hot-Of-Line) Blocking
- HTTP / $1.1$๊น์ง ๊ณ ์ง์ ์ธ ๋ฌธ์
- ๊ฐ์ ํ์ ๋๊ธฐํ๋ฉฐ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ ์ฌ๋ฌ ๋ฐ์ดํฐ๊ฐ ์์ ๋, ์ฒซ ๋ฒ์งธ ๋ฐ์ดํฐ์ ์ฒ๋ฆฌ ์ง์ฐ์ผ๋ก ์ธํด ๋๋จธ์ง ๋ฐ์ดํฐ๋ค์ ์ฒ๋ฆฌ๋ ๋ชจ๋ ์ง์ฐ๋๋ ๋ฌธ์
๐ HTTP ํน์ง
HTTP์ ํน์ง์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
HTTP ํน์ง | ์ค๋ช |
---|---|
์์ฒญ - ์๋ต ๊ธฐ๋ฐ | Client์ Server๊ฐ ์๋ก HTTP ์์ฒญ ๋ฉ์ธ์ง์ HTTP ์๋ต ๋ฉ์ธ์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ตฌ์กฐ๋ก ๋์ |
๋ฏธ๋์ด ๋ ๋ฆฝ | โข HTTP๋ ์ฃผ๊ณ ๋ฐ์ ์์์ ํน์ ๊ณผ ๋ฌด๊ดํ๊ฒ ๊ทธ์ ์ฃผ๊ณ ๋ฐ์ ์๋จ(Interface)์ ์ญํ ๋ง์ ์ํ โข MIME Type |
Stateless | โข Client์ ๋ชจ๋ HTTP ์์ฒญ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋
๋ฆฝ์ ์ธ ์์ฒญ์ผ๋ก ๊ฐ์ฃผ โข Stateless๋ฅผ ๋ณด์ํ๊ธฐ ์ํ ๊ธฐ์ : Cookie |
์ง์ ์ฐ๊ฒฐ | โข HTTP๋ ๋น์ฐ๊ฒฐํ ํ๋กํ ์ฝ์ด์ง๋ง ๊ธฐ๋ณธ์ ์ผ๋ก TCP ์์์ ๋์ โข HTTP 1.0 ์ดํ๋ ๋น์ง์ ์ฐ๊ฒฐ / HTTP 1.1 ์ด์์ ์ง์ ์ฐ๊ฒฐ |
ํ์ฅ์ฑ(Scalability) | HTTP์ ์ค์ ์ค๊ณ ๋ชฉํ๋ก ์ธ์ ๋ ์ฝ๊ฒ Server๋ฅผ ์ถ๊ฐํ ์ ์์์ ๋ปํจ |
๊ฒฌ๊ณ ์ฑ(Robustness) | HTTP์ ์ค์ ์ค๊ณ ๋ชฉํ๋ก Server ์ค ํ๋์ ๋ฌธ์ ๊ฐ ์๊ฒจ๋ ์ฝ๊ฒ ๋ค๋ฅธ Server๋ก ๋์ฒด๊ฐ ๊ฐ๋ฅํจ์ ๋ปํจ |
- MIME Type(Multipurpose Internet Mail Extensions Type): HTTP์์ ๋ฉ์ธ์ง๋ก ์ฃผ๊ณ ๋ฐ๋ ์์์ ์ข ๋ฅ
- ๋น์ง์ ์ฐ๊ฒฐ: Three-Way Handshake๋ฅผ ํตํด TCP ์ฐ๊ฒฐ ์๋ฆฝ ํ ์์ฒญ์ ๋ํ ์๋ต์ ๋ฐ์ผ๋ฉด ์ฐ๊ฒฐ์ ์ข ๋ฃํ๋ ๋ฐฉ์์ผ๋ก ๋์ํ๋ฉฐ ์ถ๊ฐ์ ์ธ ์์ฒญ-์๋ต์ ํ๊ธฐ ์ํด์๋ ๋ค์ TCP ์ฐ๊ฒฐ์ ํด์ผํจ
- ์ง์ ์ฐ๊ฒฐ(Persistent Connection ๋๋ Keep-Alive): ํ๋์ TCP ์ฐ๊ฒฐ์์์ ์ฌ๋ฌ ๊ฐ์ ์์ฒญ-์๋ต์ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ ๊ธฐ์
๐ HTTP Message
HTTP ๋ฉ์ธ์ง์ ๊ตฌ์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ตฌ์ฑ | ๋ด์ฉ |
---|---|
Start-Line | โข Request: HTTP-Method ๊ณต๋ฐฑ Request-Target ๊ณต๋ฐฑ HTTP/Version โข Response: HTTP/Version ๊ณต๋ฐฑ Status-Code ๊ณต๋ฐฑ Reason-Phrase |
Field-Line | HTTP-Header |
Message-Body | ๋ฉ์ธ์ง ๋ณธ๋ฌธ์ ์กด์ฌํ์ง ์์ ์๋ ์๊ณ , ๋ค์ํ ์ฝํ ์ธ ํ์ ์ด ์ฌ์ฉ๋ ์ ์์ |
๐ HTTP Method
HTTP Method๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
HTTP Method | ์ค๋ช |
---|---|
GET | ์์์ ํน์ ํํ์ ์ต๋ํ๊ธฐ ์ํ ๋ฉ์๋ |
HEAD | GET๊ณผ ๋์ผํ๋, Header๋ง์ ์๋ต๋ฐ๋ ๋ฉ์๋ |
POST | Server๋ก ํ์ฌ๊ธ ํน์ ์์ ์ ์ฒ๋ฆฌํ๋๋ก ํ๋ ๋ฉ์๋ |
PUT | โข ์์ฒญ ์์์ด ์๋ค๋ฉด ๋ฉ์ธ์ง ๋ณธ๋ฌธ์ผ๋ก ์์์ ์์ฑ โข ์ด๋ฏธ ์์์ด ์๋ค๋ฉด ๋ฉ์ธ์ง ๋ณธ๋ฌธ์ผ๋ก ์์์ ์์ ํ ๋์ฒด |
PATCH | ์์์ ๋ํ ๋ถ๋ถ์ ์์ ์ ์ํ ๋ฉ์๋ |
DELETE | ์์์ ์ญ์ ํ๊ธฐ ์ํ ๋ฉ์๋ |
CONNECT | ์์์ ๋ํ ์๋ฐฉํฅ ์ฐ๊ฒฐ์ ์์ํ๋ ๋ฉ์๋ |
OPTIONS | ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ์๋ ๋ฑ ํต์ ์ต์ ์ ํ์ธํ๋ ๋ฉ์๋ |
TRACE | ์์์ ๋ํ ๋ฃจํ๋ฐฑ ํ ์คํธ๋ฅผ ์ํํ๋ ๋ฉ์๋ |
๐ HTTP Status Code
HTTP Status Code๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Status Code | ์ ์ | ์์ |
---|---|---|
100 ~ 199 | ์ ๋ณด์ฑ ์ํ ์ฝ๋ | ย |
200 ~ 299 | ์ฑ๊ณต ์ํ ์ฝ๋ | โข 200 OK : ์์ฒญ์ด ์ฑ๊ณต โข 201 Created : ์์ฒญ์ด ์ฑ๊ณตํ์ผ๋ฉฐ, ์๋ก์ด ์์์ด ์์ฑ๋์์ โข 202 Accepted : ์์ฒญ์ ์ ๋ฐ์์ผ๋ ์์ง ์์ฒญํ ์์
์ ๋๋ด์ง ์์์ โข 204 No Content : ์์ฒญ์ด ์ฑ๊ณตํ์ง๋ง, ๋ฉ์ธ์ง ๋ณธ๋ฌธ์ผ๋ก ํ์ํ ๋ฐ์ดํฐ๊ฐ ์์ |
300 ~ 399 | Redirection ์ํ ์ฝ๋ | โข 301 Moved Permanently : Permanent Redirection์ผ๋ก ์ฌ์์ฒญ ๋ฉ์๋๊ฐ GET ์ผ๋ก ๋ณ๊ฒฝ๋ ์ ์์ โข 308 Permanent Redirect : Permanent Redirection์ผ๋ก ์ฌ์์ฒญ ๋ฉ์๋๊ฐ ๋ณ๊ฒฝ๋์ง ์์ โข 302 Found : Temporary Redirection์ผ๋ก ์ฌ์์ฒญ ๋ฉ์๋๊ฐ GET ์ผ๋ก ๋ณ๊ฒฝ๋ ์ ์์ โข 303 See Other : Temporary Redirection์ผ๋ก ์ฌ์์ฒญ ๋ฉ์๋๊ฐ GET ์ผ๋ก ๋ณ๊ฒฝ โข 307 Temporary Redirect : Temporary Redirection์ผ๋ก ์ฌ์์ฒญ ๋ฉ์๋๊ฐ ๋ณ๊ฒฝ๋์ง ์์ |
400 ~ 499 | Client ์๋ฌ ์ํ ์ฝ๋ | โข 400 Bad Request : Client ์์ฒญ์ด ์๋ชป๋์์ โข 401 Unauthorized : ์์ฒญํ ์์์ ๋ํ ์ ํจํ ์ธ์ฆ์ด ์์ โข 403 Forbidden : ์์ฒญ์ด Server์ ์ํด ๊ฑฐ๋ถ๋จ(์ ๊ทผ ๊ถํ์ด ์๋ ๊ฒฝ์ฐ) โข 404 Not Found : ์์ฒญ ๋ฐ์ ์์์ ์ฐพ์ ์ ์์ โข 405 Method Not Allowed : ์์ฒญํ ๋ฉ์๋๋ฅผ ์ง์ํ์ง ์์ |
500 ~ 599 | Server ์๋ฌ ์ํ ์ฝ๋ | โข 500 Internal Server Error : ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์ โข 502 Bad Gateway : ์ค๊ฐ Server์ ํต์ ์ค๋ฅ โข 503 Service Unavailable : ํ์ฌ๋ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์ผ๋ ์ถํ ๊ฐ๋ฅํ ์๋ ์์ |
- Redirection: Client๊ฐ ์์ฒญํ ์์์ด ๋ค๋ฅธ ๊ณณ์ ์๋ ๊ฒฝ์ฐ Client์ ์์ฒญ์ ๋ค๋ฅธ ๊ณณ์ผ๋ก ์ด๋์ํค๋ ๊ฒ์ ์๋ฏธ
- Permanent Redirection: ์์์ด ์์ ํ ์๋ก์ด ๊ณณ์ผ๋ก ์ด๋ํ์ฌ ๊ฒฝ๋ก๊ฐ ์๊ตฌ์ ์ผ๋ก ์ฌ์ง์ ๋๋ ๊ฒ์ ์๋ฏธ
- Temporary Redirection: ์์์ ์์น๊ฐ ์์๋ก ๋ณ๊ฒฝ๋์๊ฑฐ๋ ์์๋ก ์ฌ์ฉํ URL์ด ํ์ํ ๊ฒฝ์ฐ์ ์ฌ์ฉ
๐ HTTP Header
HTTP์ Header๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์์ฒญ ์ ํ์ฉ๋๋ HTTP Header | Host : Domain Name(+ Port Number) User-Agent : OS, Browser ์ข
๋ฅ ๋ฐ ๋ฒ์ ๊ณผ Rendering Engine๊ณผ ๊ฐ์ ์ ๋ณด๊ฐ ๋ช
์ Referer : Client๊ฐ ์์ฒญ์ ๋ณด๋ผ ๋ ๋จธ๋ฌด๋ฅด๊ณ ์๋ URL ๋ช
์ Authorization : Client์ ์ธ์ฆ ์ ๋ณด ๋ช
์ |
์๋ต ์ ํ์ฉ๋๋ HTTP Header | Server : ์์ฒญ์ ์ฒ๋ฆฌํ๋ Server์ S/W์ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ ๋ช
์ Allow : Client์๊ฒ ํ์ฉ๋ HTTP Method ๋ชฉ๋ก์ ๋ช
์ Retry-After : ํด๋น ์์์ ์ฌ์ฉ ๋ ์ง ํน์ ์๊ฐ์ ๋ช
์ Location : Client์๊ฒ ์์์ ์์น๋ฅผ ๋ช
์ WWW-Authenticate : ์์์ ์ ๊ทผํ๊ธฐ ์ํ ์ธ์ฆ ๋ฐฉ์์ ๋ช
์ |
์์ฒญ๊ณผ ์๋ต ๋ชจ๋์์ ํ์ฉ๋๋ HTTP Header | Date : ์์ฑ๋ ๋ ์ง์ ์๊ฐ์ ๋ํ ์ ๋ณด๋ฅผ ๋ช
์ Connection : Client์ ์์ฒญ๊ณผ ์๋ต ๊ฐ์ ์ฐ๊ฒฐ ๋ฐฉ์์ ๋ช
์(keep-alive , close ) Content-Length : HTTP Message-Body์ ํฌ๊ธฐ(Byte)๋ฅผ ๋ช
์ Content-Type : HTTP Message-Body์์ ์ฌ์ฉ๋ Media Type์ ๋ช
์ Content-Language : ์ด๋ค ๊ตญ๊ฐ์์ ์ฌ์ฉ๋๋ ์ด๋ค ์ธ์ด๋ฅผ ์ฌ์ฉํ๊ณ ์๋์ง ๋ช
์(์ธ์ด-๊ตญ๊ฐ) Content-Encoding : HTTP Message-Body์ ์์ถํ๊ฑฐ๋ ๋ณํํ ๋ฐฉ์์ ๋ช
์ |
๐ HTTPS(HTTP Secure)
SSL(Secure Sockets Layer)๊ณผ TLS(Transport Layer Security)๋ ์ธ์ฆ๊ณผ ์ํธํ๋ฅผ ์ํํ๋ ํ๋กํ ์ฝ์ด๋ฉฐ, TLS๋ SSL์ ๊ณ์นํ ํ๋กํ ์ฝ์ ๋๋ค.
SSL/TLS๋ฅผ ์ฌ์ฉํ๋ ๋ํ์ ์ธ Protocol์ HTTPS(HTTP over TLS)์ ๋๋ค.
SSL/TLS์ ์๋๊ณผ์ ์ ์ฌ์ฉ๋๋ ์ํธ ์๊ณ ๋ฆฌ์ฆ ๋ฒ์ ์ ๋ฐ๋ผ ์ธ๋ถ์ ์ธ ์ฐจ์ด๊ฐ ์๊ธฐ๋ ํ์ง๋ง ํฐํ์ ๋น์ทํ๊ธฐ ๋๋ฌธ์ ์ฃผ๋ก ์ฌ์ฉ๋๋ TLS $1.3$์ ๊ธฐ๋ฐ์ผ๋ก HTTPS ๋ฉ์ธ์ง๊ฐ ์ก์์ ๋๋ ๊ณผ์ ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1๏ธโฃ TCP Three-Way Handshake | ย |
2๏ธโฃ TLS Handshake | โ Client๋ Server์๊ฒ ์ฌ์ฉ ๊ฐ๋ฅํ ์ํธํ ๋ฐฉ์๊ณผ ํด์ํจ์๋ฅผ ๋ด์ ์ ๋ณด์ธ ์ํธ ์ค์ํธ(Cipher Suite)์ ์ง์๋๋ TLS ๋ฒ์ ๋ฑ์ ํฌํจํ ๋ฉ์ธ์ง๋ฅผ ์ ๋ฌ โ Server๋ Client์๊ฒ ์ ์๋ ์ ๋ณด๋ค์์ ์ฌ์ฉํ๊ณ ์ ํ๋ ์ ๋ณด๋ค์ ์ ํํ๋ ๋ฉ์ธ์ง์ ์ธ์ฆ์์ ์ธ์ฆ์ ๊ฒ์ฆ์ ์ํ ๋์งํธ ์๋ช ๋ฉ์ธ์ง๋ฅผ ํจ๊ฒ ์ ๋ฌ โ Client๋ ์ธ์ฆ์๋ฅผ ๊ฒ์ฆ โ ๊ฒ์ฆ์ ํ Client๋ Server์๊ฒ TLS Handshake์ ๋ง์ง๋ง์ ์๋ฏธํ๋ Finished ๋ฉ์ธ์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ |
3๏ธโฃ TLS Handshake๋ฅผ ํตํด ์ป์ Key๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ํธํ๋ ๋ฉ์ธ์ง ์ก์์ | ย |
๐ Cache
Cache๋ ๋ถํ์ํ ๋์ญํญ ๋ญ๋น์ ์๋ต ์ง์ฐ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ ๋ณด์ ์ฌ๋ณธ์ ์์๋ก ์ ์ฅํ๋ ๊ธฐ์ ์ ๋งํฉ๋๋ค.
Cache๋ ์น ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋์ด ์๊ธฐ๋ ํ๊ณ , Client์ Server ์ฌ์ด์ ์์นํ ์ค๊ฐ Server์ ์ ์ฅ๋์ด ์๊ธฐ๋ ํฉ๋๋ค. ์น ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋์ด ์๋ ๊ฒฝ์ฐ Private Cache๋ผ ํ๊ณ ์ค๊ฐ Server์ ์ ์ฅ๋์ด ์๋ ๊ฒฝ์ฐ Public Cache๋ผ ๋ถ๋ฆ ๋๋ค.
Cache๋ ์ ๋ณด์ ์ฌ๋ณธ์ ์์๋ก ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ์๋ณธ ๋ฐ์ดํฐ์ ๋๊ฐ์ด ์ ์งํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ Cache๋ ๋ฐ์ดํฐ๊ฐ ์ผ๋ง๋ ์ต์ ์๋ณธ ๋ฐ์ดํฐ์ ์ ์ฌํ์ง๋ฅผ ํํํ๋ Cache Freshness(์บ์ ์ ์ ๋)๋ฅผ ์ ์งํด์ผ ํฉ๋๋ค.
๋จผ์ ์๋ณธ ๋ฐ์ดํฐ๋ฅผ Cacheํ ๋ ์ ํจ ๊ธฐ๊ฐ์ ์ค์ ํด ์ ํจ ๊ธฐ๊ฐ์ด ๋๋๋ฉด ๋ค์ Cache ํ๋ ๋ฐฉ์์ผ๋ก Cache Freshness๋ฅผ ์ ์งํ ์ ์์ต๋๋ค. ์ ํจ ๊ธฐ๊ฐ์ ๋ถ์ฌํ๊ธฐ ์ํด์๋ ์ ํจ ๋ ์ง๋ฅผ ํ๊ธฐํ๋ Expires
Header์ ์ ํจ ์๊ฐ์ ํ๊ธฐํ๋ Cache-Control
Header์ Max-Age
์ค ํ๋๋ฅผ ์ ํํด ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ํจ ๊ธฐ๊ฐ์ด ๋ง๋ฃ๋ Cache๋ ์ฌ์ ํ ์ต์ ์ํ์ธ์ง ์ฌ๊ฒ์ฌํด์ผ ํ๋๋ฐ ์ฌ๊ฒ์ฌํ๋ ๋ฐฉ๋ฒ์๋ ํฌ๊ฒ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
์ฌ๊ฒ์ฌ ๋ฐฉ๋ฒ | ์ค๋ช |
---|---|
๋ ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฌ๊ฒ์ฌ | Client๋ If-Modified-Since Header๋ฅผ ํตํด Server์๊ฒ ํน์ ์์ (๋ ์ง์ ์๊ฐ) ์ดํ๋ก ์๋ณธ ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ด ์์๋์ง ํ์ธ |
๋ฒ์ ์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ๊ฒ์ฌ | If-None-Match Header๋ฅผ ํตํด Etag(Entity Tage) ๊ฐ๊ณผ ์ผ์นํ๋ ์์์ด ์๋์ง ํ์ธ |
์์์ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์์์ ๋ฒ์ ์ ์๋ณํ๋ Etag(Entity Tage)๊ฐ์ด ๋ณ๊ฒฝ
๐ Cookie
Cookie๋ Server์์ ์์ฑ๋์ด Client ์ธก์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ๋ก, ์ํ๋ฅผ ์ ์งํ์ง ์๋ HTTP์ ํน์ฑ(Stateless)์ ๋ณด์ํ๊ธฐ ์ํ ์๋จ์ ๋งํฉ๋๋ค.
Cookie๋ <์ด๋ฆ, ๊ฐ>
์์ ํํ๋ก ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๊ณ ์ถ๊ฐ์ ์ผ๋ก ์ ์ฉ ๋ฒ์์ ๋ง๋ฃ ๊ธฐ๊ฐ ๋ฑ ๋ค์ํ ์์ฑ์ ๊ฐ์ง ์ ์์ต๋๋ค.
Cookie๋ก ์ ๋ฌ๋๋ ๋ํ์ ์ธ ์ ๋ณด๋ก Session Id
๊ฐ ์์ต๋๋ค. Server๋ Client๋ก ๋ถํฐ ์ ๋ฌ๋ฐ์ Cookie ์ Session Id
์ DB์ ์ ์ฅ๋ Session ID
๋ฅผ ๋น๊ตํ์ฌ Client๋ฅผ ์๋ณํ์ฌ ๋ฒ๊ฑฐ๋ก์ด ์ธ์ฆ ๊ณผ์ ์ ๊ฑฐ์น ํ์๊ฐ ์์ด์ง๋๋ค.
Cookie๋ ์๋ต ๋ฉ์ธ์ง์ Set-Cookie
Header์ ์์ฒญ ๋ฉ์ธ์ง์ Cookie
Header๋ฅผ ํตํด ์ ๋ฌ๋ฉ๋๋ค.
์ด๋ฌํ Cookie์ ๋ํ์ ์ธ ํ๊ณ๋ ๋ณด์์
๋๋ค. Cookie์ ๊ฐ์ธ ์ ๋ณด๋ฅผ ๋น๋กฏํด ๋ณด์์ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ๋ด์ ์ก์์ ํ๊ณ ์ ์ฅํ๋ ๊ฒ์ด ๋ฐ๋์งํ์ง ์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํ ์์ฑ์ผ๋ก Secure
์ HttpOnly
๊ฐ ์์ต๋๋ค.
Secure | HTTPS๊ฐ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ์๋ง Cookie๋ฅผ ์ ์ก |
HttpOnly | Cookie ๊ด๋ จ ๋ฐ์ดํฐ๋ HTTP-Header ๋ฟ๋ง ์๋๋ผ JavaScript๋ฅผ ํตํด์๋ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ฐ JavaScript๋ฅผ ํตํด ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅ ํ๋๋ก ํ๋ ์์ฑ |
๐ Content Negotiation
์ฝํ ์ธ ํ์(Content Negotiation)์ด๋, ๊ฐ์ URI์ ๋ํด ๊ฐ์ฅ ์ ํฉํ ์์์ ํํ๋ฅผ ์ ๊ณตํ๋ ๋ฉ์ปค๋์ฆ์ ๋งํฉ๋๋ค.
์๋ฅผ ๋ค์ด ๊ฐ์ URI๋ก ์๋ณ ๊ฐ๋ฅํ HTML ๋ฌธ์๋ผ ํด๋, ์์ด๋ก ์์ฒญํ๋ฉด ์์ด๋ก ๋ ํํ๋ก ์ ๊ณตํ๊ณ , ํ๊ตญ์ด๋ก ์์ฒญํ๋ฉด ํ๊ตญ์ด๋ก ๋ ํํ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค.
์ฆ, ์ฝํ ์ธ ํ์์ Client์๊ฒ ๊ฐ์ฅ ์ ํฉํ ์์์ ํํ์ ์ ๊ณตํ๋ ๋ฉ์ปค๋์ฆ์ ์๋ฏธํฉ๋๋ค.
์ฝํ
์ธ ํ์๊ณผ ๊ด๋ จ๋ Header๋ก๋ Accept
, Accept-Language
, Accept-Charset
, Accept-Encoding
์ด ์์ต๋๋ค.