[HTTP] 8장: 통합점 - 게이트웨이, 터널, 릴레이

서정범·2024년 1월 30일
0

HTTP

목록 보기
13/13

여기서는 여러 종류의 리소스에 접근하는데 HTTP가 어떻게 쓰이는지 알아보고, 다른 프로토콜이나 애플리케이션 간 통신에 HTTP를 어떻게 사용하는지 알아볼 것이다.

게이트웨이

먼저, 게이트웨이에 대해서 정리를 시작해 봅시다.

책에서 언급되고 있는 내용을 정리하기 전에 간단하게 핵심적인 내용을 정리하고 들어갑시다.

게이트웨이(Gateway)는 컴퓨터 네트워크에서 중요한 역할을 하는 장치 또는 소프트웨어로, 서로 다른 네트워크나 프로토콜 간의 통신을 가능하게 하는 중계자 역할을 합니다.

게이트웨이 주요 기능

  1. 프로토콜 변환:
    • 게이트웨이는 서로 다른 통신 프로토콜을 사용하는 네트워크 간의 인터페이스 역할을 합니다.
  2. 데이터 변환:
    • 네트워크 간에 데이터를 전송할 때, 게이트웨이는 필요에 따라 데이터 형식을 적절하게 변환합니다. 서로 다른 시스템 간의 호환성을 보장해줍니다.
  3. 보안:
    • 게이트웨이는 네트워크의 보안 경계로 작용할 수 있으며, 불법적인 네트워크 접근을 차단하고, 데이터 전송을 보호하는 역할을 합니다.
  4. 트래픽 관리:
    • 네트워크 트래픽을 관리하고 최적화하는 역할도 수행합니다. 이는 네트워크 효율성을 높이고, 데이터 전송 속도를 개선하는 데 도움이 됩니다.

책에서 주로 언급되고 있는 내용은 프로토콜 변환을 수행하는 기능이 탑재된 게이트웨이에 대해서 언급하고 있습니다.

예를 들어, HTTP/FTP: 서버 측 게이트웨이라든가 HTTP/HTTPS: 서버 측 보안 게이트웨이, HTTPS/HTTP: 클라이언트 측 보안 가속 게이트웨이 등이 있습니다.

이 외에도 게이트웨이의 종류에는 리소스 게이트웨이도 있는데 이것은 공용 게이트웨이 인터페이스(Common Gateway Interface, CGI)와 같은 것을 의미합니다.

사용자로 부터 오는 요청을 적절한 API를 통해 처리하여 응답을 보내주는 역할을 수행하는 것입니다. 하나의 서버에서 구현하는 것이 아닌 여러 서버로 확장하여 구현할 수 있고 이것은 장애 확산을 예방할 수 있습니다.

하지만, 새로운 프로세스를 만드는데 따르는 부하가 꽤 크고, 서버 장비에 부담이 된다는 단점도 존재합니다.

현대에는 이러한 작업들을 클라우드를 활용하여 효율적으로 해결할 수 있고, 여러 컴포넌트로 서버를 분리하여 하나의 애플리케이션을 조직합니다.

터널

터널(Tunnel)은 네트워크에서 서로 다른 네트워크 프로토콜이나 환경 간에 데이터를 안전하게 전송하기 위해 사용하는 기술입니다.

터널링은 데이터 패킷을 다른 프로토콜 또는 데이터 구조로 감싸서(캡슐화) 네트워크의 한 부분을 투명하게 통과시키는 과정을 말합니다.

터널의 주요 기능

  1. 데이터 캡슐화:
    • 터널링에서는 데이터를 다른 프로토콜 페이로드(payload)로 캡슐화합니다. 이렇게 하면, 원래의 데이터는 캡슐화된 형태로 전송되며, 중간 네트워크에서는 내부 데이터를 직접 볼 수 없습니다.
  2. 보안 통신:
    • 터널을 통해 전송되는 데이터는 종종 암호화되어 보안을 강화합니다. 이는 데이터가 공공 네트워크나 불완전한 네트워크를 통과할 때 중요합니다.
  3. 프로토콜 간 연결:
    • 서로 다른 네트워크 프로토콜이나 환경을 연결하기 위해 터널링이 사용될 수 있습니다. 예를 들어, IPv6 네트워크가 IPv4 네트워크를 통과해야 하는 경우 터널링이 필요합니다.
  4. 네트워크 우회:
    • 터널링은 지역적 제한이나 방화벽을 우회하기 위해 사용될 수 있습니다. VPN(Virtual Private Network)이 이러한 목적으로 널리 사용되는 예입니다.

터널링 프로토콜의 예

  • VPN(Virtual Private Network):
    • VPN은 인터넷과 같은 공용 네트워크를 사용하여 사설 네트워크의 확장을 제공합니다. VPN은 데이터를 암호화하여 전송하므로, 안전한 통신이 가능합니다.
  • IPsec(Internet Protocol Security):
    • IPsec는 네트워크 계층에서 보안 통신을 제공하는 프로토콜 세트입니다. IPsec는 VPN 구축에 자주 사용됩니다.
  • SSL/TLS(Secure Sockets Layer/Transport Layer Security):
    • 웹 통신에서 사용되는 SSL과 TLS는 데이터를 암호화하여 안전하게 전송합니다. 이 프로토콜들도 종류의 터널링 기술로 볼 수 있습니다.
  • SSH(Secure Shell):
    • SSH는 네트워크 서비스에 대한 안전한 접근을 제공합니다. 데이터 전송, 원격 제어 등의 기능을 암호화된 통신을 통해 수행합니다.

SSL/TLS의 경우, 그 자체의 기능에서 캡슐화를 수행하기 때문에 일종의 터널링으로 볼 수 있다고 했습니다.

하지만 더 명확한 예시로는, HTTPS/HTTP 혹은 HTTP/HTTPS와 같은 게이트웨이를 사용하는 대신 터널을 사용하여 전송하는 방식을 예로 볼 수 있습니다.

이것에 대한 예시로 아래의 그림을 예로 볼 수 있습니다.

HTTP 릴레이

마지막으로 HTTP 릴레이에 대해서 정리를 해보도록 하겠습니다.

HTTP 릴레이의 경우, 외부 reference에서 정리되어 있는 내용이 적고 책에 있는 내용과는 조금 달라서 책에 있는 내용을 기반으로 간단하게 정리하고 마치겠습니다.

HTTP 릴레이는 HTTP 명세를 완전히 준수하지는 않는 간단한 HTTP 프록시입니다.

릴레이는 커넥션을 맺기 위한 HTTP 통신을 한 다음, 바이트를 맹목적으로 전달 합니다.

이러한 간단한 동작으로, 단순 필터링이나 진단 혹은 콘텐츠 변환을 하는데 사용되기도 합니다.

만약, 단순 맹목적 릴레이를 구현하여 이점을 가져가려고 한다면 주의해야 할 점이 존재합니다. 이러한 프록시는 Connection 헤더를 제대로 처리하지 못해서 keep-alive 커넥션이 행(hang)에 걸린다는 점을 주의해야 합니다.

즉, 중간에 해당 릴레이가 존재하는 상황에서 클라이언트가 서버에 Connection: keep-alive를 요청한다면 중간에 릴레이는 이것이 무엇인지 인지하지 못하기 때문에 클라이언트와 서버는 커넥션을 유지하고, 릴레이는 끊으려고 하는 상황이 발생한다는 것입니다.

참고한 자료

  • HTTP 완벽 가이드
profile
개발정리블로그

0개의 댓글