✔ 쿠키와 세션
HTTP 프로토콜
- HTTP 프로토콜은 클라이언트가 요청을 서버에 보내고, 서버가 클라이언트의 요청에 맞는 응답을 보내면 바로 연결이 끊기며
연결을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보를 유지하지 않아 비연결, 비상태성 프로토콜
그러므로 모든 요청 간 의존관계가 없어 현재 접속한 사용자가 이전에 접속한 사용자와 같은 사용자인지 알 수 있는 방법이 없음 - 계속해서 연결을 유지하지 않기 때문에 리소스 낭비가 줄어드는 것이 큰 장점이지만,
통신할 때마다 새로 연결하기 때문에 클라이언트는 매 요청마다 인증을 하게 됨 - 이러한 문제점으로 인해 이전 요청과 현재 요청이 같은 사용자의 요청인지 알고자
HTTP 프로토콜에서 상태를 유지하기 위한 기술로 쿠키와 세션에 존재
쿠키 | 세션 | |
저장 위치 | 클라이언트의 웹 브라우저가 지정하는 메모리 또는 하드디스크 | 서버의 메모리 |
저장 형식 | Text | Object |
만료 시점 | 쿠키 저장 시 expires 설정을 정의 (설정이 없다면 브라우저 종료 시 만료) |
클라이언트가 로그아웃하거나, 설정 시간 동안 반응이 없으면 무효화되기 때문에 정확한 시점을 알 수 없음 |
리소스 | 클라이언트의 리소스만 사용 | 서버의 리소스만 사용 |
용량 제한 | 한 도메인 당 20개, 한 쿠키 당 4KB | 제한 없음 |
쿠키란?
- 클라이언트 로컬에 저장되는 키와 값이 들어있는 파일로 클라이언트의 상태 정보를 브라우저에 저장하여 참조하게 됨
- 클라이언트에 저장되므로 보안에 취약하고 만료 시간에 따라 브라우저를 종료해도 계속해서 남아 있을 수 있지만
클라이언트에 저장되므로 서버에 요청 시 빠름 - 쿠키의 구성 요소로는 이름, 값, 만료시간, 전송할 도메인 이름, 전송할 경로, 보안 연결 여부, HttpOnly 여부가 존재
- 쿠키 동작 방식
- 웹 브라우저가 서버에 요청
- 상태를 유지하고 싶은 값을 쿠키로 생성
- 서버가 응답할 때 HTTP 헤더에 쿠키를 포함해서 전송
- 전달받은 쿠키는 웹 브라우저에서 관리하고 있다가, 다음 요청 때 쿠키를 HTTP 헤더에 넣어서 전송
- 서버에서는 쿠키 정보를 읽어 이전 상태 정보를 확인한 후 응답
세션이란?
- 서버에 세션 ID를 저장하고 일정 시간 동안 같은 브라우저로 들어오는 요청을 하나의 상태로 보고 그 상태를 유지하는 기술
- 쿠키를 이용해 세션 ID만 저장하고 이 값으로 구분해서 서버에서 처리하므로 비교적 보안성이 좋지만 쿠키보다 느림
- 즉, 웹 브라우저를 통해 서버에 접속한 이후부터 브라우저를 종료할 때까지 유지되는 상태로
만료시간을 정할 수 있지만 브라우저가 종료되면 만료시간에 상관없이 삭제됨 - 세션 동작 방식
- 웹 브라우저가 서버에 요청
- 서버가 해당 웹 브라우저에게 유일한 세션 ID를 부여함
- 서버가 응답할 때 HTTP 헤더에 세션 ID를 포함해서 전송
- 웹 브라우저는 쿠키에 세션 ID를 저장
- 웹 브라우저는 이후 웹 브라우저를 닫기 전까지의 요청에 세션 ID가 담겨 있는 쿠키를 HTTP 헤더에 넣어서 전송
- 서버는 세션 ID를 확인하고, 해당 세션에 관련된 정보를 확인한 후 응답
'Tech Interview > Network' 카테고리의 다른 글
[Network] 웹 통신의 큰 흐름 (0) | 2024.01.24 |
---|---|
[Network] DNS (0) | 2024.01.23 |
[Network] CORS (0) | 2024.01.17 |
[Network] HTTP와 HTTPS (0) | 2024.01.16 |
[Network] TCP와 UDP (0) | 2024.01.16 |