본문 바로가기

WEB

[Network]쿠키와 세션

HTTP의 특징과 세션과 쿠키가 만들어진 이유

  • HTTP의 특징
    • 비연결성(connectionless), 무상태성(stateless)한 특징을 갖는 프로토콜이다.
    • 비연결성 : 클라이언트가 HTTP Request를 통해 서버에게 요청을 보내면, 서버는 클라이언트의 요청에 맞는 Response를 보내고 접속을 끊는다.
    • 무상태성 : 클라이언트와 서버의 연결이 끊어지는 순간 통신이 끝나며 상태 정보는 유지하지 않는다.
    • 이러한 HTTP의 특징으로 인하여 서버는 클라이언트가 이전에 무엇을 했고 지금 무엇을 했는지에 대한 정보가 없다.
  • 세션과 쿠키
    • HTTP통신의 비연결성 및 무상태성으로 인해 발생하는 문제점들을 해결하기 위해 고안되었다.
    • 세션과 쿠키는 서버 또는 클라이언트에 클라이언트 자신에 대한 상태 정보를 저장한 뒤 요청시마다 사용하여 마치 클라이언트와 서버가 연결되있는 것 처럼 사용할 수 있게 되었다.

 

쿠키

  • 클라이언트(브라우저)의 저장장소에 사용자의 상태에 대한 정보를 담고있는 Key, Value 형태의 문자열 데이터를 담고있는 파일로 저장된다.
  • 쿠키의 유효 시간을 설정할 수 있으며, 쿠키가 유효하다면 브라우저가 종료되어도 인증이 유지된다.
  • 클라이언트에 300개의 쿠기가 저장가능하며, 하나의 도메인(사이트)당 최대 20개의 쿠키를 저장할 수 있다. 이때 저장되는 쿠키의 크기는 4KB를 넘길 수 없으며, 쿠키의 개수가 300개를 초과하는 순간 가장 오래된 쿠키는 삭제되고 새로운 쿠키가 저장된다.
  • 클라이언트 측에서 쿠키를 열어볼 수 있다.
  • 쿠키는 브라우저가 서버에 요청시 Request Header에 쿠키를 포장해 자동으로 전송한다. 쿠키의 정보는 항상 서버에 전송되므로 네트워크 트래픽을 추가로 유발한다.

쿠키 동작방식

  1. 클라이언트가 서버에 요청시 서버에서 클라이언트 측의 상태에 대한 정보를 담고있는 쿠키를 생성해 응답과 함꼐 전송한다.
  2. 클라이언트 측에서는 서버에서 받은 쿠키를 웹브라우저내 저장소에 저장해 둔다.
  3. 이후 클라이언트가 서버에 재요청시 자동으로 쿠키 저장소에 있는 쿠키를 요청 정보와 함께 서버에 전송하며, 서버는 쿠키와 요청을 읽고 동적인 웹 페이지 생산을 함으로써 마치 연결된 것과 같이 느낄 수 있게 된다.

세션

  • 세션은 쿠키를 기반하지만, 사용자 상태를 문자열뿐만 아니라 객체또한 담을 수 있으며, 서버측 메모리에서 관리된다.
  • 세션또한 쿠키를 기반하기 때문에 유효 시간을 설정할 수 있으나, 브라우저가 종료되면 인증을 유지할 수 없다.
  • 저장 갯수에 제한이 없으나, 서버 메모리를  사용하는 만큼 서버에 부하가 간다.
  • 세션에 보관한 정보는 클라이언트 측에서 접근할 수 없는 영역에 있어 보안에 유리하다.

세션 동작방식

  • 세션도 기본적으로 쿠키를 기반하기 떄문에 비슷한것처럼 보이지만 내부적으로 처리하는 방식이 다르다.
  1. 클라이언트가 서버에 요청시 서버에서 클라이언트 측의 상태에 대한 정보를 서버의 메모리에 저장한 뒤, 해당 메모리가 저장된 정보를 담고있는 세션의 ID를 쿠키에 담아 응답한다.
  2. 클라이언트 측에서는 서버에서 받은 쿠키를 웹브라우저내 저장소에 저장하나, 쿠키와 달리 사용자의 정보는 포함되어 있지 않고 브라우저의 세션 ID만 담겨있을 뿐이다.
  3. 이후 클라이언트가 서버에 재요청시 서버가 갖고있는 세션 ID와 클라이언트 측으로 부터 넘어온 쿠키의 세션 ID를 비교해 어느 클라이언트에서 요청이 왔는지 식별을 하고 그에 맞는 동적인 웹 페이지를 만든 뒤 응답한다.

 

세션과 쿠키의 공통점

  •  두 컴퓨터나 네트워크 장치의 논리적인 연결 상태이며 이와 상대되는 개념으로 링크가 있다. 즉 웹상에서 브라우저(클라이언트)와 서버가 논리적으로 계속 연결된 상태를 뜻한다.

 

세션과 쿠키의 차이점

차이점 세션 쿠키
저장장소 클라이언트측 저장장소 서버 메모리
저장형식 텍스트형식 Object 형
유효기간 유효기간 또는 브라우저의 종료시 까지 유지 브라우저의 종료와 상관없이 유효기간동안 인증 유지
용량제한 쿠키 하나당 4KB
한 도메인당 20개
브라우저에 최대 300개 저장가능
서버의 메모리가 허용하는 한 제한이 없다.
보안 쿠키보다 좋다 세션보다 구리다.
  • 또한 쿠키는  사용자에 의지에 따라 저장 유무를 결정할 수 있다는점 또한 차이점이 될 수 있다.

 

 

'WEB' 카테고리의 다른 글

[WEB]Forward와 Redirect의 차이  (0) 2023.03.15
[WEB]3-tier architecture와 WAS의 개념  (0) 2023.03.10
[WEB]정적 페이지와 동적 페이지  (0) 2023.03.10
[WEB]클라이언트 / 서버  (0) 2023.03.10
[WEB]웹의 동작방식  (0) 2023.03.10