프로토콜(Protocol) : 컴퓨터들 간의 원활한 통신을 위해 지키기로 약속한 규약
HTTP(Hypertext Transfer Protocol)
인터넷상에서 데이터를 주고 받기 위해 서버/클라이언트 모델을 따르는 통신규약
Connectionless 프로토콜 (비연결지향)
Stateless 프로토콜 (상태정보 유지 안함)
특징
1. 이름, 값, 만료일(저장 기간 설정), 경로 정보로 구성되어 있다.
2. 클라이언트에 총 300개의 쿠키를 저장할 수 있다.
3. 하나의 도메인 당 20개의 쿠키를 가질 수 있다.
4. 하나의 쿠키는 4KB(=4096byte)까지 저장 가능하다.
쿠키 동작 순서
1. 서버에서는 사용자로부터 요청이 있을 때 사용자를 구분하기 위한 임시쿠키 하나를 보내 저장하도록 한다.
2. 저장된 쿠키는 웹 브라우저의 쿠키저장소에 저장된다.
3. 이후 같은 사이트의 서버를 방문할 때마다, 저장된 쿠키를 요청할 header에 담아
함께 다시 서버로 전송한다.
4. 서버는 전송받은 쿠키와 서버에 저장된 사용자 정보를 비교하여 같은 사용자임을 확인한다.
단점
일정 시간동안 같은 사용자(브라우저)로부터 들어오는
일련의 요구를 하나의 상태로 보고, 그 상태를 일정하게 유지시키는 기술
일정 시간 : 방문자가 웹 브라우저를 통해 웹 서버에 접속한 시점으로부터 웹 브라우저를 종료하여 연결을 끝내는 시점
즉,방문자가 웹 서버에 접속해 있는 상태를 하나의 단위로 보고 그것을 세션이라고 한다.
세션 아이디는 웹 브라우저 당 1개씩 생성되어 웹 컨테이너에 저장되며 브라우저 종료 시 소멸
각 클라이언트 고유 Session ID를 부여
(구분하여 각 클라이언트 요구에 맞는 서비스 제공)
아이디, 닉넴 등의 정보를 세션에 담아두면 요청이 있을 때마다 DB에 접근할 필요가 없어서 효율적
예시 : 화면이 이동해도 로그인이 풀리지않고 유지
세션 동작 순서
1. 클라이언트가 페이지를 요청한다. (사용자가 웹사이트 접근)
2. 서버는 접근한 클라이언트의 Request-Header 필드인 Cookie를 확인하여,
클라이언트가 해당 session-id를 보냈는지 확인한다.
3. session-id가 존재하지 않는다면, 서버는 session-id를 생성해 클라이언트에게 돌려준다.
4. 서버에서 클라이언트로 돌려준 session-id를 쿠키를 사용해 서버에 저장한다.
쿠키 이름 : JSESSIONID
5. 클라이언트는 재접속 시, 이 쿠키(JSESSIONID)를 이용하여 session-id 값을 서버에 전달
A. 세션이 쿠키에 비해 보안도 높은 편이나 쿠키를 사용하는 이유는세션은 서버에 저장되고, 서버자원을 사용하기 때문에 사용자가 많을 경우 소모되는 자원이 상당하다.이러한 자원관리 차원에서 쿠키와 세션을 적절한 요소 및 기능에 병행 사용하여,서버 자원의 낭비를 방지하며 웹사이트의 속도를 높일 수 있다.
쿠키 | 세션 | |
---|---|---|
저장 위치 | 클라이언트(접속자 PC) | 웹 서버 |
저장 형식 | text | Object |
만료 시점 | 쿠키 저장시 설정 (브라우저가 종료되어도, 만료시점이 지나지 않으면 자동 삭제되지 않음) | 브라우저 종료시 삭제 (기간 지정 가능) |
사용하는 자원(리소스) | 클라이언트 리소스 | 웹 서버 리소스 |
용량 제한 | 총 300개, 도메인 하나당 200개, 쿠키 하나 당 4KB | 용량 제한 x |
속도 | 빠름 | 보다 느림 |
보안 | 안좋음 | 좋음 |