CS
Cookie/Session
쉽코기
2022. 9. 12. 21:49
Connectionless
- http 프로토콜은 "connectionless, stateless"의 특징을 갖는다.
- 각각의 서버에서 제공하는 http 프로토콜 버전을 사용하고 있다.
- HTTP/1.1에서는 keep-alive 헤더를 통해 설정된 횟수 or 시간 만큼 연결상태를 지속한다.
- HTTP/2.0 에서는 keep-alive 핃르를 무시한다. 대신 웹페이지를 떠날때까지 연결을 열어놓는다.
📌 Cookie
- 키와 값이 저장되어있는 파일이다.
- 4kb 까지 저장가능
- 사용자가 설정하지 않아도 브라우저가 request header 에 쿠키를 자동으로 넣어서 서버에 전송한다.
- 쿠키에는 세션쿠키, 지속쿠키(persistent cookie)가 존재한다.
Cookie 동작 방식
- 클라이언트가 페이지를 요청한다.
- 서버에서 쿠키를 생성한다.
- 서버에서 http header에 정보를 담은 쿠키를 포함시켜 응답한다.
- 브라우저가 종료되어도 쿠키의 유효 시간이 남아있다면 클라이언트에서 보관하고 있는다.
- 동일 사이트를 재방문하여 동일한 request가 갈 경우 이미 존재하고 있는 쿠키를 http header로 함께 보낸다.
- 서버에서 쿠키를 읽어 이전 상태 정보를 변경할 필요가 있을 때 쿠키를 업데이트 하여 변경된 쿠키를 http header에 포함시켜 응답한다.
session cookie
- 브라우저를 닫는 순간삭제된다.
- non-persistent cookies 또는 temporary cookies라고 부르기도 한다
- 메모리에 저장되며 디스크에 절대 저장되지 않는다
- 유효시간을 설정하지 않는 쿠키를 의미한다.
- 온라인뱅킹 재접속 상황으로 이해할 수 있음 -> 브라우저가 유저 정보를 기억해선 안됨(재접속자가 초기 접속자와 다를 수 있음)
persistent cookie
- 유저정보를 디바이스 저장
- 디스크에 저당되며 유효기간 만료때 파괴된다.
- 유효기간이 있는것이 persistent cookie / session 으로 명시된 것이 session cookie
📌 Session
- Session Id 를 부여하여 인증상태를 유지한다.
- 사용자 정보를 서버에 두어 쿠키보다 보안에 좋지만 서버 메모리를 많이 차지하게 됨
- 세션은 정보가 서버에 있기 때문에 처가 요구되어지기에 쿠키보다 느린 속도를 갖는다.
Session 동작 방식
- 클라이언트가 서버에 접속 시 세션 ID를 발급 받는다.
- 클라이언트는 세션 ID에 대해 쿠키를 사용해 브라우저에 저장한다.
- 클라이언트는 서버에 요청할 때, 이 쿠키의 세션 ID를 같이 서버에 전달해서 요청한다.
- 서버는 세션 ID를 전달받아 세션 ID로 세션에 있는 클라이언트 정보를 가져와서 사용한다.
- 클라이언트 정보로 서버 요청을 처리하며 클라이언트에 응답한다.