HTTP 프로토콜의 특징과 쿠키 및 세션의 역할
웹 애플리케이션을 개발할 때, HTTP 프로토콜은 우리가 가장 많이 사용하는 프로토콜입니다. 하지만 HTTP 프로토콜에는 몇 가지 문제점이 존재하는데, 그 중에서 가장 큰 두 가지가 바로 ConnectionLess와 StateLess입니다. 이러한 문제들을 해결하기 위해 등장한 것이 쿠키(Cookie)와 세션(Session)입니다.
HTTP 프로토콜의 특징
ConnectionLess (연결 지향적이지 않음)
HTTP는 ConnectionLess 프로토콜입니다. 즉, 클라이언트가 서버에 요청을 보낼 때마다 새로운 연결을 맺고, 요청이 끝나면 연결을 끊습니다. 이 말은, 서버는 클라이언트와의 연결을 지속적으로 유지하지 않으며, 각 요청이 독립적이라는 뜻입니다. 예를 들어, 웹 페이지를 로드할 때마다 HTTP 요청마다 새로운 연결이 설정되고 종료되는 방식입니다. 이로 인해 연결 유지 비용을 줄이고 효율적인 리소스를 사용할 수 있지만, 클라이언트의 상태를 추적하기 어렵다는 단점이 있습니다.
StateLess (상태 정보를 유지하지 않음)
또한, HTTP는 StateLess 프로토콜입니다. 이는 서버가 이전 요청과 이후 요청 간의 상태를 기억하지 않는다는 뜻입니다. 각 HTTP 요청은 독립적이며, 서버는 요청이 어떤 클라이언트로부터 왔는지 알 수 없습니다. 예를 들어, 사용자가 로그인하고 페이지를 이동한다고 해도, 서버는 각 요청이 같은 사용자로부터 온 것인지 알지 못합니다.
HTTP 프로토콜의 문제점 해결: 쿠키와 세션
HTTP의 ConnectionLess와 StateLess 특성 때문에, 클라이언트와 서버 간의 지속적인 상태를 관리하는 것이 중요해졌습니다. 이를 해결하기 위해 쿠키와 세션이 등장했습니다.
쿠키(Cookie)
쿠키는 웹 서버가 클라이언트의 브라우저에 저장하는 작은 데이터입니다. 쿠키는 key-value 형식으로 데이터를 저장하며, 이를 통해 클라이언트가 서버와 다시 상호작용할 때 이전 상태를 유지할 수 있습니다.
- 쿠키의 작동 원리:
- 클라이언트가 웹 서버에 첫 번째 요청을 보낼 때, 서버는 응답 헤더에 클라이언트 고유의 식별자 정보를 담은 쿠키를 전달합니다.
- 이후 클라이언트는 서버에 다시 요청을 보낼 때마다 이 쿠키 값을 함께 보내게 되며, 서버는 이 값을 통해 클라이언트를 식별할 수 있습니다.
- 예를 들어, 사용자가 로그인한 상태로 다른 페이지를 방문할 때, 서버는 쿠키를 통해 사용자가 이미 로그인한 상태임을 인식하고 로그인 상태를 유지할 수 있습니다.
- 쿠키의 특징:
- 영속적: 사용자가 브라우저를 종료해도 쿠키는 일정 기간 동안 유지됩니다.
- 용량 제한: 각 도메인당 저장할 수 있는 쿠키의 크기가 제한되어 있습니다.
- 서버와 클라이언트 간 데이터 교환: HTTP 요청 시마다 쿠키 데이터가 함께 전송되므로, 서버와 클라이언트 간에 작은 데이터를 주고받을 수 있습니다.
세션(Session)
세션은 서버에서 클라이언트의 상태를 추적하기 위해 사용하는 방식입니다. 클라이언트는 세션 ID를 서버로부터 받아 이를 쿠키에 저장합니다. 이후 클라이언트가 서버에 요청을 보낼 때, 이 세션 ID가 포함되어 서버는 해당 클라이언트를 식별하고 상태를 유지합니다.
- 세션의 작동 원리: 사용자가 로그인하면, 서버는 세션 ID를 생성하여 클라이언트에게 전달합니다. 클라이언트는 세션 ID를 쿠키에 저장하고, 이후 서버에 요청을 보낼 때마다 해당 세션 ID를 전송합니다. 서버는 이 세션 ID를 통해 해당 클라이언트의 상태를 확인하고, 이전 상태를 유지하며 서비스를 제공합니다.
- 세션의 특징:
- 서버 기반: 세션 정보는 서버에 저장되므로, 서버가 클라이언트 상태를 관리합니다.
- 보안성: 서버 측에 세션 정보가 저장되므로 쿠키보다 더 안전한 방식으로 상태 정보를 관리할 수 있습니다.
- 자동 종료: 세션은 일정 시간이 지나면 만료됩니다. 이를 통해 불필요한 세션을 관리할 수 있습니다.
3. 쿠키와 세션의 차이점
- 저장 위치: 쿠키는 클라이언트의 브라우저에 저장되며, 세션은 서버에 저장됩니다.
- 보안: 세션은 서버에 상태 정보를 저장하므로 쿠키보다 보안성이 더 높습니다. 쿠키는 클라이언트에서 조작될 수 있기 때문입니다.
- 유효 기간: 쿠키는 설정된 만료 시간까지 유효하지만, 세션은 일반적으로 브라우저가 종료되면 만료됩니다.
- 용도: 쿠키는 사용자 맞춤형 정보 저장에 사용되고, 세션은 보안이 중요한 정보나, 로그인 상태 유지 등에 사용됩니다.
결론
HTTP 프로토콜의 ConnectionLess와 StateLess 특성으로 인한 문제를 해결하기 위해 쿠키와 세션이 중요한 역할을 합니다. 쿠키는 클라이언트 측에서 데이터를 저장하고, 세션은 서버 측에서 클라이언트의 상태를 관리하여 웹 애플리케이션의 상태를 효율적으로 관리할 수 있도록 도와줍니다.
쿠키와 세션을 적절히 활용하면 사용자가 웹 애플리케이션을 이용하는 동안 지속적인 상태 유지를 통해 편리한 경험을 제공할 수 있습니다.
'네트워크' 카테고리의 다른 글
[네트워크] 이더넷 (2) | 2024.11.12 |
---|---|
[네트워크] 네트워크의 성능 (6) | 2024.11.09 |
[네트워크] JWT(Json Web Token) (0) | 2024.10.22 |
[네트워크] 동기, 비동기, Blooking, Non-Blooking (0) | 2024.10.20 |
[네트워크] HTTP 쿠키 cookie (0) | 2024.10.20 |