-
[Network] Cookie와 SessionCS/Network 2021. 9. 15. 15:21
HTTP는 stateless이기 때문에 server는 client의 상태 정보를 유지하지 않는다. 하지만 최근 웹사이트를 확인해보면 로그인 정보를 저장하거나, 쇼핑몰 장바구니에 내가 이전에 넣어놨던 제품이 있는 등 상태를 가지고 있는 형태를 보인다. 이렇게 stateful 통신을 가능하게 하는 방식이 쿠키와 세션이다.
쿠키 (Cookie)쿠키란?
- 쿠키는 key, value 형태로 클라이언트 로컬에 저장된다.
- 쿠키 만료 시간을 명시할 수 있으며, 만료 시간이 정해지면 브라우저가 종료되어도 인증이 유지된다.
- 클라이언트에 총 300개의 쿠키를 저장할 수 있고, 하나의 도메인 당 20개의 값만 가질 수 있다.
- 하나의 쿠키는 4KB까지 저장 가능하다.
- Response header에 Set-Cookie 속성을 사용하여 쿠키를 만들 수 있다.
쿠키의 구성 요소
- Name: 쿠키를 구별하는 데 사용되는 이름
- Value: 쿠키에 저장된 값
- Expires: 쿠키 만료 시간
- 쿠키에 만료일이 포함되어 있으면 Persistent Cookie로 간주
- Max-Age를 통해 지정한 만료일이 되면 쿠키가 제거됨
- Domain: 쿠키가 사용하는 도메인 지정
- Path: 쿠키를 전송할 경로 지정
- Secure: 보안 연결 설정
쿠키의 종류
- Session Cookie: 만료기간을 설정하고 메모리에만 저장되며 브라우저 종료 시 쿠키 삭제
- Persistent Cookie: 장기간 유지되는 쿠키, 파일로 저장되어 브라우저 종료와 관계없이 사용 가능
- Secure Cookie: HTTPS에서만 사용, 쿠키 정보가 암호화되어 전송
- Third-Party Cookie: 방문한 도메인과 다른 도메인의 쿠키, 보통 광고, 배너 등을 관리할 때 유입 경로를 추적하기 위해 사용
쿠키의 동작 방식
- 클라이언트가 서버에게 HTTP request를 보냄
- 서버에서 쿠키 생성
- HTTP header에 쿠키를 포함해 response
- 브라우저가 종료되어도 쿠키 만료 기간(Expires)이 있다면 클라이언트에서 보관하고 있음
- request 시 HTTP header에 쿠키를 포함시켜 보냄
- 서버에서 쿠키를 읽어 이전 상태 정보를 변경할 필요가 있을 때, 쿠키를 업데이트하여 변경된 쿠키를 HTTP header에 포함시켜 response
세션 (Session)
세션이란?
- 세션은 쿠키를 기반하고 있지만, 사용자 정보 파일을 브라우저에 저장하는 쿠키와 달리 세션은 서버에서 관리한다.
- 서버에서는 클라이언트를 구분하기 위해 session id를 부여하고, 브라우저를 종료할 때까지 인증 상태를 유지한다.
- 사용자 정보를 서버에 두기 때문에 쿠키보다 보안상 이점이 있지만, 사용자가 많아질수록 서버 메모리를 많이 차지하게 된다.
세션의 동작 방식
- 클라이언트가 서버에게 Http request를 보냄
- 서버에서 session id를 발급해 클라이언트에게 reponse
- 클라이언트는 session id를 쿠키를 사용해 저장
- 이후 클라이언트 서버에 request할 때, 이 쿠키의 session id를 HTTP header에 포함해 request
- 서버는 session id를 통해 세션에 있는 클라이언트 정보를 가지고 요청을 처리하여 response
쿠키와 세션의 차이
- 쿠키와 세션은 비슷한 역할을 하며, 세션도 결국 쿠키를 사용하기 때문에 쿠키와 세션의 동작 원리 또한 비슷하다.
- 가장 큰 차이점은 사용자의 정보가 저장되는 위치이다. 쿠키는 서버 자원을 전혀 사용하지 않으며, 세션은 서버 자원을 사용한다.
- 보안: 보안 면에서는 세션이 더 우수하다. 그 이유는 쿠키는 클라이언트 로컬에 저장되기 때문에 request 시 스니핑의 우려가 있지만 세션은 쿠키를 사용해 session id만 저장하기 때문에 비교적 보안성이 좋다.
- 응답 속도: 응답 속도는 쿠키가 더 빠르다. 그 이유는 세션은 서버에서 처리가 필요하기 때문이다.
- 라이프 사이클: 세션은 만료 기간을 지정해도 브라우저를 종료하면 사라지지만, 쿠키는 만료 기간을 둔다면 브라우저를 종료해도 정보를 유지할 수 있다.
Reference
https://interconnection.tistory.com/74
Computer Networking: A Top-Down Approach'CS > Network' 카테고리의 다른 글
[Network] DNS 동작 원리 (0) 2021.09.29 [Network] HTTP vs HTTPS (0) 2021.09.29 [Network] TCP vs UDP (0) 2021.09.28 [Network] TCP 연결과 해제 (0) 2021.09.28 [Network] HTTP Methods - GET, POST, PUT, PATCH, DELETE (0) 2021.09.27