본문 바로가기

CS/네트워크

HTTP에 대하여(3) - HTTP의 쿠키,세션 그리고 토큰

이전글에서는 HTTP의 특징 및 사용이유에 대해서 정리해보았는데

이번에는 HTTP의 또 다른 특징인 클라이언트의 상태를 기억하는 개념에 대해서 나열하고 정리해보겠다.

 

비연결상태, 무연결상태를 보이는 HTTP는 클라이언트를 모른다는 단점(?)을 어떻게 보완하고 있는지 보자.

 

1) 쿠키.

먼저 쿠키다.

내가 만든 쿠키가 아닌 서버가 만든 쿠키를 클라이언트(브라우저)가 보관하고 있으며

쿠키에는 클라이언트가 저장해도될만한 정보들을 저장하고 있다. 

서버는 클라이언트로부터 받은 쿠키로 클라이언트가 이전 사용한 이력이나 설정과 같은 정보들을 읽어서 클라이언트를 관리할 수 있다. 

 

2) 세션

쿠키와 달리 세션은 서버가 관리를 한다.

서버가 관리하기에 쿠키보다는 좀 더 중요한 정보들을 서버가 관리가 가능하다. 

예를 들어, 사용자가 클라이언트로부터 아이디와 비밀번호를 입력하여 로그인 한 뒤에 서버는 사용자의 세션 아이디값을 기억하고 있으며 클라이언트는 서버로부터 받은 세션 아이디값을 통해 특별한 인증절차없이 웹페이지의 서비스를 사용할 수 있는 것도 서버와 클라간에 세션이 존재하기 때문이다. 

 

3) 토큰

토큰 방식은 세션의 단점을 보완하기 위해 나타났다.

많은 수의 클라이언트가 존재할 경우 클라이언트의 모든 정보들을 서버가 저장하고 있는건 서버의 굉장히 부담이다.

서버의 확장성에도 제약이 걸린다.

이러한 단점을 보완하기 위해서 서버는 사용자 정보를 토대로 토큰이라는 것을 만들어 클라이언트에게 알려주고 사용자 정보를 따로 기억하지 않는다.(물론 데이터베이스에 사용자 아이디와 비밀번호를 기억하겠지만..)

이제 토큰은 영화관에 티켓과 같은 존재가 되며

추후에 클라이언트는 서버로부터 요청을 보낼때 토큰을 함께 보내면 서버는 토큰을 해독하고

인증이 끝나면 클라이언트의 요청에 대한 응답을 내려줄 수 있게 된다. 

 

뭔가.. 생각나는대로 주절주절 적은 느낌이라 내용이 가볍고 두서가 안맞을 것 같지만

정리하자면

HTTP 프로토콜의 특성상 클라이언트를 기억하지 않는다는 점이 있고 이 단점을 보완하기 위해 쿠키,세션,토큰 이라는 개념이 등장한거다.

모두 클라이언트의 정보를 담고 있는 데이터들이며 

쿠키는 클라이언트가 가지고 있고, "나 이랬던 사람이야"

세션은 서버가 가지고 있으며 

토큰은 위 2가지 개념을 합친 개념으로 이해하면 될 것이다.

 

그럼 20000.

 

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

RESTful API는 뭘까?  (0) 2023.03.06
HTTP에 대하여(2) - HTTP의 특징  (0) 2023.01.28
HTTP에 대하여(1) - HTTP의 정의  (0) 2023.01.16
URL 용어정리해보자.  (0) 2020.08.02
DNS(Domain Name System)이란 무엇일까?  (0) 2020.07.26