웹 클라이언트 : 현재 페이지(응용계층) - HTML 엔진(프레젠테이션 계층) - HTTP(세션 계층)
웹 서버 : 서버 응용 프로그램 - 서버 응용 엔진 - HTTP (세션 계층, stateless)
쿠키 : 서버 응용이 클라이언트의 이전 작업 정보(state)를 파악하기 위한 도구
쿠키 프로토콜
HTTP Response 헤더 : Set-cookie라는 필드 (서버 -> 클라이언트)
HTTP Request 헤더 : cookie 라는 필드 (클라이언트 -> 서버)
처음 접근했으면 쿠키 정보 없음, 응답하면서 매개변수 중 Set-cookie : visit=1, 다음번 동일한 사이트 방문할 때 cookie : visit=1 쿠키를 줌, 응답할 때 Set-cookie : visit=2
방법론 : 기억해야 할 상황을 쿠키에 담아 클라이언트가 기억하도록 하고 서버는 클라이언트의 방문 시 주는 쿠키 정보에 맞추어 반환
클라이언트에게 너무 많은 권한을 주고 너무 많은 정보를 오픈한다
해결책 : 세션
세션 : 클라이언트에게 세션 아이디 정보만 쿠키로 전달하고 세션들의 특성은 서버가 관리
ex. 몇번 방문했는지?
쿠키 : 클라이언트가 저장 / 세션 : 서버가 저장
HTTP Transaction의 성능 향상 (다중 Transaction)
기본 : 낭비가 심하다
발전 : Persistent HTTP (connection keep alive)
- 연결을 끊지 않고 기다림, 한번의 연결로 작업
Pipelined HTTP
성능
지연시간 : 패킷을 보내기 시작한 시점에서 패킷을 받기 시작한 시점까지 걸리는 전송지연시간
전송률 : 단위 시간 당 전송되는 데이터의 양
ex. 끝단 간 지연시간이 100ms이고 전송률이 100MB/s인 네트워크에서 1MB를 전송하여 수신을 완료하는데 걸리는 시간? 100ms + 10ms = 110ms
ex. 끝단 간 지연시간 : 100ms, 전송률 : 100KB/s, 전송받고자 하는 정보 : HTML페이지(1KB) + 이미지 3개 (10KB * 3), HTTP 헤더 req, res 각 1KB, tcp 연결 & 종결시간 400ms & 200ms
성능향상 2 (네트워크 구조)
Web Cache (Proxy Server)
ISP (인터넷 서비스 제공자)가 많이 요청되는 데이터는 웹 캐시(자기 내부)에 갖고 있어서 굳이 서버까지 안가고 웹 캐시에 있는 것을 가져다주면 됨 (빠르게 전송할 수 있음)
ISP에서 비용 절감을 위하여 이전에 가져온 적이 있는 문서를 DB에 임시 저장해놓았다가 동일 요소가 다시 요청될 때 재사용 (클라이언트에게 가상적으로 서버 역할, 서버에게는 클라이언트역할, 서버이자 클라이언트가 될 수 있음 (중개상인의 개념))
Root Ns가 TLDNS(.com) 주소 목록을 Local DNS에 알려줌. 그러면 TLDNS(.com)에게 www.google.com IP물어보면 TLDNS(.com)가 google.com의 Autherized DNS의 리스트를 알려줌. Autherized DNS에게 가서 www.google.com 물어보면 알려줌