1. 웹 캐시, 프록시 서버
1) 웹 캐시 개념과 동작 원리
웹 캐시(프록시 서버)는 기점 웹 서버를 대신하여 HTTP 요구를 충족시키는 네트워크 개체 입니다.
웹 캐시는 자체의 저장 디스크를 갖고 있어 최근 호출된 객체의 사본을 저장 및 보존합니다.

웹 캐시의 동작과정을 알아보겠습니다.
- 브라우저는 웹 캐시와 TCP 연결을 설정하고 웹 캐시에 있는 객체에 대한 HTTP요청을 보냄
- 웹 캐시는 객체의 사본이 저장되어있는지 확인
- 저장되어있다면 클라이언트 브라우저로 HTTP 응답메시지와 객체 전송 응답
- 저장되어있지 않다면, 기점서버에 HTTP 객체 요청, 저장 후 클라이언트로 응답
이는 컴퓨터 구조에서 공부한 캐시의 개념과 매우 유사합니다.
[컴퓨터 구조] 캐시 메모리 - 캐시의 특징과 사상(mapping)방식
1. 캐시 메모리1) 캐시의 특징캐시는 CPU와 주기억장치의 속도차이를 보완하는 기억장치입니다. CPU 칩과 인접한 곳에 위치하며, CPU 칩 내부에 포함되기도 합니다. 캐시는 명령어와 데이터를 별도
5g-0.tistory.com
두 캐시는 모두 "자주 쓰는 데이터를 빠르게 다시 쓰자" 라는 아이디어를 사용합니다.
차이점이 있다면 CPU 캐시는 하드웨어적으로 구현되고 CPU 바로 옆에 설치되며,
웹 캐시는 소프트웨어적으로 구현되고 네트워크 경로에 설치되며 ISP(인터넷 서비스 제공자)가 구입하고 설치한다는 점 입니다.
많이 사용되는 콘텐츠 전송 네트워크(CDN)은 가까운 지역에 파일을 캐싱해두고 가져오는 방식을 사용합니다.
CDN회사는 인터넷 저역을 통해 많은 지역적 분산 캐시를 설치하고 있으며, 그 종류로는 공유CDN(아카미아, 라임라이트)와 전용CDN(구글, 마이크로소프트)등이 있습니다. 이는 나중에 좀 더 자세히 다루어 보겠습니다.
2) 웹 캐시의 장점
웹 캐시는 다음과 같은 이유로 즐겨 사용되어 왔습니다.
- 클라이언트의 요구에 대한 응답 시간을 줄일 수 있음
- 한 기관에서 인터넷으로의 접속하는 링크상의 웹 트래픽을 대폭으로 줄일 수 있음
트래픽을 줄이면 기관은 대역폭을 개선할 필요가 없어져 비용을 줄일 수 있습니다.
대역폭: 데이터 통신 속도
이를 예시를 통해 자세히 알아보겠습니다.

위 그림에서 기관네트워크는 고속의 LAN이며 라우터는 15Mbps 회선에 연결되어 있습니다.
이러한 상황에서 기관 네트워크는 15Mbps의 라우터로 인해 인터넷 지연을 겪게됩니다.
해결 방안으로는 15Mbps -> 100Mbps로 회선을 개선하는 방법이 있으나 이는 많은 비용이 들게 됩니다.
다른 해결방법으로는 웹 캐시를 설치하는 방법이 있습니다.

클라이언트와 캐시는 고속 LAN에 연결되어있습니다.
만약 캐시가 0.4의 적중률을 제공한다고 했을때 40%의 요청은 캐시에 의해 매우 빠른 속도로 응답을 받을 수 있습니다.
60%의 요청은 접속 회선을 통과해야겠지만 이를 고려해도 전체 응답시간은 눈에 띄게 줄어듭니다.
3) 조건부 GET
컴퓨터 구조에서 캐시의 쓰기 정책에 대해 알아본적이 있습니다.
[컴퓨터 구조] 캐시 메모리 - 교체 알고리즘, 쓰기정책과 다중캐시
1. 캐시 교체 알고리즘캐시 미스가 발생하여 새로운 블록이 캐시로 올라왔을때, 라인들이 모두 적재되어 있다면 적절한 알고리즘으로 교체가 이루어져야 합니다.직접 사상에서는 새로운 블록이
5g-0.tistory.com
웹 캐시에서도 이처럼 캐시의 데이터와 원본 데이터가 같은 상태인지를 확인해야 합니다.
웹 캐시에서는 이를 위해 조건부 GET(conditional GET)을 사용합니다. 조건부 GET의 조건은 다음과 같습니다.
- GET 방식을 사용
- If-Modified-Since: 헤더라인을 포함
조건부 GET이 어떻게 동작하는지 알아보겠습니다.
먼저 브라우저의 요청을 받은 프록시서버(캐시)가 요청을 웹 서버로 보냅니다.
GET /kunyoung/sexy.gif HTTP/1.1
Host: www.5g-0.tixtory.com
웹 서버가 캐시에게 응답을 보냅니다.
HTTP/1.1 200 OK
Date: Sat, 3 Oct 2025 15:39:29
Server: Apache/1.3.0 (Unix)
Last-Modified: Wed, 9 Sep 2025 09:23:24
Content-Type: #######
캐시는 요청하는 브라우저에게 객체를 보내주고 자신에게도 수정된 날짜와 함께 객체를 저장합니다.
다시 브라우저가 같은 객체를 캐시에게 요청하면 캐시는 웹 서버로 조건부 GET 요청을 보냅니다.
GET /kunyoung/sexy.gif HTTP/1.1
Host: www.5g-0.tixtory.com
If-modified-since: Wed, 9 Sep 2025 09:23:24
만약 변경되지 않았다면 다음과 같은 응답 메시지를 보냅니다.
HTTP/1.1 304 Not Modified
Date: Sat, 10 Oct 2025 15:39:29
Server: Apache/1.3.0 (Unix)
이처럼 304 Not Modified 상태 라인을 갖고 있으면 요청 객체의 캐싱된 복사본을 사용하라는 것을 의미합니다.
'CS > 네트워크' 카테고리의 다른 글
| [네트워크] DNS의 개요와 구조, 동작원리 (0) | 2025.11.11 |
|---|---|
| [네트워크] HTTP/2의 등장 배경과 특징 (0) | 2025.10.17 |
| [네트워크] 사용자와 서버 간의 상호작용 쿠키 (2) | 2025.09.18 |
| [네트워크] HTTP 메시지 포맷 (0) | 2025.09.02 |
| [네트워크] HTTP 개요, 비지속 연결과 지속 연결 (2) | 2025.08.28 |