해당 내용은 그림으로 배우는 Http&Network Basic 책내용을 정리한것 입니다.
1. 1대로 멀티 도메인을 가능하게 하는 가상호스트
- HTTP/1.1 에서는 하나의 서버에 여러개의 웹 사이트를 실행할수 있다.
- 이를 위해 가상호스트 라는 기능을 사용하고 있다.
- 가상호스트를 사용하면 물리적으러는 서버가 1대지만 가상으로 여러대가 있는 것처럼 설정하는 것이 가능하다.
- 인터넷에서 도메인명은 DNS에 의해 IP 주소로 변환되고 나서 엑세스를 하게된다.
- 결국 요청이 서버에 도착하는 시점에는 IP주소를 기준으로 접근하게 된다.
- 이때 가상호스트를 사용 하고 있다면, 1대의 물리적 서버 에서 두개의 도메인이 있을경우 서버는 어느쪽에 대한 접근인지 서버는 알수가 없다.
- 때문에 HTTP 요청시에 다른 호스트명과 도메인명을 완전하게 포함한 URI를 지정하거나, 반드시 Host 헤더필드에서 지정해야한다.
2. 통신을 중계하는 프로그램: 프록시, 게이트웨이, 터널
- HTTP는 클라이언트와 서버 이외에 프록시, 게이트웨이, 터널 과 같은 통신을 중계하는 프로그램과 서버를 연계하는 것도 가능합니다.
- 프록시(Proxy)
- 서버와 클라이언트의 양쪽 역할을 하는 중계 프로그램
- 클라이언트 요청을 서버에 전송하고, 서버의 응답을 클라이언트에 전송한다.
- 프록시 서버의 기본동작은 요청을 서버에 전송하는 것 이다.
- 리소스 본체를 가진 서버를 오리진 서버 라고 부른다.
- HTTP 통신을 할 때, 프록시 서버를 여러대 경우하는 것도 가능하다.
- 중계할 때에는 Via 헤더필드에 경유한 호스트 정보를 추가한다.
- 프록시 서버를 사용하는 이유는 캐시를 사용한 네트워크 대역을 효율적으로 사용하는 것, 조직 내에서 특정 웹사이트에 대한 접근제한, 엑세스 로그를 획득하는 정책을 철저하게 관리하는 목적 등이 있다.
- 프록시 사용방법은 여러가지가 있지만 크게 2개의 기준으로 분류된다.
- 하나는 캐시를 하는지 하지않는지 그리고 메세지를 변경하는지 하지않는지
- 캐싱 프록시 (Cashing Proxy)
- 프록시로 응답을 중계할때는 프록시 서버상에 리소스캐시를 보존해두는 타입의 프록시
- 프록시에 같은 리소스에 요청이 온경우, 오리진 서버로 부터 리소스를 획득하는것이 아닌 프록시 서버의 캐시를 응답으로 되돌려준다.
- 투명 프록시 (Transparent Proxy)
- 프록시로 요청과 응답을 중계할때 메세지 변경을 하지 않는 타입
- 반대로 메세지에 변경을 주는 타입을 비투과 프록시라고 한다.
- 게이트웨이(Gateway)
- 다른 서버를 중계하는 서버
- 클라이언트의 요청을 오리진서버 인것처럼 수신한다.
- 경우에 따라 클라이언트는 상대가 게이트웨이인지 오리진서버인지 구분하지 못한다.
- 게이트웨이의 동작은 프록시와 매우 유사하다.
- 게이트웨이가 있는 경우에는 그 다음에 있는 서버가 HTTP 서버 이외의 서비스를 제공하는 서버가 된다.
- 클라이언트와 게이트웨이 사이를 암호화하는 등으로 안전하게 접속함으로써 통신의 안전성을 높이는 역할은 한다.
- 게이트웨이는 데이터베이스에 접속해 SQL 쿼리를 사용하여 데이터를 얻는 곳에 이용할수있다.
- 그밖에도 쇼핑사이트 등에서 신용카드 결제시스템과 연계할 때 사용된다.
- 터널(Tunnel)
- 터널은 요구에 따라서 다른 서버와의 통신 경로를 확립한다.
- 클라이언트는 SSL 같은 암호화 통신을 통해 서버와 안전하게 통신을 할때 사용된다.
- 터널은 통신하고 있는 양쪽 끝의 접속이 끊어질때 종료된다.
3. 리소스를 보관하는 캐시
- 캐시(Cache)는 프록시 서버와 클라이언트의 로컬 디스크에 보관된 리소스의 사본을 말한다.
- 캐시를 사용하면 리소스를 가진 서버에의 접근을 줄이는것이 가능하기 때문에 통신량과 통신 시간을 절약할수 있다.
- 캐시서버는 프록시 서버중 하나로 캐싱프록시로 분류된다.
- 프록시가 서버로부터의 응답을 중계할때 프록시서버에 리소스의 사본을 보존한다.
- 장점으로는 같은 데이터를 몇번이고 오리진 서버에 전송할 필요가 없다.
- 클라이언트는 네트워크에서 가까운 서버로 부터 리소스를 얻을수 있게되어, 서버는 같은 요청을 매번 처리 하지 않아도 된다.
- 캐시는 유효기간이 있다
- 캐시서버에 있는 리소스가 항상 오리진 서버의 리소스와 같다고 보장할수는 없다.
- 서버에있는 리소스가 갱신되는 경우 캐시서버는 낡은 리소스를 가지게된다.
- 그래서 캐시를 가지고 있더라도 클라이언트의 요구나 캐시의 유효기간 등에 의해서 오리진 서버에 리소스의 유효성을 확인하거나 새로운 리소스를 다시 가지러 가는 경우도 있다.
- 클라이언트 측에도 캐시가 있다
- 클라이언트 에서 사용하는 브라우저 에서도 캐시를 가질수 있다.
- 익스플로러 에서는 이를 인터넷임시파일 이라고 부른다.
- 브라우저가 유효한 캐시를 가지고 있는 경우 서버에 접근하지 않고 로컬디스크 에서 불러온다.
- 캐시서버와 마찬가지로 유효시간이 지났다고 판단되면 오리진서버에 유효성을 검증하러 가거나 새로운 리소스를 다시 획득하는 경우도 있다.