Протокол / Пакет Дизайн Вопросы - PullRequest
4 голосов
/ 04 апреля 2010

Я ищу дизайн протокола для клиент-серверного приложения и мне нужны ссылки на некоторые ресурсы, которые могут мне помочь.

Большая часть в том, что я пытаюсь создать свой собственный формат "пакета", чтобы я мог минимизировать объем передаваемой информации. Я ищу некоторые ресурсы для анализа их протокола, но, похоже, некоторым не хватает дизайна пакета, например SMTP (который просто отправляет строки, завершенные CLRF). Каковы преимущества / недостатки использования системы, такой как SMTP, по сравнению с системой, которая использует заказной пакет? Разве SMTP не может использовать только пару байтов, чтобы покрыть все команды с помощью битовых флагов и сохранить пропускную способность / пространство?

Просто пытаюсь разобраться во всем этом.

Ответы [ 4 ]

1 голос
/ 04 апреля 2010

Прежде всего, вы собираетесь внедрить расширенный транспортный протокол (например, RTP поверх UDP) или протокол приложения (например, HTTP / SMTP)?

В обоих случаях вам следует подумать о разработке протокола или требованиях вашего приложения: На основе потоков или пакетов; однонаправленный / двунаправленный, с состоянием и сессионными или государственными, надежное или лучшее усилие, сроки требования, контроль потока / заторов, безопасный или простой.

Что касается протокола прикладного уровня, вам также следует подумать о: Текстовые или двоичные данные, отображение данных приложения на сетевые блоки данных / пакеты, требования безопасности и целостность и т. Д.

1 голос
/ 04 апреля 2010

Верно, но SMTP не был особенно оптимизирован для пространства, и при этом это не пакетный протокол. Он расположен поверх TCP и использует потоковую функциональность TCP. Вам нужно решить, что желательно в вашем протоколе: чувствителен ли он к производительности? задержка? ширина полосы

Нужно ли работать от имени суперпользователя? Если нет, вы, вероятно, захотите использовать UDP или TCP.

Вам понадобятся гарантии при доставке? Если это так, то TCP, вероятно, является вашим лучшим вариантом, если только вы не имеете дело с довольно серьезными проблемами производительности или размера.

В настоящее время немногие протоколы разрабатывают отдельные пакеты, хотя многие действительно передают очень специфические структуры данных по сети, используя TCP или, реже, UDP.

Если вы хотите действительно оптимизировать пространство или полосу пропускания, рассмотрите возможность максимально возможного уплотнения ваших данных в отдельные биты и байты, а также определения и упаковки структур для отправки их по TCP. Современные сетевые адаптеры в любом случае настолько оптимизированы для TCP, что зачастую нет других преимуществ для других стратегий.

0 голосов
/ 04 апреля 2010
  • TCP - это протокол stream , не основанный на пакетах.
  • Использование текста со строками упрощает специальную отладку
  • Использование текста со строкамипозволяет использовать ваш протокол с помощью telnet
0 голосов
/ 04 апреля 2010

SMTP, HTTP и другие протоколы на основе TCP не связаны с дизайном пакетов, потому что они основаны на потоке. Поэтому имеет смысл говорить о дизайне протокола.

Что касается использования текстовых протоколов против двоичных протоколов ...

Удобочитаемость протокола программами перехвата пакетов, такими как Wireshark , очень полезна.

Также очень полезно иметь возможность просто подключиться к вашему порту через telnet и установить связь с сервером, указав обычный текст.

Также с протоколом, таким как HTTP, фактическим ресурсом обычно является полезная нагрузка связи, ресурс может быть в двоичном или любом другом заданном формате. Так что наличие только заголовков и статуса в виде простого текста не является плохой вещью.

...