Протокол связи — это система правил, которая позволяет двум или более субъектам системы связи передавать информацию посредством любого изменения физической величины . Протокол определяет правила, синтаксис , семантику и синхронизацию связи , а также возможные методы устранения ошибок . Протоколы могут быть реализованы аппаратными средствами , программным обеспечением или их комбинацией. [1]
Коммуникационные системы используют четко определенные форматы для обмена различными сообщениями. Каждое сообщение имеет точное значение, предназначенное для получения ответа из диапазона возможных ответов, предопределенных для этой конкретной ситуации. Указанное поведение, как правило, не зависит от того, как оно должно быть реализовано . Протоколы связи должны быть согласованы вовлеченными сторонами. [2] Чтобы достичь соглашения, протокол может быть разработан в технический стандарт . Язык программирования описывает то же самое для вычислений, поэтому существует близкая аналогия между протоколами и языками программирования: протоколы для коммуникации являются тем же, чем языки программирования являются для вычислений . [3] Альтернативная формулировка гласит, что протоколы для коммуникации являются тем же, чем алгоритмы для вычислений . [4]
Несколько протоколов часто описывают различные аспекты одного сообщения. Группа протоколов, разработанных для совместной работы, известна как набор протоколов; при реализации в программном обеспечении они представляют собой стек протоколов .
Протоколы интернет-коммуникаций публикуются Internet Engineering Task Force (IETF). IEEE (Институт инженеров по электротехнике и электронике) занимается проводными и беспроводными сетями, а Международная организация по стандартизации (ISO) занимается другими типами. ITU-T занимается протоколами и форматами телекоммуникаций для телефонной сети общего пользования (PSTN). По мере сближения PSTN и Интернета стандарты также движутся в сторону сближения.
Первое использование термина протокол в современном контексте коммутации данных произошло в апреле 1967 года в меморандуме под названием Протокол для использования в сети передачи данных NPL. Под руководством Дональда Дэвиса , который был пионером пакетной коммутации в Национальной физической лаборатории в Соединенном Королевстве, он был написан Роджером Скэнтлбери и Кейтом Бартлеттом для сети NPL . [5] [6] [7] [8] [9]
В ARPANET отправной точкой для связи между хостами в 1969 году стал протокол 1822 года , написанный Бобом Каном , который определял передачу сообщений в IMP. [10] Программа управления сетью (NCP) для ARPANET, разработанная Стивом Крокером и другими аспирантами, включая Джона Постела и Винта Серфа , была впервые реализована в 1970 году. [11] Интерфейс NCP позволял прикладному программному обеспечению подключаться через ARPANET, реализуя протоколы связи более высокого уровня, ранний пример концепции многоуровневого протокола . [12]
Сеть CYCLADES , разработанная Луи Пузеном в начале 1970-х годов, была первой, которая реализовала принцип «из конца в конец » и сделала хосты ответственными за надежную доставку данных в сети с коммутацией пакетов, а не за то, чтобы это было услугой самой сети. [13] Его команда была первой, кто взялся за сложнейшую проблему предоставления пользовательских приложений надежной службы виртуального канала при использовании службы «наилучших усилий» , ранний вклад в то, что впоследствии станет протоколом управления передачей (TCP). [14] [15] [16]
Боб Меткалф и другие в Xerox PARC изложили идею Ethernet и универсального пакета PARC (PUP) для межсетевого взаимодействия. [17]
Исследования, проведенные в начале 1970-х годов Бобом Каном и Винтом Серфом, привели к формулировке Программы управления передачей (TCP). [18] Спецификация RFC 675 была написана Серфом совместно с Йогеном Далалом и Карлом Саншайном в декабре 1974 года и на тот момент все еще представляла собой монолитный проект.
Международная сетевая рабочая группа согласовала стандарт датаграмм без установления соединения , который был представлен CCITT в 1975 году, но не был принят ни CCITT, ни ARPANET. [19] Отдельные международные исследования, в частности работа Реми Депре , способствовали разработке стандарта X.25 , основанного на виртуальных цепях , который был принят CCITT в 1976 году. [20] [21] Производители компьютеров разработали собственные протоколы , такие как IBM Systems Network Architecture (SNA), Digital Equipment Corporation's DECnet и Xerox Network Systems . [22]
Программное обеспечение TCP было переработано в модульный стек протоколов, называемый TCP/IP. Он был установлен на SATNET в 1982 году и на ARPANET в январе 1983 года. Разработка полного набора протоколов Интернета к 1989 году, как указано в RFC 1122 и RFC 1123, заложила основу для роста TCP/IP как всеобъемлющего набора протоколов как основного компонента развивающегося Интернета . [23]
Международная работа над эталонной моделью для стандартов связи привела к модели OSI , опубликованной в 1984 году. В течение периода в конце 1980-х и начале 1990-х годов инженеры, организации и страны поляризовались по вопросу о том, какой стандарт , модель OSI или набор протоколов Интернета, приведет к созданию лучших и наиболее надежных компьютерных сетей. [24] [25] [26]
Информация, которой обмениваются устройства через сеть или другие носители, регулируется правилами и соглашениями, которые могут быть изложены в спецификациях протокола связи. Характер коммуникации, фактические данные, которыми обмениваются, и любые зависящие от состояния поведения определяются этими спецификациями. В цифровых вычислительных системах правила могут быть выражены алгоритмами и структурами данных . Протоколы для коммуникации являются тем же, чем алгоритмы или языки программирования являются для вычислений. [3] [4]
Операционные системы обычно содержат набор взаимодействующих процессов, которые манипулируют общими данными для связи друг с другом. Эта связь регулируется хорошо понятными протоколами, которые могут быть встроены в сам код процесса. [27] [28] Напротив, поскольку нет общей памяти , взаимодействующие системы должны взаимодействовать друг с другом, используя общую среду передачи . Передача не обязательно надежна, и отдельные системы могут использовать разное оборудование или операционные системы.
Для реализации сетевого протокола программные модули протокола взаимодействуют с фреймворком, реализованным в операционной системе машины. Этот фреймворк реализует сетевые функции операционной системы. [29] Когда алгоритмы протокола выражаются на переносимом языке программирования, программное обеспечение протокола может быть сделано независимым от операционной системы . Наиболее известными фреймворками являются модель TCP/IP и модель OSI .
В то время, когда был разработан Интернет, абстракция слоев оказалась успешным подходом к проектированию как для компиляторов, так и для операционных систем, и, учитывая сходство между языками программирования и протоколами связи, изначально монолитные сетевые программы были разложены на взаимодействующие протоколы. [30] Это привело к появлению концепции многоуровневых протоколов, которая в настоящее время составляет основу проектирования протоколов. [31]
Системы обычно не используют один протокол для обработки передачи. Вместо этого они используют набор взаимодействующих протоколов, иногда называемый набором протоколов . [32] Некоторые из наиболее известных наборов протоколов — это TCP/IP , IPX/SPX , X.25 , AX.25 и AppleTalk .
Протоколы могут быть организованы на основе функциональности в группы, например, есть группа транспортных протоколов . Функциональность отображается на уровнях, каждый уровень решает отдельный класс проблем, связанных, например, с функциями приложений, транспорта, интернета и сетевого интерфейса. [33] Для передачи сообщения необходимо выбрать протокол из каждого уровня. Выбор следующего протокола осуществляется путем расширения сообщения с помощью селектора протоколов для каждого уровня. [34]
Существует два типа протоколов связи, основанных на представлении передаваемого контента: текстовые и двоичные. [35]
Текстовый протокол или протокол простого текста представляет свое содержимое в удобном для восприятия человеком формате , часто в виде простого текста, закодированного в машиночитаемой кодировке, такой как ASCII или UTF-8 , или в структурированных текстовых форматах, таких как шестнадцатеричный формат Intel , XML или JSON .
Непосредственная читаемость человеком резко контрастирует с собственными бинарными протоколами, которые имеют неотъемлемые преимущества для использования в компьютерной среде (например, простота механического анализа и улучшенное использование полосы пропускания ).
Сетевые приложения имеют различные методы инкапсуляции данных. Один из методов, очень распространенных в интернет-протоколах, — это текстовое представление, которое передает запросы и ответы как строки текста ASCII , завершающиеся символом новой строки (и обычно символом возврата каретки). Примерами протоколов, которые используют простой, понятный человеку текст для своих команд, являются FTP ( File Transfer Protocol ), SMTP ( Simple Mail Transfer Protocol ), ранние версии HTTP ( Hypertext Transfer Protocol ) и протокол finger . [36]
Текстовые протоколы обычно оптимизированы для анализа и интерпретации человеком и поэтому подходят для случаев, когда требуется проверка содержимого протокола человеком, например, во время отладки и на ранних этапах проектирования разработки протокола.
Двоичный протокол использует все значения байта , в отличие от текстового протокола, который использует только значения, соответствующие читаемым человеком символам в кодировке ASCII . Двоичные протоколы предназначены для чтения машиной, а не человеком. Двоичные протоколы имеют преимущество краткости, что выражается в скорости передачи и интерпретации. [37]
Двоичные данные использовались в нормативных документах, описывающих современные стандарты, такие как EbXML , HTTP/2 , HTTP/3 и EDOC . [38] Интерфейс в UML [39] также можно считать двоичным протоколом.
Получение данных по сети — это только часть проблемы для протокола. Полученные данные должны оцениваться в контексте хода разговора, поэтому протокол должен включать правила, описывающие контекст. Говорят, что эти виды правил выражают синтаксис коммуникации . Другие правила определяют, имеют ли данные смысл для контекста, в котором происходит обмен. Говорят, что эти виды правил выражают семантику коммуникации .
Сообщения отправляются и принимаются в системах связи для установления связи. Поэтому протоколы должны определять правила, регулирующие передачу. В целом, следует рассмотреть многие из следующих моментов: [40]
Принципы системной инженерии были применены для создания набора общих принципов проектирования сетевых протоколов. Проектирование сложных протоколов часто включает в себя декомпозицию на более простые, взаимодействующие протоколы. Такой набор взаимодействующих протоколов иногда называют семейством протоколов или набором протоколов [32] в концептуальной структуре.
Взаимодействующие системы работают одновременно. Важным аспектом параллельного программирования является синхронизация программного обеспечения для приема и передачи сообщений коммуникации в правильной последовательности. Параллельное программирование традиционно было темой в текстах по теории операционных систем. [50] Формальная верификация кажется незаменимой, поскольку параллельные программы печально известны скрытыми и сложными ошибками, которые они содержат. [51] Математический подход к изучению параллелизма и коммуникации называется коммуникационными последовательными процессами (CSP). [52] Параллелизм также можно моделировать с помощью конечных автоматов , таких как автоматы Мили и Мура . Машины Мили и Мура используются в качестве инструментов проектирования в цифровых электронных системах, встречающихся в виде аппаратного обеспечения, используемого в телекоммуникационных или электронных устройствах в целом. [53] [ требуется лучший источник ]
В литературе представлены многочисленные аналогии между компьютерной коммуникацией и программированием. По аналогии, механизм передачи протокола можно сравнить с центральным процессором (ЦП). Фреймворк вводит правила, которые позволяют программисту разрабатывать взаимодействующие протоколы независимо друг от друга.
В современном проектировании протоколов протоколы наслаиваются, образуя стек протоколов. Наслаивание — это принцип проектирования, который делит задачу проектирования протокола на более мелкие шаги, каждый из которых выполняет определенную часть, взаимодействуя с другими частями протокола только небольшим числом четко определенных способов. Наслаивание позволяет проектировать и тестировать части протокола без комбинаторного взрыва случаев, сохраняя каждый проект относительно простым.
Протоколы связи, используемые в Интернете, разработаны для работы в разнообразных и сложных условиях. Протоколы Интернета разработаны для простоты и модульности и вписываются в грубую иерархию функциональных уровней, определенную в наборе протоколов Интернета . [54] Первые два взаимодействующих протокола, протокол управления передачей (TCP) и протокол Интернета (IP), возникли в результате разложения исходной программы управления передачей, монолитного протокола связи, в этот многоуровневый набор связи.
Модель OSI была разработана на международном уровне на основе опыта сетей, предшествовавших Интернету, в качестве эталонной модели для общей коммуникации с гораздо более строгими правилами взаимодействия протоколов и строгим разделением на уровни.
Обычно прикладное программное обеспечение строится на надежном уровне передачи данных. В основе этого уровня передачи данных лежит механизм доставки и маршрутизации датаграмм, который обычно не требует соединения в Интернете. Ретрансляция пакетов по сетям происходит на другом уровне, который включает только технологии сетевых соединений, которые часто специфичны для определенных технологий физического уровня, таких как Ethernet . Многоуровневость обеспечивает возможности для обмена технологиями при необходимости, например, протоколы часто объединяются в туннельную схему для обеспечения соединения разнородных сетей. Например, IP может быть туннелирован через сеть асинхронного режима передачи (ATM).
Уровни протоколов формируют основу проектирования протоколов. [31] Они позволяют разложить отдельные сложные протоколы на более простые, взаимодействующие протоколы. [54] Каждый из уровней протоколов решает отдельный класс проблем связи. Вместе уровни составляют схему или модель уровнёв.
Вычисления имеют дело с алгоритмами и данными; Связь включает протоколы и сообщения; Таким образом, аналогом диаграммы потока данных является некая диаграмма потока сообщений. [4] Для визуализации слоев протоколов и наборов протоколов на рисунке 3 показана диаграмма потоков сообщений в двух системах, A и B, и между ними. Системы, A и B, используют один и тот же набор протоколов. Вертикальные потоки (и протоколы) являются внутрисистемными, а горизонтальные потоки сообщений (и протоколы) — между системами. Потоки сообщений регулируются правилами, а форматы данных определяются протоколами. Синие линии отмечают границы (горизонтальных) слоев протоколов.
Программное обеспечение, поддерживающее протоколы, имеет многоуровневую организацию, и его связь с многоуровневостью протоколов показана на рисунке 5.
Чтобы отправить сообщение в системе A, программный модуль верхнего уровня взаимодействует с модулем, находящимся непосредственно под ним, и передает сообщение для инкапсуляции. Нижний модуль заполняет данные заголовка в соответствии с протоколом, который он реализует, и взаимодействует с нижним модулем, который отправляет сообщение по каналу связи в нижний модуль системы B. В принимающей системе B происходит обратное, поэтому в конечном итоге сообщение доставляется в своей первоначальной форме в верхний модуль системы B. [55]
Перевод программы делится на подзадачи. В результате программное обеспечение перевода также является многоуровневым, что позволяет разрабатывать программные слои независимо. Тот же подход можно увидеть в многоуровневом протоколе TCP/IP. [56]
Модули ниже прикладного уровня обычно считаются частью операционной системы. Передача данных между этими модулями намного менее затратна, чем передача данных между прикладной программой и транспортным уровнем. Граница между прикладным уровнем и транспортным уровнем называется границей операционной системы. [57]
Строгое соблюдение многоуровневой модели, практика, известная как строгое многоуровневое распределение, не всегда является лучшим подходом к сетевому взаимодействию. [58] Строгое многоуровневое распределение может оказать негативное влияние на производительность реализации. [59]
Хотя использование многоуровневого протокола сегодня повсеместно распространено в области компьютерных сетей, оно исторически подвергалось критике со стороны многих исследователей [60], поскольку абстрагирование стека протоколов таким образом может привести к тому, что более высокий уровень будет дублировать функциональность более низкого уровня, ярким примером чего является восстановление после ошибок как на уровне отдельных соединений, так и на сквозном уровне. [61]
Часто повторяющиеся проблемы при проектировании и реализации протоколов связи можно решить с помощью шаблонов проектирования программного обеспечения . [62] [63] [64] [65] [66]
Популярными формальными методами описания синтаксиса коммуникации являются Abstract Syntax Notation One ( стандарт ISO ) и расширенная форма Бэкуса–Наура ( стандарт IETF ).
Модели конечных автоматов используются для формального описания возможных взаимодействий протокола. [67] [68] и взаимодействующие конечные автоматы [69]
Для осуществления коммуникации необходимо выбрать протоколы. Правила могут быть выражены алгоритмами и структурами данных. Независимость оборудования и операционной системы повышается за счет выражения алгоритмов на переносимом языке программирования. Независимость спецификации от источника обеспечивает более широкую совместимость.
Стандарты протоколов обычно создаются путем получения одобрения или поддержки организации по стандартизации , которая инициирует процесс стандартизации. Члены организации по стандартизации соглашаются придерживаться результата работы на добровольной основе. Часто члены контролируют большие доли рынка, имеющие отношение к протоколу, и во многих случаях стандарты обеспечиваются законом или правительством, поскольку считается, что они служат важным общественным интересам, поэтому получение одобрения может быть очень важным для протокола.
Необходимость в стандартах протоколов можно продемонстрировать, посмотрев на то, что случилось с протоколом Binary Synchronous Communications (BSC), изобретенным IBM . BSC — это ранний протокол канального уровня, используемый для соединения двух отдельных узлов. Первоначально он не предназначался для использования в многоузловой сети, но при этом были выявлены некоторые недостатки протокола. В отсутствие стандартизации производители и организации чувствовали себя свободно в улучшении протокола, создавая несовместимые версии в своих сетях. В некоторых случаях это было сделано намеренно, чтобы отговорить пользователей от использования оборудования других производителей. Существует более 50 вариантов исходного протокола bi-sync. Можно предположить, что стандарт предотвратил бы хотя бы часть этого. [29]
В некоторых случаях протоколы получают рыночное доминирование без прохождения процесса стандартизации. Такие протоколы называются фактическими стандартами . Фактические стандарты распространены на развивающихся рынках, нишевых рынках или рынках, которые монополизированы (или олигополизированы ). Они могут держать рынок в очень негативном тисках, особенно когда используются для отпугивания конкуренции. С исторической точки зрения стандартизацию следует рассматривать как меру противодействия пагубным последствиям фактических стандартов. Существуют положительные исключения; фактически стандартная операционная система, такая как Linux, не имеет такого негативного тиска на своем рынке, потому что исходные коды публикуются и поддерживаются в открытом виде, тем самым приглашая конкуренцию.
Некоторые из организаций по стандартизации, имеющих отношение к протоколам связи, включают в себя: Международная организация по стандартизации (ISO), Международный союз электросвязи (ITU), Институт инженеров по электротехнике и радиоэлектронике (IEEE) и Целевая группа по инжинирингу Интернета (IETF). IETF поддерживает протоколы, используемые в Интернете. IEEE контролирует многие программные и аппаратные протоколы в электронной промышленности для коммерческих и потребительских устройств. ITU является зонтичной организацией инженеров по телекоммуникациям, проектирующих телефонную сеть общего пользования (PSTN), а также многие системы радиосвязи. Для морской электроники используются стандарты NMEA. Консорциум Всемирной паутины (W3C) разрабатывает протоколы и стандарты для веб-технологий.
Международные организации по стандартизации должны быть более беспристрастными, чем местные организации, которые учитывают национальные или коммерческие интересы. Организации по стандартизации также занимаются исследованиями и разработками для стандартов будущего. На практике упомянутые организации по стандартизации тесно сотрудничают друг с другом. [70]
В разработке протокола могут участвовать несколько органов стандартизации. Если они не скоординированы, то результатом могут стать множественные несовместимые определения протокола или множественные несовместимые интерпретации сообщений; важные инварианты в одном определении (например, что значения времени жизни монотонно уменьшаются, чтобы предотвратить устойчивые циклы маршрутизации ) могут не соблюдаться в другом. [71]
В ISO процесс стандартизации начинается с создания рабочей группы подкомитета. Рабочая группа выпускает рабочие проекты и документы для обсуждения заинтересованным сторонам (включая другие органы по стандартизации) для того, чтобы спровоцировать обсуждение и комментарии. Это порождает много вопросов, много обсуждений и, как правило, некоторые разногласия. Эти комментарии принимаются во внимание, и рабочая группа разрабатывает проект предложения . После получения отзывов, внесения изменений и компромиссов предложение достигает статуса проекта международного стандарта и, в конечном итоге, международного стандарта . Международные стандарты периодически переиздаются для устранения недостатков и отражения меняющихся взглядов на предмет. [72]
Модель OSI по уровням |
---|
Урок, извлеченный из ARPANET , предшественника Интернета, заключался в том, что протоколам нужна структура для работы. Поэтому важно разработать универсальную, перспективную структуру, подходящую для структурированных протоколов (таких как многоуровневые протоколы) и их стандартизации. Это предотвратит появление стандартов протоколов с перекрывающейся функциональностью и позволит четко определить обязанности протокола на разных уровнях (слоях). [74] Это привело к появлению модели взаимодействия открытых систем (модель OSI), которая используется в качестве структуры для разработки стандартных протоколов и служб, соответствующих спецификациям различных слоев. [75]
В модели OSI предполагается, что коммуникационные системы соединены базовой физической средой, обеспечивающей базовый механизм передачи. Уровни над ним пронумерованы. Каждый уровень предоставляет услуги уровню над ним, используя услуги уровня, расположенного непосредственно под ним. Верхний уровень предоставляет услуги прикладному процессу. Уровни взаимодействуют друг с другом посредством интерфейса, называемого точкой доступа к услугам . Соответствующие уровни в каждой системе называются одноранговыми сущностями . Для взаимодействия две одноранговые сущности на данном уровне используют протокол, специфичный для этого уровня, который реализуется с использованием услуг уровня ниже. [76] Для каждого уровня существует два типа стандартов: стандарты протоколов, определяющие, как взаимодействуют одноранговые сущности на данном уровне, и стандарты услуг, определяющие, как данный уровень взаимодействует с уровнем выше.
В модели OSI уровни и их функциональные возможности следующие (от самого высокого уровня к самому низкому):
В отличие от схемы слоев TCP/IP, которая предполагает сеть без установления соединения, RM/OSI предполагает сеть с установлением соединения. [84] Сети с установлением соединения больше подходят для глобальных сетей, а сети без установления соединения больше подходят для локальных сетей. Связь с установлением соединения требует некоторой формы сеанса и (виртуальных) цепей, отсюда (в модели TCP/IP отсутствует) сеансовый уровень. Составные члены ISO в основном занимались глобальными сетями, поэтому разработка RM/OSI была сосредоточена на сетях с установлением соединения, а сети без установления соединения были впервые упомянуты в дополнении к RM/OSI [85] [86] и позже включены в обновление RM/OSI. [87]
В то время [ когда? ] IETF пришлось с этим справляться, а также с тем фактом, что Интернету нужны были протоколы, которых просто не было. [ необходима цитата ] В результате IETF разработала свой собственный процесс стандартизации, основанный на «грубом консенсусе и работающем коде». [88] Процесс стандартизации описан в RFC 2026.
В настоящее время IETF стала организацией по стандартизации протоколов, используемых в Интернете. RM/OSI расширила свою модель, включив в нее службы без установления соединения, и благодаря этому TCP и IP могут быть разработаны в качестве международных стандартов. [ необходима цитата ]
Образ провода протокола — это информация, которую наблюдатель, не участвующий в процессе, может почерпнуть из наблюдения за сообщениями протокола, включая как информацию, явно имеющую значение в протоколе, так и выводы, сделанные наблюдателем. [89] Незашифрованные метаданные протокола являются одним из источников, составляющих образ провода, а побочные каналы, включая синхронизацию пакетов, также вносят свой вклад. [90] Разные наблюдатели с разными точками зрения могут видеть разные образы провода. [91] Образ провода имеет отношение к конфиденциальности конечного пользователя и расширяемости протокола. [92]
Если некоторая часть образа провода не криптографически аутентифицирована , она может быть изменена промежуточными сторонами (т. е. промежуточными устройствами ), что может повлиять на работу протокола. [90] Даже если аутентифицирована, если часть не зашифрована, она станет частью образа провода, и промежуточные стороны могут вмешаться в зависимости от ее содержимого (например, отбрасывая пакеты с определенными флагами). Сигналы, намеренно предназначенные для промежуточного потребления, могут быть оставлены аутентифицированными, но не зашифрованными. [93]
Образ сети может быть намеренно сконструирован, шифруя части, которые посредники не должны иметь возможности наблюдать, и предоставляя сигналы для того, что они должны иметь возможность. [94] Если предоставленные сигналы отделены от работы протокола, они могут стать ненадежными. [95] Доброкачественное управление сетями и исследования страдают от шифрования метаданных; разработчики протоколов должны сбалансировать наблюдаемость для работоспособности и исследований с устойчивостью к окостенению и конфиденциальностью конечного пользователя. [92] В 2014 году IETF объявила, что она определила, что крупномасштабное наблюдение за операциями протокола является атакой из-за возможности выводить информацию из образа сети о пользователях и их поведении, [96] и что IETF будет «работать над смягчением всеобъемлющего мониторинга» в своих проектах протоколов; [97] это не было сделано систематически ранее. [97] В 2023 году Совет по архитектуре Интернета рекомендовал, чтобы раскрытие информации протоколом в сети было преднамеренным, [98] осуществлялось с согласия как получателя, так и отправителя, [99] аутентифицировалось в возможной и необходимой степени, [100] действовало только в соответствии со степенью его надежности, [101] было сведено к минимуму и предоставлялось минимальному количеству субъектов. [102] [103] По данным IAB, проектирование образа провода и контроль того, какие сигналы предоставляются сетевым элементам, были «развивающейся областью» в 2023 году. [104]
Окостенение протокола — это потеря гибкости, расширяемости и развиваемости сетевых протоколов . Это во многом связано с промежуточными устройствами , которые чувствительны к образу протокола и могут прерывать или мешать сообщениям, которые являются допустимыми, но которые промежуточное устройство не распознает правильно. [105] Это нарушение принципа сквозной связи . [106] Вторичные причины включают негибкость в реализациях протоколов на конечных точках. [107]
Окостенение является серьезной проблемой в разработке и развертывании интернет -протоколов, поскольку оно может помешать развертыванию новых протоколов или расширений в Интернете или наложить ограничения на разработку новых протоколов; новые протоколы, возможно, придется инкапсулировать в уже развернутый протокол или имитировать сетевой образ другого протокола. [108] Из-за окостенения протокол управления передачей (TCP) и протокол пользовательских датаграмм (UDP) являются единственными практичными вариантами для транспортных протоколов в Интернете, [109] а сам TCP значительно окостенел, что затрудняет расширение или модификацию протокола. [110]
Рекомендуемые методы предотвращения окостенения включают шифрование метаданных протокола [111] и обеспечение того, чтобы точки расширения были задействованы, а изменчивость изображения проводов была представлена как можно полнее; [112] устранение существующего окостенения требует координации между участниками протокола. [113] QUIC является первым транспортным протоколом IETF , который был разработан с преднамеренными свойствами, препятствующими окостенению. [89]
Схемы классификации протоколов обычно фокусируются на области использования и функции. В качестве примера области использования можно привести протоколы с установлением соединения и протоколы без установления соединения , которые используются в сетях с установлением соединения и сетях без установления соединения соответственно. Примером функции является протокол туннелирования , который используется для инкапсуляции пакетов в протокол высокого уровня, чтобы пакеты могли передаваться через транспортную систему с использованием протокола высокого уровня.
Схема слоев объединяет как функцию, так и область использования. Доминирующими схемами слоев являются те, которые разработаны IETF и ISO. Несмотря на то, что базовые предположения схем слоев достаточно различны, чтобы оправдать различие между ними, общепринятой практикой является сравнение двух схем путем соотнесения общих протоколов с уровнями двух схем. [114] Схема слоев от IETF называется слоистостью Интернета или слоистостью TCP/IP . Схема слоев от ISO называется моделью OSI или слоями ISO .
В конфигурации сетевого оборудования часто проводится различие терминов: термин протокол строго относится к транспортному уровню, а термин служба относится к протоколам, использующим протокол для транспорта. В общем случае TCP и UDP службы различаются по номерам портов. Соответствие этим номерам портов является добровольным, поэтому в системах проверки содержимого термин служба строго относится к номерам портов, а термин приложение часто используется для обозначения протоколов, идентифицированных с помощью сигнатур проверки.
Как вспоминает Кан: ... Вклад Пола Барана ... Я также думаю, что Пол был мотивирован почти исключительно голосовыми соображениями. Если вы посмотрите на то, что он написал, он говорил о коммутаторах, которые были недорогой электроникой. Идея размещения мощных компьютеров в этих местах не совсем пришла ему в голову как экономически эффективная. Поэтому идея компьютерных коммутаторов отсутствовала. Само понятие протоколов не существовало в то время. И идея коммуникаций между компьютерами была действительно второстепенной.
уделял больше внимания цифровой голосовой связи, чем компьютерной.
Пол Баран ... сосредоточился на процедурах маршрутизации и на выживаемости распределенных систем связи во враждебной среде, но не сосредоточился на необходимости совместного использования ресурсов в той форме, как мы это понимаем сейчас; действительно, концепция программного коммутатора не присутствовала в его работе.
Фактически, CYCLADES, в отличие от ARPANET, был специально разработан для облегчения межсетевого взаимодействия; он мог, например, обрабатывать различные форматы и различные уровни обслуживания.
Помимо сетей NPL и ARPANET, важную роль в развитии компьютерных сетевых технологий сыграла также академическая и исследовательская экспериментальная сеть CYCLADES.
В начале 1970-х годов г-н Пузен создал инновационную сеть передачи данных, которая связала местоположения во Франции, Италии и Великобритании. Ее простота и эффективность указали путь к сети, которая могла бы соединять не просто десятки машин, а миллионы из них. Она захватила воображение доктора Серфа и доктора Кана, которые включили аспекты ее дизайна в протоколы, которые теперь питают интернет.
хотели бы поблагодарить ряд коллег за полезные комментарии во время ранних обсуждений международных сетевых протоколов, особенно R. Metcalfe, R. Scantlebury, D. Walden и H. Zimmerman; D. Davies и L. Pouzin, которые конструктивно прокомментировали вопросы фрагментации и учета; и S. Crocker, который прокомментировал создание и разрушение ассоциаций.
Эта базовая эталонная модель взаимосвязи открытых систем основана на предположении, что для передачи данных требуется соединение.