HTTP : hypertext transfer protocol
Client/Server 모델이다
client : request를 보내고 응답을 받는다, 그리고 display한다
server : request에 대한 response를 보낸다.
Http uses TCP:
port 80번으로 TCP connection 요청을 한다.
서버가 요청을 받고 accpets한다. 그 후 HTTP message를 주고 받은 후, TCP connection을 closed한다
HTTP is Stateless
서버는 이전의 client reqeust에 대한 정보를 기억하지 않는다.
Non-persistent Http
TCP Connection open -> 하나의 Object를 보내고 Connection을 닫는다 (반복)
Persistent Http
커넥션을 열고 multiple한 object를 보내고 받는다.
RTT : 클라이언트로 갔다가 돌아오는데 걸리는 시간
HTTP는 stateless하다. 즉 상태정보를 관리하지 않는다.
근데 관리가 필요한 경우가 있다. 그럴 때 사용하는 것이 cookie이다
four components
1. cookie header
2. 다음 요청에 cookie header가 있어야한다.
3. cookie가 user의 host browser에 저장되어야한다
4. back-end database에도 있어야한다.
Challenge: How to keep state?
상태를 어떻게 관리할 것인가?
클라이언트 - origin server 까지 request를 보내고 response를 보내는데, 중간에 Web cache가 origin server까지 도달하지 않아도 request에 대한 응답을 보낼 수 있게 도와줌
빠르게 응답을 도와줄 수 있다!
웹 캐시는 proxy sever라고도 한다.
Cache-Control 이라는 헤더에 캐시를 할 지 말 지 정해서 response를 받는다.
Http request 헤어디 if-modified-since를 붙이면 해당 request 이후로 바뀐 것이 있으면 서버에 알려주고 없으면 캐시를 그대로 사용한다.
Goals : decresed delay in multi-object HTTP request
이를 해결하기 위해 HTTP/2에서는 기존의 Reqeust Object 보내는 순서를 임의로 설정하거나, 서버가 알아서 판단해주는 방법을 사용한다. 혹은 frame들을 divide한다.