세션이란?
세션(session)은 컴퓨터 과학에서, 특히 네트워크 분야에서 반영구적이고 상호작용적인 정보 교환을 전제하는 둘 이상의 통신 장치나 컴퓨터와 사용자 간의 대화나 송수신 연결상태를 의미하는 보안적인 다이얼로그(dialogue) 및 시간대를 가리킨다. 따라서 세션은 연결상태를 유지하는 것보다 연결상태의 안정성을 더 중요시 하게 된다.
세션 수립은 연결 지향 통신을 수행하는데 기초적인 요구 사항이다. 또, 세션은 무접속 방식으로 전송하는 기본 단계이기도 하다. 그러나 단일 지향성 전송은 세션을 정의하지 않는다.
https://ko.wikipedia.org/wiki/%EC%84%B8%EC%85%98_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)
[세션 (컴퓨터 과학) - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전.
ko.wikipedia.org](https://ko.wikipedia.org/wiki/%EC%84%B8%EC%85%98_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99))
이 의미가 뭔고 하니 둘 이상의 통신 장치나 컴퓨터 간의 연결 상태를 유지하기 것을 위한 것이다.
일반적으로 우리가 접하게 되는 세션은 클라이언트 <-> 서버 간의 통신에서 사용자의 정보를 식별하기 위한 용도로 사용된다.
세션이 유지되는 시점은 사용자가 브라우저를 닫아 서버와의 연결을 끝내는 시점까지를 세션이라 한다.
하지만 사용자를 식별하기 위한 방법은 세션을 사용해야만 가능한 것은 아니다.
가장 간단한 방법은 쿠키를 이요하는 방식이다.
쿠키?
쿠키란 브라우저에 저장되어있는 Key, Value로 구성되어 있는 작은 데이터 파일이다.
Http 통신은 기본적으로는 상태를 유지하지 않는 Connectionless 이기때문에 이를 쿠키를 이용해서 보완할 수 있다.
(물론 Http 1.1 부터는 Keep-alive 기능을 지원하지만 이와는 별개의 이야기이다.)
쿠키의 구성요소
쿠키는 이름, 값, 만료시간, 전송하는 도메인명, 전송 경로 등
사용자 구분 방법
도메인을 기준으로 지정된 Key 단위로 Value를 통해서 사용자를 구분할 수 있다.
쿠키의 한계?
쿠키를 통해서 사용자를 구분이 가능하지만 쿠키는 클라이언트에 저장되는 정보이기 때문에 쉽게 조작이 가능하다.
또한 중간에 가로채기도 무척 쉽다. 따라서 중요하고 민감한 정보를 담아서는 안된다.
이러한 한계를 보완하기 위해서 세션을 이용한다.
세션을 동작 방식
쿠키는 클라이언트에 저장하지만 세션 정보의 경우는 서버에서 관리한다.
- 로그인을 하면 세션 id를 발급해준다.
- 세션 ID를 쿠키에 포함하여 클라이언트에 보내준다.(이때 세션 ID는 서버에 데이터를 저장한다)
- 클라이언트는 서버에 데이터를 요청할 때 쿠키를 포함해서 보낸다.
- 서버는 클라이언트가 보낸 쿠키에 있는 세션 ID를 이용해서 사용자를 식별한다.
세션의 단점
세션의 정보를 서버의 자원을 이용하여 저장하다보니 로그인이 너무 많아지게 되면 서버의 자원이 낭비되게 된다.
또한, 쿠키에 있는 정보만을 사용하는 것이 아닌 서버의 자원에 접근하게 되기 때문에 속도 또한 쿠키가 더 빠르다.