Computer Science/네트워크

[네트워크] Web Caches

바보1 2023. 4. 13. 23:07

앞의 글을 읽으시면 이해에 도움이 됩니다.

 

2023.04.13 - [Computer Science/네트워크] - [네트워크] Cookie

 

[네트워크] Cookie

앞의 글을 읽으시면 이해에 도움이 됩니다. 2023.04.09 - [Computer Science/네트워크] - [네트워크] HTTP Response Message [네트워크] HTTP Response Message 앞의 글을 읽으시면 이해에 도움이 됩니다. 2023.04.09 - [Compu

hi-guten-tag.tistory.com


1. Web Caching이란?

 

 

  • Web CacheProxy Server라고도 불리며, 웹 서버를 도와주기 위한 network entity입니다.
  • Web Cache는 자신만의 디스크도 소유하고 있으며, 최근에 요청된 객체에 대한 복사본을 유지합니다.

출처 : Computer Networking 2장. Figure 2.11

  • 위의 그림과 같이 Proxy server는 클라이언트로부터의 HTTP request를 처리합니다.
    1. 브라우저는 Web Cache와 TCP connection을 연결하고, Web Cache에게 HTTP request를 요청합니다.
    2. Web Cache는 자신의 저장소에 해당 객체가 있는지 확인하고, 만약 존재한다면 해당 객체를 HTTP response message로 응답합니다.
    3. 만약 객체가 Proxy Server의 저장소에 존재하지 않는다면, Web Cache는 Origin Server와 TCP Connection을 연결하고, 서버에게 객체에 대한 HTTP request를 요청합니다. 이후 서버는 해당 객체를 연결된 TCP connection으로 Web Cache에게 응답합니다.
    4. Web Cache가 객체를 받는다면 해당 객체를 자신의 저장소에 복사하여 저장하고, 복사본을 HTTP response message로 클라이언트에게 전송합니다.
  • 이처럼 Cache는 클라이언트와 서버의 역할을 동시에 수행합니다.
  • 클라이언트로부터 HTTP Request를 받으면 이는 서버의 역할을 하는 것이고, HTTP Request를 서버에게 보낸다면 이는 클라이언트의 역할을 하는 것입니다.

2. Web Caching의 장점

 

 

  • Web Caching의 장점은 크게 두 가지로 나뉩니다.
    • 첫째, Web Cache는 클라이언트의 요청에 따른 Response Time을 상당히 많이 줄여줍니다.
    • 특히 클라이언트-서버 간의 bandwidth가 클라이언트-캐시 간의 bandwidth보다 적을 때 특히 유용합니다.
    • 또한 클라이언트-캐시 간에 고성능의 연결이 된다면, 캐시는 매우 빠른 속도로 클라이언트에게 객체를 전달합니다.
    • 둘째, Web Cache는 서버에 접속하는 링크의 Traffic을 상당히 많이 줄입니다.
    • 이로 인해 서버는 급하게 bandwidth를 업그레이드할 필요가 없고, 이로 인해 비용이 절감됩니다.
    • 더 나아가 Web Cache는 전체 인터넷의 Traffic 또한 많이 줄여줍니다. 따라서 전체 어플리케이션의 성능이 향상됩니다.

3. The Conditional GET

 

 

  • Web Cache의 많은 장점에도 불구하고, 캐시에 있는 객체의 복사본이 구버전일 가능성이 있다는 문제가 있습니다.
  • 다른 말로 서버가 캐시에게 객체를 전달한 이후에, 서버에서 객체를 변형했다는 의미입니다.
  • 다행히도 HTTP에는 캐시로 하여금 객체의 업데이트를 검증할 수 있는 메커니즘이 있습니다.
  • 이 메커니즘을 conditional GET이라고 합니다.

 

  • 해당 conditional GET은 두 가지로 request messag를 보낼 수 있는데, 이는 아래와 같습니다.
    • 일반적인 GET method를 사용하여 요청했을 때
    • If-Modified-Since를 header line에 추가하여 요청하였을 때, 이때는 해당 객체를 받아온 시간을 작성하여 함께 보냅니다.

 

  • 이에 응답하는 서버의 response message 또한 두 가지입니다.
    • 만약에 서버에 존재하는 객체가 변형되거나, 혹은 일반적인 GET method를 요청받았을 때, 서버는 Last-Modified라는 정보를 header line에 추가하여 전송합니다. 이때 해당 정보에는 객체가 변형된 시간을 작성하여 보냅니다. 이때 객체와 함께 정보를 전달합니다.
    • 만약 서버에 존재하는 객체가 변형되지 않았다. 즉 Request Message로 온 If-Modified-Since에 적혀있는 시간과 서버에 있는 객체의 최종 변형 시간과 같다면 이는 변형되지 않았다는 뜻입니다. 따라서 서버는 객체가 변형되지 않았다는 의미로 status line304 Not Modified를 보냅니다. 이때 객체는 따로 보내지 않습니다.

참고

 

 

경북대학교 컴퓨터학부 COMP0414-001 컴퓨터 망 수업

Computer Networking: A Top Down Approach / James F. Kurose, Keith W. Ross 저 / PEARSON / 2021년

Chat GPT, Bing AI


다음 글에서는 HTTP/2에 대해 알아보겠습니다.

 

2023.04.14 - [Computer Science/네트워크] - [네트워크] HTTP/2 - Frame

 

[네트워크] HTTP/2 - Frame

앞의 글을 읽으시면 이해에 도움이 됩니다. 2023.04.13 - [Computer Science/네트워크] - [네트워크] Web Caches [네트워크] Web Caches 앞의 글을 읽으시면 이해에 도움이 됩니다. 2023.04.13 - [Computer Science/네트워

hi-guten-tag.tistory.com

감사합니다.

지적 환영합니다.

'Computer Science > 네트워크' 카테고리의 다른 글

[네트워크] DNS  (0) 2023.04.14
[네트워크] HTTP/2 - Frame  (0) 2023.04.14
[네트워크] Cookie  (2) 2023.04.13
[네트워크] HTTP Response Message  (0) 2023.04.09
[네트워크] HTTP Request Message  (0) 2023.04.09