728x90
✅ HTTP 는 Stateless Protocol이다.
💡Stateless?
🔹Stateless(불연속성): 무상태, 서버가 클라이언트의 상태를 보존하지 않음
최소한의 자원으로 서버 유지를 가능하게함 (수억명의 트래픽(Concurrent Users)커버 가능)
- Easier to scale, cache, and manage the service
기본적으로 세션을 유지하지 않고, 서버는 Client specific세션 데이터를 저장하지 않기에 클라이언트는 끊임없이 자신이 누구인지 밝혀야한다는 것 -> JWT
HTTP는 stateless 하게 설계되었으나 쿠키와 세션을 활용해서 stateful하게 사용할 수도 있다고 이해했다.
✅ Stateful HTTP: Cookie & Session
웹 서버는 웹 브라우저의 요청이 어떤 유저에 의해 요청된 것인지 알기 위해 응답 반환시 요청자 정보를 함께 반환
💡Stateful?
🔹Stateful(연속성): 상태유지,서버가 클라이언트의 상태를 보존 (쿠키, 세션)
웹 서버가 이전에 요청 받았던 웹 브라우저와 현재 요청의 웹 브라우저를 구별할 수 있다.
어떤 유저의 요청인지 알 수있다면
- 요청마다 별개의 작업 수행 혹은 결과 반환 가능
- 서버거 여러 개일 경우 어떤 서버를 호출해도, 서버에 장애가 생기더라도 다른 서버가 역할을 대신 할 수 있음
쿠키로 보는 Stateful 동작 과정
- 웹 브라우저는 응답을 받아, 응답 헤더에 붙어있던 요청가 정보를 웹 브라우저 쿠키에 저장
- 웹 서버가 웹 브라우저에게 최초로 전달해줄 때: 웹 서버 응답(Response)의 헤더 `Set-Cookie`로 전송
- 웹 브라우저는 이후 요청부터 웹 서버에게 요청자 정보를 함께 전달하여 웹 서버는 누구의 요청인지 알 수 있다
- 웹 브라우저가 그 이후로 웹 서버에게 전달할때 : 웹 브라우저 요청(Request)의 헤더 `Cookie` 로 전송
- 요청자 정보는 `로그인한 유저` 정보같이 어떤 유저가 요청했는지 인지 가능한 정보를 말한다.
Cookie & Session
stateful http로 사용하기 위해 cookie와 seesion을 사용하는데, 요청자 정보를 어디에 저장하는지에 따라 두개로 나뉜다.
- 웹 브라우저에 저장: Cookie(클라이언트 측)
- 쿠키는 어떤 값이든 가능하나, 일반적으로 노출 방지를 위해 인간이 이해할 수 있는 형태가 아닌걸로 저장
- 웹 서버에 저장: Session(서버측, 쿠키를 안쓰는게 아니라 웹 브라우저 쿠키에 SESSION_ID를 저장)
- 웹 브라우저에 저장할 수 없을 정도로 크거나 복합적인 정보인 경우
- 웹 브라우저에 저장할 수 없는 민감 정보인 경우
ref
728x90
'ASAC 웹 풀스택' 카테고리의 다른 글
웹 저장소 및 HTTPS, CORS 보안(3) - Storage (0) | 2024.09.08 |
---|---|
웹 저장소 및 HTTPS, CORS 보안(2) - 웹 브라우저 내 저장(Cookie) (1) | 2024.09.08 |
웹 브라우저 성능 개선 및 웹 서버 부하 완화(4) - 서버 부하 완화 및 보안(요청/응답 변조)을 위한 Proxy (0) | 2024.09.08 |
웹 브라우저 성능 개선 및 웹 서버 부하 완화(3) - HTTP Cache 동작(Cache-control 헤더) + 캐시 이점 (2) | 2024.09.07 |
[ASAC 6기] 웹 브라우저 성능 개선 및 웹 서버 부하 완화(2) - HTTP Cache 동작(재검증) (0) | 2024.09.03 |