CS Study/네트워크

쿠키, 세션, 캐시

danalee252 2022. 4. 15. 17:52

HTTP의 특성

무상태성 (Stateless)
-> 상태정보를 가지지 않기 때문에 통신을 주고 받은 후, 이전 데이터를 유지하지 않는다.
비연결성 (Connectionless)
-> 서버는 클라이언트의 요청에 응답을 보낸 후 연결을 끊는다.

그러나 로그인, 데이터 등 상태를 유지할 필요가 있다. 이를 해결하기 위해 서버와 주고받은 통신 데이터를 저장해두는 방법으로 쿠키, 캐시, 세션이 있다.

1. 쿠키

  • 사용자의 브라우저에 저장되는 텍스트 파일
  • 서버와 통신 시, HTTP 헤더에 포함된다.
  • 이름, 값, 만료기간, 경로 정보가 들어 있고, 키와 값으로 구성되어 있다.
  • 쿠키는 오랜시간 유지될 수 있고, 자바스크립트를 통해 쿠키에 접근할 수 있으므로 민감한 정보를 담지 않는다.
  • 통신과정
    1. 클라이언트가 서버에 요청
    2. 클라이언트가 보낸 요청의 헤더에 쿠키가 없으면 통신 상태를 저장한 쿠키를 응답으로 보냄
    3. 클라이언트의 브라우저가 쿠키를 생성하고 저장한다.
    4. 다음 요청에서는 HTTP 헤더에 쿠키를 실어서 서버에 요청한다.

2. 세션

  • 서버에 저장하는 쿠키 -> 쿠키에 비해 속도가 느리다.
  • 노출되지 않기 때문에 중요한 데이터가 저장된다.
  • 브라우저를 종료할 때까지 유지된다. (유지기간을 설정할 수도 있다)
  • 통신과정
    1. 클라이언트가 서버에 접속하면, 세션ID를 발급받는다.
    2. 서버에서는 세션ID를 쿠키를 이용하여 저장한다.
    3. 클라이언트가 다시 페이지에 접속할 때, 세션ID를 서버에 전달한다.
    4. 서버는 요청 헤더에 있는 쿠키에서 세션ID를 통해 클라이언트를 판별한다.

3. 캐시

  • 리소스 파일들의 임시 저장소
  • 변경사항이 크지 않고 용량이 큰 파일들을 저장한다. (ex. css/js 파일)
  • 페이지 로딩 속도가 빨라진다.
  • 통신과정
    1. 웹 브라우저가 처음으로 서버에 요청하면 결과를 로컬 PC의 캐시에 저장해둔다.
    2. 다음 요청 시, 서버에 접근하지 않고 로컬 PC의 캐시를 가져온다.

'CS Study > 네트워크' 카테고리의 다른 글

웹 동작 방식  (0) 2022.04.19
CORS란 + 스프링부트에서 CORS 에러 해결하기  (0) 2022.04.06
HTTP와 HTTPS의 차이  (0) 2022.03.23
HTTP 메소드  (0) 2022.03.14
OSI 7계층  (0) 2022.03.07