2011-02-03 3 views
0

네트워크를 통해 데이터를 보내고받을 필요가있는 응용 프로그램 (클라이언트 측과 서버 측)을 구축 중입니다. 메시지는 짧을 것이며, 아마도 대부분 이진입니다. 공용 네트워크에서도 연결이 안전해야합니다.간단하고 안전하며 가벼운 네트워크 프로토콜 선택

나는 프로토콜이 모든 세션 관리 오버 헤드 (핸드 셰이크, 삭제 된 패킷 처리, ACK 응답 전송 등)를 처리한다면 정말 좋을 것 같습니다. Windows, Linux 및 OS X (.NET 프레임 워크 및 * NIX 커널)에서 자연스럽게 지원되는 경우에도 유용합니다.

지금까지 내가 생각 한 몇 가지 옵션 :

  • HTTPS - 오버 헤드를 제외한 위의 모든 좋은 지원을 가지고 있습니다. 메시지가 짧으면 모든 HTTP 헤더가 중복됩니다. 기본적으로 지원됩니다.
  • IPSEC - 기본적으로 지원되지만 세션을 직접 처리해야합니다.
  • HTTPS를 통한 Google의 프로토콜 버퍼 - 현재로서는 최상의 옵션이지만 일부 구현 노력이 필요합니다.

나는 네트워크 프로그래밍의 세계에 새로운 사람들이기 때문에 조언이나 조언을 크게 듣게 될 것입니다.

+2

SSL을 통한 설치를 잊지 마십시오. –

답변

2

나는 먼저 당신이 원하는 수준에서 결정해야한다고 생각합니다. 프로토콜로서 IPSEC는 IP와 거의 동일한 수준에서 작동합니다. 기본적으로 모든 것을 자신해야합니다. HTTPS는 상당히 높은 수준의 프로토콜입니다.

HTTP/HTTPS가 보편적으로 지원되며 (약간의 작업만으로) 프록시 등을 통해 작동합니다. HTTPS는 약간의 추가 비용으로 개인 정보 보호 및 선택적으로 엔드 포인트 인증을 제공합니다. 운영 체제는 이미 사용할 수있는 키 저장소를 제공 할 수도 있습니다.

소켓을 열고 암호화 된 데이터를 앞뒤로 밀어 넣을 수도 있습니다. 텔넷이나 SSH를 생각해보십시오. (SSH는 프로토콜 협상 단계에서 상당히 비중이지만). 암호화 라이브러리는 대부분의 프레임 워크에서 또는 사용할 수 있지만 키 관리 및 교환에주의해야합니다. 사전 공유 키를 사용하여 살 수 있다면, 이것은 실제로 전혀 문제가되지는 않습니다. 그렇지 않으면 X509 인증서가 많은 플랫폼에서 쉽게 지원되는 실행 가능한 접근 방식 일 수 있습니다.

2

IPSec은 IP 수준에서 작동하며 시스템 수준에서 네트워크 연결을 보호하는 데 사용됩니다. 응용 프로그램 수준에서는 사용할 수 없습니다. 따라서 SSL/TLS가 가장 널리 사용되고 네이티브로 지원되는 최상의 옵션입니다. UDP를 사용하려면 DTLS 프로토콜 (UDP를 통한 TLS)이 있지만 일반 TLS처럼 광범위하게 지원되지는 않습니다.

소켓을 전혀 다루지 않고 비즈니스 논리에만 집중하려는 경우 MsgConnect 제품을 살펴보십시오. 이것은 가벼운 크로스 플랫폼 메시지 지향 미들웨어로서 메시지를 보내고받을 수 있으며 MsgConnect는 소켓 자체를 처리합니다.

관련 문제