가상 호스트
IP만으로 주소를 잘 찾아갈 수 있을까?🧐
안타깝게도 IP
만으로는 원하는 리소스에 접근을 보장할 수 없다. 어째서? 같은 IP
주소를 사용하며 다른 호스트명과 도메인을 가진 가상 호스트
시스템이 있기 때문이다.
가상 호스트란 무엇인가?😱
- 물리적으로는 1대의 서버로 여러 대가 있는 것처럼 설정하는 것이 가능하다.
- 한 대의 HTTP 서버로 여러 고객에게 다른 도메인을 배정할 수 있다.
그러면 어떻게 잘 찾아갈까?
- 요청을 보낼 때
호스트 명과 도메인 명을 완전하게 포함한 URI
를 지정하거나, 반드시 Host 헤더 필드
에서 지정해야 한다.
통신 중계 프로그램
프록시
왜 쓰는가?
- 캐시를 사용하여 네트워크 대역을 효율적으로 사용하기 위해
- 특정 웹사이트에 관한 접근 제한, 접근 로그 획득 정책을 지키기 위해
무엇인가?
- 서버와 클라이언트 양쪽 역할을 하는 중계 프로그램이다.
어떻게 동작하는가?
- 클라이언트의 요청을 서버에 전송하고, 서버의 응답을 클라이언트에 전송한다.
- 클라이언트로부터 받은 요청
URI
을 변경하지 않고 다음 서버로 전송한다.
- 프록시 서버를 여러 대 공유하는 것도 가능하며 리소스 본체를 가진 오리진 서버(Origin Server) 까지 향한다.
- 오리진 서버의 응답은 프록시 서버를 다시 경유하여 클라이언트에게 전송된다.
- 프록시 서버를 경유할 때마다
Via
헤더 필드에 정보를 추가한다.
분류 기준이 두 개 있다는데?
- 캐싱을 하는지 안하는지 여부로 구분
- 캐싱 프록시(Cashing Proxy)
- 프록시 서버 상에 리소스 캐시를 보존한다.
- 프록시에 보존된 리소스 요청이 오면 오리진 서버로 요청하지 않고 프록시에서 캐시를 요청으로 응답한다.
- 메시지를 변경하는지 안하는지 여부로 구분
- 투명 프록시(Transparent Proxy)
- 프록시로 중계할 때 메시지 변경을 하지 않을 경우 투명 프록시라고 한다.
- 메시지에 변경을 가하는 경우 비투과 프록시라고 한다.
### 게이트웨이
#### 왜 쓰는가?
- 클라이언트 <-> 게이트웨이 사이 암호화 접속 등 통신의 안정성을 높이기 위해
무엇인가?
- 다른 서버를 중계하는 서버이다.
- 수신한 요청을
자신이 리소스를 보유한 서버인 것처럼
송수신한다.
터널
왜 쓰는가?
SSL
같은 암호화 통신을 적용하는 등 클라이언트 <-> 서버 간 통신의 안정성을 높이기 위해
무엇인가?
- 서버와의 통신 경로를 확립한다.
- 클라이언트와 서버 사이를 중계하며 접속에 추가 기능을 더한다.
어떻게 동작하는가?
- 터널 자체는 HTTP 요청을 해석하지 않는다.
- 요청을 그대로 다음 서버로 전송한다.
- 통신하고 있는 양쪽 끝의 접속이 끊어질 때 종료한다.
리소스 보관 캐시
캐시(Cache)가 뭔데?
- 프록시 서버와 클라이언트의 로컬 디스크에 보관된 리소스의 사본이다.
캐시 서버란?
- 캐시 서버는 프록시 서버의 하나로 위의 캐싱 프록시로 분류된다.
- 프록시 서버상에 리소스의 사본을 보관하다가 클라이언트에게 응답한다.
왜 쓰는데?
- 같은 데이터를 오리진 서버에 요청 - 응답할 필요가 없다.
- 네트워크와 가까운 서버에서 리소스를 처리할 수 있다.
캐시의 유효기간은?
- 캐시를 가지고 있더라도 캐시의 유효 기간이 지나거나 클라이언트의 요청이 있으면 오리진 서버에 리소스의 유효성을 확인하거나 새로운 리소스를 요청한다.
클라이언트도 캐시를 가지나?
- 브라우저가 유효한 캐시를 가진 경우, 서버에 요청하지 않고 로컬 디스크로부터 불러올 수 있다.
- 리소스가 오래된 경우 오리진 서버에 유효성을 확인하거나 새로운 리소스를 요청할 수 있다.
참고
우에노 센, 이병억 역, 그림으로 배우는 HTTP Network Basic, 영진 닷컴