8. Integration Points: Gateways, Tunnels, and Relays

[학습목표]

  • 여러 종류의 리소스에 접근할 때 HTTP가 어떻게 쓰이는지 알아보고

    다른 프로토콜이나 애플리케이션간 통신에 HTTP를 어떻게 사용하는지 알아본다.

  • 게이트웨이: 서로다른 프로토콜과 애플리케이션 간 HTTP 인터페이스

  • 애플리케이션 인터페이스: 서로 다른 형식의 웹 앱이 통신하는데 사용한다.

  • 터널: HTTP 커넥션을 통해 HTTP가 아닌 트래픽을 전송하는데 사용

  • 릴레이: 일종의 단순 HTTP 프락시로 한번에 한개의 홉에 데이터를 전달하는데 사용.

1) 게이트 웨이

웹에 더 복잡한 리소스를 올려야할 필요가 생기면서 모든 리소스를 애플리케이션 한개로만 처리할 수 없어졌다.

리소스를 받기 위한 경로 안내 역할을 하는 게이트웨이를 고안해냈다.

게이트웨이는 리소스와 애플리케이션을 연결하는 역할을 한다.

게이트웨이는 HTTP 트래픽을 다른 프로토콜로 자동변환하여 HTTP 클라이언트가 다른 프로토콜을 알 필요 없이 서버에 접속할 수 있도록 한다.

① 클라이언트 측 게이트웨이와 서버측 게이트웨이

  • 한쪽에서는 HTTP 로 통신하고 다른 한쪽에서는 HTTP가 아닌 다른 프로토콜로 통신한다.

  • <클라이언트>/<서버>

  • 클라이언트측 게이트웨이와 서버측 게이트웨이는 빗금으로 구분해 기술한다.

2) 프로토콜 게이트웨이

  • 프락시에 트래픽을 바로 보내는 것처럼 게이트웨이에도 HTTP 트래픽을 바로 보낼 수 있다.

  • 브라우저에 명시하거나 게이트웨이를 대리서버(리버스 프락시)로 설정할 수 있다.

  • 종류

    • HTTP/*: 서버측 웹 게이트웨이

    • HTTP/HTTPS: 서버측 보안 게이트웨이

    • HTTPS/HTTP: 클라이언트측 보안 가속 게이트웨이

3) 리소스 게이트웨이

애플리케이션 서버는 HTTP를 통해서 클라이언트와 통신하고 서버측에 있는 애플리케이션 프로그램에 연결하는 서버측 게이트 웨이이다.

① 공용 게이트웨이 인터페이스(Common Gateway Interface, CGI)

  • 최초의 서버 확장이자 지금까지도 가장 널리 사용되는 서버 확장이다.

  • 웹에서 동적인 HTML, 신용카드처리, 데이터베이스 질의 등을 제공하는데 사용한다.

  • CGI 애플리케이션이 서버와 분리되면서 펄, Tcl, C, 다양한 셸언어를 포함하여 수많은 언어로 구현할 수 있게 되었다.

  • 또한 단순하여 거의 모든 HTTP 서버가 지원한다.

② 서버 확장 API

  • CGI 프로토콜은 구동중인 HTTP 서버에 외부 인터프리터가 쉽게 접속할 수 있게는 해주지만

    • 서버 자체의 동작을 바꾸고 싶거나

    • 서버의 처리능력을 최고치로 끌어올리고자 할 때는 어떻게 할까?

  • 이를 해결하기 위해 자신의 모듈을 HTTP와 직접 연결할수있는 서버 확장 API를 제공한다.

4) 애플리케이션 인터페이스와 웹 서비스

애플리케이션을 연결하면서 생기는 까다로운 이슈 중 하나는, 데이터를 교환하려는 두 애플리케이션 사이에서 프로토콜 인터페이스를 맞추는 일이다. (CH19참조)

웹서비스: 애플리케이션이 정보를 공유하는데 사용하는 새로운 매커니즘. HTTP같은 표준 웹 기술 위에서 개발한다. SOAP 을 통해 XML을 사용하여 정보를 교환한다.

5) 터널

HTTP 프로토콜을 지원하지 않는 애플리케이션에서 HTTP 애플리케이션을 사용해 접근하는 방식을 제공한다.

웹 터널을 사용하면, HTTP가 아닌 트래픽을 전송할 수 있고 다른 프로토콜을 HTTP 위에 올릴 수 있다.

웹터널 사용의 가장 일반적인 이유는 HTTP 커넥션 안에 HTTP가 아닌 트래픽을 얹기 위해서이다.

① Connect로 HTTP 터널 커넥션 맺기

웹 터널은 HTTP의 Connect 메서드를 사용해서 커넥션을 맺는다.

Connect 메서드는 터널 게이트웨이가 임의의 목적 서버와 포트에 TCP 커넥션을 맺고 클라이언트와 서버간에 오는 데이터를 무조건 전달하기를 요청한다.

Connect 메서드는 모든 서버나 프로토콜에 TCP커넥션을 맺는데 사용할 수 있다.

② 데이터 터널링, 시간, 커넥션관리

터널을 통해 전달되는 데이터는 게이트웨이를 통해 볼 수 없기 때문에 게이트웨이는 패킷의 순서나 흐름에 대한 어떤 가정도 할 수 없다.

일단 터널이 연결되면 데이터는 언제, 어디든 흘러갈 수 있다.

④ SSL 터널링

웹 터널은 원래 방화벽을 통해 암호화된 SSL트래픽을 전달하기위해 개발되었다.

SSL트래픽이 기존 프락시 방화벽을 통과할 수 있도록 HTTP에 터널링 기능이 추가되었다.

터널은 HTTP가 아닌 트래픽이 포트를 제한하는 방화벽을 통과할 수 있게 하며, 보안 SSL 트래픽이 방화벽을 통과하는데 유용하게 사용된다. 하지만, 터널은 악의적인 트래픽이 사내로 유입되는 경로가 될 수도 있다.

6) 릴레이

간단한 HTTP 프락시로, 커넥션을 맺기 위한 HTTP 통신을 한 다음 바이트를 맹목적으로 전달한다.

Last updated

Was this helpful?