C# 选择简单、安全、轻量级的网络协议
我正在构建一个可能需要通过网络发送和接收数据的应用程序(客户端和服务器端)。这些消息将很短,并且可能大部分是二进制的。我需要的连接是安全的,即使在公共网络上 我不想重新发明轮子,所以我希望协议本身能够处理所有会话管理开销(握手、处理丢弃的数据包、发送回ACK响应等)。如果Windows、Linux和OSX(通过.net框架和*NIX内核)自然支持它,那也很好 到目前为止,我已经考虑了几种选择:C# 选择简单、安全、轻量级的网络协议,c#,c++,security,network-protocols,C#,C++,Security,Network Protocols,我正在构建一个可能需要通过网络发送和接收数据的应用程序(客户端和服务器端)。这些消息将很短,并且可能大部分是二进制的。我需要的连接是安全的,即使在公共网络上 我不想重新发明轮子,所以我希望协议本身能够处理所有会话管理开销(握手、处理丢弃的数据包、发送回ACK响应等)。如果Windows、Linux和OSX(通过.net框架和*NIX内核)自然支持它,那也很好 到目前为止,我已经考虑了几种选择: HTTPS-除了开销之外,对上述所有内容都有很好的支持。如果消息很短,则所有HTTP头都是冗余的。本
- HTTPS-除了开销之外,对上述所有内容都有很好的支持。如果消息很短,则所有HTTP头都是冗余的。本地支持
- IPSEC-本机支持,但强制我自己处理会话
- 谷歌的HTTPS协议缓冲区——目前最好的选择,但需要一些实现工作
我是网络编程的新手,因此任何建议或提示都将不胜感激。我想你首先必须决定你想在什么级别工作。IPSEC作为一种协议,与IP的工作级别大致相同;基本上,你必须自己做每件事。HTTPS是一种非常高级的协议 HTTP/HTTPS是普遍支持的(只需做一点工作)将通过代理等方式工作。HTTPS为您提供隐私和端点的可选身份验证,并且只需很少的额外成本。操作系统甚至可能已经提供了您可以使用的密钥存储
您还可以打开一个套接字,简单地来回推送加密数据;考虑telnet或SSH(尽管SSH在协议协商阶段相当重要)。加密库在大多数框架中都可用,但在密钥管理和交换方面必须小心。但是,如果您可以接受使用预共享密钥,那么这并不一定是一个问题;否则,X509证书可能是一种可行的方法,在许多平台上都很容易得到支持。我认为您首先必须决定要在什么级别工作。IPSEC作为一种协议,与IP的工作级别大致相同;基本上,你必须自己做每件事。HTTPS是一种非常高级的协议 HTTP/HTTPS是普遍支持的(只需做一点工作)将通过代理等方式工作。HTTPS为您提供隐私和端点的可选身份验证,并且只需很少的额外成本。操作系统甚至可能已经提供了您可以使用的密钥存储
您还可以打开一个套接字,简单地来回推送加密数据;考虑telnet或SSH(尽管SSH在协议协商阶段相当重要)。加密库在大多数框架中都可用,但在密钥管理和交换方面必须小心。但是,如果您可以接受使用预共享密钥,那么这并不一定是一个问题;否则,X509证书可能是一种可行的方法,在许多平台上都很容易得到支持。IPSec在IP级别上工作,用于保护系统级别的网络连接。它在应用程序级别上不可用。因此,SSL/TLS是最好的选择,因为它是最受欢迎和本机支持的。如果您想使用UDP,存在DTLS协议(UDP上的TLS),但它没有常规TLS广泛支持
如果您根本不想处理套接字,而是更愿意关注业务逻辑,那么看看我们的产品。这是一个面向消息的轻量级跨平台中间件,它允许您发送和接收消息,MsgConnect将处理套接字本身 IPSec在IP级别工作,用于保护系统级别的网络连接。它在应用程序级别上不可用。因此,SSL/TLS是最好的选择,因为它是最受欢迎和本机支持的。如果您想使用UDP,存在DTLS协议(UDP上的TLS),但它没有常规TLS广泛支持
如果您根本不想处理套接字,而是更愿意关注业务逻辑,那么看看我们的产品。这是一个面向消息的轻量级跨平台中间件,它允许您发送和接收消息,MsgConnect将处理套接字本身 不要忘记SSL协议。不要忘记SSL协议。