选择简单,安全且轻量级的网络协议

时间:2011-02-03 09:17:09

标签: c# c++ security network-protocols

我正在构建一个可能需要通过网络发送和接收数据的应用程序(客户端和服务器端)。消息很短,可能主要是二进制。即使在公共网络上,我也需要连接才能保证安全。

我不打算重新发明轮子,所以如果协议能够处理所有会话管理开销(握手,处理丢弃的数据包,发回ACK响应等),我都很乐意。如果在Windows,Linux和OS X(通过.net框架和* NIX内核)中自然支持它也会很好。

到目前为止,我已经考虑了几个选项:

  • HTTPS - 除了开销之外,对上述所有内容都有很好的支持。如果消息很短,则所有HTTP标头都是冗余的。本机支持。
  • IPSEC - 本机支持,但强迫我自己处理会话。
  • Google的HTTPS协议缓冲区 - 目前是最佳选择,但需要一些实施工作。

我是网络编程领域的新手,所以任何建议或提示都会受到高度赞赏。

2 个答案:

答案 0 :(得分:2)

我认为你首先必须决定你想要的工作水平。 IPSEC作为协议工作在与IP大致相同的水平;基本上,你必须自己做一切。 HTTPS是一种显着更高级别的协议。

普遍支持HTTP / HTTPS,(通过一些工作)将通过代理等工作.HTTPS为您提供隐私和可选的端点身份验证,只需很少的额外费用。操作系统甚至可能已经提供了一个可以使用的密钥库。

您也可以打开套接字,只需来回推送加密数据;想想telnet或SSH(虽然在协议谈判阶段SSH很重要)。加密库可用于大多数框架,也可用于大多数框架,但您必须小心密钥管理和交换。但是,如果您可以使用预共享密钥,那么这不一定是一个问题,真的;否则,X509证书可能是一种在许多平台上都很容易支持的可行方法。

答案 1 :(得分:2)

IPSec在IP级别上运行,它用于保护系统级别的网络连接。它在应用程序级别上不可用。因此,SSL / TLS是最受欢迎和本机支持等的最佳选择。如果您想使用UDP,则存在DTLS协议(TLS over UDP),但它不像常规TLS那样得到广泛支持。

如果您根本不想处理套接字并且更愿意关注业务逻辑,请查看我们的MsgConnect产品。这是一个轻量级的跨平台消息导向中间件,它允许您发送和接收消息,MsgConnect将处理套接字本身。