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

+ Recent posts