세션(Session) | 캐시(Cache) | 쿠키(Cookie) | |
정의 | 사용자가 웹 브라우저를 통해 웹서버에 접속한 시점으로부터 웹 브라우저를 종료하여 연결을 끝내는 시점까지, 같은 사용자로부터 오는 일련의 요청을 하나의 상태로 보고, 그 상태를 일정하게 유지하는 기술. 즉, 방문자가 웹 서버에 접속해있는 상태를 하나의 단위로 보고 그것을 세션이라고 한다. |
캐시는 웹 페이지 요소를 저장하기 위한 임시 저장소이다. 특히, 후에 필요할 것 같은 요소들을 저장한다. 이러한 요소들은 그림 파일이나 문서 파일 등이 될 수 있다. |
쿠키 또한 정보를 저장하기 위해 사용된다. 기본적으로 웹서버에서 PC로 보내는 작은 파일들을 저장한다. 보통 쿠키는 누군가 특정한 웹 사이트를 접속할 때 발생한다. |
목적 | 웹서버에 웹 컨테이너의 상태를 유지하기 위한 정보를 저장한다. | 캐시는 웹 페이지가 빠르게 렌더링 할 수 있도록 도와준다. | 쿠키는 사용자의 인증을 도와준다. |
특징 | 웹서버에 저장되는 쿠키 (=세션쿠키) 브라우저를 닫거나, 서버에서 세션을 삭제했을 때 삭제되므로, 쿠키보다 보안이 좋다. 저장데이터에 제한이 없다. 각 클라이언트의 고유세션ID를 부여한다. 세션ID로 클라이언트를 구분하여 각 클라이언트 요구에 맞는 서비스를 제공한다. |
CPU는 빠르고, 메모리는 느리다. 두 장치의 속도차로 인한 비효율을 보완하기 위해 사용하는 것이 바로 캐시 메모리이다. 자주 쓰는 데이터를 캐시 메모리에 저장해 메모리에 접근하는 횟수를 줄인다. |
이름, 값, 만료일, 경로정보 로 구성됨. 클라이언트에 총 300개의 쿠키 저장 가능. 하나의 도메인당 20개의 쿠키를 가질 수 있음. 하나의 쿠키는 4 kb까지 저장 가능. |
삭제 | 브라우저를 닫거나, 서버에서 세션을 삭제했을 때 삭제된다. | 사용자가 직접 수동으로 삭제해주어야한다. | 만료기간이 있어 시간이 지나면 자동삭제 된다. |
예시 | 화면이동해도 로그인이 풀리지 않고 로그아웃전까지 유지 또는 세션을 체크하여 관리자/사용자 여부 판단 등이 있다. | 오디오, 비디오 파일 등이 있다. | 유저의 선호도 (로그인 정보, 방문기록, 방문횟수) |
세션 동작순서
1. 클라이언트 요청 (사용자가 웹사이트 접근)
2. 서버는 접근클라이언트의 Request-Header필드인 cookie를 확인하여, 클라이언트가 해당 세션ID를 보냈는지 확인
3. 세션ID가 존재하지 않는다면, 서버는 세션ID를 생성해 클라이언트에게 전송.
4. 서버에서 클라이언트로 준 세션ID를 쿠키를 사용해 서버에 저장한다.
5. 클라이언트는 재접속시, 이 쿠키를 이용하여 세션ID값을 서버에 전달한다.
캐시 동작순서
캐시메모리가 있는 컴퓨터 시스템은 CPU가 메모리에 접근하기 전 먼저 캐시 메모리에서 원하는 데이터의 존재 여부를 확인한다. 이때 필요한 데이터가 있는 경우를 적중(hit), 없는 경우를 실패(miss)라고 한다.
적중(hit)시
1. CPU가 캐시에 주소 전송
2. 태그 메모리 탐색
3. 일치하는 태그 발견 (hit)
4. 블록 상태 갱신(필요할 경우)
5. 데이터 메모리에서 블록 추출
6. 요청받은 데이터 선택
7. 캐시가 CPU에 데이터 전송
실패(miss)시
1. CPU가 캐시에 주소 전송
2. 태그 메모리 탐색
3. 일치하는 태그 없음(miss)
4. 주소를 메모리로 전송해 대응하는 블록을 캐시에 저장
5. 요청받은 데이터 선택
6. 캐시가 CPU에 데이터 전송
쿠키 동작순서
1. 클라이언트 요청 (사용자가 웹사이트 접근)
2. 웹서버는 쿠키생성
3. 생성한 쿠키에 정보를 담아 http화면을 돌려줄때 같이 클라이언트에게 넘긴다.
4. 넘겨받은 쿠키는 클라이언트가 가지고 있다가 다시 서버에 요청 시, 쿠키를 함께 전송.
5. 동일 사이트 재방문시 클라이언트 pc에 해당쿠키가 있는경우, 요청페이지와 함께 쿠키 전송.
참고 사이트
1. https://cheershennah.tistory.com/135
2. https://zion830.tistory.com/46