Как создать интернет-протокол? - PullRequest
3 голосов
/ 20 марта 2012

Мы все знакомы с популярными протоколами, такими как IMAP и POP, используемыми для обмена сообщениями электронной почты.

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

Является ли протокол, например, набором исходного кода на C, который принимает и отправляет данные через порты?Или протокол - это просто подробное описание того, как следует отправлять данные, которые затем реализуют клиенты?

Я забыл, с чего начать, и не очень хорошо знаю, как работает система протокола.

Редактировать:

Кроме того, если я напишу протокол, а группа стандартов не сделает его официальным, смогут ли люди / клиенты его реализовать?

Ответы [ 3 ]

4 голосов
/ 20 марта 2012

Официальный способ - написать RFC - запрос комментариев . Люди ответят на это (вот почему это RFC) и, возможно, попытаются реализовать ваш протокол.

Как только появятся две независимые реализации, которые полностью поддерживают протокол, это новый стандарт.

Конечно, люди не собираются внедрять новый протокол для кого-то просто ради интереса. Таким образом, вы должны сначала найти группу, которая заинтересована в том, чтобы слушать вас. Возможно, уже существует протокол, который делает то, что вы хотите (или может быть легко расширен).

Но вы, вероятно, не хотите изобретать новый стандарт. Стандарты - это много работы и - для некоторых - переоценка.

Итак, вы должны описать, как он работает, и создать библиотеку, которая может читать и записывать протокол, чтобы разработчики могли использовать его, даже если он не является официальным стандартом.

1 голос
/ 20 марта 2012

Поскольку вас интересует раздел Replace Email в статье Пола Грэма, которую вы связали, то ИМХО вам потребуется как разработать определение протокола, так и предоставить пример реализации.Определение протокола не нужно публиковать как стандарт интернет-протокола, чтобы быть полезным.

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

Вам не нужно нужно определение протокола для реализации улучшенногопо электронной почте, но он вам понадобится, если вы ожидаете, что другие будут работать с вами и примут его, хотя это очень сильно зависит от вашей «бизнес-модели».Я настоятельно рекомендую с самого начала иметь определение протокола, даже если вы хотите сохранить себя в здравом уме, когда пытаетесь создать вторую реализацию.

Я рекомендую взглянуть на некоторые примеры хитрых подходов к протоколам и реализации.Мой любимый описан в отчете о прогрессе Viewpoints Research 2008 о сверхкомпактном подходе к TCP / IP.

Они не следовали традиционному подходу к разработке реализации протокола (стека протоколов).Вместо этого они написали код, который анализировал удобочитаемую спецификацию протокола TCP / IP, и сгенерировал код стека TCP / IP из этого документа протокола.Обычный стек TCP / IP составляет около 40000 строк кода или более.Их программа, которая считывала спецификацию протокола и генерировала код для стека TCP / IP «автоматически», содержала всего 160 строк кода.Они используют чрезвычайно мощные инструменты программирования.

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

HTH

1 голос
/ 20 марта 2012

Вы путаете стандарт протокола с реализацией.

Эти 2 не связаны.
Протокол описан на высоком уровне, но у него достаточно информации, чтобы кто-то мог понять, как его реализовать.

Идея состоит в том, что кто-то, читающий документ, может понять, как / что реализовать на любом предпочтительном языке

В качестве примера: протокол SIP в RFC описываетразличные потоки, а также имеет различные сообщения и то, как они должны обрабатываться, т.е. семантика четко определена .

Вы можете реализовать SIP UA или Сервер на C ++ или Java.Это не имеет отношения к протоколу SIP

. Для этого вам не нужно предоставлять какой-либо исходный код (хотя вы могли бы, если считаете, что это помогает прояснить некоторую неясность описания).

Наиболее важной частью является то, что ваш протокол на самом деле проверен заинтересованными сторонами т.е. людьми, которые ожидают, что он решит их проблемы.
Эта часть является наиболее важной не только потому, что она может решитьпроблемы в вашем протоколе, но потому что они действительно могут проверить, что концепция является надежной, то есть может быть технически реализовананапример, жесткое ограничение реального времени, которое может служить «подсказкой» о том, какую реализацию / языки следует избегать

Кроме того, если я пишу протокол, а группа стандартов не делает его официальным, могут ли люди/ клиенты все еще реализуют это?

Странный вопрос. Что вы имеете в виду? Как кто-то узнает, что ваш протокол существует?
Если он официальный, он может получить его от группы стандартов для его реализации.
В противном случае этоочевидно, что у вас есть какой-то «проприетарный» протокол (который не редкость, например, у компании может быть внутренний протокол для собственного программного обеспечения), и люди должны получить спецификацию от вас.

...