HTTP Protocol
특징
- 지속적인 연결로 자원낭비를 줄이기 위해 연결을 해제
- 로그인을 하여 client와 server가 연결 상태를 유지해야하는 경우 문제가 발생
비연결성(Connectionless)
과비상태성(Stateless)
으로, 매번 새로운 사용자로 인식
동작과정
- client가 server에 요청
- server는 요청에 대해 처리한 뒤 client에 응답
- 응답 후 연결을 해제
HTTP Protocol의 약점을 보완하기 위해 세션과 쿠키를 사용
Cookie
Cookie 특징
- 웹 사이트에 접속할 때 생성되는 정보를 담은 임시 파일
- client에 저장하는 정보 파일
key
와 value
로 구성되고 String
형태
- 같은 사이트라도 브라우저마다 저장되는 Cookie는 다름
- client에 약 300개의 Cookie 저장 가능
- 한 도메인에 약 20개의 Cookie 저장 가능
Cookie의 사용 목적
- 세션관리 -> 로그인 정보 등 서버가 알아야 하는 정보
- 개인화 -> 사용자마다 사람에 적절한 페이지를 보여줄 수 있음
- 트래킹 -> 사용자의 행동과 패턴을 분석하고 기록
Cookie의 사용 예시
- 아이디/비밀번호 저장 후 자동로그인
- 오늘은 다시보지 않기
- (쇼핑몰) 오늘 본 상품
- 최근 검색한 상품들을 광고에서 추천
Cookie의 구성요소
Cookie의 동작 순서
- Client가 페이지를 요청
- WAS가 Cookie를 생성
- HTTP Header에 Cookie를 넣어 응답
- Browser는 넘겨받은 Cookie를 PC에 저장 후, WAS가 재요청시 요청과 Cookie를 전송
- Cookie의 만료기간에 따라 Client는 Cookie를 계속 보관
Cookie의 단점
- 방문한 웹 사이트에 대한 정보 및 개인정보가 기록되기 때문에 사생활을 침해할 소지가 있음
* 이러한 문제를 해결하기 위해 웹 브라우저 자체에 Cookie 거부 기능이 있지만, Cookie 본래의 목적인 웹 브라우저의 연결을 지속시키는 기능을 수행할 수 없는 문제 발생
- Server가 갖고 있는 것이 아니라, 사용자에게 저장되기 때문에, 임의로 고치거나 지울수 있고, 가로채기도 쉬워 보안이 취약
Session
Session 특징
- 웹 브라우저당 1개씩 생성되어 웹 컨테이너에 저장되며, 브라우저 종료시 소멸
- 로그아웃하면 새로운 사용자로 인식하여 새로운 세션이 생성
- Server의 메모리에 Object 형태로 저장
- 용량의 제한없이 저장 가능
Session의 사용 목적
Session의 사용 예시
Session의 동작 순서
- 클라이언트가 페이지를 요청
- 접근한 클라이언트의
Request-Header
필드인 Cookie
를 확인하여 클라이언트가 해당 session-id
를 보냈는지 확인
session-id
가 존재하지 않는다면, 서버는 session-id
를 생성해 클라이언트에게 돌려줌
- 서버에서 클라이언트로 돌려준
session-id
Cookie를 사용해 서버에 저장
- 클라이언트는 재접속 시, 서버에 받은 Cookie를 이용해
session-id
값을 서버에 전달
Session의 단점
- Cookie 보다 느림
- Session은 서버에 저장되어 서버자원을 사용하기 때문에, 사용자가 많을 경우 소모되는 자원이 상당히 많음
Cookie 와 Session 요약
| Cookie | Session |
---|
저장위치 | 클라이언트 | 서버 |
저장형식 | text | Object |
리소스 | 클라이언트의 리소스 | 서버의 리소스 |
용량제한 | 도메인당 20개, 1쿠키당 4KB | 제한 없음 |
만료시점 | 쿠키 저장시 설정(설정 없을 시에는 브라우저 종료시 만료) | 알수 없음 |