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

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

Какими свойствами и особенностями обладает хороший, годный грамотный, качественный протокол?

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

Небольшой дисклеймер: говоря о достоверности данных, я имею ввиду их неискаженность вследствие помех и иных ошибок в среде передачи. В статье я не буду затрагивать темы пласта технологий, связанных с безопасностью в ИТ. Допустим что наши Алиса и Боб могут друг другу доверять, и никакая Ева им помешать не может . (Например у коллег вопрос безопасности решается включением всех территориально разделенных участников взаимодействия в хорошо защищенный VPN, не имеющий в свою очередь доступа наружу)

В большинстве протоколов реализована схема «Вопрос-Ответ». Это можно представить как разговор, в котором на каждую реплику своего собеседника вы реагируете вербально, и в том же смысловом ключе. Таким образом участниками взаимодействия достигается уверенность в том, что их сообщения переданы и адекватно восприняты. Однако эта схема допустима и эффективна не для всех задач: в случаях когда задержка в общении должна быть минимизирована, или ответ на каждую из многочисленных реплик признается избыточным (например для отладочных сообщений), реализуется схема «Старт-Стоп». При получении сообщения на «Старт» ваш собеседник начинает сыпать в вас потоком реплик, и замолкает лишь при слове «Стоп». Сообщения, отправляемые в потоке, обычно имеют инкрементируемый порядковый номер, и если при принятии потока сообщений были проблемы с обработкой\было пропущено одно из них, его можно перезапросить отдельно по этому самому номеру.

Все протоколы можно разделить на две группы, (по представлению данных): символьные и бинарные .
Символьные протоколы, с которыми мне приходилось встречаться, базировались либо на XML, либо на JSON-строках. Из их достоинств можно упомянуть о более простой отладке взаимодействия (вследствие их читаемости), о простоте реализации (наличия готовых парсеров), и пресловутой универсальности.
Теперь о недостатках. Очевидно, что такие протоколы являются крайне избыточными, мизерная доля полезной информации плавает в массивной, неэффективной обёртке. При передаче любой числовой информации приходиться заниматься их конвертацией в строковое представление и обратно. Больным местом является передача бинарных данных (и хорошо, что без них бывает можно обойтись, но в ряде случаев это невозможно). Составители протоколов обычно выкручиваются применением Base64 , или даже просто передачей бинарной строки в её hex-овом представлении, по два символа на байт.
Также хочется отметить, что полная спецификация того же XML крайне обширна, и стандартные парсеры, при всей их полноте возможностей, достаточно громоздки и медлительны, поэтому распространена практика, когда отдел или контора в итоге пишет и пользуется собственным парсером.

Конечно, для определенных задач , символьные протоколы являются, если не наиболее эффективным, то по крайней мере вполне приемлимым вариантом, но мы с вами идём дальше.

Теперь бинарные протоколы. Сразу же надо вспомнить о Гулливерских войнах тупоконечников и остроконечников . Лично я симпатизирую big-endian, т.к. не считаю неявную типизацию little-endian «чем-то хорошим», да и в моей среде разработки big-endian является нативным.
Бинарные протоколы (не все, но те, которые я отношу к грамотным) можно разделить на два уровня: уровень контейнера и уровень данных. На плечи первого уровня ложится ответственность за целостность и достоверность передачи данных, а так же за доступность обнаружения сообщения в байтовом потоке, и, само собой, за хранение в себе сообщения уровня данных. Второй уровень должен содержать информацию, ради которой всё сетевое взаимодействие и затевалось, в удобном для обработки формате. Его структура в основном зависит от решаемых задач, но и по нему есть общие рекомендации (о которых ниже).

Размеры сообщений (дискретных пакетов байт, которые можно обрабатывать независимо от предыдущих и последующих принимаемых данных) бывают фиксированными и переменными . Понятно, что с фиксированным размером сообщений всё проще - вычитается, начиная с заголовка (о нём позже), определенное количество байт и отправляется на обработку. Зачастую, для обеспечения гибкости, составители таких протоколов включают в сообщение область фиксированного размера (иногда до 80% от общего объема), зарезервированное под модификации нынешнего протокола. На мой взгляд, это не самый эффективный путь обеспечения гибкости, зато избыточность появляется еще какая.
Рассмотрим сообщения переменной длины.
Тут уже можно подробней поговорить о непременном атрибуте бинарного сообщения в любом протоколе - о заголовке (Это вышеупомянутый уровень контейнера).
Обычно заголовки начинаются с константной части, позволяющей, с определенной вероятностью обнаружить начало сообщения в непрерывном байтовом потоке. Очевидно, что имеется риск появления такой константы в произвольном потоке байт, и, хотя увеличение объема этот риск снижает (я встречал константы вида 0123456789VASIA9876543210), целесообразней использовать проверки на основе подсчета контрольной суммы .
За константой обычно следует номер версии протокола, который дает нам понять, в каком формате должно происходить дальнейшее считывание (и имеем ли мы вообще возможность обработать это сообщение - вдруг такая версия нам неизвестна). Следующая важная часть заголовка: информация о самом содержимом контейнера. Указывается тип содержимого (по факту, тот же номер версии протокола для уровня данных), его длина и контрольная сумма. Имея эту информацию, можно уже без проблем и опасений считать содержимое и приступить к его разбору.
Но не прямо сразу! Заголовок должна заключать контрольная сумма его самого (исключая из расчета конечно саму контрольную сумму) - только так мы можем быть уверены в том, что считали только что не белиберду, а валидный заголовок, за которым следуют предназначенные нам данные. Не совпала контрольная сумма? Придётся искать следующее начало нового заголовка дальше по потоку…

Представим, что мы дошли до этапа, что получили наконец неискаженное сообщение уровня данных. Его структура зависит от той области задач той системы, в которой реализован ваш сетевой обмен, однако в общем виде у сообщения тоже бывает быть свой заголовочек , содержащий информацию о типе сообщения. Можно различить как общую специфику сообщения, (например «Запрос Set», «Утвердительный Ответ на Set», «Отрицательный Ответ на Set», «Запрос Get», «Ответ Get», «Потоковое сообщение»), так и конкретную область применение сообщения. Попробую привести пример с потолка:
Тип запроса: Запрос Set (0x01)
Идентификатор модуля-адресата сообщения: PowerSupplyModule (0x0A)
Идентификатор группы сообщений: UPS Management (0x02)
Идентификатор типа сообщения: Reboot (0x01)
Дальше тело сообщения может содержать информацию об адресе ИБП, который Модуль управления энергообеспечением должен перезагрузить, через сколько секунд это сделать и т.п.
На это сообщение мы рассчитываем получить ответное сообщение с типом запроса «Утвердительный Ответ» и последующими 0x0A0201 в заголовке.
Конечно, такое подробное описание типа сообщения может быть избыточным когда межсетевое взаимодействие не предусматривает большого числа команд, так что формировать структуру сообщения надо исходя из требований ТЗ.
Так же будет полезно, если сообщение с «Отрицательным Ответом» будет содержать код ошибки, из-за которой не удалось ответить на команду утвердительно.

Заканчивая своё повествование, добавлю, что тема взаимодействия приложений весьма обширна и порою холиворна(что по факту означает, что в ней нет технологии «серебряной пули»), и отмечу, что те взгляды, что я излагаю, являются лишь компиляцией из опыта по работе с отечественными и зарубежными коллегами. Спасибо за внимание!

upd.
Имел удовольствие пообщаться с критиком своей статьи, и теперь прихожу к осознанию, что я осветил вопрос со своей если можно так выразиться, «байтолюбской», точки зрения. Конечно, раз идет курс на универсальность обработки хранения и передачи данных, то в таком ключе символьные протоколы (в первую очередь говорю об XML) могут дать фору любым другим решениям. Но относительно попытки повсеместного их применения позволю себе процитировать Вирта:
Инструмент должен соответствовать задаче. Если инструмент не соответствует задаче, нужно придумать новый, который бы ей соответствовал, а не пытаться приспособить уже имеющийся.

Сетевым протоколом называется набор правил, позволяющий осуществлять соединение и обмен данными между двумя и более включёнными в сеть компьютерами. Фактически разные протоколы зачастую описывают лишь разные стороны одного типа связи; взятые вместе, они образуют так называемый стек протоколов. Названия <протокол> и <стек протоколов> также указывают на программное обеспечение, которым реализуется протокол.

  • Прикладной уровень (Application layer). Верхний (7-й) уровень модели, обеспечивает взаимодействие сети и пользователя. Уровень разрешает приложениям пользователя доступ к сетевым службам, таким как обработчик запросов к базам данных, доступ к файлам, пересылке электронной почты. Также отвечает за передачу служебной информации, предоставляет приложениям информацию об ошибках и формирует запросы к уровню представления. Пример: HTTP, POP3, SMTP.
  • Уровень представления (Presentation layer). 6-й уровень отвечает за преобразование протоколов и кодирование/декодирование данных. Запросы приложений, полученные с уровня приложений, он преобразует в формат для передачи по сети, а полученные из сети данные преобразует в формат, понятный приложениям. На уровне представления может осуществляться сжатие/распаковка или кодирование/декодирование данных, а также перенаправление запросов другому сетевому ресурсу, если они не могут быть обработаны локально.
  • Сеансовый уровень (Session layer). 5-й уровень модели отвечает за поддержание сеанса связи, что позволяет приложениям взаимодействовать между собой длительное время. Сеансовый уровень управляет созданием/завершением сеанса, обменом информацией, синхронизацией задач, определением права на передачу данных и поддержанием сеанса в периоды неактивности приложений. Синхронизация передачи обеспечивается помещением в поток данных контрольных точек, начиная с которых возобновляется процесс при нарушении взаимодействия.
  • Транспортный уровень (Transport layer). 4-й уровень модели, предназначен для доставки данных без ошибок, потерь и дублирования в той последовательности, как они были переданы. При этом неважно, какие данные передаются, откуда и куда, то есть он предоставляет сам механизм передачи. Блоки данных он разделяет на фрагменты, размер которых зависит от протокола, короткие объединяет в один, а длинные разбивает. Протоколы этого уровня предназначены для взаимодействия типа точка-точка. Пример: TCP, UDP
  • Сетевой уровень (Network layer). 3-й уровень сетевой модели OSI, предназначен для определения пути передачи данных. Отвечает за трансляцию логических адресов и имён в физические, определение кратчайших маршрутов, коммутацию и маршрутизацию, отслеживание неполадок и заторов в сети. На этом уровне работает такое сетевое устройство, как маршрутизатор.
  • Уровень звена данных (Data Link layer). Часто это уровень называется канальным. Этот уровень предназначен для обеспечения взаимодействия сетей на физическом уровне и контроля за ошибками, которые могут возникнуть. Данные, полученные с физического уровня, он упаковывает во фреймы, проверяет на целостность, если нужно исправляет ошибки и отправляет на сетевой уровень. Канальный уровень может взаимодействовать с одним или несколькими физическими уровнями, контролируя и управляя этим взаимодействием. Спецификация IEEE 802 разделяет этот уровень на 2 подуровня - MAC (Media Access Control) регулирует доступ к разделяемой физической среде, LLC (Logical Link Control) обеспечивает обслуживание сетевого уровня. На этом уровне работают коммутаторы, мосты. В программировании этот уровень представляет драйвер сетевой платы, в операционных системах имеется программный интерфейс взаимодействия канального и сетевого уровней между собой, это не новый уровень, а просто реализация модели для конкретной ОС. Примеры таких интерфейсов: ODI, NDIS
  • Физический уровень (Physical layer). Самый нижний уровень модели, предназначен непосредственно для передачи потока данных. Осуществляет передачу электрических или оптических сигналов в кабель или в радиоэфир и соответственно их приём и преобразование в биты данных в соответствии с методами кодирования цифровых сигналов. Другими словами, осуществляет интерфейс между сетевым носителем и сетевым устройством. На этом уровне работают концентраторы (хабы), повторители (ретрансляторы) сигнала и медиаконверторы. Функции физического уровня реализуются на всех устройствах, подключенных к сети. Со стороны компьютера функции физического уровня выполняются сетевым адаптером или последовательным портом.

Основные протоколы используемые в работе Интернет:

  • TCP/IP
  • IMAP4
  • Gorpher

КЛАССИФИКАЦИЯ КС ПО РАЗМЕРУ. НАЗВАНИЕ ТИПОВ КС, ИХ ПРИМЕРНАЯ ПРОТЯЖЕННОСТЬ И ПРИМЕНЕНИЕ .

Локальная сеть

Локальная сеть – это компьютерная сеть небольшой протяженности: в пределах комнаты, этажа, здания. Обычно такие сети действуют в пределах одного учреждения и имеют небольшой радиус действия: 1-10 км. Она сеть всегда является ведомственной. В настоящее время не существует четких ограничений на территориальный разброс абонентов локальной вычислительной сети. Обычно такая сеть привязана к конкретному месту. К классу локальных сетей относятся сети отдельных предприятий, фирм, банков, офисов и т.д. Локальная сеть обеспечивает высокие скорости передачи данных. А так как в этих сетях среда обычно контролируема, линии связи короткие, элементы структуры однородные, то частота ошибок в них низкая и протоколы обмена упрощены. В локальных сетях обычно не используются средства коммуникации общего назначения (телефонные линии) для организации обмена информацией. Дополнительное преимущество такой сети заключается в значительной экономии ресурсов. Так, вместо того, чтобы иметь принтер для каждого компьютера, можно иметь только один принтер. Любой компьютер в сети мог послать информацию для печати на этот принтер

Основные компоненты локальной сети: несколько ПК, снабженных сетевым адаптером, или сетевой картой; среда передачи, объединяющая необходимые узлы; сетевое программное обеспечение. Для объединения компьютеров в локальную сеть требуется вставить в каждый подключаемый к сети компьютер сетевой адаптер (контроллер), который позволяет компьютеру получать информацию из локальной сети и передавать данные в сеть, а также соединить компьютеры кабелями, по которым происходит передача данных между компьютерами и другими подключенными к сети устройствами (принтерами, сканерами и т.д.). В некоторых типах сетей кабели соединяют компьютеры непосредственно, в других соединение кабелей осуществляется через специальные устройства-концентраторы (или hub), коммутаторы и др. В небольших сетях обычно компьютеры соединяются кабелями с концентратором, который и передает сигналы от одних подключенных к нему компьютеров к другим. Технические средства определяют лишь потенциальные возможности компьютерных сетей. Истинные же ее возможности определяет программное обеспечение. Что же дают локальные сети? экономию места в памяти, т.к. многие пользователи применяют одни и те же программные продукты; хорошую систему защиты при записи информации; обеспечение связи между отдельными пользователями через компьютерную почту.

Региональные сети

Региональные сети – это сети, существующие обычно в пределах города, района, области, страны. Они связывают абонентов, расположенных на значительном расстоянии друг от друга. Обычно расстояние между абонентами региональной вычислительной сети составляет десятки-сотни километров. Они являются объединением нескольких локальных сетей и частью некоторой глобальной. Особой спецификой по отношению к глобальной не отличаются. Региональные вычислительные сети имеют много общего с локальными, но они, по многим параметрам, сложнее их. Например, помимо обмена данными и голосового обмена, региональные вычислительные сети могут передавать видео- и аудиоинформацию. Эти сети разработаны для поддержки больших расстояний, чем локальные вычислительные сети. Они могут использоваться для связывания нескольких локальных вычислительных сетей в высокоскоростные интегрированные сетевые системы. Региональные вычислительные сети сочетают лучшие характеристики локальной (низкий уровень ошибок, высокая скорость передачи) с большей географической протяженностью. В последнее время стали еще выделять класс корпоративных сетей. Они охватывают обычно крупные корпорации. Их масштаб и структура определяются потребностями предприятий – владельцев.

Глобальные сети

Глобальная вычислительная сеть объединяет абонентов, расположенных в различных странах, на различных континентах. Взаимодействие между абонентами такой сети может осуществляться на базе телефонной линии связи, радиосвязи и систем спутниковой связи. Глобальные вычислительные сети позволяют решить проблему объединения информационных ресурсов всего мира и организации доступа к этим ресурсам. Для подключения к удаленным компьютерам и компьютерным сетям используются телефонные сети. Процесс передачи данных по телефонным линиям должен происходить в форме электрических колебаний – аналога звукового сигнала, в то время как в компьютере информация хранится в виде кодов. Для того чтобы передать информацию от компьютера через телефонную линию, коды должны быть преобразованы в электрические колебания. Этот процесс носит название модуляции. Для того чтобы адресат смог почитать на своем компьютере то, что ему отправлено, электрические колебания должны быть обратно превращены в машинные коды – демодуляция. Устройство, которое осуществляет преобразования данных из цифровой формы, в которой они хранятся в компьютере, в аналоговую (электрические колебания), в которой они могут быть переданы по телефонной линии, и обратно, называется модем (сокращенно от МОдулятор ДЕМодуляции). Компьюте, в этом случае, должен иметь специальную телекоммуникационную программу, которая управляет модемом, а также отправляет и получает последовательности сигналов передаваемой информации. Глобальные вычислительные сети создаются путем объединения локальных и региональных вычислительных сетей. Они представляют собой конгломерат различных технологий. По сравнению с локальной вычислительной сетью большинство глобальных отличают медленная скорость передачи и более высокий уровень ошибок. Новые технологии в области глобальных вычислительных сетей нацелены на разрешение этих проблем. Глобальные сети, кроме того, что они охватывают очень большие территории, имеют и ряд других особенностей по сравнению с локальной сетью. Глобальные сети, в основном, используют в качестве каналов связи телефонные линии – это медленные каналы с высоким уровнем ошибок. Однако в настоящее время все более внедряются высокоскоростные оптоволоконные и радиоспутниковые каналы связи.

Предварительная настройка BIOS

Смысл настройки BIOS состоит в том, чтобы загрузка компьютера началась с того устройства, которое содержит дистрибутив операционной системы. В нашем случае нужно сделать так, чтобы компьютер загружался с DVD -привода или USB -накопителя. Для этого будем использовать BIOS

  • Использование DVD-привода

    Использование DVD -привода

    Применение DVD -привода для установки операционной системы - стандартный подход, который выбирает большинство пользователей. Никаких особых требований при этом нет, единственное, что нужно, - сам DVD -привод, поскольку в силу размера дистрибутива операционной системы для установки используется именно DVD , a не CD .

  • Использование FLASH-накопителя

    Использование FLASH -накопителя

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

  • Теоретические сведения о сетях

    Основные протоколы передачи данных

    Основные протоколы передачи данных

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

    Стеки протоколов

    Как уже упоминалось выше, часто за организацию работы всех уровней модели ISO/OSI отвечают стеки протоколов. Плюсом использования стеков протоколов является то, что все протоколы, входящие в стек, разработаны одним производителем, то есть они способны работать максимально быстро и эффективно.

    За время существования сетей было разработано несколько различных стеков протоколов, среди которых наиболее популярными являются TCP/IP, IPX/SPX, NetBIOS/SMB, Novell NetWare , DECnet и др.

    В составе стеков находятся протоколы, работающие на разных уровнях модели ISO/OSI, однако обычно выделяют только три типа протоколов: транспортный , сетевой и прикладной .

    Плюсом использования стеков протоколов является то, что протоколы, работающие на нижних уровнях, применяют давно отлаженные и популярные сетевые протоколы, такие как Ethernet, FDDI и т д. Благодаря аппаратной реализации этих протоколов становится возможным использовать одно и то же оборудование для разных типов сетей и тем самым достигать их совместимости на аппаратном уровне. Что касается высокоуровневых протоколов, то каждый из стеков имеет свои преимущества и недостатки, и очень часто случается так, что нет жесткой привязки «один протокол - один уровень», то есть один протокол может работать сразу на двух-трех уровнях.

    Привязка

    Важным моментом в функционировании сетевого оборудования, в частности сетевого адаптера, является привязка протоколов. На практике она позволяет использовать разные стеки протоколов при обслуживании одного сетевого адаптера. Например, можно одновременно использовать стеки TCP/IP и IPX/SPX, и если при попытке установления связи с адресатом с помощью первого стека произошла ошибка, автоматически происходит переключение на использование протокола из следующего стека. В этом случае важным моментом является очередность привязки, поскольку она однозначно влияет на использование того или иного протокола из разных стеков.

    Вне зависимости от того, какое количество сетевых адаптеров установлено в компьютере, привязка может осуществляться как «один к нескольким», так и «несколько к одному», то есть один стек протоколов можно привязать сразу к нескольким адаптерам или несколько стеков к одному адаптеру.

    TCP/IP

    Стек протоколов TCP / IP (Transmission Control Protocol / Internet Protocol ) на сегодня является наиболее распространенным и функциональным. Он работает в локальных сетях любых масштабов. Кроме того, это единственный из протоколов, который позволяет работать глобальной сети Интернет.

    Протокол был создан в 70-х годах прошлого века управлением Министерства обороны США. Именно с его подачи началась разработка протокола, целью которого было соединение любых двух компьютеров, как бы далеко они ни находились. Конечно, они преследовали свою цель - обеспечить постоянную связь с центром управления, даже если все вокруг будет разрушено в результате военных действий. В итоге была образована глобальная сеть ARPAnet, которую министерство активно использовало в своих целях.

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

    В стек протоколов TCP/IP входит достаточно много протоколов, работающих на различных уровнях, но свое название он получил благодаря двум протоколам - TCP и IP.

    TCP (Transmission Control Protocol) - транспортный протокол, предназначенный для управлением передачей данных в сетях, использующих стек протоколов TCP/ IP. IP (Internet Protocol) - протокол сетевого уровня, предназначенный для доставки данных в составной сети с использованием одного из транспортных протоколов, например TCP или UDP. Нижний уровень стека TCP/IP использует стандартные протоколы передачи данных, что делает возможным его применение в сетях с использованием любых сетевых технологий и на компьютерах с любой операционной системой.

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

    Недостатком TCP/IP-протокола является сложность администрирования сети. Так, для нормального функционирования сети требуется наличие дополнительных серверов, например DNS, DHCP и т. д., поддержание работы которых и занимает большую часть времени системного администратора.

    IPX/SPX

    Стек протоколов IPX/SPX (Internetwork Packet Exchange/Sequenced Packet Exchange) является разработкой и собственностью компании Novell. Он был разработан для нужд операционной системы Novell NetWare, которая еще до недавнего времени занимала одну из лидирующих позиций среди серверных операционных систем.

    Протоколы IPX и SPX работают на сетевом и транспортном уровнях модели ISO/ OSI соответственно, поэтому отлично дополняют друг друга. Протокол IPX может передавать данные с помощью датаграмм, используя для этого информацию о маршрутизации в сети.

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

    К сожалению, стек протоколов IPX/SPX изначально ориентирован на обслуживание сетей небольшого размера, поэтому в больших сетях его использование малоэффективно: излишнее использование широковещательного вещания на низкоскоростных линиях связи недопустимо.

    NetBIOS/SMB

    Достаточно популярный стек протоколов, разработкой которого занимались компании IBM и Microsoft, соответственно, ориентированный на использование в продуктах этих компаний. Как и у TCP/IP, на физическом и канальном уровне стека NetBIOS/SMB работают стандартные протоколы, такие как Ethernet, Token Ring и другие, что делает возможным его использование в паре с любым активным сетевым оборудованием. На верхних же уровнях работают протоколы NetBIOS (Network Basic Input/Output System) и SMB (Server Message Block).

    Протокол NetBIOS был разработан в середине 80-х годов прошлого века, но вскоре был заменен на более функциональный протокол NetBEUI (NetBIOS Extended User Interface), позволяющий организовать очень эффективный обмен информацией в сетях, состоящих не более чем из 200 компьютеров.

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

    Главные плюсы протокола NetBEUI - скорость работы и очень малые требования к ресурсам. Если требуется организовать быстрый обмен данными в небольшой сети, состоящей из одного сегмента, лучшего протокола для этого не найти. Кроме того, для доставки сообщений установленное соединение не является обязательным требованием: в случае отсутствия соединения протокол использует датаграммный метод, когда сообщение снабжается адресом получателя и отправителя и «пускается в путь», переходя от одного компьютера к другому.

    Однако NetBEUI обладает и существенным недостатком: он полностью лишен понятия о маршрутизации пакетов, поэтому его использование в сложных составных сетях не имеет смысла.

    Что касается протокола SMB (Server Message Block), то с его помощью организуется работа сети на трех самых высоких уровнях - сеансовом, уровне представления и прикладном уровне. Именно при его использовании становится возможным доступ к файлам, принтерам и другим ресурсам сети. Данный протокол несколько раз был усовершенствован (вышло три его версии), что позволило применять его даже в таких современных операционных системах, как Microsoft Vista и Windows 7. Протокол SMB универсален и может работать в паре практически с любым транспортным протоколом, например TCP/IP и SPX.

    HTTP

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

    Протокол HTTP (HyperText Transfer Protocol) разрабатывался специально для Интернета: для получения и передачи данных по Интернету. Он работает по технологии «клиент - сервер», которая подразумевает, что есть клиенты, запрашивающие информацию (например, просмотр содержимого веб-страницы), и серверная часть, которая обрабатывает эти запросы и отсылает ответ.

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

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

    В своей работе протокол использует понятие URI (Uniform Resource Identifier) - уникального идентификатора ресурса, в качестве которого обычно выступает адрес веб-страницы, файла или любого другого логического объекта. При этом URI поддерживает работу с параметрами, что позволяет расширять функциональность протокола. Так, используя параметры, можно указать, в каком формате и кодировке вы хотите получить ответ от сервера.

    Это в свою очередь позволяет передавать с помощью HTTP не только текстовые документы, но и любые двоичные данные.

    Основным недостатком протокола HTTP является избыточный объем текстовой информации, необходимой для того, чтобы клиент мог правильно отобразить полученный от сервера ответ. При большом объеме содержимого веб-страницы это может создавать излишне большой трафик, что ухудшает восприятие информации. Кроме того, протокол полностью лишен каких-либо механизмов сохранения состояния, что делает невозможной навигацию по веб-страницам посредством одного лишь HTTP-протокола. По этой причине вместе с HTTP-протоколом используются сторонние протоколы либо пользователю необходимо работать с браузером, обрабатывающим HTTP-запросы.

    FTP

    Протокол FTP (File Transfer Protocol) является «родным братом» протокола HTTP, только, в отличие от последнего, он работает не с текстовыми или двоичными данными, а с файлами.

    Этот протокол - один из старейших: он появился еще в начале 70-х годов прошлого века. Как и HTTP, он работает на прикладном уровне и в качестве транспортного протокола использует TCP-протокол. Его основная задача - передача файлов с/на FTP-сервер.

    FTP-протокол представляет собой набор команд, которые описывают правила подключения и обмена данными. При этом команды и непосредственно данные передаются с использованием различных портов. В качестве стандартных портов используются порты 21 и 20: первый - для передачи данных, второй - передачи команд. Кроме того, порты могут быть динамическими.

    Размер файлов, передаваемых с помощью FTP-протокола, не лимитируется. Предусмотрен также механизм докачки файла, если в процессе передачи произошел обрыв связи.

    Главным недостатком FTP-протокола является отсутствие механизмов шифрования данных, что позволяет перехватить начальный трафик и определить с его помощью имя пользователя, а также его пароль подключения к FTP-серверу. Чтобы избежать подобной ситуации, параллельно используется протокол SSL, с помощью которого данные шифруются.

    РОРЗ и SMTP

    Использование электронной почты для обмена сообщениями уже давно является альтернативой обычной почте. Электронная почта гораздо эффективнее и быстрее. Ее использование стало возможным благодаря протоколам POP3 (Post Office Protocol Version 3) и SMTP (Simple Mail Transfer Protocol).

    Протокол POP3 работает на прикладном уровне и применяется для получения электронных сообщений из почтового ящика на почтовом сервере. При этом он использует один из портов и транспортный протокол TCP.

    Сеанс связи с почтовым сервером разбит на три этапа: авторизация , транзакция и обновление . Авторизации пользователя происходит при соединении с почтовым сервером, для чего может использоваться любой почтовый клиент, поддерживающий работу с протоколом POP3. На этапе транзакции клиент запрашивает у сервера выполнение необходимого действия, например получения информации о количестве сообщений, получения самих сообщения либо их удаления. Процесс обновления предназначен для выполнения запроса клиента. После окончания обновления сеанс связи завершается до поступления следующего запроса на соединение.

    Протокол POP3 позволяет только получать электронные сообщения, а для их отправки приходится использовать другой протокол, в качестве которого чаще всего применяется SMTP, точнее, его усовершенствованная версия - ESMTP (Extended SMTP).

    Как и POP3, протокол SMTP работает на прикладном уровне, поэтому ему необходимы услуги транспортного протокола, в роли которого выступает протокол TCP. При этом отправка электронных сообщений также происходит с использованием одного из портов, например 25 порта.

    IMAP

    IMAP (Interactive Mail Access Protocol) - еще один почтовый протокол, созданный на основе протокола POP3. Он был разработан позже протокола POP3. В результате в нем были учтены все недостатки и добавлено большое количество новых востребованных функций.

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

    Еще одна немаловажная функция - механизм оптимизации использования каналов, по которым передаются сообщения. Эти каналы не всегда быстрые и незагруженные, поэтому наличие такой функции существенно облегчает жизнь пользователя. Имеется также возможность передачи сообщений по небольшим частям, что очень полезно, когда размер письма большой, например 5-10 Мбайт.

    SLIP

    Протокол передачи данных SLIP (Serial Line Internet Protocol) создан специально для организации постоянного подключения к Интернету с использованием имеющейся телефонной линии и обычного модема. Из-за высокой стоимости этот тип подключения могут позволить себе немногие пользователи. Как правило, такое подключение создается в организациях, имеющих сервер, на котором находится веб-страница организации и другие ресурсы (база данных, файлы).

    Данный протокол работает вместе с протоколом TCP/IP и находится на более низком уровне. Перед тем как информация с модема поступит на обработку TCP/ IP-протоколу, ее предварительно обрабатывает SLIP-протокол. Выполнив все необходимые действия, он создает другой пакет и передает его TCP/IP.

    РРР

    Протокол РРР (Point-to-Point Protocol) выполняет ту же работу, что и описанный выше SLIP. Однако он лучше выполняет эти функции, так как обладает дополнительными возможностями. Кроме того, в отличие от SLIP, PPP может взаимодействовать не только с TCP/IP, но и с IPX/SPX, NetBIOS, DHCP, которые широко используются в локальных сетях. Протокол PPP более распространен также благодаря использованию на интернет-серверах с установленной операционной системой семейства Windows NT (SLIP применяют для соединения с серверами, работающими в операционной системе UNIX).

    Х.25

    Протокол Х.25, который был создан в 1976 году и усовершенствован в 1984 году, работает на физическом, канальном и сетевом уровнях модели взаимодействия ISO/OSI. Его разработкой занимался консорциум, состоящий из представителей многих телефонных компаний, и создавали его специально для использования на существующих телефонных линиях.

    Когда разрабатывался X.25, цифровая телефонная линия была редкостью - использовалась в основном аналоговая. По этой причине в нем присутствует система обнаружения и коррекции ошибок, что существенно повышает надежность связи. В то же время эта система замедляет скорость передачи данных (максимальная - 64 Кбит/с). Однако этот факт не мешает использовать его там, где прежде всего требуется высокая надежность, например в банковской системе.

    Frame Relay

    Frame Relay - еще один протокол, предназначенный для передачи данных по телефонной линии. Помимо высокой надежности (как у X.25), он обладает дополнительными полезными нововведениями. Поскольку передаваемые данные могут иметь формат видео, аудио или содержать электронную информацию, есть возможность выбирать приоритет передаваемого содержимого.

    Еще одна особенность протокола Frame Relay - его скорость, которая достигает 45 Мбит/с.

    AppleTalk

    Протокол AppleTalk является собственностью компании Apple Computer. Он был разработан для установки связи между компьютерами Macintosh.

    Как и TCP/IP, AppleTalk представляет собой набор протоколов, каждый из которых отвечает за работу определенного уровня модели ISO/OSI.

    В отличие от протоколов TCP/IP и IPX/SPX, стек протокола AppleTalk использует собственную реализацию физического и канального уровней, а не протоколы модели ISO/OSI.

    Рассмотрим некоторые протоколы стека AppleTalk.

    · DDP (Datagram Delivery Protocol) - отвечает за работу сетевого уровня. Его основное предназначение - организация и обслуживание процесса передачи данных без предварительной установки связи между компьютерами.

    · RTMP (Routing Table Maintenance Protocol) - работает с маршрутными таблицами AppleTalk. Любая такая таблица содержит информацию о каждом сегменте, куда возможна доставка сообщений. Таблица состоит из номеров маршрутизаторов (порта), которые могут доставить сообщение к выбранному компьютеру, количества маошрутизаторов, параметров выбранных сегментов сети (скорости, загруженности и т. п).

    · NBP (Name Binding Protocol) - отвечает за адресацию, которая сводится к привязке логического имени компьютера к физическому адресу в сети. Кроме процесса привязки имени, он отвечает за регистрацию, подтверждение, стирание и поиск этого имени.

    · ZIP (Zone Information Protocol) - работает в паре с протоколом NBP, помогая ему производить поиск имени в рабочих группах, или зонах. Для этого он использует информацию ближайшего маршрутизатора, который создает запрос по всей сети, где могут находиться входящие в заданную рабочую группу компьютеры.

    · ATP (AppleTalk Transaction Protocol) - один из протоколов транспортного уровня, который отвечает за транзакции. Транзакция - это набор из запроса, ответа на этот запрос и идентификационного номера, который присваивается данному набору. Примером транзакции может быть сообщение о доставке данных от одного компьютера другому. Кроме того, ATP умеет делать разбивку больших пакетов на более мелкие с последующей их сборкой после подтверждения о приеме или доставке.

    · ADSP (AppleTalk Data Stream Protocol) - протокол , аналогичный ATP. Он отвечает за доставку пакетов. Однако в данном случае осуществляется не одна транзакция, а гарантированная доставка, которая может повлечь за собой несколько транзакций. Кроме того, протокол гарантирует, что данные при доставке не будут утеряны или продублированы.

    Информационные ресурсы в Интернете

    • протоколы передачи данных, Адресация в сети, URL
    • Web-страницы и Web-узлы, порталы. Web - пространство.
    • Создание Web-страниц. Языки Web-публикаций.

    · Публикации сайтов в Интернете. Представительство

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

    Протокол - это совокупность правил, в соответствии с которыми происходит передача информации через сеть .

    Существуют два типа протоколов:

    · Базовый (TCP/IP), отвечающий за физическую пересылку электронных сообщений;

    · Прикладные , отвечающие за работу специализированных служб Интернет (http, ftp, telnet и т.д.)

    Базовый протокол

    Протокол - это особый язык общения между компьютерами, разработанный программистами. Базовый протокол в сети Интернет - это TCP/IP (Transmission Control Protocol & Internet Protocol ) (протокол контроля передачи + Интернет-протокол).

    Все компьютеры, подключенные к сети Интернет, понимают и поддерживают этот протокол. Протокол TCP/IP служит для разбиения информации на части (пакеты) - и передачи их по линиям связи . Все эти операции протокол выполняет автоматически, без участия пользователя. На самом деле TCP/IP состоит их двух компонентов - TCP и IP , и включает в себя также массу других протоколов.

    Протокол IP (Internet protocol) - это протокол маршрутизации (доставляет информацию по назначению).

    Этот протокол включает правила налаживания и поддержания связи в сети, правила обращения с IP-пакетами и их обработки, описания сетевых пакетов семейства IP (их структура и т. п.).

    Протокол TCP (Transmission Control Protocol) - это транспортный протокол (управляет передачей данных).

    Кратко

    Данные, предназначенные для пересылки. Разбиваются протоколом TCP на отдельные части –пакеты. Каждый пакет имеет свой порядковый номер и адрес , по которому необходимо доставить информацию. Пакеты могут идти разными маршрутами, но в конце пути обязательно соединяются в одно целое с помощью протокола TCP. Если какой-то пакет отсутствует (потерялся) или дошел с искажениями, то он пересылается заново.

    Подробно

    Протокол TCP занимается проблемой пересылки больших объемов информации, основываясь на возможностях протокола IP.

    TCP делит информацию , которую надо переслать, на несколько частей . Нумерует каждую часть , чтобы позже восстановить порядок . Чтобы пересылать эту нумерацию вместе с данными, он кладет каждый кусочек информации в конверт, который содержит соответствующую информацию. Это и есть TCP-конверт. Получившийся TCP-пакет помещается в отдельный IP-конверт и получается IP-пакет, с которым сеть уже умеет обращаться.

    Получатель распаковывает IP-конверты и видит TCP-конверты , распаковывает их и помещает данные в последовательность частей в соответствующее место. Если чего-то не достает, он требует переслать этот кусочек снова. В конце концов, информация собирается в нужном порядке и полностью восстанавливается. Вот теперь этот массив пересылается выше к пользователю (на диск, на экран, на печать).

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

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

    Прикладные протоколы

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

    Название протокола Расшифровка Назначение

    · HTTP (Hyper Text Transfer Protocol) – Протокол передачи гипертекста

    · FTP (File Transfer Protocol) – протокол передачи файлов

    · SMTP (Simple Mail Transfer Protocol) – Простой протокол отправки электронных писем

    · POP3 (Post Office Protocol) – Протокол получения электронных писем

    · NNTP (News Net Transfer Protocol) – Протокол телеконференций

    · TELNET – Протокол для подключения к удаленному компьютеру

    · WAIS (Wide-Area Information Servers) – протокол поиска информации в базах данных

    · WAP (Wireless Application Protocol) – протокол предоставления доступа к службам Интернета пользователям беспроводных устройств

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

    Сетевые протоколы предписывают правила работы компьютерам, которые подключены к сети. Они строятся по многоуровневому принципу. Протокол некоторого уровня определяет одно из технических правил связи. В настоящее время для сетевых протоколов используется модель OSI.

    Модель OSI – это семиуровневая логическая модель работы сети. Модель OSI реализуется группой протоколов и правил связи, организованных в несколько уровней.

    На физическом уровне определяются физические (механические, электрические, оптические) характеристики линий связи.

    На канальном уровне определяются правила использования физического уровня узлами сети.

    Сетевой уровень отвечает за адресацию и доставку сообщений.

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

    Задача сеансного уровня - координация связи между двумя прикладными программами, работающими на разных рабочих станциях.

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

    Прикладной уровень обеспечивает удобный интерфейс связи сетевых программ пользователя.

    Протокол TCP/IP - это два протокола нижнего уровня, являющиеся основой связи в Интернет. Протокол TCP (Transmission Control Protocol) разбивает передаваемую информацию на порции и нумерует все порции. С помощью протокола IP (Internet Protocol) все части передаются получателю. Далее с помощью протокола TCP проверяется, все ли части получены. При получении всех порций TCP располагает их в нужном порядке и собирает в единое целое.

    Рассмотрим наиболее известные протоколы, используемые в сети Интернет.

    HTTP (Hyper Text Transfer Protocol) – это протокол передачи гипертекста. Протокол HTTP используется при пересылке Web-страниц с одного компьютера на другой.

    FTP (File Transfer Protocol)- это протокол передачи файлов со специального файлового сервера на компьютер пользователя. FTP дает возможность абоненту обмениваться двоичными и текстовыми файлами с любым компьютером сети. Установив связь с удаленным компьютером, пользователь может скопировать файл с удаленного компьютера на свой или скопировать файл со своего компьютера на удаленный.

    POP (Post Office Protocol) - это стандартный протокол почтового соединения. Серверы POP обрабатывают входящую почту, а протокол POP предназначен для обработки запросов на получение почты от клиентских почтовых программ.

    Стандарт SMTP (Simple Mail Transfer Protocol) задает набор правил для передачи почты. Сервер SMTP возвращает либо подтверждение о приеме, либо сообщение об ошибке, либо запрашивает дополнительную информацию.

    UUCP (Unix to Unix Copy Protocol) - это ныне устаревший, но все еще применяемый протокол передачи данных, в том числе для электронной почты. Этот протокол предполагает использование пакетного способа передачи информации, при котором сначала устанавливается соединение клиент- сервер и передается пакет данных, а затем автономно происходит его обработка, просмотр или подготовка писем.

    TELNET – это протокол удаленного доступа. TELNET дает возможность абоненту работать на любой ЭВМ сети Интернет, как на своей собственной, то есть запускать программы, менять режим работы и т.д. На практике возможности лимитируются тем уровнем доступа, который задан администратором удаленной машины.

    Похожие публикации