0. HTTP의 특징
- 쿠키와 세션의 필요성을 알아보기 위해
HTTP 프로토콜의 특징을 먼저 간단하게 파악해보겠습니다.
0-1. Connectionless 프로토콜 (비연결지향)
- 클라이언트가 요청(Request) 을 보내고, 서버가 응답(Response) 을 보낸 후 연결을 유지하지 않고 끊는 방식이다.
0-2. Stateless 프로토콜 (상태정보 유지 안함)
- 클라이언트의 상태 정보를 저장하지 않는 서버 처리 방식이다.
- 그러나, 사용자의 편의를 고려하면 데이터 유지가 필요하다.
- 로그인 상태 유지, 장바구니 내역 등 필요한 경우가 있다.
( stateful하게 사용해야할 때 쿠키와 세션을 사용한다. ) - 정보유지
- 이는 서버의 자원을 절약하기 위한 설정이라고 보면 되겠습니다. ( 비연결성 + 비상태성 )
1. 쿠키 와 세션
- 우선 표를 먼저 확인해보자
2. 쿠키( Cookie )
- 서버를 통해 인터넷 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일
- 웹 사이트에 접속할 때 생성되는 정보를 담은 파일 ( 임시 파일 )
- 쿠키는 서버가 사용자의 웹 브라우저에 저장하는 데이터이다. ( 클라이언트 측에 저장 )
- 소프트웨어는 아니다. 단지 (key/value) 쌍의 string 형태이다. + ( 만료일, 경로 )
- 브라우저 간의 공유는 되지 않는다 ( 당연한가 )
- 아이디 저장 , 장바구니, " 더 이상 보지 않기"
- 저장 용량의 한계가 있다. ( 4KB, 총 300개, 도메인당 20개 )
- Session Cookie ( 브라우저 종료시 쿠키 삭제 ), Persistent Cookie ( 장기간, 브라우조 종료와 관계 x )
Secure Cookie (HTTPS에서 사용, 쿠키 정보가 암호화되어 전송) 등 여러가지 종료가 있다.
2.1 사용목적
- 세션관리 ( 아이디, 장바구니 등 ) : 서버가 알아야할 정보들을 저장해놓는다.
- 개인화 : 사용자마다 다르게 정보를 제공할 수 있다.
- 트래킹 : 사용자의 행동을 기록하고 분석한다.
2.2 단점
- 쿠키에 대한 정보를 헤더에 매번 담아보내야하므로, 오버헤드가 발생한다.
- 쿠키의 정보가 유출되는 보안에 취약한 문제점이 있다. (클라이언트 측에 저장되므로)
- 쿠키를 거부하도록 설정할 수 있지만, 사용에 있어 불편함을 느낄 수 있다.
3. 세션( Session )
- 쿠키 기반이며, 동작원리도 비슷합니다.
- 클라이언트가 요청을 보내면, 서버는 헤더를 보고 session-id를 보냈는지 확인한다.
- 존재하지 않으면, 서버는 세션 ID를 생성해 클라이언트에게 돌려주고, 클라이언트는 이를 사용해 서버에 저장한다.
- 세션 ID가 1개씩 생성되어 웹 컨테이너에 저장된다.
- 클라이언트 측이 아닌 서버측에 저장한다.
- 이로인해, 많은 요청이 일어날 경우 서버에 과부화를 줄 수 있습니다.
- 서버리소스를 초과하지 않는 함 상대적으로 용량의 한계가 없는 편
- 서버 측에 저장하기 때문에 보안적인 측면에서 유리하다. (서버 측에서 관리)
3.1 사용목적
- 쿠키와 크게 다르지 않다.
3.2 단점
- 서버에 과부화를 줄 수 있다.
- 쿠키보다 속도가 느리다. 서버에서 추가적인 처리가 필요하기 때문
4. 쿠키와 세션의 차이점
- 가장 큰 차이점은 저장위치 ( 클라이언트(쿠키), 서버(세션) )
- 그에 따른 보안과 속도의 차이 ( 위의 표에 적혀 있음 )
- 라이프 사이클 (만료기간) 관점에서 쿠키는 만료기간 설정에 따라 넉넉하게 잡으면 오래 유지가 가능하다.
반면 세션은 만료시간을 정해두어도 브라우저가 종료되면 만료시간에 상관없이 삭제된다.
- 보안과 성능의 관점에서 저장할 정보들을 보고 적절하게 두가지를 잘 사용할 필요가 있겠습니다.
'학부생 공부 > 네트워크' 카테고리의 다른 글
HTTPS vs HTTPS (0) | 2021.09.19 |
---|---|
OSI 7계층 (0) | 2021.05.29 |
TCP(전송 제어 프로토콜) / IP(인터넷 프로토콜) (0) | 2021.05.28 |
DNS (domain name system) (0) | 2020.04.13 |
SMTP (E-mail) (0) | 2020.04.12 |