ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 5일차 - HTTP와 연계하는 웹 서버
    CS지식/네트워크 2021. 4. 29. 22:34

    오늘은 가상호스트에 대해 공부하고 클라이언트와 서버 중간에 중계 역할을 하는 프로그램 3가지에 대해 공부했다.

    가상호스트에 대해 간단하게 무엇인지는 알겠지만 설명을 정확히 무엇이라고 하기에는 아직 부족하다..

    조금 더 가상호스트에 대해 공부해봐야겠다.

     

     

     

    1. 가상 호스트(Virtual Host)

    가상 호스트는 하나의 HTTP 서버에 여러 개의 웹 사이트를 실행할 수 있도록 하는 기술이다.

    가상 호스트를 통해 물리적 서버는 1대이지만 가상으로 여러 대가 있느 것처럼 설정이 가능하다.

    그러면 가상 호스트는 왜 필요할까?

     

    우리는 웹 사이트를 접속할 때 www.naver.com과 같은 호스트 명이나 도메인 명을 자주 사용한다.

    인터넷에서 도메인명은 DNS에 의해 IP 주소로 변환되어지고 리퀘스트가 서버에 도착한 시점에는 IP 주소를 기준으로 엑세스하게 딘다.

    만약, 서버에 www.naver.com이외에 도메인이 없다면 추후에 엑세스할 경우에 www.naver.com에서 온 엑세스라는 것을 서버에서 알 것이다.

    하지만, 서버 안에 www.daum.net이라는 도메인이 있다면 어느 쪽에 대한 액세스인지 서버는 알 수가 없다.

    이러한 문제를 가상 호스트를 통해 해결할 수 있다.

     

     

    2. 통신을 중계하는 프로그램

    HTTP는 클라이언트와 서버 이외에 프록시, 게이트웨이, 터널 등의 통신을 중계하는 프로그램이 존재한다.

    그러면 3가지의 프로그램에 대해 더 자세히 알아보자.

    1) 프록시

    프록시는 서버와 클라이언트, 두 역할을 하는 프로그램으로 클라이언트의 리퀘스트를 서버로 전달해주고 서버의 리스폰스를 클라이언트에게 전달해준다.

    이러한 프록시를 프록시 서버로 중간에 두어 사용하는 이유는 무엇일까?

    프록시 서버를 두면 캐시를 사용하여 네트워크 대역 등을 효율적으로 사용하고 조직 내에 특정 웹 사이트에 대한 액세스 제한, 액세스 로그 획득 등과 같은 정책을 지키기 위한 목적으로 사용된다.

    프록시 사용 방법은 여러가지가 존재하는데 2개의 기준으로 분류한다.

    1-1) 캐싱 프록시

    프록시로 리스폰스를 중계할 때 프록시 서버 상에 리소스 캐시를 보존하는 타입이다.

    캐시를 보존하게 되면 프록시에 이전에 왔던 리퀘스트가 또 온 경우에 오리진 서버로부터 리소스를 받는 것이 아니라 캐시를 리스폰스로서 돌려주게 된다.

     

    1-2) 투명 프록시

    투명 프록시는 프록시로 리퀘스트와 리스폰스를 중계 할 때 메시지 변경을 하지 않는 타입이다.

    이와 반대로 메시지에 변경을 가하는 타입은 비투과 프록시이다.

     

    2) 게이트웨이

    게이트웨이는 다른 서버를 중계하는 서버로 클라이언트로부터 수신한 리퀘스트를 요구한 리소스를 자신이 가지고 있는 것처럼 수신한다.

    게이트웨이 다음에 있는 서버는 HTTP서버 이외의 서비스를 제공하는 서버가 위치해있다.

    클라이언트와 게이트웨이 사이에서 암호화 등을 통해 안전성을 높이는 역할을 한다.

     

    3) 터널

    터널은 서로 떨어진 두 대의 클라이언트와 서버 사이를 중계하며 접속을 주선하는 중계 프로그램이다.

    터널은 클라이언트카 SSL 같은 암호화 통신을 통해 서버와 안전하게 통신하기 위해 사용한다.

    터널이 클라이언트의 리퀘스트를 해석하지는 않고 그냥 그대로 다음 서버에 중계하는 역할을 한다.

     

     

    3. 캐시(Cashe)

    위에서 프록시를 설명할 때 캐시에 대해 언급하였다. 얼핏보면 앞에서 배운 쿠키와 비슷한 역할을 하는 것처럼 보인다.

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

    프록시 서버가 가지고 있는 리소스의 사본은 리스폰스를 중계할 때 프록시 서버 상에 보존한다.

    이러한 역할을 하는 캐시를 사용하면 서버로 엑세스하는 경우를 줄일 수 있어 통신량과 통신 시간을 절약할 수 있다.

     

    캐시는 유효기간이 존재한다. 만약에 계속해서 캐시를 가지고 있고 오리진 서버에서는 리소스가 갱신되었다면

    클라이언트는 갱신된 리소스를 받지 못하고 오래 전 사본으로 저장된 리소스를 받게 된다.

    그래서 캐시가 존재하더라도 클라이언트의 요구나 캐시의 유효기간 등에 의해 오리진 서버의 리소스를 가져가는 경우도 있다.

     

    캐시는 프록시 서버 뿐만 아니라 클라이언트가 사용하는 브라우저에도 존재한다.

    브라우저가 유효한 캐시를 가지고 있다면 같은 리소스의 액세스를 서버에 하지 않고 로컬 디스크에서 불러온다.

    브라우저에 존재하는 캐시도 유효기간에 따라 오리진 서버에 요구하는 경우도 있다.

     

    댓글

Designed by Tistory.