💻 IT/📌 WEB

[Web] 쿠키과 세션 개념 정리 :: Cookie, Session

GODSU 2022. 4. 29. 13:06
반응형

 

 

혹시, 쿠키와 세션에 대해서 들어보셨나요? 

개발자라면 한 번쯤은 들어보셨을 "쿠키", "세션" 개념과 차이점을 간단히 정리할 건데요~

그전에 이해를 쉽게 하기 위해 HTTP 프로토콜을 먼저 정리해보겠습니다!

 

 

HTTP 프로토콜이란?

 

HTTP(Hypertext Transfer Protocol)는 W3(인터넷)에서 클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 정보를 주고받을 수 있는 프로토콜입니다. 

HTTP 프로토콜은 애플리케이션 계층에 포함되며, TCP/IP 위에서 작동합니다.

 

작동방식을 예를 들면, 클라이언트인 웹 브라우저가 HTTP를 통하여 서버로부터 웹페이지(HTML)나 그림 정보를 요청하면, 서버는 이 요청에 응답하여 필요한 정보를 해당 사용자에게 전달하게 됩니다

 

HTTP를 통해 전달되는 자료는 http:로 시작하는 URL(인터넷 주소)로 조회할 수 있습니다.

 

 

반응형

 

HTTP 특성

 

1. Connectionless

✔ HTTP는 Connectionless 방식으로 작동합니다. 클라이언트가 서버에 요청한 후 응답이 없으면 연결을 끊어버리는 특성 있습니다.(비연결 지향)

✔ 네트워크 관점에서 연결 리소스를 최소한으로 하기 때문에 다수의 요청을 처리하는데 좋음

 

2. Stateless

✔ HTTP를 이용하여 클라이언트가 서버와 통신 후 클라이언트에 정보가 유지되지 않는 특성이 있습니다.

   (예: 쿠팡에 로그인을 하였는데,, 다른 구매 페이지 이동할 때마다 로그인이 풀림)

✔ 이 특성은 Connectionless로부터 파생되어 나오는 특징입니다.

이 특성을 해결하기 위해 "쿠키"와 "세션"이 사용됩니다.

 

 

 

쿠키(Cookie)란?

 

✔ 쿠키란 하이퍼 텍스트의 기록서(HTTP)의 일종으로서 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 그 사이트가 사용하고 있는 서버를 통해 인터넷 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일을 일컫는다.

✔ 쿠키는 임의 조각의 데이터로서, 웹 브라우저에 의해 선별되어 처음 송신되며 웹 브라우저에 의해 클라이언트 컴퓨터에 저장된다. 

✔ 쿠키는 "이름", "값", 0개 이상의 속성 [만료 기간, 도메인, 플래그(예: Secure 및 HttpOnly) 등] 요소로 구성된다

✔ 쿠키는 사용자가 따로 요청하지 않아도 브라우저가 요청 시에 Request Header를 넣어서 자동으로 서버에 전송한다.

 

[동작 방식]

1. 브라우저가 웹서버에 요청

2. 웹서버에서 쿠키를 생성 후, HTTP 헤더에 포함시켜 전송

3. 웹브라우저에서 같은 요청을 할 경우, HTTP 헤더에 쿠키를 포함해 요청

   서버에서 쿠키를 읽어서 이전 상태 정보와 다른 경우 쿠키를 업데이트 후 HTTP 헤더에 포함 후 재전송

 

[쿠키 사용 예시]

✔ 로그인 시, 아이디와 패스워드를 저장하시겠습니까?

✔ 쇼핑몰 장바구니 기능

✔ 팝업에서 "더 이상 이창을 보지 않음"

 

 

 

세션(Session)이란?

 

✔ 세션(Session)이란 일정 시간 동안 같은 브라우저로부터 들어오는 정보를 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술이다. 쿠키와 달리 세션은 서버 측에서 관리합니다.

✔ 요청 정보를 요청자 메모리에 저장하는 것이 아닌 웹 서버가 세션 ID를 부여하며 웹 브라우저가 종료할 때까지 인증 상태를 유지합니다.

[동작 방식]

1. 클라이언트가 서버에 접속하여 세션 ID를 받음 (세션 ID가 없는 경우)

2. 클라이언트가 서버에 요청할 때, 서버는 쿠키의 세션 ID를 보내왔는지 확인

3. 서버는 별다른 작업 없이 받은 세션 ID로 클라이언트 정보 사용

4. 서버에서 정보를 처리 후 클라이언트에게 응답

 

[세션 사용 예시]

✔ 로그인 같이 보안상 작업을 수행할 때 사용

 

 

쿠키와 세션의 차이는?

 

쿠키와 세션은 비슷한 동작원리로 처리되나 차이점이 존재합니다.

쿠키와 세션의 가장 중요한 차이점은 사용자의 정보가 저장되는 위치입니다. 쿠키는 브라우저에 저장하기 때문에 서버의 자원을 전혀 사용하지 않지만 세션은 서버에 저장하여 서버의 자원을 사용합니다.

요청 속도면에서는 쿠키가 세션보다 빠르며, 그 이유는 세션은 서버에서 저장 및 처리가 필요하기 때문입니다.

보안 쪽으로도 세션이 쿠키에 비해 더 우수합니다.

 

위에 차이점만 보면 세션만 사용하면 보안 및 처리속도가 더 좋지 않을까? 생각을 하는데요

하지만, 세션은 서버의 메모리를 사용하기 때문에 세션만 무분별하게 많이 사용하면 서버가 느려지는 경우가 있어 (용도에 따라) 쿠키도 같이 사용합니다.

 

 

이상으로 오늘은 쿠키와 세션을 정리해보았습니다.

 

 

 

감사합니다.

 

 

 

 

 

 

 

[참고 사이트]

 

 

HTTP 쿠키 - 위키백과, 우리 모두의 백과사전

쿠키(영어: cookie)란 하이퍼 텍스트의 기록서(HTTP)의 일종으로서 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 그 사이트가 사용하고 있는 서버를 통해 인터넷 사용자의 컴퓨터에 설치되는 작

ko.wikipedia.org

 

 

쿠키와 세션 개념

노션 페이지(아래 내용과 동일) 개요 쿠키와 세션은 개발자 말고도 인터넷 사용자라면 누구나 많이 들어본 단어입니다. 하지만 개념에 대해서는 많은 사람들이 헷갈려 하기에 쉽고 

interconnection.tistory.com

 

 

HTTPS - 위키백과, 우리 모두의 백과사전

HTTPS(HyperText Transfer Protocol over Secure Socket Layer, HTTP over TLS,[1][2] HTTP over SSL,[3] HTTP Secure[4][5])는 월드 와이드 웹 통신 프로토콜인 HTTP의 보안이 강화된 버전이다. HTTPS는 통신의 인증과 암호화를 위해

ko.wikipedia.org

 

반응형