Web and HTTP (HyperText Transfer Protocol)
Base HTML-file : Text + URL들(Obejct들을 가리킴)
Each object (including base-html file) is separately requested & received by using a separate HTTP request / response mesage => HTTP는 Object 단위로 데이터를 주고받음.
HTTP
Web의 application layer protocol
Client-Server 모델을 사용한다.
- client : object들을 요청, 수신, display하는 browser
- server : 요청에 따라 object들을 보내주는 Web server
HTTP Operation
uses TCP
HTTP는 TCP (loss-sensitive)를 사용한다. (HTTP/1.1 기준)
- TCP connection set-up
- server는 80번 port를 바인딩해놓고 기다리고 있음
- client가 서버의 80번 port로 TCP connection 요청 => socket 생성
- server는 client로부터 TCP connection을 수락 - HTTP messages exchanges
: client(Browser)와 server(Web) 간 HTTP msg들을 교환 - TCP connection closed
: msg 교환이 끝나면 TCP connection은 종료됨
connection oriented protocol은 connection set-up을 했으면 반드시 close도 해야함 => pair하게 진행됨
HTTP is "stateless"
server는 HTTP request에 대한 response에만 집중하며, 이전의 clinet request 정보를 따로 저장해두지 않는다.
(client가 이전의 데이터를 다시 요청해도 다시 서버에 연결을 하여 동일한 작업을 수행해야함)
stateless로 인해 서버는 단순하게 동작할 수 있고, 상태를 저장해야 하는 부담을 덜 수 있다.
=> Dynamically load balance가 가능!
하지만 로그인 상태 유지와 같이 클라이언트의 상태를 저장해야하는 경우가 있는데 이때는 cookie 등을 사용한다.
HTTP connections - 3 types
non-persistent HTTP
(without parallel, with parallel로 다시 나뉜다.)
① TCP connection opened
② 하나의 TCP connection으로 하나의 object만 전송
③ TCP connection closed
=> 서버 쪽의 TCP가 한번 response하면 끊는다.
=> multiple objects → requires multiple connections
ex) object가 10개인 경우, 10번의 connection이 필요하다
persistent HTTP
① TCP connection opened
② 하나의 TCP connection에서 multiple objects 전송 가능
③ TCP connection closed
=> multiple objects → can be sent over single TCP connection
Non-persistent HTTP
0. HTTP server는 80번 port에서 TCP 연결을 기다리고 있음.
//// TCP connection set-up
1a. HTTP client가 TCP connection 요청(initiate)
1b. 서버가 TCP connection 수락
2. HTTP client는 URL을 포함한 HTTP request msg를 socket에 보냄.
(msg - client가 요구하는 object 정보가 담겨 있음)
3. HTTP server는 request msg를 받고,
client가 요청한 object를 포함하는 response message를 socket으로 보냄.
4. HTTP server가 TCP connection 닫음.
5. HTTP client는 html 파일이 포함된 response msg를 받고, html에 display.
6. 객체 수만큼 위 단계를 반복
Response time
RTT : 한 packet이 end-to-end로 one round trip 하는데 소요되는 시간
object 하나 당 2 RTT 걸림
N개의 obejct일때 총 response time
처음에 base html 갈 때 한세트 (2 RTT), n개의 object를 separate하게 한세트(2 RTT)씩
=> (1 for TCP + 1 for request&response) * (1+N)
= 2 * (1+N) RTT
Persistent HTTP
지속적으로 서버가 TCP를 안끊고 쓰겠다는 것
즉 연결을 닫지 않고 유지 → object가 몇개이든 1 RTT만 소요된다.
total response time = object가 몇개든 상관 없이 3 RTT
(pipelining 을 적용한 persistent HTTP 이야기!)
(만약 persistent HTTP가 no pipelining이라면, total response time은 (2 RTT + (1 * n)) = (2 + n) RTT이다.
HTTP pipelining (HTTP/1.1)
Multiple HTTP request msg can be sent over 1 TCP connection without waiting for each response msg
user-perceived delay
결과적으로 전체의 delay는 똑같지만, user가 느끼는 delay는 달라질 수 있음
(ex. Big object가 앞에, small object가 뒤에 오면 user가 느끼는 delay는 늘어남)
HTTP message
2가지 타입이 있다 : request / response
HTTP request message
GET msg에서 갖고싶어하는 파일은 index.html
Keep-Alive
: persistent HTTP를 쓴다는 뜻
: 한번 열면 115초 동안 TCP Connection을 끊지 말아라
HTTP response message
HTTP/1.1
: HTTP 버전
200 OK
: 여기에 내가 원하는 object가 있다는 뜻
=> client가 원하는 object를 줄 수 있다
Last-Modified
: response msg에 전송되는 정보가 마지막으로 update된 시간
Keep-Alive
: 10초 안에 다시 요청하면 connection 유지, 100번을 넘어가면 stop
'네트워크' 카테고리의 다른 글
[네트워크] Chap 2.4 - E-mail, SMTP, IMAP (0) | 2024.11.14 |
---|---|
[네트워크] Chap 2.3 -Cookies, Web caches(proxy server), HOL blocking (7) | 2024.11.13 |
[네트워크] Chap 2.1 - Application layer (4) | 2024.11.11 |
[네트워크] Chap 1.4 - Internet Protocol stack, Security, Internet History (2) | 2024.11.10 |
[네트워크] Chap 1.3 - Loss, Delay, Throughput (0) | 2024.11.09 |