2011-02-03 34 views
0

我正在構建一個可能需要通過網絡發送和接收數據的應用程序(客戶端和服務器端)。這些消息很短,可能大多是二進制。即使在公共網絡上,我也需要連接的安全。我不想重新發明輪子,所以如果協議會自己處理所有會話管理開銷(握手,處理丟棄的數據包,發回ACK響應等),我很樂意。如果Windows,Linux和OS X(通過.net框架和* NIX內核)自然支持它,它也會很好。選擇一個簡單,安全和輕量級的網絡協議

到目前爲止,我已經考慮了幾種選擇:

  • HTTPS - 對所有上述情況,除了開銷良好的支持。如果短消息,所有的HTTP頭只是多餘的。本地支持。
  • IPSEC - 本地支持,但迫使我自己處理會話。
  • 谷歌的協議緩衝區通過HTTPS - 現在是最好的選擇,但需要一些實施努力。

我是新來的網絡編程的世界,所以任何建議或提示將不勝感激。

+2

不要忘記通過SSL的protobuf。 – 2011-02-03 09:23:16

回答

2

我認爲你首先必須決定你想工作的級別。作爲協議的IPSEC與IP大致相同,基本上,你必須自己做一切。 HTTPS是一個更高級別的協議。

HTTP/HTTPS得到普遍支持,(通過一點點工作)將通過代理等工作。HTTPS爲您提供隱私和可選的端點身份驗證,但幾乎不需要額外的成本。操作系統甚至可能已經提供了一個可以使用的密鑰存儲區。

您也可以打開一個套接字,只需將加密的數據來回推送;考慮telnet或SSH(儘管在協議協商階段SSH相當重要)。加密庫可在大多數框架中使用,但您必須小心密鑰管理和交換。但是,如果您能夠使用預共享密鑰,那麼這根本就不是問題,真的;否則,X509證書可能是一種在許多平臺上很容易支持的可行方法。

2

IPSec在IP級別上工作,它用於保護系統級別的網絡連接。它在應用程序級別上不可用。因此,SSL/TLS是最受歡迎和本地支持的最佳選擇。如果您想使用UDP,則存在DTLS協議(UDP上的TLS),但它不像普通TLS那樣受到廣泛支持。

如果您不想處理套接字,並且更願意關注業務邏輯,請查看我們的MsgConnect產品。這是一個輕量級的跨平臺的面向消息的中間件,它允許您發送和接收消息,而MsgConnect將自己處理套接字。