[개발자 인터뷰] Cookie, Session

Joey Hong·2020년 10월 18일
1

🎈 Q1. Http는 비연결성인가요 연결성인가요?

HTTP는 비연결성입니다.

비연결성 (Connectionless)

클라이언트가 서버와 한 번 연결을 맺은 후 클라이언트 요청에 대해 서버가 응답을 마치면 맺었던 연결을 끊어버리는 성질

비연결성의 장점

HTTP는 불특정 다수와의 통신 환경 기반으로 설계됨

  • 다수의 클라이언트와 연결을 지속해야한다면 많은 리소스가 발생
  • 연결을 유지하기 위한 리소스를 줄이면 더 많은 연결 가능

비연결성의 단점

서버는 클라이언트를 기억하지 못 해 식별 불가 (무상태 Stateless)

  • 동일한 클라이언트의 모든 요청에 매번 새로운 연결을 하고 해제해야하는 오버헤드 발생
  • 오버헤드를 줄이기 위해 KeepAlive 속성 사용 가능
    • 지정된 시간 동안 서버와 클라이언트 사이에 패킷 교환이 없는 경우 안부를 묻기 위한 패킷을 주기적으로 보내 커넥션 유지
    • Connection 헤더에 keep-alive 라고 설정

무상태 (Stateless)

서버가 클라이언트의 상태를 식별할 수 없어 그 전에 처리된 통신에 대해 알 수 없다는 특징

  • 로그인 상태를 유지한 채 웹 서비스 사용 불가
  • 이를 보완하기 위해 정보를 유지하는 cookie와 같은 기술 등장

🎈 Q2. 쿠키와 세션에 대해서 설명해주시고 이 둘의 차이점을 설명해주세요.

브라우저에 사용자 정보를 저장하는 구조

  • 공격자에 의해 탈취, 변조 가능성이 높아 보안에 취약
  • 파일 형태로 저장되어 브라우저가 종료되어도 정보 유지

세션 (Session)

서버에 사용자 정보를 저장하는 구조

  • 중간에 탈취가 가능해 보완에 완벽한 것은 아니지만 비교적 안전
    • 클라이언트를 구분할 수 있는 ID를 부여하는데 이를 이용해 인증받고 정보를 이용한다
  • 서버에 저장하는 것이라 서버의 메모리를 차지
    • 동시 접속자 수가 많은 서버는 서버 과부화의 원인이 됨
  • 브라우저 종료시 정보가 사라짐

차이점

  1. 저장위치 - 쿠키는 로컬에, 세션은 로컬과 서버에 저장
  2. 보안 - 쿠키는 탈취와 변조 가능, 세션은 ID로 인증하기 때문에 상대적으로 안전
  3. Lifecycle - 쿠키는 브라우저를 종료해도 파일로 남아있지만 세션은 브라우저 종료시 세션 삭제
  4. 속도 - 쿠키는 파일에서 읽기 때문에 상대적으로 빠르고 세션은 요청마다 서버에서 처리를 해 비교적 느림
profile
개발기록

0개의 댓글