Выбор простого, безопасного и легкого сетевого протокола - PullRequest
0 голосов
/ 03 февраля 2011

Я создаю приложение (как клиентское, так и серверное), которое может потребоваться для отправки и получения данных по сети.Сообщения будут короткими и, вероятно, в основном двоичными.Мне нужно, чтобы соединение было безопасным даже в общедоступных сетях.

Я не собираюсь изобретать велосипед, поэтому я хотел бы, чтобы протокол сам обрабатывал все накладные расходы на управление сеансом (рукопожатие, работа с удаленнымипакеты, отправка ответов ACK и т. д.).Также было бы хорошо, если бы он естественным образом поддерживался в Windows, Linux и OS X (платформой .net и ядрами * NIX).

Пока что я рассмотрел несколько вариантов:

  • HTTPS - имеет хорошую поддержку для всего вышеперечисленного, кроме накладных расходов.Если сообщение короткое, все заголовки HTTP просто избыточны.Встроенная поддержка.
  • IPSEC - поддерживается изначально, но вынуждает меня самостоятельно обрабатывать сеанс.
  • Протоколные буферы Google через HTTPS - лучший вариант на данный момент, но требует определенных усилий по внедрению.

Я новичок в мире сетевого программирования, поэтому любой совет или совет будут с благодарностью.

Ответы [ 2 ]

2 голосов
/ 03 февраля 2011

IPSec работает на уровне IP и используется для защиты сетевых подключений на системном уровне.Это не применимо на уровне приложений.Так что SSL / TLS - лучший вариант, поскольку он наиболее популярен и поддерживается изначально. Если вы хотите использовать UDP, существует протокол DTLS (TLS over UDP), но он не так широко поддерживается, как обычный TLS.* Если вы вообще не хотите иметь дело с сокетами и предпочитаете сосредоточиться на бизнес-логике, взгляните на наш продукт MsgConnect .Это легкое кроссплатформенное промежуточное программное обеспечение, ориентированное на сообщения, которое позволяет отправлять и получать сообщения, а MsgConnect сам будет работать с сокетами.

2 голосов
/ 03 февраля 2011

Я думаю, вам сначала нужно решить, на каком уровне вы хотите работать. IPSEC как протокол работает примерно на том же уровне, что и IP; по сути, вам придется сделать все самостоятельно. HTTPS - это протокол более высокого уровня.

HTTP / HTTPS поддерживается повсеместно, (с небольшим количеством работы) будет работать через прокси и т. Д. HTTPS обеспечивает конфиденциальность и, при необходимости, аутентификацию конечных точек, за небольшую дополнительную плату. Операционная система может даже предоставить хранилище ключей, которое вы можете использовать.

Вы также можете открыть сокет и просто передавать зашифрованные данные туда и обратно; подумайте telnet или SSH (хотя SSH довольно тяжеловесен на этапе согласования протокола). Библиотеки шифрования доступны в большинстве сред или для них, но вы должны быть осторожны с управлением ключами и обменом. Если вы можете жить с использованием предварительно общих ключей, это не обязательно проблема вообще; в противном случае сертификаты X509 могут быть работоспособным подходом, который легко поддерживается на многих платформах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...