컴퓨터 네트워크

쿠키와 세션의 차이에 대해 설명해 주세요.

승무_ 2023. 6. 20. 10:51

쿠키와 세션을 사용하는 이유

HTTP는  "connectionless, stateless"한 특성을 가지기 때문에 서버는 매 요청때 마다 클라이언트를 확인해야 한다는 단점이 있습니다. 이를 보완하기 위해 나온 개념이 쿠키와 세션입니다.

 

connectionless

더보기

클라이언트가 요청을 보내고 응답을 받으면 연결을 끊어버리는 특징

보통 웹서비스를 사용할 때, 계속 연속적으로 검색 버튼을 누르지 않기 때문에 연결을 끊는것이 서버 자원을 더 효율적으로 사용할 수 있음

stateless

더보기

Stateless를 직역하면 무상태라는 것으로 서버가 클라이언트의 이전 상태를 기억하고 있지 않는다는 것입니다. 때문에 다음 요청을 받는 서버가 이전 요청을 받은 서버일 필요가 없어 서버의 스케일 아웃에 유연하다는 장점이 있지만, 그만큼 클라이언트가 많은 양의 데이터를 보내야 하는 단점이 있습니다.

스케일 아웃은 서버를 여러 대 추가하여 시스템을 확장하는 것을 말한다

 

쿠키

클라이언트 로컬에 저장 되는 데이터 파일로 request시 request header에 자동으로 포함되어 사용자 인증을 유지하는 방식입니다.

 

 

세션

사용자의 정보를 로컬에서 저장하는 쿠키와 다르게 서버에서 관리합니다.

 

쿠기와 세션의 차이

가장 큰 차이 점은 사용자의 정보가 저장되는 위치 입니다. 쿠키는 사용자 정보를 로컬에 두는 반면 세션은 이를 서버에서 관리합니다. 또 보안적인 측면에서 봤을때도 쿠키는 클라이언트 로컬에 저장되기 때문에 변질되거나 request에서 스니핑 당할 우려가 있어서 보안에 취약하지만 세션은 쿠키를 이용해서 session Id 만 저장하고 서버에서 처리하기 때문에 비교적 보안성이 좋습니다. 그리고 라이프 사이클에도 차이가 있는데, 둘 다 만료시간의 개념이 있지만 쿠키 같은경우, 파일로 로컬에 저장되기 때문에 만료가 되어도 정보가 계속 남아 있다는 특징이 있고, 세션 같은 경우 만료 시간이 있지만 그 전에 브라우저가 종료되면 만료시간에 상관없이 삭제된다는 차이가 있습니다.

 

꼬리 질문

  • 세션 방식의 로그인 과정에 대해 설명해 주세요.
더보기

1. 홈페이지 id, password 입력 필드에 값을 넣고 로그인 요청을 합니다.

2. 서버는 데이터베이스를 통해 유효한 사용자인지 검증하고 세션을 생성합니다

3. 클라이언트는 쿠키를 통해 세션 식별자인 세션 id를 받고 request때 마다 세션 id를 보내 인증을 유지합니다.

  • Stateless의 의미를 살펴보면, 세션은 적절하지 않은 인증 방법 아닌가요?
더보기

stateless가 무상태를 의미하기 때문에 상태를 유지하는 세션방식은 이에 반합니다.

그러나 로그인을 필요로 하는 사이트에서 매 요청때마다 로그인을 진행하는것이 보안이나 비용면에서 더 안좋기 때문에 세션방식을 사용하는 것 같습니다.

  • 규모가 커져 서버가 여러 개가 된다면, 세션을 어떻게 관리할 수 있을까요?
더보기

스케일 아웃된 서버 모두가 세션 정보를 공유해야 되므로 Session만을 저장하는 Session Storage를 별도로 만들어 모든 서버에서 해당 Storage를 바라보게 하는 방법이 있습니다.

 

'컴퓨터 네트워크' 카테고리의 다른 글

HTTP  (0) 2023.07.11
TCP/IP  (0) 2023.07.09
OSI 7계층  (0) 2023.04.06
TCP  (0) 2023.04.06
HTTP  (0) 2023.04.06