빠에야는 개발중

쿠키와 세션 본문

공부/네트워크

쿠키와 세션

빠에야좋아 2018. 3. 17. 17:23

목적

http는 connectionless하고 stateless한 프로토콜이다. 매 요청마다 연결을 맺고 끊으며 클라이언트와 서버 간의 상태를 공유하지 않는다. 하지만 이런 http의 특징은 사용성에 있어서 불편함을 초래하는데, 예를 들어 쇼핑몰 따위의 장바구니 서비스는 상태 유지가 안되면 존재 자체가 불가능하다. 그렇기 때문에 서로의 연결을 유지하는 장치가 필요한데, 그것이 쿠키와 세션이다. 그렇다면 둘은 어떤 차이가 있을까?

쿠키

쿠키는 클라이언트, 즉 브라우저에 파일 형태로 정보를 저장하는 방법이다. 이름의 유래는 헨젤과 그레텔 동화에서 집을 찾기 위해 뿌렸던 쿠키에서 가져왔다.(결국 다 먹혀버리지만) 브라우저는 최초에 서버와의 연결이 성공하면 상태 정보를 쿠키로 저장하고 다음 요청부터 request 헤더에 쿠키를 자동으로 실어서 보낸다. 그리고 서버는 쿠키를 읽어서 클라이언트의 정보를 알아낸다.

세션

반면에 세션은 서버에 정보를 저장하는 방법이다. 각 클라이언트마다 고유한 id를 부여하여 해당 id의 일정 시간 내의 요청을 같은 연결로 간주하고 처리해주는 것이다. 여기서 “일정 시간 내”라는 점이 중요한데, 이 시간이 지나고 나면 세션은 끊기고 연결 유지도 종료된다는 의미이다. 흔히 입사지원서 작성 페이지 등의 긴 글을 써야하는 페이지에서 세션의 존재와 만료 시간에 대해서 알 수 있다.


쿠키는 이미 모든 정보를 가지고 있는 것을 서버에 보내기만 하는 것이기 때문에 속도가 빠르고, 세션은 id 값을 가지고 서버가 가진 자원으로 여러 처리를 해주어야하기 때문에 상대적으로 속도가 느리다.


한편 세션이 쿠키로부터 완전히 독립적인 것은 아닌데, 왜냐하면 세션이 확인하는 클라이언트의 고유 id를 쿠키의 형태로 담아서 관리하기 때문이다. 즉 쿠키와 세션은 모두 쿠키를 사용하지만, 그 내용이 상태 정보인지 아니면 단순히 클라이언트 id 값인지의 차이인 것이다.

'공부 > 네트워크' 카테고리의 다른 글

CORS  (0) 2019.05.03
HTTPS와 HTTP/2  (0) 2018.03.19
Comments