HTTP
W3 상에서 정보를 주고받을 수 있도록 정의된 프로토콜
- Connectionless(비연결성) : 요청에 따른 응답을 받고나면 연결을 끊음
- Stateless(무상태성) : 클라이언트-서버 관계에서 서버가 클라이언트의 상태를 보존하지 않음
→ 그런데 상태가 없다면 로그인같이 상태가 필요한 경우는?
쿠키 & 세션
HTTP의 무상태성 보완을 위해 등장한 기술들
쿠키
- 클라이언트에 저장되는 Key-Value 쌍의 작은 데이터 파일
- 사용자의 정보를 브라우저에 저장하기 위해서 등장
- 초창기에는 사용자의 정보를 서버가 보관하기에는 사양이 떨어졌음
- 그래서 쿠키를 클라이언트가 가지고 있다가 요청할 때 보내도록 함
- 최대 용량은 4KB, 개수는 20개(한 사이트 당)
- 동작 과정
- 클라이언트가 요청을 보내면 서버에서 쿠키를 생성
- 서버가 클라이언트로 보내는 응답의 헤더 중 Set-Cookie 라는 헤더에 키와 값을 보냄
- 응답을 받은 브라우저는 해당 쿠키를 저장
- 그 다음 요청부터 자동으로 쿠키를 헤더에 넣어 송신
- 브라우저가 종료되어도 쿠키 만료 기간이 남았다면 클라이언트에서 보관
- 문제점
- 인증 정보를 브라우저에 저장 → 탈취 위험
- 용량 및 개수 제한이 있음
세션
- 쿠키와는 반대로, 정보를 서버에 보관하는 방식
- 쿠키의 트래픽 문제와 보안 문제를 해결
- 동작 방식
- 클라이언트가 서버에 요청을 보냄
- 서버에서는 HTTP Request를 통해 쿠키에서 Session ID를 확인
- 있다면 사용
- 없으면 Set-Cookie를 통해 발행한 Session ID를 보냄
- 클라이언트는 HTTP Request 헤더에 Session ID를 포함해서 원하는 리소스를 요청
- 서버는 세션 ID를 통해서 해당 세션을 찾아서 적절하게 응답
- 문제점
- 인증 정보를 서버에 저장 → 사용자 수에 따른 서버 리소스 소모
래퍼런스
https://hudi.blog/cookie-and-session/
https://dololak.tistory.com/535
https://kyun2da.github.io/2020/12/28/cookieSession/
'Computer Science' 카테고리의 다른 글
메모리 / 운영체제 (면접을 위한 CS 전공지식 노트) (1) | 2024.01.25 |
---|