HTTP 터널

HTTP tunnel

HTTP 터널링방화벽, NATACL을 비롯한 네트워크 연결이 제한된 조건에서 두 컴퓨터 간의 네트워크 링크를 만드는 데 사용되며, 그 중에서도 다른 제한 사항이 있다.이 터널은 보통 DMZ에 위치한 프록시 서버라고 불리는 중개인에 의해 만들어진다.

터널링은 또한 제한된 네트워크에서 일반적으로 지원되지 않는 프로토콜을 사용한 통신을 허용할 수 있다.

HTTP CONNECT 방법

HTTP 터널링의 가장 일반적인 형태는 표준화된 HTTP CONNECT 방법이다.[1][2]이 메커니즘에서 클라이언트는 HTTP 프록시 서버에 TCP 연결을 원하는 대상에 전달하도록 요청한다.그런 다음 서버는 클라이언트를 대신하여 연결을 계속한다.서버에 의해 연결이 설정되면 프록시 서버는 클라이언트와 TCP 스트림을 계속 프록시 처리한다.초기 연결 요청만 HTTP - 그 후에 서버는 단지 설정된 TCP 연결을 프록시한다.

이 메커니즘은 HTTP 프록시 뒤의 클라이언트가 SSL이나 TLS(즉 HTTPS)를 사용하여 웹 사이트에 접속할 수 있는 방법이다.프록시 서버는 기본 HTTPS 포트 443에 대한 연결만 허용하거나 화이트리스트에 있는 호스트 또는 SSL로 표시되지 않는 트래픽을 차단하여 연결을 제한할 수도 있다.

협상 예시

클라이언트는 프록시 서버에 연결하고, 연결할 포트와 호스트 컴퓨터를 지정하여 터널링을 요청한다.포트는 요청 중인 프로토콜을 나타내기 위해 사용된다.[3]

연결 streamline.t-mobile.com:22 HTTP/1.1 프록시-인증:기본 암호화된 암호화된 암호화된 암호 

연결이 허용되고 프록시가 지정된 호스트에 연결되면 프록시는 2XX 성공 응답을 반환한다.[3]

HTTP/1.1 200 네 알겠습니다 

클라이언트가 이제 원격 호스트로 프록시 처리되고 있는 경우.프록시 서버로 전송된 데이터는 이제 수정되지 않은 상태로 원격 호스트로[3] 전달되며 클라이언트는 원격 호스트에서 수락한 프로토콜을 사용하여 통신할 수 있다.아래 예에서 클라이언트는 초기 CONNECT 요청의 포트 번호에서 암시된 대로 SSH 통신을 시작하고 있다.

SSH-2.0-OpenSSH_4.3\r\n ... 

CONNECT를 사용하지 않고 HTTP 터널링

또한 HTTP 터널은 POST, GET, PUT, DELETE와 같은 일반적인 HTTP 방법만을 사용하여 구현될 수 있다.이는 동기식 HTTP(BOSH)를 통한 양방향 스트림에서 사용되는 접근법과 유사하다.

개념 증명 프로그램에서, 특별한 HTTP 서버는 보호된 네트워크 밖에서 실행되고 클라이언트 프로그램은 보호된 네트워크 내부의 컴퓨터에서 실행된다.클라이언트에서 네트워크 트래픽이 전달될 때마다 클라이언트는 HTTP 요청으로 트래픽 데이터를 재포장하고 데이터를 외부 서버로 릴레이하여 클라이언트에 대한 원래 네트워크 요청을 추출하여 실행한다.서버로 전송된 요청에 대한 응답은 HTTP 응답으로 재포장되어 클라이언트로 다시 전달된다.모든 트래픽은 일반적인 GET 및 POST 요청과 응답 내에 캡슐화되어 있으므로, 이 접근법은 대부분의 프록시와 방화벽을 통해 작동한다.

참고 항목

참조

  1. ^ Fielding, R. (June 1999). "Method Definitions, CONNECT". Hypertext Transfer Protocol -- HTTP/1.1. IETF. p. 56. sec. 9.9. doi:10.17487/RFC2616. RFC 2616. Retrieved 2010-07-09.
  2. ^ "Upgrading to TLS Within HTTP/1.1 (RFC 2817)". RFC 2817. Retrieved 3 July 2011.
  3. ^ a b c "CONNECT". HTTP/1.1 Semantics and Content. IETF. June 2014. p. 30. sec. 4.3.6. doi:10.17487/RFC7231. RFC 7231. Retrieved 4 November 2017.