HTTP ๊ด๋ จ ๋ด์ฉ์ ์ฌ์ค ์ฝ์ด๋ ์ฝ์ด๋ ์ ๋จธ๋ฆฌ์ ์๋จ๋ ๊ฒ ๊ฐ๋ค. ์ฌ์ค ์ ๋ฐ์ ์ธ ํ๋ฆ์ ์๋๋ฐ, ๋ญ๊ฐ ๋จ์ด๋ค์ด ๊ธฐ์ต์ ์ ๋จ๋๋ค๋ ๋๋์ ์๋ค์์๋ค. ๋ค์ํ๋ฒ ์ ๋ฆฌํ๋ฉด์ ๋ฐ๋ณตํ์ต์ ํ ๋ชฉ์ ์ผ๋ก ํฌ์คํ ์ ๋จ๊ฒจ๋ณธ๋ค.
HTTP ๋?
- HyperText Transfer Protocol
- ์์ฉ ๋ ๋ฒจ์ ํ๋กํ ์ฝ (OSI 7)
- HTTP๋ ์ ๋ขฐํ ๋งํ ์ ์ก ๋๋ ์ธ์ ๋ ์ด์ด์ **์ฐ๊ฒฐ(Connection)**์ ํตํด ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์ํ๊ฐ ์๋ (Stateless) ์์ฒญ/์๋ต ํ๋กํ ์ฝ์ด๋ค.
- HTTP ํด๋ผ์ด์ธํธ
- ์๋ฒ์ ์ฐ๊ฒฐ์ ๋งบ๊ณ , ํ๋ ์ด์์ HTTP ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ํ๋ก๊ทธ๋จ
- HTTP ์๋ฒ
- ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ์ ์๋ฝํ๊ณ (์ฐ๊ฒฐ์ ๋งบ๊ณ )
- HTTP ์์ฒญ์ ์ฒ๋ฆฌํ์ฌ ์๋ต์ ๋ณด๋ด์ฃผ๋ ํ๋ก๊ทธ๋จ
HTTP Protocol ํน์ง (๊ฐ๋ต)
- Message ์ข
๋ฅ ๋ ๊ฐ์ง
- Request & Response
- TCP ์ฌ์ฉ
- Transport Layer ์์ Application Layer ์กด์ฌ
- stateless protocol
- ์๋๋ฐฉ ์ํ์ ๋ณด๋ฅผ ์ ์ฅํ์ง ์์
- ๊ทธ๋ฅ request, responseํ ์๋ฌด๊ฒ๋ ์ ์ฅ ์ํ๋ค.
์ญ์ฌ
- HTTP v0.9 (1996)
- HTTP v1.0 (1996)
- RFC2616
- URL๊ณผ URI์ ์ฐจ์ด
- URL (Uniform REsource Locator)
- URI์ ํ ์ข ๋ฅ
- scheme์ด http์ธ ๊ฒฝ์ฐ์ URI๋ฅผ URL์ด๋ผ ํจ
- URI (Uniform Resource Indicator)
- ์์์ ์์น๋ฅผ ์๋ ค์ฃผ๋ ๋ฌธ์์ด
- URL (Uniform REsource Locator)
- ๋ ์ง ํฌ๋งท
- 3๊ฐ์ง์ ๋ ์ง ํฌ๋งท์ ์ง์
- RFC 1123: ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ
- Sun, 06 Nov 1994 08:49:37 GMT
- RFC 1036
- Sunday, 06-Nov-94 08:49:37 GMT
- asctime
- Sun Nov 6 08:49:37 1994
- HTTP v1.1 (1999)
- working group
- wg (working group)
- ์์ธ ์ผ์ด์ค๋ฅผ ๊ฐ์ ํ๋ ์์ ์ ํ๋ ๊ณณ
- ๋ฌธ์๋ฅผ ๊ฐ์ ํด์ ๋ง๋ฆ
- ์์ธํ๊ฒ ๋ณด๊ณ ์ถ์ผ๋ฉด ํด๋น ๋งํฌ์์ ํ์ธ
- working group
๋ธ๋ผ์ฐ์ ์ ์ ๋ ฅ ํ ์ฐฝ์ด ๋ณด์ด๊ธฐ ๊น์ง ๊ณผ์
- PC (Client: User Agent)
- User agent
- HTTP ํ๋กํ ์ฝ ํค๋์ ์์
- Mozilla/5.0 ~ ์ผ๋ก ์์ํ๋ ๋ ์
- ์ด ์ ๋ณด๋ฅผ ์ ์ค๊น?
- ํธํ์ฑ ๋๋ฌธ
- ์๋ ์ ์๋ฒ ์ฐจ์์์ ๋ค์ด์จ ๊ฐ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋ณด๋ด์ฃผ๋ ๊ฒฝ์ฐ๊ฐ ์์์
- ์ฆ, ์ด ์ ๋ณด ๋ฐํ์ผ๋ก ํธํ๋๋ ๊ฒฐ๊ณผ๋ฅผ ์๋ต์ผ๋ก ์ค! ๋ผ๋ ์๊ธฐ
- User agent
- DNS
- CDN
- Server (Origin)
- Application Server
- ๋คํธ์ํฌ๋ฅผ ํตํด Endpoint์ ํต์ ์ ํ ์ ์๋ ์๋ฒ๋ฅผ ๋งํ๋ค.
- Web Server
- ์ฃผ๋ก HTTP ํ๋กํ ์ฝ์ ์ฒ๋ฆฌํ๋ ์๋ฒ
- Apache
- ์ ์ ์ธ ์ฒ๋ฆฌ์ ํนํ๋ ์น์๋ฒ
- ์ ์ ์ด๋?
- ๋ฏธ๋ฆฌ ์๋ฒ์ ์ ์ฅ๋ ํ์ผ์ ์ ๊ณต
- ์ด๋ค ์์ฒญ์ด๋์ ์๊ด์์ด ๊ฐ์ ์ ๋ณด๋ฅผ ์ ๊ณต
- Tomcat
- Apache์ ์ธํธ๋ก ๋ค๋
- ๋์ ์ฒ๋ฆฌ์ ์ฃผ๋ก ์ฌ์ฉ๋จ (์ ์ ์ฒ๋ฆฌ๋ ๊ฐ๋ฅ)
- Servelet Container
- Servelet์ ๊ด๋ฆฌํ๋ ์ญํ ์ ์ํ
- ์น์๋ฒ์ ์์ผ์ ๋ง๋ค์ด Servet์ด ํต์ ํ๋ ํ๊ฒฝ์ ์ ๊ณต
- Servelet์ด๋?
- ์น์์ ์๋ฐ ํ๋ก๊ทธ๋๋ฐ ๊ตฌํ์ ์ํด ํ์
- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ๋ผ ์ฒ๋ฆฌ ํ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ์ ๋ณด๋ด๋ ํด๋์ค
- Tomcat์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ณดํค Web Application Server๋ผ ๋ถ๋ฆฐ๋ค.
- ํ๋ฆ
- Client โ Apache โ Tomcat โ Servelet โ Tomcat โ Apache โ Client
- Database Server
- File Server
- Proxy Server
- Application Server
HTTP๋ ์ด๋ป๊ฒ ๋์ํ ๊น?
- HTTP/0.9
- ๋ฉ์๋ GET ๋ฐ์ ์์
- ๋ฌธ์ ํฌ๋งท HTML๋ง ๊ฐ๋ฅ
- ํค๋ ์์
GET /test.html
- HTTP/1.0
- ๋ฉ์๋ POST ์ถ๊ฐ
- ์ฐ๊ธฐ ๊ฐ๋ฅ
- ๋ฉ์๋ POST ์ถ๊ฐ
Non-Persistent HTTP
Request Message ๋ฅผ ์๋ฒ๋ก ๋ณด๋ด๊ธฐ ์ํด์ ์ฐ์ TCP Connection์ด ์ ํ๋์ด์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ request msg ์ ๋ํด์ response msg ๋ฅผ ๋ฐ๊ฒ๋๋ฉด TCP Connection ์ ๋๊ธฐ๋ฉฐ ๋ค์ ์น์ฌ์ดํธ์ ๋ฆฌ์์ค๋ฅผ ๋ค๊ณ ์ค๊ธฐ ์ํด์ TCP Connection ์ ์ฌ์ฐจ ๋งบ์ด์ผํ๋ค. Connection ์ด ์ง์์ ์ธ ์ํ๊ฐ ์๋๋ค.
- HTTP client๊ฐ IP/PORT์ TCP ์ฐ๊ฒฐ์ ์์ํ๋ค.
- HTTP server์ host๋ 80๋ฒ ํฌํธ์์ TCP ์ฐ๊ฒฐ์ ๊ธฐ๋ค๋ฆฌ๋ค๊ฐ ๋ฌธ์ ๊ฐ ์์ผ๋ฉด โacceptโ ๋ผ๊ณ client์๊ฒ ์๋ฆฐ๋ค.
- HTTP client๋ HTTP request ๋ฉ์์ง๋ฅผ TCP ์ฐ๊ฒฐ Socket์ ๋ณด๋ธ๋ค.
- HTTP server๋ ์์ฒญ์ ๋ฐ๊ณ response๋ฅผ socket์ ๋ฃ๋๋ค.
- HTTP sever๋ TCP ์ฐ๊ฒฐ์ ๋๋ ์ค๋น๋ฅผ ํ๋ค.
- HTTP client๋ ์๋ต์ ๋ฐ๊ณ ํ๋ฉด์ ๋ณด์ฌ์ค๋ค.
- HTTP client๊ฐ ๋ค ๋ฐ์๋ค๋ฉด ๋ค ๋ฐ์๋ค๋ ๋ฉ์์ง๋ฅผ ๋ณด๋ธ๋ค.
- ํจ๊ป Connection์ ๋๋๋ค.
Persistent HTTP
์นํด๋ผ์ด์ธํธ (๋ธ๋ผ์ฐ์ ) ๋ ๋ณดํต ๊ฐ์ ์ฌ์ดํธ์ ์ฌ๋ฌ ๊ฐ์ TCP ์ปค๋ฅ์ ์ ๋งบ๋๋ค. ์๋ฅผ ๋ค์ด ์น ํ์ด์ง์ ์ฒจ๋ถ๋ ์ด๋ฏธ์ง๋ค ๋๋ถ๋ถ์ ๊ฐ์ ์น์ฌ์ดํธ์ ์์ผ๋ฉฐ, ์ฌ๋ฌ ํ์ดํผ๋งํฌ๋ ๊ฐ์ ์ฌ์ดํธ๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ฌ๊ธฐ์ ์๋ฒ์ HTTP ์์ฒญ์ ํ๊ธฐ ์์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์น ํ์ด์ง์ ๋ค๋ฅธ ์ด๋ฏธ์ง ๋ฑ์ ๊ฐ์ ธ์ค๊ธฐ ์ํด์ ๊ทธ ์๋ฒ์ ๋ ๋ค์ ์์ฒญํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ๋๋ฐ, ์ด ์์ฑ์ ์ฌ์ดํธ ์ง์ญ์ฑ(Site Locality)์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ํ์ง๋ง ์ด๋ฌํ TCP ์ปค๋ฅ์ ์ ๊ณ์ ์ ์งํ์ฌ ์์ผ๋ก๋ ์์ HTTP ์์ฒญ์ ์ฌ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๊ฒ์ด๋ค. ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋ ์ดํ์๋ ๊ณ์ ์ฐ๊ฒฐ๋ ์ํ๋ก ์๋ TCP ์ปค๋ฅ์ ์ Persistent Connection ์ด๋ผ๊ณ ํ๋ค.