개발도서 읽기/HTTP 완벽 가이드

[2. HTTP 아키텍처] 8장) 통합점: 게이트웨이, 터널, 릴레이

까연 2021. 5. 2. 18:08
 
게이트웨이: 서로 다른 프로토콜과 애플리케이션 간의 HTTP 인터페이스
애플리케이션 인터페이스: 서로 다른 형식의 웹 애플리케이션이 통신하는 데 사용
터널: HTTP 커넥션을 통해 HTTP가 아닌 트래픽을 전송하는 데 사용
릴레이: 일종의 단순한 HTTP 프락시로, 한 번에 한 개의 홉에 데이터를 전달하는 데 사용
 

게이트웨이

: 리소스와 애플리케이션을 연결하는 역할

 

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

 

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

: 웹 게이트웨이는 한쪽에선 HTTP로 통신하고 다른 한 쪽에선 다른 프로토콜로 통신한다.

 

<클라이언트 프로토콜>/<서버 프로토콜>로 기술한다.

  • 서버 측 게이트웨이: 클라이언트와 HTTP로 통신하고, 서버와는 외래 프로토콜로 통신
  • 클라이언트 측 게이트웨이: 클라이언트와 외래 프로토콜로 통신하고, 서버와는 HTTP로 통신

- 프로토콜 게이트웨이

: 브라우저에 명시적으로 게이트웨이를 설정하여 트래픽이 게이트웨이를 거쳐가게 하거나, 게이트웨이를 대리 서버로 설정할 수 있다.

 

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

  • 하는 일:
    • USER와 PASS 명령을 보내 서버에 로그인
    • 서버에서 적절한 디렉터리로 변경하기 위해 CWD 명령을 내린다.
    • 다운로드 형식을 ASCII로 설정
    • MDTM으로 문서의 최근 수정 시간을 가져온다.
    • PASV로 서버에게 수동형 데이터 검색을 하겠다고 말한다.
    • RETR(FTP프로토콜에 정의되어 있는 명령어)로 객체 검색
    • 제어 체널에서 반환된 포트로 FTP 서버에 데이터 커넥션을 맺는다.

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

: 기업 내부의 모든 웹 요청을 암호화함으로써 개인 정보 보호와 보안을 제공하는데 사용

 

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

: 웹 서버 앞단에 위치하고, 보안 HTTPS 트래픽을 받아서 복호화하고, 웹 서버로 보낼 일반 HTTP 요청을 만든다.

 

- 리소스 게이트웨이

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

애플리케이션 서버는 게이트웨이의 API를 통해 요청을 서버에서 동작하고 있는 애플리케이션에 전달한다.

(디지털 카메라 이미지, 전자상거래 애플리케이션 등)

 

*CGI(공용 게이트웨이 인터페이스): 애플리케이션 게이트웨이에서 유명했던 최초의 API

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

 

- 서버 확장 API

: 서버 자체의 동작을 바꾸고 싶거나 서버의 처리 능력을 최고치로 끌어 올리고자 하기 위해 제공

ex) 프론트페이지 제작자가 웹 출판 서비스를 하게 지원해주는 마이크로소프트의 프론트 서버 확장

 

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

: 인터넷 커뮤니티는 각 웹 애플리케이션이 서로 통신하는데 사용할 표준과 프로토콜 집합을 개발하였다. (웹 서비스라고 불림)

웹 서비스는 SOAP을 통해 XML을 사용하여 정보를 교환한다. 

 

*XML: 데이터 객체를 담는 데이터를 생성하고 해석하는 방식을 제공

*SOAP: HTTP 메시지에 XML 데이터를 담는 방식에 관한 표준

 

터널

: HTTP 프로토콜을 지원하지 않는 애플리케이션에 HTTP 애플리케이션을 사용해 접근하는 방법을 제공

 

 

릴레이

: HTTP 명세를 완전히 준수하지는 않는 간단한 HTTP 프락시

 

데이터를 맹목적으로 전달하도록 구현하기는 쉽기 때문에, 단순 필터링이나 진단, 콘텐츠 변환을 하는데 사용

(keep-alive 커넥션이 행에 걸리지 않도록 주의해야함)

=> 릴레이는 Keep-Alive에 대해 아무것도 모르기 때문에, 원 서버가 커넥션을 끊기를 기다리며 받은 데이터 전부를 클라이언트에게 전달한다. 하지만 원 서버는 릴레이가 자신에게 커넥션을 계속 맺고 있기를 요청했다고 믿기 때문에 끊지 않을 것이다. 릴레이는 커넥션이 끊길 떄를 기다리며 계속 커넥션을 맺고(hang)있게 된다.

 

따라서, HTTP를 제대로 준수하는 프락시를 사용하는 것이 좋다.