서론
웹개발에 아주 기초인 HTTP, Cookie, Session 에 대해 정리하고자 글을 쓰게 되었다.
HTTP란?
- HTTP는 인터넷 상에서 데이터를 주고 받기 위한 서버-클라이언트 모델을 따르는 프로토콜이다.
- 클라이언트가 서버에게 요청을 보내면 서버는 응답을 보냄으로서 데이터를 교환한다.
- HTTP는 비연결성(connectionless), 무상태성(stateless)라는 특징을 가지고 있다.
- 위의 특징으로 인해 서버는 클라이언트에 대한 이전의 정보가 남아있지 않다. (ex. 클라이언트가 로그인을 한 경우에도 http의 stateless 성질로 인해 클라이언트는 또다시 로그인 해야함)
HTTP의 비연결성, 무상태성의 단점을 보완하고자 cookie / session 이 사용된다.
cookie란?
- 서버가 사용자의 웹브라우저에 전송하는 작은 데이터 조각이다.
- 브라우저는 이 데이터 조각들을 저장해 놓았다가 동일한 서버에 요청을 보낼 경우 이 조각들을 함께 보낸다.
- 사용자가 따로 요청하지 않아도 브라우저가 Request시에 Request Header에 쿠키를 넣어서 자동으로 서버에 전송한다.
- 이를 이용함으로서 사용자는 로그인 상태를 유지할 수 있게된다.

session이란?
- 인증 정보를 브라우저가 아닌 서버측에서 저장하고 관리하는 방식이다.
- 서버에서 클라이언트를 구분하기 위해 세션 ID를 부여하여 웹 브라우저가 서버에 접속해서 브라우저를 종료할 때까지 인증상태를 유지한다.
- 쿠키보다는 보안에 좋지만 사용자가 많아질수록 서버 메모리를 많이차지하여 서버의 부하가 심해진다.

쿠키 / 세션 비교
| 쿠키(Cookie) | 세션(Session) | |
| 저장 위치 | 클라이언트(=접속자 PC) | 웹 서버 |
| 저장 형식 | text | Object |
| 만료 시점 | 쿠키 저장시 설정 (브라우저가 종료되도, 만료시점이 지나지 않으면 자동삭제되지 않음) |
브라우저 종료시 삭제 (기간 지정 가능) |
| 사용하는 자원(리소스) | 클라이언트 리소스 | 웹 서버 리소스 |
| 용량 제한 | 총 300개 하나의 도메인 당 20개 하나의 쿠키 당 4KB(=4096byte) |
서버가 허용하는 한 용량제한 없음. |
| 속도 | 세션보다 빠름 | 쿠키보다 느림 |
| 보안 | 세션보다 안좋음 | 쿠키보다 좋음 |
'web > network' 카테고리의 다른 글
| JSP & Servlet (0) | 2024.03.18 |
|---|---|
| Web Server, WAS, DB (0) | 2024.03.18 |
| JWT 동작 방식 & JWT 보안 (0) | 2024.03.13 |
| JWT란? & JWT 사용이유 (0) | 2024.03.13 |
| content-type (0) | 2024.01.29 |