본문 바로가기

23년 2학기 학교공부/컴퓨터네트워크

[CN] HTTP Cookie와 Cache

목차

    728x90
    반응형
    SMALL
    2023학년도 2학기 충남대학교 이영석 교수님의 컴퓨터네트워크 수업 정리자료입니다.

     

     

     

     

    📁 HTTP Cookie

     

    HTTP 웹서버 자체에는 상태가 없다. 예를 들어, HTTP GET 메서드로 main.html 페이지를 요청한다고 하자. 이렇게 요청된 main.html 페이지는 단지 코드로 저장된 html 페이지를 그대로 가져온 것일 뿐, 회원 로그인이 되어있는 상태인지, 혹은 이 페이지에 방문했던적이 있는지 등의 정보는 HTTP 웹서버에 저장되지 않는다.

     

    위와 같은 경우처럼 상태가 필요한 경우가 있으므로, 이럴때 HTTP Cookie를 사용하여 다음과 같은 상태 관리 목적을 수행한다.

     

    - 세션 관리 : 로그인, 장바구니, 게임 스코어 등
    - 개인화 : 사용자 선호, 테마 등
    - 트래킹 : 사용자 행동 기록. 구글이 사용자의 선호도를 파악해서 적절한 광고를 보여주는 등.

     

    도메인당 보통 50개의 쿠키가 있으며, 최대 3000개의 쿠키를 구현할 수 있고, 최대 4000바이트를 사용할 수 있다.

     

     

     

    cookie를 사용하는 기본 절차는 다음과 같다.

     

    1. 사용자가 웹 사이트 방문 시 기록한다.

    2. 서버가 쿠키를 발급하여 클라이언트에게 전송한다.

    3. 클라이언트가 웹 사이트를 재방문하면 쿠키와 함께 데이터를 전송한다.

     

     

     

     

    크롬 개발자모드에서 위와 같이 웹사이트에서 기록중인 쿠키를 확인할 수 있다.

     

     

     

     

    🌱 트래킹(Tracking)과 서드 파티 쿠키(Third-Party-Cookie)

     

    쿠키에는 두 종류가 있다.

     

     

    1. 퍼스트 파티 쿠키(First-Party-Cookie)

        - 사용자(client)가 방문한 웹사이트에서 직접 발행하는 쿠키 파일을 말한다.

     

      2. 서드 파티 쿠키(Third-Party-Cookie)

        - 사용자(client)가 방문한 웹사이트가 아닌, 다른 웹사이트에서 발행한 쿠키 파일을 말한다.

     

     

    서드 파티 쿠키는 우리 웹사이트에 접속하지 않았어도, 다른 사이트에 방문한 데이터를 활용하여 맞춤형 광고를 하게 할 수 있어 활발하게 사용되고 있다.

     

    보통 광고와 같은 사이트에서 개인 트래킹을 위해 서드 파티 쿠키를 발행한다.

     

     

    예를 들어, 사용자가 www.example.com  웹사이트에 접속했을 때, ad.foxytracking.com 광고가 포함되어 있는 경우가 있다. 이때 ad.foxytracking.comwww.example.com사이트의 페이지 속에 스크립트가 심어져 있는 경우로, 해당 사용자가 www.example.com이라는 사이트를 방문했다는 정보를 담은 쿠키를 발행한다.

     

    이후 사용자가 www.foo.com이라는 웹사이트에 접속했을 때, 마찬가지로 사이트 페이지 속에 ad.foxytracking.com 스크립트가 심어져 있는 경우 ad.foxytracking.com 웹사이트는 해당 사용자가 www.example.com  웹사이트에 접속했던 내역을 쿠키로부터 가져올 수 있으므로, 이 쿠키에 담긴 정보를 활용한 광고를 www.foo.com  사이트에 보여줄 수 있다.

     

     

    하지만 최근에는 프라이버시 보호를 이유로 트래킹 및 서드 파티 쿠키을 사용하지 못하도록 하고있다.

     

     

     

     

     

    📁 웹 캐시(Cache)와 프록시(Proxy)

    캐시는 CS 분야 여러 곳에서 등장하는 용어로, 자주 사용되는 리소스를 저장해두고 빠르게 제공할 때 사용된다.

     

    프록시는 웹서비스에서 캐시와 같은 역할을 명칭하며, 웹 캐시와 프록시는 각각 컴퓨터 구조 관점, 역할 관점의 명칭으로 같은 뜻이라고 볼 수 있다.

     

     

     

    프록시 서버(Proxy Server)클라이언트와 서버 사이의 중계 서버를 말한다.

    이러한 프록시 서버가 캐싱 기능을 메인으로 하는 경우 프록시 캐시 서버(Proxy Cache Server)라고 구체적으로 명칭하기도 한다.

     

     

    웹 사이트를 제공할 때는 웹 서버와 클라이언트가 통신하여 정보를 주고받는데, 이때 웹 서버 한 곳에서 모든 클라이언트의 요청을 처리하는 것은 비효율적이다.

     

    때문에 프록시 서버를 이용하여, 먼저 클라이언트가 리소스를 서버에 요청할 때, 프록시 서버는 먼저 캐시에 리소스가 있는지 확인한 후 리소스가 있다면 오리진 서버 (본래 서비스를 제공하는 서버) 를 거칠 필요 없이 프록시 서버의 캐시 데이터를 전달하는 방식으로 웹서비스를 제공할 수 있다.

     

    최초 요청은 오리진 서버에서 처리하되, 이후 요청은 모두 프록시 서버에서 처리하여 응답속도를 크게 향상시키고, 오리진 서버의 부하를 낮출 수 있다.

     

     

     

    프록시 서버(캐시 서버)의 예시로 Google Global Cache (GGC)가 있다.

    구글 데이터센터는 홍콩과 같이 우리와 먼 곳에 위치한다.

     

    클라이언트가 구글에게 데이터를 요청하면, 구글 데이터센터에서 직접 전달하는 것이 아닌 클라이언트의 통신사를 한 번 거치는데, 이때 통신사가 캐시서버를 갖고 있어서 데이터 제공에 드는 비용이 감소한다.

     

     

     

     

     

    📁 CDN(Contents delivery network)

     

    CDN이란, 웹 컨텐츠를 전 세계 여러 지역에 미리 배포하여 지역 서버가 전송하게끔 하는 네트워크로 웹 캐시를 발전시킨 기술로 볼 수 있다.

     

    웹 캐시와 프록시에서 설명했듯이, 웹 서버 한곳에서 모든 클라이언트를 처리하는 것은 비효율적이다.

     

    CDN은 오른쪽 그림과 같이 대륙, 국가, 지역별로 똑같은 컨텐츠를 가진 서버를 배치하여, 클라이언트와 가장 가까운 서버에서 클라이언트에게 정보를 제공한다.

     

    이를 통해 컨텐츠와 사용자 간의 거리를 줄여 웹사이트 퍼블리셔가 성능을 향상하고, 사용자가 경험하는 로딩 시간을 단축하고, 대역폭 소비 및 비용을 관리할 수 있게 한다.

     

     

    CDN을 사용하는 대표적인 회사로는

     

    - Akamai, Limelight

    - Cloudfare

    - Google, Netfilx 등이 있다.

     

     

    예를 들어 Netflix는 Netflix Korea라는 한국을 위한 CDN이 따로 존재한다.

     

    넷플릭스 미국과 비교하면 컨텐츠에 약간의 차이가 있음을 알 수 있다.

     

     

     

     

     

     

    728x90
    반응형
    LIST