가상호스트
HTTP1.1에서는 하나의 HTTP 서버에 여러 개의 웹 사이트를 실행할 수 있다.
가상호스트 기능을 사용하면 물리적으로는 서버가 1대지만 가상으로 여러 대가 있는 것처럼 설정할 수 있다.
인터넷에서 도메인 명은 DNS에 의해 IP주소로 변환되고 나서 액세스하게 된다.
결국 리퀘스트가 서버에 도착한 시점에는 IP주소를 기준으로 액세스 하게 된다.
이 때 같은 서버 안에 같은 IP 주소에 여러 개의 도메인이 있을 경우, 어느 쪽에 대한 엑세스인지 알 수 없다.
따라서 HTTP 리퀘스트를 보내는 경우 호스트명과 도메인명을 완전하게 포함한 URI를 지정하거나,
반드시 Host 헤더 필드에서 지정해야 한다.
통신을 중계하는 프로그램 : 프록시, 게이트웨이, 터널
프록시
- 서버와 클라이언트의 양쪽 역할을 하는 중계 프로그램으로, 클라이언트로부터 받은 리퀘스트를 서버에 전송하고,
서버로부터의 리스폰스를 클라이언트에 전송한다. - 리소스 본체를 가진 서버를 오리진 서버(Origin Server)라고 부른다.
- HTTP 통신을 할 때 프록시 서버를 여러 대 경유하는 것도 가능하다.
Via 헤더 필드에 경유한 호스트 정보를 추가해야한다. - 캐싱 프록시(Cashing proxy) :
프록시 서버 상에 리소스 캐시를 보존한다. 같은 리소스에 리퀘스트가 온 경우,
오리진 서버로부터 리소스를 획득하는 것이 아니라 캐시를 리스폰스로서 되돌려 준다. - 투명 프록시(Transparent Proxy) :
리퀘스트와 리스폰스를 중계할 때 메세지 변경을 하지 않는 타입이다.
메세지 변경을 가하는 타입의 프록시는 비투과 프록시라고 한다.
게이트웨이
- 게이트웨이의 동작은 프록시와 매우 유사하다.
게이트웨이의 경우에는 그 다음에 있는 서버가 HTTP 서버 이외의 서비스를 제공하는 서버다. - 클라이언트와 게이트웨이 사이를 암호화하는 등으로 안전하게 접속함으로써 통신의 안전성을 높인다.
- 예) 데이터베이스에 접속해 SQL 쿼리를 사용해서 데이터를 얻는 곳에 이용하기,
쇼핑 사이트에서 신용카드 결제 시스템 등과 연계하기 등
터널
- 요구에 따라서 다른 서버와의 통신 경로를 확립한다.
- 클라이언트는 SSL 같은 암호화 통신을 통해 서버와 안전하게 통신을 하기 위해 사용한다.
- 터널 자체는 HTTP 리퀘스트를 해석하려고 하지 않고 그대로 서버에 중계한다.
- 통신하고 있는 양쪽 끝의 접속이 끊어질 때에 종료한다.
리소스를 보관하는 캐시
캐시(Cache)는 프록시 서버와 클라이언트의 로컬 디스크에 보관된 리소스의 사본이다.
캐시를 사용하면 같은 데이터를 몇 번이고 오리진 서버에 전송할 필요가 없다.
서버에의 엑세스를 줄이는 것이 가능하기 때문에 통신량과 통신 시간을 절약할 수 있다.
캐시에는 유효기간이 있다.
오리진 서버에 있는 원래 리소스가 갱신되는 경우, 캐시 서버는 갱신되기 전 낡은 리소스를 그대로 보내게 된다.
그래서 캐시를 가지고 있더라도 클라이언트의 요구나 캐시의 유효 기간 등에 의해서
오리진 서버에 리소스의 유효성을 확인하거나 새로운 리소스를 다시 획득하러 가게 되는 경우가 있다.
클라이언트 측에도 캐시가 있다.
캐시 서버만 캐시를 가지고 있는 게 아니라 클라이언트가 사용하고 있는 브라우저에서도 캐시를 가질 수 있다.
브라우저가 유효한 캐시를 가지고 있는 경우, 같은 리소스의 액세스는 서버에 엑세스하지 않고 로컬 디스크로부터 불러온다.
캐시서버와 마찬가지로 리소스가 오래된 것으로 판단되면 오리진 서버에 유효성을 확인하러 간다.
참고 : 그림으로 배우는 Http&Network Basic
'CS > Network' 카테고리의 다른 글
제 7장 웹을 안전하게 지켜주는 HTTPS (0) | 2023.08.31 |
---|---|
제 6장 HTTP 헤더 (0) | 2023.08.27 |
제 4장 결과를 전달하는 HTTP 상태 코드 (0) | 2023.04.06 |
제 3장 HTTP 정보는 HTTP 메세지에 있다. (0) | 2023.03.27 |
제 2장 간단한 프로토콜 HTTP (0) | 2023.03.27 |