2021.11.29 TIL

권윤경·2021년 11월 29일
0

TIL

목록 보기
1/15
post-thumbnail

0.cookie
1.session

기본적으로 HTTP 프로토콜 환경은 비연결성(Connectionless), 비상태성(Stateless)의 특징을 가지고 있다. 이는 서버의 자원을 절약하기 위해 모든 클라이언트의 요청마다 연결과 해제의 과정을 거치기때문에 서버와 클라이언트의 연결상태는 유지되지 않고, 상태 정보가 저장되지 않는다. 따라서 서버는 같은 사용자의 요청에도 매번 새로운 사용자로 인식하기 때문에 클라이언트가 누구인지 확인 하는 과정을 거쳐야한다. 이를 보완하기 위해서 쿠키와 세션을 사용한다.

Connectionless
클라이언트가 서버에게 요청 후 응답을 받으면 그 연결을 끊어버리는 특징.
HTTP는 먼저 클라이언트가 Request를 서버에 보내면, 서버는 클라이언트에게 요청에 맞는 Response를 보내고 접속을 끊는 특성이 있다.

Stateless
통신이 끝나면 상태를 유지하지 않는 특징.
연결을 끊는 순간 클라이언트와 서버의 통신이 끝나며 사용자의 상태 정보를 유지하지 않는 특성이 있다. 예를 들어 사용자가 쇼핑몰에서 옷을 구매하려고 로그인을 시도했음에도, 페이지를 이동할 때 마다 계속 로그인을 해야한다.

쿠키

-쿠키는 웹 사이트 접속 시 웹브라우저에 생성되는 임시 데이터 파일이다.

-쿠키의 데이터 형태는 Key와 Value로 구성되고 String 형태로 이루어져 있다.

-쿠키는 서버를 대신해서 사용자 정보를 웹 브라우저(웹 브라우저를 이용하고 있는 컴퓨터)에 저장하고, 사용자가 요청할 때 그정보를 함께 서버로 보내 사용자를 식별할 수 있게 해준다.

-쿠키는 사용자가 따로 요청하지 않아도 브라우저가 Request시에 Request Header를 넣어서 자동으로 서버에 전송한다.

쿠키 종류
Session cookie
보통 만료시간(Expire Date) 설정하고 메모리에만 저장되며 브라우저 종료 시 쿠키를 삭제.
Persistent cookie
장시간 유지되는 쿠키, 파일로 저장되어 브라우저 종료와 관계없이 사용.
Secure cookie
HTTPS에서만 사용, 쿠키 정보가 암호화 되어 전송.
Third-Paty cookie
방문한 도메인과 다른 도메인의 쿠키, 보통 광고 베너 등을 관리할 때 유입 경로를 추적하기 위해 사용.

세션

-세션은 쿠키를 기반하고 있지만, 사용자 정보 파일을 브라우저에 저장하는 쿠키와 달리 세션은 서버 측에서 관리한다.

-서버에서는 클라이언트를 구분하기 위해 세션 ID를 부여하며 웹 브라우저가 서버에 접속해서 브라우저를 종료할 때 까지 인증상태를 유지한다.

-물론 접속 시간에 제한을 두어 일정 시간 응답이 없다면 정보가 유지되지 않게 설정이 가능하다.

-사용자에 대한 정보를 서버에 두기 때문에 쿠키보다 보안에 좋지만, 사용자가 많아질 수록 서버 메모리를 많이 차지하게 된다.

-즉 동시접속자 수가 많은 웹 사이트인 경우 서버에 과부하를 주게 되므로 성능 저하의 요인이된다.

-클라이언트가 서버에 Request를 보내면, 해당 서버의 엔진이 클라이언트에게 유일한 ID를 부여하는데 이것이 세션 ID이다.

쿠키와 세션의 동작 방식

1.클라이언트가 서버로 페이지를 요청
2.서버에서 쿠키 및 세션 생성 후, HTTP 헤더에 쿠키를 포함하여 응답
3.쿠키 만료 기간 전까지 클라이언트 쿠키 보관
4.서버에 페이지 재요청 시, HTTP헤더에 쿠키 포함하여 요청
5.서버에서 쿠키를 읽어 세션ID를 확인 및 클라이언트 요청에 응답

참고1: https://interconnection.tistory.com/74
참고2: https://devuna.tistory.com/23

0개의 댓글