네트워크

[네트워크] Session과 Cookie

Castle Bird 2025. 12. 11. 14:50

1. HTTP 통신

1-1. 방법

  • 서버와 클라이언트 간에 요청응답으로 데이터를 주고 받는다.
    • 예시) 브라우저에서 서버 URL로 접속 등
  • 응답이 완료되면 서버와의 연결을 끊는다.

1-2. 특징

  • Connectionless(무 연결)
    • 클라이언트와 서버는 계속 연결된 상태가 아니다.
    • 요청, 응답시 잠깐만 연결한다.
    • TCP 프로토콜(연결지향. 서버가 허락해야만 송/수신 가능)에 특화 기능을 추가하여 사용.
  • Stateless(무 상태)
    • 서블릿 컨테이너 내에는 여러 개의 서블릿이 있는데, 각각의 서블릿에서 상태값(속성,변수값)을 다른 서블릿에서 공유해 쓸 수 없음을 의미한다.

1-3. 문제점

  • 연결이 끊기면 유지되던 정보까지 모두 사라져 새로 연결을 해야만하는 번거로움이 있다.

2. HTTP 통신 문제 해결방안

2-1. Session

  • 서버측의 데이터를 보관
  • Cookie의 단점 중, 보안취약점을 보완하기 위해 사용한다.
    • 로그인 유지정보 보관 등
    • SessionID를 쿠키로 전달하지만 데이터 자체를 서버에 보관.
  • Cookie와 다르게 정보를 Server에서 보관한다 (보안에 용이).
  • 브라우저가 첫 요청시, 서버는 Session객체를 생성하고 이 객체의 ID(JSESSION)를 브라우저에 쿠키형식으로 전달한다. 이후 브라우저는 매 요청시 SESSIONID를 전달해 정보를 확인힌다.
  • 브라우저가 종료되면 Session도 종료된다.
  • Java  패키지: jakarta.servlet.http.HttpSession

출처: 필자. 세션 예시 이미지

2-2. Cookie

  • 클라이언트측의 데이터를 보관
  • 사용자의 컴퓨터(브라우저 등)에 정보를 텍스트 파일로 저장한다.
    • Map 형식.
    • 데이터의 크기, 개수 제한 있음.
    • 유지시간, 유효 디렉토리, 유효 도메인 등을 설정 가능.
    • 간단하고 사용이 용이하지만 그만큼 보안에 취약하다.
      • 만약 로그인 상태를 체크하는 정보를 쿠키에 저장한다면 다른 사람이 쉽게 로그인할 수 있다.
  • Java 패키지: jakarta.servlet.http.Cookie

출처: 필자. 쿠 예시 이미지