HTTP connection establishment
1. Non-persistent HTTP
๊ฐ์
1a. Http ํด๋ผ์ด์ธํธ๊ฐ HTTP ์๋ฒ๋ก TCP ์ฐ๊ฒฐ์ initiate, ์์ํ๋ค. (www.someSchool.edu on port 80)
1b. HTTP ์๋ฒ๊ฐ TCP ์ฐ๊ฒฐ์ ๊ธฐ๋ค๋ฆฐ๋ค. ์ฐ๊ฒฐ์ "accepts" ํ๊ณ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ฆฐ๋ค
2. HTTP ํด๋ผ์ด์ธํธ๊ฐ TCP ์ฐ๊ฒฐ ์์ผ์ ํตํด URL ์ ๋ณด๊ฐ ํฌํจ๋ request message๋ฅผ ์ ์กํ๋ค.
๋ฉ์์ง๋ ํด๋ผ์ด์ธํธ๊ฐ "someDepartment/home"์์ ์ํ๋ object๊ฐ ๋ญ์ง ์ ํ์์
3. HTTP ์๋ฒ๋ request message๋ฅผ ๋ฐ๊ณ response message๋ฅผ ๊ตฌ์ฑํ๋ค.
์ฌ๊ธฐ์ ์์ฒญ๋ฐ์ object๊ฐ ํฌํจ๋๊ณ , ์ด ๋ฉ์์ง๋ฅผ ์์ผ์ ํตํด ์ ์กํ๋ค.
4. HTTP ์๋ฒ๊ฐ TCP connection์ ๋ซ๋๋ค(close)
5. HTTP ํด๋ผ์ด์ธํธ๋ html file์ ํฌํจํ response message๋ฅผ ๋ฐ๊ณ , ์ด html์ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค๋ค.
Html ํ์ผ์ ๊ตฌ๋ฌธ๋ถ์(parsing) ํด์ 10๊ฐ์ ์ฐธ์กฐ๋ jpeg objects๋ฅผ ์ฐพ๋๋ค.
6. ๊ฐ 10๊ฐ์ jpeg objects์ ๋ํด 1-5 ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํ๋ค.
(10๊ฐ์ ๋ถ๋ฆฌ๋ ๊ฐ๊ฐ์ ์ฐ๊ฒฐ์ ์ด์ด์ parallelํ๊ฒ ์งํ)
TCP connection์ ๋ค์๊ณผ ๊ฐ์ resource๋ฅผ ํ์๋ก ํจ
- port number
- TCB (look-up table)
- Send buffer
- Receive buffer
Response Time
RTT(definition) : ์์ ํจํท์ด client๋ก๋ถํฐ ์๋ฒ๋ก ๊ฐ๋ค๊ฐ ๋ค์ ๋์์ค๋๋ฐ ์์๋๋ ์๊ฐ
- HTTP Connection response time
- TCP connection์ ์์ํ๋๋ฐ 1RTT
- TCP connection์ establishmentํ๊ณ HTTP requestํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ 1/2RTT
- ์์ฒญ๋ฐ์ ํ์ผ์ ์ ์กํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ 1/2RTT + transmission time
- ์ฆ non-persistent HTTP response time = 2*RTT + file TX time
2. Non-Persistent vs Persistent
Non-Persistent HTTP issue
- response๋ฅผ ๋ณด๋ด๊ณ ๋์ ์๋ฒ๊ฐ connection์ closeํจ.
- ๊ทธ๋์ ํ object๋น ์ต์ 2 RTTs๊ฐ ๊ฑธ๋ฆผ
- ๊ฐ TCP connection๋ง๋ค OS overhead๊ฐ ๋ฐ์ํจ (๊ฐ์ ์ ์ธ ์ฒ๋ฆฌ ์๊ฐ ยท ๋ฉ๋ชจ๋ฆฌ)
- ๋ธ๋ผ์ฐ์ ๋ referenced object๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด์ ๋ณ๋ ฌ์ ์ผ๋ก TCP connection์ ์ฐ๋ค.
- Shortcomings (๊ฒฐ์ )
- ๋ชจ๋ obj๋ง๋ค ์๋ก์ด TCP connection์ ์ด๊ธฐ ๋๋ฌธ์ ๊ทธ ๋๋ง๋ค client์ server ์ ์ชฝ์ ์๋ก์ด ๋ฒํผ์ ๋ณ์๋ค์ด ํ์ํจ
- ์๋ก์ด TCP connection์ ์ด ๋ ๋ง๋ค additional delay๊ฐ ๋ฐ์ํจ.
Persistent HTTP
- sending response๊ฐ ๋๋ ์ดํ์๋ connection์ ์ด๋ฆฐ ์ฑ๋ก ๋ด๋ฒ๋ ค๋
- ์ด์ด์ง๋ HTTP messages๊ฐ ๊ฐ์ client/server ์ฌ์ด์ open connection์ผ๋ก ์๋ค ๊ฐ๋ค ํจ
- ํด๋ผ์ด์ธํธ๋ referenced object๋ฅผ ๋ฐ๊ฒฌํ์ ๋ง์ request๋ฅผ ๋ณด๋ธ๋ค
- ์ฐธ์กฐ๋ ๋ชจ๋ object์ ๋ํด ์ต์ 1 RTT !
HTTP Multiplexing : ์์ฒญ์ ํ ๋ฒ์ ๋ณด๋ด๊ณ ๋ต๋ณ์ ํ๋์ฉ ์์๋๋ก ๋ฐ๋๋ค.
HTTP server architecture
1. Single-Threaded Web Server
- ์์ฒญ์ ๋ณด๋ด๋ฉด main thread์์ response ๋ฅผ ๋ณด๋. ๋ค๋ฅธ ์์ฒญ์ ๋ณด๋ด์ ์๋ต์ ๋ฐ์ผ๋ ค๋ฉด ๊ทธ ์ด์ ์ ๊ฒ์ด ์ฒ๋ฆฌ ์๋ฃ ๋์ด์์ด์ผ ํจ
2. Multi Threaded Web Server
- ์์ฒญ์ ๋ณด๋ด๋ฉด main thread์์๋ connection๋ง ํ๊ณ worker thread๋ฅผ ํ๋ ํ์ ๊ทธ ์ชฝ์์ ์๋ต์ ์ฒ๋ฆฌํ๊ณ thread๋ฅผ ๋ซ์.
- ์ฌ๋ฌ ์์ฒญ์ด ์ค๋ฉด thread๊ฐ ์ฌ๋ฌ๊ฐ ์ด๋ ค์ ๋ณ๋ ฌ์ ์ผ๋ก ์ฒ๋ฆฌ ๊ฐ๋ฅ
- ์ฆ, main thread๋ request์ handling๋ง ์ง์คํ๊ณ , worker thread์์ Data transfer์ ๊ด๋ฆฌํ๋ค.
3. Thread Pool Web server
- worker thread๋ฅผ ์ด๊ณ ๋ซ๋๊ฒ ์๋๋ผ ๊ณ ์ ๋ thread์ pool ์์์ ์ฌ์ฌ์ฉ ํ๋ค. (destroy X)
- request๋ค์ linked list๋ก ๋ฌถ์ด์ ๊ด๋ฆฌํ๊ณ , worker thread์์ ํ๋์ฉ ์๋ตํ ๋๋ง๋ค ํด๋น request๋ฅผ ๋ฆฌ์คํธ์์ ์ง์ฐ๋ฉด์ ๊ด๋ฆฌํ๋ค.
HTTP message formats
1. Request message
- ASCII
- \r = carriage return character = cr
- \n = line-feed character = lf
Uploading Form Input
- POST method
- Web page๋ ๋ณดํต form input์ ํฌํจํ๊ณ ์๋ค
- input์ entity body ์์ ๋ด๊ฒจ์ server์ ์ ๋ก๋ ๋๋ค.
- URL method
- GET method ๋ฅผ ์ฌ์ฉํ๋ค
- input์ request line์ URL Field์ ๋ด๊ฒจ ์
๋ก๋ ๋๋ค.
ex. www.somesite.com/animalsearch?monkeys7banana
Method Type
- HTTP/1.0
- GET
- POST
- HEAD
- ์๋ฒ์๊ฒ ์์ฒญ๋ object๋ฅผ ์๋ต์์์ผ๋ก ๋๋๋ผ๊ณ ์์ฒญํจ(?)
- HTTP/1.1
- GET, POST, HEAD
- PUT ; entity body์ ์๋ ํ์ผ์ url field์ ์๋ ํน์ ๊ฒฝ๋ก์ ์ ๋ก๋ํ๋ค
- DELETE ; url field์ ์๋ ํน์ ํ์ผ์ ์ง์ด๋ค.
2. Response message
HTTP Response Status Code
- Status code ๋ response message์ ์ฒซ๋ฒ์งธ line์ ์์
- 200 OK
: ์ฑ๊ณต์ ์ผ๋ก ์์ฒญํ๊ณ , ์ด ๋ฉ์์ง์ ์์ฒญํ object๊ฐ ๋ด๊ฒจ ์๋ค. - 301 Moved Permanently
: ์์ฒญํ object๊ฐ ์ด๋๋์๋ค. ์ด ๋ฉ์์ง์ ์๋ก์ด ์์น๋ฅผ ๋ณด๋ด์ฃผ๊ฒ ๋ค. (Location : ) - 400 Bad Request
: Request ๋ฉ์์ง๋ฅผ server๊ฐ ์ดํดํ์ง ๋ชปํ๋ค - 404 Not Found
: ์์ฒญํ ๋ฌธ์๊ฐ ์ด ์๋ฒ์์ ์ฐพ์ ์ ์๋ค. - 505 HTTP Version Not Supported.
Cookies ; To Keep "STATES"
Recall : HTTP๋ ์ฐ๊ฒฐ ์ ๋ณด๋ฅผ ์ ์ฅํ์ง ์๋๋ค.
- ์๋ฒ๋ ๋ชจ๋ request๋ฅผ ์ฒ์ ๋ฐ๋ request๋ก ๊ฐ์ฃผํ๋ค. ( ์ด์ ๋ฐ์ดํฐ๊ฐ ์ ํ ์์ผ๋ ๋ชจ๋ฅด๋๊ฒ ๋น์ฐ )
- ๊ทธ๋ ๋ค๋ฉด ๋ง์ถคํ ๊ด๊ณ ๋ ์ด๋ป๊ฒ ๋์ ๊ด์ฌ์ฌ๋ฅผ ํ์ ํ์๊น?
-> ๋ง์ ์น์ฌ์ดํธ๊ฐ ์ฟ ํค๋ฅผ ํ์ฉํ๋ค.
4๊ฐ์ง ๊ตฌ์ฑ์์๊ฐ ์๋ค
- HTTP response message์ Cookie header line
- ๋ค์ HTTP request message์ Cookie header line
- ์ฌ์ฉ์์ ํธ์คํธ์์ ๋ณด๊ดํ๊ณ , ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ์์ ๊ด๋ฆฌํ๋ ์ฟ ํค ํ์ผ.
- ์น ์ฌ์ดํธ์ ์๋ ๋ฐฑ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค
์์ :
- ์์์ ์ธ์ ๋ ์ธํฐ๋ท์ PC๋ก ๋ค์ด๊ฐ๋ค
- ์ด๋ค ํน์ ํ ์ด์ปค๋จธ์ค ์ฌ์ดํธ์ ์ฒ์ ์ ์ํ๋ค
- ์ฌ์ดํธ์ initial HTTP requests๊ฐ ๋์ฐฉํ๋ฉด ์ฌ์ดํธ๋ ๋ค์์ ๋ง๋ค์ด๋ธ๋ค.
- unique ID
- ๋ฐฑ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ID์ ๋ํ entry
1. What cookies can be used for :
- Authorization
- Shopping carts
- Recommendations
- User session state (Web e-mail)
2. How to keep "state"
- Protocol endpoints : ์ฌ๋ฌ transactions์ ๋ํด์ sender/receiver์ ์ํ๋ฅผ ์ ์งํ๋ค.
- Cookies : http message๊ฐ state๋ฅผ ์ด๋ฐ(?)ํจ
3. Cookies and privacy
- ์ฟ ํค๋ ๋น์ ์ ๋ํ ๋ง์ ์ ๋ณด๋ฅผ ์ฌ์ดํธ์๊ฒ ์ ๊ณตํ๋ค
- ํนํ ์ฌ์ดํธ์ ์ด๋ฆ๊ณผ ์ด๋ฉ์ผ์ ์ ๊ณตํ ์๋ ์๋ค.
Web cashing (Proxy Server)
Goal : origin ์๋ฒ์ ์ ๊ทผํ์ง ์๊ณ client request๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด!
- ์ ์ ๋ ์บ์๋ฅผ ํตํด ์น์ ์ ๊ทผํ๋๋ก ๋ธ๋ผ์ฐ์ ๋ฅผ ์ค์ ํ๋ค.
- ๋ธ๋ผ์ฐ์ ๋ ๋ชจ๋ HTTP ์์ฒญ์ ์บ์๋ก ๋ณด๋ธ๋ค
- ๋ง์ฝ ์บ์์ object๊ฐ ์กด์ฌํ๋ฉด ์บ์๊ฐ object๋ฅผ ๋ฐํํด์ค๋ค
- ๋ง์ฝ ์์ผ๋ฉด cashe๊ฐ origin server๋ก object๋ฅผ ์์ฒญํ๊ณ , ์ด๋ฅผ ๋ฐ์์ client์๊ฒ ๋ณด๋ด์ค๋ค.
Why Web caching ?
- client request์ ๋ํด ์๋ตํ๋ ์๊ฐ์ ์ค์ด๊ธฐ ์ํด
- link์ ์ ๊ทผํ๋๋ฐ ์์๋๋ traffic์ ์ค์ด๊ธฐ ์ํด
Caching Example
- ๊ฐ์
- ํ๊ท obj size : 100K bits
- browser -> origin server request rate : 15/sec
- data rate to browsers : 1.50 Mbps
- router -> server RTT : 2 sec
- access link rate : 1.54 Mbps
- ๊ฒฐ๊ณผ
- LAN Utilization : 0.15%
- access link utilization = 99%
- total delay = Internet delay + access delay + LAN delay = 2sec + minutes + usecs
'๐ก๐ธ๐ธ๐ถ5: ๐ฆ๐๐๐๐ถ ๐ฐ๐๐พ๐ > Computer Network(COSE342)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ปดํจํฐ๋คํธ์ํฌ] CH3. Transport Layer (#1) (0) | 2021.10.19 |
---|---|
[์ปดํจํฐ๋คํธ์ํฌ] CH2. Application Layer (#4) (0) | 2021.10.18 |
[์ปดํจํฐ๋คํธ์ํฌ] CH2. Application Layer (#3) (0) | 2021.10.17 |
[์ปดํจํฐ๋คํธ์ํฌ] CH2. Application Layer (#1) (0) | 2021.10.17 |
[์ปดํจํฐ๋คํธ์ํฌ] CH1. Introduction (0) | 2021.10.16 |