HTTP(Hyper Text Transper Protocol)란
HTTP는 현재 다양한 분야에서 널리 사용되는 가장 성공한 통신 규약이다. 초기에는 HTML문서를 인터넷에서 주고 받는데 그 목적이 있었다. 그래서 문서를 전달하였으면 컴퓨터 리소스를 사용하면서 통신 연결을 유지할 이유가 없었기 때문에 응답 후 연결을 끊는다 이를 비연결성(Connectionless)이라 한다.
또한 문서를 전달하는데 목적이 있기에 누가 요청하는가는 중요하지않고 단지 문서를 보내주기만 하면 된다. 웹서버는 모든 요청이 개별 요청으로 보이는 것이다. 이를 무상태(Stateless)라 한다. HTTP 통신은 자판기가 사용자가 누구든 그저 요청한 음료를 돌려주는 것과 같다.
HTTP는 이처럼 요청에 대한 사용자를 식별할 수 없어 모든 요청에 대해 요청한 사용자를 식별하여 해당 사용자에게 개인화된 서비스를 제공할 수 없다. 따라서 웹 브라우져는 새로고침을 할때마다 웹서버에 새 요청을 보내는데 이때마다 로그인을 새로 해야만 한다. 하지만 웹 서비스를 이용해본 사람이라면 그럴 일은 없다는 것을 알고있다. 그러한 연결을 유지하는 쿠키와 세션을 알아보자.
HTTP Cookie(이하 쿠키)란
쿠키는 웹 브라우저에 저장되는 작은 데이터이다. 쿠키에 온라인 상거래 사이트에서 장바구니에 담은 상품들을 저장하거나 사용자가 어떠한 버튼을 클릭한 것, 방문한 페이지 기록, 이전에 작성한 주소나 이름, 아이디를 저장, 웹사이트의 테마를 저장하는데에도 사용할 수 있다. 쿠키는 웹 브라우저에 저장이 되어 서버와 통신할 때 주고 받는다. 웹 브라우저에 저장되기 때문에 중요한 데이터를 저장할 경우 쉽게 볼 수 있어 보안에 취약하다. 그러므로 로그인 정보와 같이 개인정보를 저장하는 것은 위험하다. 중요한 데이터는 서버에 저장되는 Session을 함께 활용할 수 있다.
Session(이하 세션)이란
세션은 클라이언트가 보낸 아이디 비밀번호와 같은 인증 데이터를 확인하고 식별정보(Session ID)를 생성해 쿠키에 담아 응답한다. 클라이언트는 서버에 요청시 쿠키를 함께 전송해 인증됨을 알린다. 중요한 정보는 웹서버에서 관리하기에 더 안전하다. 세션은 만료 시간이 있어 어떠한 Session ID를 가진 요청을 일정시간동안 받지 않으면 해당 세션은 만료가 된다. 하지만 요청을 받으면 일정 시간을 연장시켜 세션을 유지한다. 웹서버는 Session을 통해 개인화되며 안전한 서비스를 제공할 수 있다.