Больше не нужно искать работу мечты — присоединяйтесь к команде Клауда

Сетевые протоколы: для чего используются и описание востребованных правил

Команда Timeweb Cloud
Команда Timeweb Cloud
Наши инженеры, технические писатели, редакторы и маркетологи
11 октября 2022 г.
5417
16 минут чтения
Средний рейтинг статьи: 2.8

IP Kvm Через Qemu (1)

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

  • согласно HTTP браузер формирует сообщение для сервера;
  • согласно DNS браузер узнает IP-адрес сайта по его доменному имени;
  • согласно TCP устанавливается соединение и гарантируется целостность передачи данных;
  • согласно IP осуществляется адресация в сети;
  • согласно Ethernet осуществляется физическая передача данных между устройствами в сети.

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

Основная терминология

В этом разделе мы введем основные сетевые термины, необходимые для дальнейшего повествования.

Сеть — это совокупность цифровых устройств и систем, которые соединены друг с другом (физически или логически) и обмениваются данными. Элементами сети могут выступать серверы, компьютеры, телефоны, роутеры, умная лампочка с Wi-Fi и так до бесконечности. Размер сети может быть каким угодно — два соединенных кабелем устройства образуют сеть. Данные, передаваемые по сетям, оформляются в пакеты* — специальные блоки данных. За правила создания этих блоков отвечают соответствующие протоколы.

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

Узел сети — это устройство, являющееся частью компьютерной сети. Узлы можно разделить на оконечные и промежуточные:

  • Оконечные узлы — это узлы, которые отправляют и/или принимают какие-либо данные. Простыми словами, это устройства, которые являются получателем или источником информации.
  • Промежуточные узлы — это узлы, которые соединяют оконечные узлы между собой. 

Например, смартфон через Wi-Fi отправляет запрос к серверу. Смартфон и сервер — оконечные узлы, а Wi-Fi-роутер — это промежуточный узел. В зависимости от расположения узлов и их количества сеть можно классифицировать как:

  • Глобальную. Сеть называют глобальной, если она охватывает весь мир. Например, всем знакомый интернет — это глобальная сеть.
  • Локальную. Так говорят о сети, которая объединяет несколько устройств в рамках небольшого пространства. Если у вас дома есть Wi-Fi, то телефон, компьютер и ноутбук — это локальная сеть. А роутер (промежуточный узел) выполняет роль «мостика» к глобальной сети. Исключением из территориального критерия можно назвать сети космических устройств (орбитальных станций, спутников и т.п.).
  • Распределенная. Это сеть, узлы которой территориально распределены. 

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

Модель OSI

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

Более важным является то, что такое положение дел было проблемой. Сети, которые должны были объединять компьютеры, из-за архитектурных отличий создавали себе преграды для расширения. В 1977 году задачу по решению этой проблемы взяла на себя организация ISO (International Organization for Standardization) — международная организация по стандартизации. В течение 7 лет эта организация изучала реализации сетей того периода и в 1984 году представила модель OSI.

OSI — это аббревиатура Open Systems Interconnection, которая буквально переводится как «Взаимодействие открытых систем». Не следует путать «открытость» систем с понятием Open Source: система считается открытой, если она построена на основе общедоступных спецификаций,которые позволяет общаться двум системам вне зависимости от их архитектуры.

Модель состоит из 7 сетевых уровней, каждому из которых отведена своя роль и задачи. Разберем каждый из них.

Физический уровень (Physical Layer)

На этом уровне решаются вопросы, связанные с физическими аспектами передачи данных. Метод передачи данных, характеристики сетевой среды, модуляция сигнала — это всё про физический уровень.

Канальный уровень (Data Link Layer)

Канальный уровень работает в рамках локальной сети. Он формирует полученный от физического уровня поток битов в кадр: находит начало и конец сообщения. Также на этом уровне решаются такие задачи, как адресация внутри локальной сети, поиск ошибок, проверка целостности данных. Основные сетевые протоколы — это Ethernet и PPP.

Сетевой уровень (Network Layer)

Следующий уровень — сетевой. На этом уровне работают протоколы сетевого взаимодействия, которые нужны для построения крупных сетей из отдельных подсетей. Сетевой уровень нужен для построения составной сети на основе сетей, построенных на основе разных технологий канального уровня. На сетевом уровне вводится общая адресация для идентификации устройств и выполняется маршрутизация (выбор оптимального пути). К примеру, протокол IP, благодаря которому каждое устройство в сети обладает уникальный адресом, работающим на сетевом уровне. Протоколы сетевого уровня — IP, ICMP.

Транспортный (Transport Layer)

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

Пакеты на транспортном уровне доставляются до конкретного адресата на компьютере (в данном случае процесса), которому присваивается особый номер — порт. Порты нужны для того, чтобы данные были получены той службой или процессом, который их запрашивал. На этом уровне работают протоколы TCP и UDP, которые обеспечивают различный сервис:

  • UDP — негарантированная передача дейтаграмм;
  • TCP — гарантированная передача потока байт.

Сеансовый (Session Layer)

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

Представительный (Presentation Layer)

Задачей представительного уровня является представление данных в понятном для отправителя и получателя виде. К представительному уровню можно отнести различные варианты представления данных: кодировка текста с помощью ASCII или UTF-8, спецификации HTML, графические форматы JPEG, PNG или GIF. Также к представительному уровню стоит отнести шифрование и дешифрование данных.

Прикладной (Application Layer)

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

Сетевые протоколы OSI не всегда относятся к одному логическому уровню. Иногда они распространяются на несколько уровней. Например, протокол Ethernet работает и на физическом, и на канальном уровне.

Когда данные с узла отправляются другому узлу сети, они последовательно проходят каждый уровень. Данные от прикладного уровня переходят на представительный, от него на сеансовый и так до физического. На каждом уровне протоколы форматируют данные и передают полученный результат дальше. Этот процесс называется инкапсуляцией — движением данных с верхнего уровня к нижнему.

Когда узел получает данные, начинается обратный процесс: от физического к канальному и т.д. При этом нельзя пропустить уровень, например, перескочить с физического на сетевой. В итоге данные поступают на прикладной уровень к тому приложению, которое должно было их получить. Этот процесс называется деинкапсуляцией — движением данных с нижних уровней к верхним.

В настоящий момент модель OSI не применяется на практике для создания сетей. Некоторое время существовали буквальные интерпретации, которые содержали ровно 7 уровней. Основное применение эта модель нашла в обучении: принципы работы большинства сетевых моделей схожи с ней. 

Пока одни специалисты в течение 7 лет дискутировали и думали, как улучшить OSI, другие специалисты на практике реализовывали и улучшали свои решения. Наибольшую популярность завоевал стек TCP/IP.

TCP/IP 

TCP/IP (в некоторых источниках называется как «модель DoD»), как и OSI, реализует деление архитектуры на уровни. В RFC 1122 утверждена четырехуровневая архитектура указанного стека:

  • прикладной уровень;
  • транспортный уровень;
  • межсетевой уровень, также иногда его называют просто сетевым или интернет;
  • канальный уровень/сетевых интерфейсов/сетевого доступа.

Image3

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

Рассмотрим каждый уровень и его протоколы подробнее. Идти будем от нижнего уровня к верхним.

Канальный уровень TCP/IP

Как уже было сказано, канальный уровень TCP/IP объединяет два уровня OSI: канальный и физический. Самый популярный протокол канального уровня TCP/IP — это Ethernet. Поэтому мы сосредоточимся именно на нем.

Ethernet 

На время забудем об IP-адресах и сетевых моделях. Представим, что у нас есть локальная сеть из 4 компьютеров и коммутатора. Не будем обращать внимание на коммутатор — в нашей сети это просто устройство для соединения компьютеров в локальную сеть.

Image8

У каждого компьютера имеется свой MAC-адрес. В нашей сети он состоит из 3 чисел, что не соответствует реальности. 

MAC-адрес

На самом деле MAC-адрес состоит из 48 битов. MAC-адрес — это уникальный идентификатор сетевого устройства. Если MAC-адрес не уникален, то это может стать причиной проблем в сети.

Первые 24 бита MAC-адреса — это идентификатор, который присваивается комитетом IEEE. Если вкратце, то IEEE — это такая организация, которая занимается разработкой стандартов, связанных с радиоэлектроникой и электротехникой. После 24 бита MAC-адреса назначаются самим производителем оборудования.

Image1

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

Данные в Ethernet сетях отправляются в виде Ethernet-кадров. На самом деле протокол довольно старый (появился в 1973 году). За своё время он много раз модернизировался и менял свои форматы. Приведем один из форматов кадра:

Image4

Разберем его составляющие:

  • Преамбула — это поле для указания начала кадра. 
  • MAC-адрес получателя — адрес получателя.
  • MAC-адрес источника — адрес отправителя.
  • Тип (длина) — здесь указывается сетевой протокол, например IPv4 или IPv6.
  • SNAP/LLC и данные — полезная нагрузка, минимальный размер кадра необходим для избежания коллизий.
  • FCS — контрольная сумма, по ней можно понять, побился ли кадр.

ARP

На данный момент 4 узла образуют простую локальную сеть и одну канальную среду. Поэтому этот уровень называется канальным. На самом деле для корректной работы TCP/IP-сетей недостаточно адресации на канальном уровне (MAC-адресов). Канальная адресация работает в тесной связке с сетевой адресацией, которая известна всем, как IP-адресация. 

IP-протокол работает на сетевом уровне: он будет подробно описан в разделе «Протоколы сетевого уровня». Сейчас речь пойдет о том, как IP-адреса работают вместе с MAC-адресами. Добавим каждому компьютеру по IP-адресу:

Image2

В обычной жизни мы практически не взаимодействуем с MAC-адресами. С ними работают компьютеры. Для связи с устройствами в сети мы используем IP-адреса или доменные имена. Протокол ARP помогает узнать MAC-адрес устройство по его IP-адресу. 

Узел сети понимает, что он не знает MAC-адрес получателя. Чтобы узнать его, он отправляет широковещательный запрос всем компьютерам: «Компьютер с IP 1.1.1.2. Сообщи свой MAC-адрес компьютеру с MAC:333». Если в сети есть узел с таким IP, то он откликнется: «1.1.1.2. — это я, мой MAC:111». 

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

Протоколы сетевого уровня TCP/IP

Добавим к локальной сети маршрутизатор и подключим его к другой подсети.

Image7

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

Немного о том, как узел может понять, что он пытается отправить данные узлу в другой подсети. У любой сети есть такой параметр как маска подсети. Накладывая маску подсети на IP-адрес узла можно узнать, принадлежит ли он той же подсети. Узнать маску подсети в Windows можно с помощью ipconfig:

Image5

В данном случае маска подсети 255.255.255.0. Она имеет такой же вид, как и IP-адрес — 4 октета, разделенные точкой. Если применить маску подсети к адресу узла, то можно получить адрес подсети. Для это нужно осуществить поразрядную конъюнкцию. Это операция побитового «И». Результатом операции является адрес подсети. 

Маска 255.255.255.0 — это самая простая маска. Она означает, что если первые 3 октета IP-адресов двух узлов совпадают, то эти узлы находятся в одной подсети. Например, компьютер с IP 1.1.1.2 и компьютер с IP 1.1.1.3 находятся в одной подсети, а вот компьютер с IP 1.1.2.2 находится уже в другой подсети. Когда компьютер понимает, что ему нужно отправить данные в другую подсеть, то он использует IP-адрес основного шлюза. Это адрес маршрутизатора, который пересылает данные в другую подсеть.

Итак, смоделируем ситуацию, при которой узлу с MAC:111 нужно отправить данные на узел с IP 1.1.2.3. Узел-источник сразу понимает, что узел-получатель находится в другой подсети и обращается к основному шлюзу. Он запрашивает у него MAC-адрес и отправляет данные ему. Маршрутизатор видит, что IP-адрес получателя отличается от него, и понимает — он является промежуточным узлом. В другой подсети он запрашивает MAC-адрес узла с IP 1.1.2.3 и отправляет ему искомые данные.

IP

Сетевой протокол IP (Internet Protocol) появился в 80-х годах для объединения компьютерных сетей. Сейчас существуют 2 версии — IPv4 и IPv6:

  • IPv4 — регулирует межсетевое взаимодействие посредством 32-битного поля адресов, где адресное пространство ограничено;
  • IPv6 — усовершенствованный стандарт, где для адресной маршрутизации используется 128-битное поле, определяющее IPv6-адрес принимающего узла. В IPv6 ARP не используется.

Обе версии протокола предназначены для выполнения одних и тех же целей. IPv6 появился как альтернатива IPv4: в определенный момент IP-адреса стали заканчиваться. Сейчас эта проблема решается с помощью технологии NAT, и введение IPv6 как общего стандарта несколько затянулось. В этом материале будет разобрана первая версия IPv4.

Протокол IP работает с блоком информации, который называется IP-пакет. Вот как он выглядит:

Image6

  • Версия: IPv6 или IPv4;
  • IHL (Internet Header Length): многие поля заголовка не фиксированы и в этом поле указан его общий размер;
  • Тип обслуживания — данные для QoS;
  • Длина пакета — размер пакета вместе с заголовком и данными;
  • Идентификатор — число из 4 байтов, показывающее, что части разделенного пакета — это единое целое;
  • Флаги — указывает на то, что пакет фрагментированный;
  • Смещение фрагмента — сдвиг относительно первого фрагмента;
  • Время жизни — максимальное количество прохождений через маршрутизаторы;
  • Протокол — протокол транспортного уровня;
  • Контрольная сумма заголовка — контрольная сумма заголовка;
  • IP-адрес отправителя;
  • IP-адрес получателя;
  • Опции — поле для расширения стандартного заголовка, например, для специфичного оборудования;
  • Смещение — к какой части принадлежит фрагмент;
  • Данные.

Протоколы транспортного уровня

Самые популярные протоколы транспортного уровня TCP/IP — это UDP и TCP. Они предназначены для доставки данных определенному приложению, которое определяется по номеру порта. UDP проще, чем TCP, поэтому начнем именно с него.

UDP

UDP-дейтаграмма состоит из 5 составляющих:

  • Порт источника;
  • Порт назначения;
  • Длина заголовка;
  • Контрольная сумма;
  • Данные с вышестоящего уровня.

Задачи UDP — это проверка кадра и работа с портами. Из-за своей простоты протокол не может обеспечить контроль доставки данных. В отличие от TCP, UDP не запрашивает повторно побитые данные у отправителя.

Сетевой протокол TCP

Пакеты протокола TCP называются сегментами. Вот из чего состоит сегмент TCP:

  • Порты источника и получателя;
  • Порядковый номер сегмента;
  • Номер подтверждения — используется, когда ожидается или подтверждается доставка;
  • Длина заголовка;
  • Флаг, зарезервированный под специальные нужды;
  • Флаги, для установления или разрыва сессии;
  • Размер окна — в поле указывают, на сколько сегментов требовать подтверждение;
  • Контрольная сумма;
  • Указатель важности;
  • Опции — используется для дополнительных параметров;
  • Данные с вышестоящего уровня.

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

Протоколы прикладного уровня

Если посмотреть на сетевой протокол TCP/IP и модель OSI, и в той, и в другой архитектуре верхние уровни – прикладные. 

Среди распространенных прикладных стандартов:

  • DNS – система доменных имен, которая сообщает IP-адрес посредством вызова запроса с доменом;
  • HTTP – отвечает за клиент-серверное взаимодействие, передает гипертексты внутри WWW (доставляет документы через сервер браузеру);
  • HTTPS – делает то же, что и HTTP, но обладает дополнительной функцией шифрования веб-страниц.

Серверы DNS применяют алгоритмы UDP, менее надёжные в плане передачи информации. Но если брать прикладные интернет-протоколы FTP и HTTP, они работают по правилам TCP. 

В числе других популярных прикладных протоколов:

  • FTP – его назначение состоит в управлении обменом файлами;
  • POP3 – его использует почтовый клиент, он служит для получения электронных писем с сервера;
  • IMAP – по нему осуществляется интернет-доступ к электронной почте.

Заключение

В этом материале мы описали самые распространенные протоколы, которые используются в компьютерных сетях. Эти протоколы применяются повсеместно и в большинстве задач. Большая часть существующих протоколов, которых насчитывается около 7 тысяч, предназначена для более узких задач. Если вас заинтересовали компьютерные сети и вы хотите узнать о них больше, то на timeweb.cloud вы можете арендовать облачный сервер для практических экспериментов.

11 октября 2022 г.
5417
16 минут чтения
Средний рейтинг статьи: 2.8
Пока нет комментариев