Прежде чем переходить к рассмотрению общих принципов функционирования сети Интернет, необходимо прежде осветить важнейший стандарт в этой сфере. В начале 80-х годов рядом международных организаций по стандартизации, включая International Organization for Standardization (ISO), была разработана стандартная модель взаимодействия открытых систем (Open System Interconnection или OSI). Модель OSI была разработана на основании опыта, полученного при создании компьютерных сетей, в основном глобальных, и полное описание этой модели занимает более 1000 страниц текста[9]. Модель OSI определяет уровни взаимодействия систем в сетях с коммутацией пакетов, стандартные названия уровней и функции, которые должен выполнять каждый уровень, и описывает только системные средства взаимодействия, не включая при этом средства взаимодействия приложений конечных пользователей. В модели OSI средства взаимодействия разделены на семь уровней – прикладной, представления, сеансовый, транспортный, сетевой, канальный и физический.
Физический уровень (physical layer) имеет дело с передачей потока битов по физическим каналам связи. Функции физического уровня реализуются на всех без исключения устройствах, которые подключены к сети. Единицей нагрузки физического уровня является бит или, если быть более точным, поток битов, которые нужно доставить – физический уровень не обрабатывает информацию.
Канальный уровень (data link layer) обеспечивает прозрачность соединения для сетевого уровня и ответственен за доставку данных адресату и их целостность. Для этого он выполняет следующие функции: устанавливает логическое соединение между взаимодействующими узлами, согласовывает в рамках соединения скорости передатчика и приемника информации и обеспечивает надежную передачу данных, а также обнаружение и коррекцию ошибок. Единицей нагрузки канального уровня является кадр (frame), состоящий из поля данных и заголовка. На этом уровне осуществляется адресация в сети посредством реализации еще одной функции канального уровня связи – функции управления доступом к среде (Medium Access Control или MAC). Следует отметить, что протокол канального уровня работает в пределах сети, входящей в виде одного из элементов в более крупную сеть, части которой объединены протоколами сетевого уровня. Адреса, с которыми работает протокол канального уровня, используются для доставки кадров только в пределах этой сети, а для перемещения единиц нагрузки между сетями применяется протокол и адреса следующего – сетевого – уровня.
Сетевой уровень (network layer) служит для образования единой транспортной системы и называемой составной сетью, или интернетом. Следует отметить, что Интернет (с прописной буквы) является реализацией как раз составной сети, построенной на основе технологии TCP/IP. Единицей нагрузки сетевого уровня является пакет (packet), заголовок которого имеет унифицированный формат, не зависящий от формата единиц нагрузки предыдущего уровня. Функции сетевого уровня реализуются группой протоколов и специальными устройствами – маршрутизаторами, посредством которых осуществляется физическое соединение сетей. Для того чтобы протоколы сетевого уровня могли доставлять пакеты любому узлу составной сети, эти узлы должны иметь уникальные в пределах этой составной сети адреса – такие адреса называются глобальными или сетевыми. На сетевом уровне определяются два вида протоколов – маршрутизируемые протоколы (реализуют продвижение пакетов через сеть) и маршрутизирующие протоколы (с их помощью осуществляется выбор маршрута движения пакетов).
Транспортный уровень (transport layer) обеспечивает приложениям и верхним уровням – прикладному, представления и сеансовому – передачу данных с соответствующей степенью надежности. Единицей нагрузки транспортного уровня является сегмент (segment) / датаграмма (datagram). Все протоколы, начиная с транспортного уровня, реализуются уже программными средствами устройств сети – компонентами их операционных систем. К транспортным протоколам относятся TCP и UDP, о которых речь пойдет далее.
Следующие три уровня работают одновременно на нескольких уровнях модели OSI, поэтому нет четкого разделения, в частности, на сеансовый и представительский уровни.
Сеансовый уровень (session layer) управляет взаимодействием участников сети, в том числе фиксирует активность каждой из сторон и предоставляет средства синхронизации сеанса. Благодаря этому протоколу в ходе передач данных стало возможным сохранять информацию о состоянии этих передач, чтобы в случае отказа можно было вернуться к передаче данных с прерванного момента, а не начинать сначала. Единицей нагрузки сеансового уровня являются данные (data).
Уровень представления (presentation layer) обеспечивает представление передаваемой по сети информации без изменения ее содержания. За счет этого уровня передаваемая прикладным уровнем одной системы информация всегда понятна прикладному уровню другой системы. На этом уровне также выполняется шифрование и дешифрование данных, например, посредством протокола SSL (Secure Socket Layer). Единицей нагрузки уровня представления являются данные (data).
Прикладной уровень (application layer) представляет собой набор разнообразных протоколов, с помощью которых пользователи сети получают доступ к общим ресурсам – файлам, принтерам, сайтам. Единицей нагрузки прикладного уровня являются данные (data). Это самый многочисленный и разнообразный уровень, в рамках которого выполняются все высокоуровневые протоколы. Самыми распространенными протоколами этого уровня являются почтовые протоколы (SMTP, IMAO, POP3), протоколы доступа к файлам (FTP, NFS) и протокол передачи гипертекстовых сообщений (HTTP).
Основой работы Интернета и обеспечения взаимодействия различных устройств являются протоколы адресации – это «клей, который скрепляет всю сеть Интернет»[10]. В настоящее время стандартной технологией в этой сфере является стек[11] протоколов TCP/ IP. Этот протокол выполняет три основные функции – согласование использования адресов различных типов, т. е. отображение адресов различных типов друг на друга (например, доменного имени на IP-адрес или локального адреса на глобальный); обеспечение уникальности адресов в сети Интернет (обеспечивается однозначность адресации в пределах Интернета, сети, подсети и т. д.); и конфигурирование сетевых интерфейсов и сетевых приложений.
Следует отметить, что в рамках стека протоколов TCP/IP любая сеть, входящая в составную сеть, рассматривается как средство транспортировки пакетов данных между двумя соседними сетями. Каждый протокол оперирует определенной единицей передаваемых данных, названия которых, как правило, закрепляются в существующих стандартах (см. рис. 1).
Рис. 1. Протокольные единицы данных в TCP/IP
Стек протоколов TCP/IP состоит из 4 основных уровней – прикладного, транспортного, сетевого и уровня сетевых интерфейсов. Каждый из этих уровней соответствует уровням модели OSI (см. рис. 2).
Рис. 2. Соотношение уровней модели OSI и TCP/IP
Прикладной уровень TCP/IP соответствует трем верхним уровням модели OSI (прикладному, представления и сеансовому) и состоит, в частности, из протоколов передачи данных (File Transfer Protocol, FTP), передачи почты (Simple Mail Transferring Protocol, SMTP), передачи гипертекста (Hypertext Transfer Protocol, HTTP).
Транспортный уровень, соотносящийся с транспортным уровнем модели OSI, представлен двумя важнейшими для функционирования сети, в том числе блокчейн, протоколами – протоколом управления передачей (Transmission Control Protocol, TCP) и протоколом пользовательских дейтаграмм (Usar Datagram Protocol, UDP). Для обеспечения надежной доставки данных от пользователя к пользователю протокол TCP предусматривает установление логического соединения, что позволяет ему нумеровать пакеты, подтверждать их прием, в случае потери организовывать повторные передачи, распознавать и уничтожать дубликаты, доставлять на прикладной уровень (например, при использовании FTP) пакеты в том порядке, в котором они были отправлены, что обеспечивает целостность и машиночитае-мость отправляемых данных.