📕Cookie
쿠키는 문자와 숫자의 조합으로 된 작은 파일이다.
서버는 쿠키를 통해서 클라이언트를 식별하고 이에 맞춰 다양한 서비스를 제공한다. 아마존 사이트에 들어가면 내가 보았던 상품 목록을 보여 주는 데, 이런 것들이 모든 쿠키를 이용하기 때문에 가능한 것이다.
사용자가 특성 사이트에 처음 접속하면 그 사이트 서버는 사용자에게 Cookie header라는 숫자를 부여해 준다. 브라우저는 부여받은 Cookie header와 사이트 이름을 조합하여 만들어진 쿠키 파일을 사용자의 컴퓨터에 저장한다.
이후 사용자가 그 사이트에 접속할 때 마다 해당 쿠키 파일을 보내주면 서버는 이를 통해서 사용자를 식별할 수 있다.
즉 웹 사이트와 클라이언트 브라우저는 쿠키를 사용하여 트랜잭션 간의 상태를 유지합니다
그러기 위해서는 다음 4가지의 구성요소가 포함되어야 합니다.
- HTTP response message의 쿠키 헤더 라인
- HTTP response message 바로 다음에 HTTP request message
- 클라이언트의 컴퓨테어 저장되는 쿠키파일과 이를 관리해 주는 브라우저
- 웹 사이트에서 사용자들의 쿠키파일을 관리할 데이터베이스
📗전체적인 동작과정
쿠키에 대해서 쉽게 설명하자면 해당 웹 사이트를 방문한 사용자의 습관을 기록하는 것입니다.
📗목적
- 세션관리
- 쿠키를 사용하면 서버에 저장해야 할 로그인, 장바구니등의 정보를 관리할 수 있다.
- 서비스 개인화
- 서비스에서 사용자가 커스터마이징 할 수 있는 정보나 테마 등의 세팅 값을 쿠키에 저장할 수 있다.
- 예를 들어 팝업 더 이상 보지 않기.
- 서비스에서 사용자가 커스터마이징 할 수 있는 정보나 테마 등의 세팅 값을 쿠키에 저장할 수 있다.
- 트래킹
- 서비스에서의 사용자의 행동 정보를 기록할 수 있다.
📗단점
- 쿠키는 사이트가 사이트에서 사용자에 대해 많은 것을 알 수 있도록 해줍니다.
- 즉 사용자의 정보가 노출 될 우려가 있습니다.
- 사용자의 서비스 상의 행동이 쿠키에 기록되어 저장장치에 남아서 나중에 타인에 의해 조회될 수 있으므로 이는 프라이버시 문제를 발생시킬 수 있다.
즉 쿠키는 언제든지 변조 될 수 있고, 제삼자에게 노출될 가능성이 높은 저장방식이기 때문에 절대로 쿠키에 기밀 또는 민감한 정보를 담으면 안 됩니다.
📕Web caches (proxy servers)
캐시는 컴퓨터 구조에서도 배운 개념인데 쉽게 말하자면 자주 사용하는 것을 따로 빼둬서 더욱더 접근을 빠르게 처리하기 위한 방법이라고 생각하시면 편합니다. 음.. 나쁘게 말하면 꼼수.. 죠?
📗Web caches의 목표:
클라이언트가 요청을 하면 origin server에서 콘텐츠를 받아오는 것이 아닌 caches를 통해서 받아오는 것이 목표입니다.
이러면 접근속도도 빠르고 클라이언트도 빠른 접근속도로 기다릴 필요가 없겠죠
웹 캐시는 프락시 서버를 통해 구현 가능하고, 위치는 클라이언트와 서버 사이에 위치합니다.
사이에서 통신을 해줍니다.
클라이언트가 요청한 것이 cache에 없다면 cache가 origin server에 요청을 하고 그 요청을 캐시가 받아서 캐쉬가 다시 클라이언트에게 뿌려줍니다.
클라이언트가 요청한 것이 캐시에 있다면 캐시가 바로 클라이언트에게 뿌려줍니다.
웹 캐시를 사용할 때 한 가지 고려해야 할 점 이 있다. 과연 프락시 서버가 제공하는 이 콘텐츠가 최신 콘텐츠 일까이다.
만약 오리진 서버에서 계속 업데이트를 하고 있지만, 그 사실을 프락시 서버가 모르고, 프록시 서버는 클라이언트에게 오래된 컨텐츠를 제공해준다면 그것은 아주 큰 문제일 것이다.
이 문제를 해결하기 위해서 생겨 난 것이 Conditional GET이다.
클라이언트가 컨텐츠를 요청하면, 프락시 서버는 오리진 서버에게 최신 컨텐츠인지 확인을 해야 한다.
이때 프록시 서버가 오리진 서버로 보내는 메시지가 if-modified-since : <data>이다.
이제 프락시 서버는 A라는 콘텐츠가 최근에 수정되었니? 라고 오리진 서버에게 물어보고 만약 한번이라도 수정된 적이 있다면,
새로운 것을 프록시 서버가 오리진 서버로 받아오고 클라이언트에게 뿌려줍니다.
만약 수정된 적이 없다면, 원래 가지고 있던 것을 클라이언트에게 뿌려줍니다.
서버는 수정된 적이 있다면 200 OK를 보내주고, 수정된 적이 없다면 304 Not Modified
아래와 같은 흐름이다.
😀요약
- 쿠키는 사용자가 웹 사이트에서의 습관 같은 것을 기록하는데, 그 습관들을 통해서 웹 서버가 사용자를 식별해서 서비스를 제공하는 데 사용한다.
- 웹 캐시는 클라이언트에게 더욱 빠르게 콘텐츠를 제공하기 위해서 사용된다.
- 프락시 서버를 통해서 구현됨.
- 웹 캐시의 오점을 해결하기 위해서 Conditional GET이 등장함.
- 프락시 서버의 파일과 오리진 서버의 파일 수정 날짜를 비교해서 클라이언트에게 최신 파일을 제공해 줌.
'Computer Science > Network' 카테고리의 다른 글
[컴퓨터 망] DNS(Domain Name System) (0) | 2023.04.11 |
---|---|
[컴퓨터망] - HTTP1.1/ HTTP2.0 / HTTP 3.0 (0) | 2023.04.11 |
[컴퓨터망] - Web and HTTP (0) | 2023.04.09 |
[컴퓨터망] - Application Layer(네트워크 어플리케이션의 원칙) (0) | 2023.04.08 |
[컴퓨터망] - Protocol stack (0) | 2023.04.08 |