Http&Network Basic - 5

haechi·2022년 9월 17일
0

Web

목록 보기
65/69

Chapter#5


가상 호스트

HTTP/1.1 에서는 하나의 HTTP 서버에 여러 개의 웹 사이트를 실행할 수 있다. 1대의 서버에 여러 고객의 웹 사이트를 넣을 수 있다는 것.
고객마다 다른 도메인을 가지고, 다른 웹 사이트를 실행할 수 있다. 이를 위해 사용하는 기능이 가상 호스트(Virtual Host)이다.

물리적으로는 서버 1대이지만 가상으로 여러대가 있는 것 처럼 설정하는 것이 가능하게 한다.

1대의 서버 안에 여러개의 도메인이 있어도 DNS에 의해 IP 주소로 변환된 후 해당 IP 주소를 기준으로 액세스 한다. 그래서 어느 쪽에 대한 액세스인지 알 수 없다

HTTP 리퀘스트를 보내는 경우 호스트명과 도메인 명을 완전하게 포함한 URI를 지정하거나, 반드시 Host 헤더 필드에서 지정해야한다.


통신을 중계하는 프로그램

HTTP는 통신을 중계하는 프로그램과 서버를 연계하는 것이 가능하다. 이런 프로그램(프록시,게이트웨이,터널)과 서버는
1. 그 다음에 있는 다른 서버에서 리퀘스트를 중계
2. 해당 서버로부터 받은 리스폰스를 클라이언트에 반환하는 역할을 담당

프록시(Proxy)

서버와 클라이언트 양쪽 역할을 하는 중계 프로그램

  • 클라이언트로부터의 리퀘스트를 서버에 전송
  • 서버로부터의 리스폰스를 클라이언트에 전송

클라이언트로부터 받은 리퀘스트 URI를 변경하지 않고 그 다음의 리소스를 가지고 있는 서버에 보냄 -> 리소스 본체를 가진 서버(오리진 서버)로부터 되돌아온 리스폰스는 프록시 서버를 경유해서 클라이언트에 돌아간다.
(프록시 서버를 여러 대 경유하는 것도 가능하다. 해당 경우 중계할 때 Via 헤더 필드에 경유한 호스트 정보를 추가해야한다.

  • 목적
    1. 캐시를 사용해서 네트워크 대역 등을 효율적으로 사용하기 위해
    2. 조직 내 특정 웹 사이트에 대한 액세스 제한, 액세스 로그를 획득하는 정책을 철저하게 지키기 위해

  • 사용 방법 -> 2개의 기준으로 분류.
  1. 캐시하는지의 여부

    캐싱 프록시 (Cashing Proxy)
    프록시 서버 상에 리소스 캐시를 보존해 두는 타입의 프록시.
    프록시에 다시 같은 리소스에 리퀘스트가 온 경우, 오리진 서버로부터 리소스를 획득하는 것이 아닌 캐시를 리스폰스로서 되돌려 준다.

  2. 메시지를 변경하는가의 여부

    투명 프록시(Transparent Proxy)
    프록시로 리퀘스트와 리스폰스를 중계할 때 메시지 변경을 하지 않는 타입의 프록시 <-> (반대)비투과 프록시 : 메시지에 변경을 가하는 탑의 프록시

게이트웨이(Gateway)

다른 서버를 중계하는 서버

  • 클라이언트로부터 수신한 리퀘스트를 리소스를 보유한 서버인 것처럼 수신

    프록시와 매우 유사하나, 그 다음에 있는 서버가 HTTP 서버 이외의 서비스를 제공하는 서버가 된다. 클라이언트와 게이트웨이 사이를 암호화하는 등으로 안전(secure)하게 접속함으로써 통신의 안정성을 높이는 역할(ex > db에 접속해 sql쿼리를 사용해서 데이터를 얻는 곳에 이용, 쇼핑 사이트 등 신용카드 결제 시스템 등과 연계할 때 사용)

터널(Tunnel)

  • 서로 떨어진 두 대의 클라이언트와 서버 사이를 중계하면서 접속을 주선하는 중계 프로그램

    요구에 따라서 다른 서버와의 통신 경로를 확립. 클라이언트는 SSL 같은 암호화 통신을 통해 서버와 안전한게 통신을 하기 위해 사용.
    터널 자체는 HTTP 리퀘스트를 해석하려고 하지 않고, 리퀘스트를 그대로 다음 서버에 중계한다. 터널은 통신하고 있는 양쪽 끝의 접속이 끝어질 때 종료한다.


캐시

캐시(Cache)는 프록시 서버와 클라이언트의 로컬 디스크에 보관된 리소스의 사본을 가리킨다.

  • 장점
    1. 리소스를 가진 서버에서의 액세스를 줄이는 것이 가능하기에 통신량과 통신 시간을 절약할 수 있다.
    2. 같은 데이터를 몇 번이고 오리진 서버에 전송할 필요가 없다. -> 네트워크에서 가까운 서버로부터 리소스를 얻을 수 있게 되어 같은 리퀘스트를 매번 처리하지 않아도 된다.

캐시의 유효기간

같은 리소스의 리퀘스트에 대해서 항상 캐시를 돌려 준다고는 할 수 없다. -> 캐시되어 있는 리소스의 유효성과 관계

오리진 서버에 있는 원래 리소스가 갱신되는 경우가 있다 -> 이때 캐시 서버는 갱신되기 전의 낡은 리소스를 그대로 보낸다.

캐시를 가지고 있더라도 클라이언트의 요구나 캐시의 유효 기간 등에 의해서 오리진 서버에 리소스의 유효성을 확인하거나 새로운 리소스를 다시 획득하러 가게 되는 경우가 있다.

클라이언트 측의 캐시

캐시 서버만 캐시를 가지는 것이 아님. 클라이언트가 사용하고 있는 브라우저에서도 캐시를 가질 수 있다.
브라우저가 유효한 캐시를 가지고 있다 -> 같은 리소스의 액세스는 로컬 디스크로부터 불러온다.(캐시 서버와 마찬가지, 새로운 리소스를 다시 획득하러 가는 일이 있음.)

profile
공부중인 것들 기록

0개의 댓글