당신은 HTTP를 얼마나 아는가? 4편 - HTTP 연계 웹 서버

sojukang·2022년 5월 22일
0
post-custom-banner

가상 호스트

IP만으로 주소를 잘 찾아갈 수 있을까?🧐

안타깝게도 IP 만으로는 원하는 리소스에 접근을 보장할 수 없다. 어째서? 같은 IP 주소를 사용하며 다른 호스트명과 도메인을 가진 가상 호스트 시스템이 있기 때문이다.

가상 호스트란 무엇인가?😱

  • 물리적으로는 1대의 서버로 여러 대가 있는 것처럼 설정하는 것이 가능하다.
  • 한 대의 HTTP 서버로 여러 고객에게 다른 도메인을 배정할 수 있다.

그러면 어떻게 잘 찾아갈까?

  • 요청을 보낼 때 호스트 명과 도메인 명을 완전하게 포함한 URI 를 지정하거나, 반드시 Host 헤더 필드에서 지정해야 한다.

통신 중계 프로그램

프록시

왜 쓰는가?

  • 캐시를 사용하여 네트워크 대역을 효율적으로 사용하기 위해
  • 특정 웹사이트에 관한 접근 제한, 접근 로그 획득 정책을 지키기 위해

무엇인가?

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

어떻게 동작하는가?

  • 클라이언트의 요청을 서버에 전송하고, 서버의 응답을 클라이언트에 전송한다.
  • 클라이언트로부터 받은 요청 URI 을 변경하지 않고 다음 서버로 전송한다.
  • 프록시 서버를 여러 대 공유하는 것도 가능하며 리소스 본체를 가진 오리진 서버(Origin Server) 까지 향한다.
  • 오리진 서버의 응답은 프록시 서버를 다시 경유하여 클라이언트에게 전송된다.
  • 프록시 서버를 경유할 때마다 Via 헤더 필드에 정보를 추가한다.

분류 기준이 두 개 있다는데?

  1. 캐싱을 하는지 안하는지 여부로 구분
  • 캐싱 프록시(Cashing Proxy)
    • 프록시 서버 상에 리소스 캐시를 보존한다.
    • 프록시에 보존된 리소스 요청이 오면 오리진 서버로 요청하지 않고 프록시에서 캐시를 요청으로 응답한다.
  1. 메시지를 변경하는지 안하는지 여부로 구분
  • 투명 프록시(Transparent Proxy)
    • 프록시로 중계할 때 메시지 변경을 하지 않을 경우 투명 프록시라고 한다.
    • 메시지에 변경을 가하는 경우 비투과 프록시라고 한다.
### 게이트웨이 #### 왜 쓰는가? - 클라이언트 <-> 게이트웨이 사이 암호화 접속 등 통신의 안정성을 높이기 위해

무엇인가?

  • 다른 서버를 중계하는 서버이다.
  • 수신한 요청을 자신이 리소스를 보유한 서버인 것처럼 송수신한다.

터널

왜 쓰는가?

  • SSL 같은 암호화 통신을 적용하는 등 클라이언트 <-> 서버 간 통신의 안정성을 높이기 위해

무엇인가?

  • 서버와의 통신 경로를 확립한다.
  • 클라이언트와 서버 사이를 중계하며 접속에 추가 기능을 더한다.

어떻게 동작하는가?

  • 터널 자체는 HTTP 요청을 해석하지 않는다.
  • 요청을 그대로 다음 서버로 전송한다.
  • 통신하고 있는 양쪽 끝의 접속이 끊어질 때 종료한다.

리소스 보관 캐시

캐시(Cache)가 뭔데?

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

캐시 서버란?

  • 캐시 서버는 프록시 서버의 하나로 위의 캐싱 프록시로 분류된다.
  • 프록시 서버상에 리소스의 사본을 보관하다가 클라이언트에게 응답한다.

왜 쓰는데?

  • 같은 데이터를 오리진 서버에 요청 - 응답할 필요가 없다.
  • 네트워크와 가까운 서버에서 리소스를 처리할 수 있다.

캐시의 유효기간은?

  • 캐시를 가지고 있더라도 캐시의 유효 기간이 지나거나 클라이언트의 요청이 있으면 오리진 서버에 리소스의 유효성을 확인하거나 새로운 리소스를 요청한다.

클라이언트도 캐시를 가지나?

  • 브라우저가 유효한 캐시를 가진 경우, 서버에 요청하지 않고 로컬 디스크로부터 불러올 수 있다.
  • 리소스가 오래된 경우 오리진 서버에 유효성을 확인하거나 새로운 리소스를 요청할 수 있다.

참고

우에노 센, 이병억 역, 그림으로 배우는 HTTP Network Basic, 영진 닷컴

profile
기계공학과 개발어린이
post-custom-banner

0개의 댓글