
Request 하고 Response하는 순간 연결이 끊어져 부하가 거의 없다는 장점이 있다.
시대가 변하면서 상태 유지하는 기술 즉, 일정 시간 동안 동작에 대한 유지 기술을 필요로 한다.
쿠키와 세션을 사용하는 이유
HTTP 프로토콜의 특징이자 약점을 보완하기 위해서 사용된다.
Connectionless 프로토콜 (비연결지향)
클라이언트가 서버에 요청(Request)을 했을 때,그 요청에 맞는 응답(Response)을 보낸 후 연결을 끊는 처리방식이다.
º HTTP 1.1 버전에서 연결을 유지하고, 재활용 하는 기능이 Default 로 추가되었다.
(keep-alive 값으로 변경 가능)
Stateless 프로토콜 (상태정보 유지 안함)클라이언트와 첫번째 통신에서 데이터를 주고 받았다 해도,두번째 통신에서 이전 데이터를 유지하지 않는다.
클라이언트의 상태 정보를 가지지 않는 서버 처리 방식이다.
🎈 But, 실제로는 데이터 유지가 필요한 경우가 많다.
<특징>
1. 이름, 값, 만료일(저장 기간 설정), 경로 정보로 구성되어 있다.
2. 클라이언트에 총 300개의 쿠키를 저장할 수 있다.
3. 하나의 도메인 당 20개의 쿠키를 가질 수 있다
4. 하나의 쿠키는 4KB(=4096byte)까지 저장 가능하다.
5. 보안에 취약하다는 단점
<동작 방식>
1. 클라이언트가 페이지를 요청
2. 요청을 받은 서버에서 쿠키 생성
3. HTTP 헤더에 쿠키를 포함시켜서 클라이언트에게 응답
4. 브라우저가 종료되어도 쿠키 만료 기간이 남아있다면 클라이언트 쪽에서 쿠키를 보관하고 있음
5. 클라이언트가 서버에 같은 요청 시 가지고 있던 쿠키를 HTTP헤더에 같이 보냄
6. 서버에서 쿠키를 읽어 변경 사항이 있다면 쿠키를 업데이트 하고 변경된 쿠키를 HTTP 헤더에 포함시켜서 응답
< EX >
1. 방문했던 사이트에 다시 방문 하였을 때 아이디와 비밀번호 자동 입력
2. 팝업창을 통해 "오늘 이 창을 다시 보지 않기" 체크
일정 시간동안 같은 사용자(브라우저)로부터 들어오는일련의 요구를 하나의 상태로 보고, 그 상태를 일정하게 유지시키는 기술이다.
여기서 일정 시간은 방문자가 웹 브라우저를 통해웹 서버에 접속한 시점으로부터 웹 브라우저를 종료하여 연결을 끝내는 시점(30분?) 을 말한다. 즉, 방문자가 웹 서버에 접속해 있는 상태를 하나의 단위로 보고 그것을 세션이라고 한다.
<특징>
1. 웹 서버에 웹 컨테이너의 상태를 유지하기 위한 정보를 저장한다.
2. 웹 서버의 저장되는 쿠키(=세션 쿠키)
3. 브라우저를 닫거나, 서버에서 세션을 삭제했을때만 삭제가 되므로,쿠키보다 비교적 보안이 좋다.
4. 저장 데이터에 제한이 없다.
5. 각 클라이언트 고유 Session ID 를 부여한다. Session ID로 클라이언트를 구분하여 각 클라이언트 요구에 맞는 서비스 제공
<동작방식>
1. 클라이언트가 서버에 처음으로 request(첫 요청에는 session id가 존재하지 않는다)
2. 서버에서는 session id 쿠키 값이 없는 것을 확인하고 새로 발급 후 응답
3. 이후 클라이언트는 전달받은 session id값을 요청 마다 Header Cookie에 넣어서 요청
4. 서버에서는 session id를 확인하며 사용자를 식별
5. 클라이언트가 로그인을 요청하면 서버는 session을 로그인한 사용자 정보로 갱신 후 새로운 session id를 발급하며 응답
6. 이후 클라이언트는 로그인 사용자의 id 쿠키를 요청과 함께 전달하고 서버에서도 로그인된 사용자로 식별 가능
7. 브라우저 종료시 id 제거, 서버에서도 세션 제거
💡 Q. 세션을 쓰면되는데 굳이 쿠키를 사용하는 이유?
A. 세션이 쿠키에 비해 보안도 높은 편이나 쿠키를 사용하는 이유는세션은 서버에 저장되고, 서버자원을 사용하기 때문에 사용자가 많을 경우 소모되는 자원이 상당하다.이러한 자원관리 차원에서 쿠키와 세션을 적절한 요소 및 기능에 병행 사용하여,서버 자원의 낭비를 방지하며 웹사이트의 속도를 높일 수 있다.