우리가 사용하는 인터넷을 통신해주는 HTTP는 계속 연결되어 있는 것이 아니다.
클라이언트가 검색을 했을 시에 서버는 그 검색에 대한 정보를 반환해 주고 끊어진다. 이것을 Stateless 프로토콜 이라고 한다. 즉, 계속 연결되어 있지 않다는 뜻이다.
HTTP Cookie
쿠키를 사용하지 않는다면,
클라이언트가 요청을 했을 때 서버는 이전의 요청을 기억하지 못한다. 예를 들어, 어떤 사이트에 로그인 했을 때 다음 페이지를 넘길 때마다 로그인을 해줘야 하는 경우가 발생한다.
쿠키를 사용한다면,
로그인 정보에 대해서 서버에서는 set-cookie 헤더로 정보를 담아 응답해주고, 이는 클라이언트의 웹 브라우저 별도 Cookie 저장소에 저장된다. 따라서 서버에 요청을 보낼 때마다 Cookie 저장소를 조회하게 되고 Cookie가 로그인 정보를 같이 보내면서 그 서버에 로그인이 되었다는 것을 확인시킨다.
이러한 Cookie에는 이름, 값, 만료 날짜, 경로 정보가 들어있다. 기본적으로 Cookie는 웹 브라우저가 종료되면 삭제되지만 만료 날짜를 지정해 주었다면 만료일이 되어서야 삭제된다. 또한 웹 브라우저에 해당 서버의 쿠키 정보가 있다면 HTTP 요청 (HTTP 헤더의 Cookie)에 무조건 담아 보낸다.
HTTP Session
Session이란 통신을 하기 위해 서로 연결된 순간부터 통신을 마칠 때 까지의 기간을 의미한다.
HTTP Session은 Client가 웹서버에 연결된 순간부터 웹 브라우저를 닫아 서버와의 HTTP 통신을 끝낼 때 까지의 기간이다.
보통 HTTP Session을 말할 때는 서버에 Session에 대한 정보(Session 상태, Client 상태, Session 데이터 등)를 저장해 놓고 Session Cookie(고유한 Session ID 값)를 Client에게 주어 서버가 Client를 식별할 수 있도록 하는 방식 자체를 의미하는 경우가 많다.
Session은 서버에 Session 객체를 생성하며, 각 Client마다 고유한 Session ID 값을 부여한다.
그리고 Cookie를 사용하여 이 Session ID 값을 Client에 보내고,
Web 브라우저가 종료되면 Session Cookie는 삭제된다.
Cookie와 Session의 관계
Cookie는 Stateless한 HTTP 통신에서 Client에게 정보를 주어 해당 클라이언트를 식별하기 위해 만들어졌다. 이 식별 정보를 통해 서버는 특정 클라이언트와 계속해서 통신을 하고 있는지 확인이 가능하다.
하지만 클라이언트에 저장된다는 Cookie는 보안에 있어서 치명적인 단점이 된다.
Session은 Cookie를 이용해서 Session-ID만 저장하고 그것으로 구분하여 서버에서 처리하기 때문에 비교적 보안성이 높다.
쿠키는 만료기간이 있지만 파일로 저장되기 때문에 브라우저를 종료해도 정보가 유지될 수 있다. 또한 만료기간을 따로 지정해 쿠키를 삭제할 때까지 유지할 수도 있다.
반면에, 세션도 만료기간을 정할 수 있지만 브라우저가 종료되면 만료기간에 상관없이 삭제된다.
속도 면에서는 쿠키가 로컬에 저장되기 때문에 유리하다.
따라서, 쿠키와 세션을 적절한 요소 및 기능에 병행 사용하여 보안과 속도라는 두마리 토끼를 잡을 수 있다.
** 쿠키와 세션, vs 캐시
캐시는 웹 페이지를 빠르게 렌더링 할 수 있도록 도와주고, 쿠키/세션은 사용자의 인증을 돕는다.
'Network' 카테고리의 다른 글
TCP/IP Port 지정 리스트와 HTTP/HTTPS Status Code (0) | 2022.12.16 |
---|---|
URI, URL, URN에 대해 알아보자 (0) | 2022.12.16 |
Static & Dynamic Routing (0) | 2022.11.22 |
Cloud Computing, Edge Computing, Network Edge, CDN에 대해 알아보자 (0) | 2022.10.24 |
SSL, TLS, HTTPS에 대해 알아보자 (0) | 2022.10.24 |