Что означает html в информатике транспортный протокол протокол маршрутизации
Перейти к содержимому

Что означает html в информатике транспортный протокол протокол маршрутизации

  • автор:

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

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

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

IP (англ. Internet Protocol) — протокол маршрутизации.

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

HTTP (англ. HyperText Transfer Protocol) — прикладной протокол передачи гипертекста для службы WWW.

FTP (англ. File Transfer Protocol) — протокол, предназначенный для передачи файлов в компьютерных сетях.

Обзор протокола HTTP

HTTP — это протокол, позволяющий получать различные ресурсы, например HTML-документы. Протокол HTTP лежит в основе обмена данными в Интернете. HTTP является протоколом клиент-серверного взаимодействия, что означает инициирование запросов к серверу самим получателем, обычно веб-браузером (web-browser). Полученный итоговый документ будет (может) состоять из различных поддокументов, являющихся частью итогового документа: например, из отдельно полученного текста, описания структуры документа, изображений, видео-файлов, скриптов и многого другого.

A Web document is the composition of different resources

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

HTTP as an application layer protocol, on top of TCP (transport layer) and IP (network layer) and below the presentation layer.

Хотя HTTP был разработан ещё в начале 1990-х годов, за счёт своей расширяемости в дальнейшем он все время совершенствовался. HTTP является протоколом прикладного уровня, который чаще всего использует возможности другого протокола — TCP (или TLS — защищённый TCP) — для пересылки своих сообщений, однако любой другой надёжный транспортный протокол теоретически может быть использован для доставки таких сообщений. Благодаря своей расширяемости, он используется не только для получения клиентом гипертекстовых документов, изображений и видео, но и для передачи содержимого серверам, например, с помощью HTML-форм. HTTP также может быть использован для получения только частей документа с целью обновления веб-страницы по запросу (например, посредством AJAX запроса).

Составляющие систем, основанных на HTTP

HTTP — это клиент-серверный протокол, то есть запросы отправляются какой-то одной стороной — участником обмена (user-agent) (либо прокси вместо него). Чаще всего в качестве участника выступает веб-браузер, но им может быть кто угодно, например, робот, путешествующий по Сети для пополнения и обновления данных индексации веб-страниц для поисковых систем.

Каждый запрос (англ. request) отправляется серверу, который обрабатывает его и возвращает ответ (англ. response). Между этими запросами и ответами как правило существуют многочисленные посредники, называемые прокси, которые выполняют различные операции и работают как шлюзы или кэш, например.

Client server chain

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

Клиент: участник обмена

Участник обмена (user agent) — это любой инструмент или устройство, действующие от лица пользователя. Эту задачу преимущественно выполняет веб-браузер; в некоторых случаях участниками выступают программы, которые используются инженерами и веб-разработчиками для отладки своих приложений.

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

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

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

Веб-сервер

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

Сервер не обязательно расположен на одной машине, и наоборот — несколько серверов могут быть расположены (хоститься) на одной и той же машине. В соответствии с версией HTTP/1.1 и имея Host заголовок, они даже могут делить тот же самый IP-адрес.

Прокси

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

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

Основные аспекты HTTP

HTTP — прост

Даже с большей сложностью, введённой в HTTP/2 путём инкапсуляции HTTP-сообщений в фреймы, HTTP, как правило, прост и удобен для восприятия человеком. HTTP-сообщения могут читаться и пониматься людьми, обеспечивая более лёгкое тестирование разработчиков и уменьшенную сложность для новых пользователей.

HTTP — расширяемый

Введённые в HTTP/1.0 HTTP-заголовки сделали этот протокол лёгким для расширения и экспериментирования. Новая функциональность может быть даже введена простым соглашением между клиентом и сервером о семантике нового заголовка.

HTTP не имеет состояния, но имеет сессию

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

HTTP и соединения

Соединение управляется на транспортном уровне, и потому принципиально выходит за границы HTTP. Хотя HTTP не требует, чтобы базовый транспортный протокол был основан на соединениях, требуя только надёжность, или отсутствие потерянных сообщений (т.е. как минимум представление ошибки). Среди двух наиболее распространённых транспортных протоколов Интернета, TCP надёжен, а UDP — нет. HTTP впоследствии полагается на стандарт TCP, являющийся основанным на соединениях, несмотря на то, что соединение не всегда требуется.

HTTP/1.0 открывал TCP-соединение для каждого обмена запросом/ответом, имея два важных недостатка: открытие соединения требует нескольких обменов сообщениями, и потому медленно, хотя становится более эффективным при отправке нескольких сообщений, или при регулярной отправке сообщений: тёплые соединения более эффективны, чем холодные.

Для смягчения этих недостатков, HTTP/1.1 предоставил конвейерную обработку (которую оказалось трудно реализовать) и устойчивые соединения: лежащее в основе TCP соединение можно частично контролировать через заголовок Connection . HTTP/2 сделал следующий шаг, добавив мультиплексирование сообщений через простое соединение, помогающее держать соединение тёплым и более эффективным.

Проводятся эксперименты по разработке лучшего транспортного протокола, более подходящего для HTTP. Например, Google экспериментирует с QUIC (которая основана на UDP) для предоставления более надёжного и эффективного транспортного протокола.

Чем можно управлять через HTTP

Естественная расширяемость HTTP со временем позволила большее управление и функциональность Сети. Кеш и методы аутентификации были ранними функциями в истории HTTP. Способность ослабить первоначальные ограничения, напротив, была добавлена в 2010-е.

Ниже перечислены общие функции, управляемые с HTTP.

  • Кеш Сервер может инструктировать прокси и клиенты, указывая что и как долго кешировать. Клиент может инструктировать прокси промежуточных кешей игнорировать хранимые документы.
  • Ослабление ограничений источника Для предотвращения шпионских и других нарушающих приватность вторжений, веб-браузер обеспечивает строгое разделение между веб-сайтами. Только страницы из того же источника могут получить доступ к информации на веб-странице. Хотя такие ограничение нагружают сервер, заголовки HTTP могут ослабить строгое разделение на стороне сервера, позволяя документу стать частью информации с различных доменов (по причинам безопасности).
  • Аутентификация Некоторые страницы доступны только специальным пользователям. Базовая аутентификация может предоставляться через HTTP, либо через использование заголовка WWW-Authenticate (en-US) и подобных ему, либо с помощью настройки спецсессии, используя куки.
  • Прокси и туннелирование (en-US) Серверы и/или клиенты часто располагаются в интернете и скрывают свои истинные IP-адреса от других. HTTP запросы идут через прокси для пересечения этого сетевого барьера. Не все прокси — HTTP прокси. SOCKS-протокол, например, оперирует на более низком уровне. Другие, как, например, ftp, могут быть обработаны этими прокси.
  • Сессии Использование HTTP кук позволяет связать запрос с состоянием на сервере. Это создаёт сессию, хотя ядро HTTP — протокол без состояния. Это полезно не только для корзин в интернет-магазинах, но также для любых сайтов, позволяющих пользователю настроить выход.

HTTP поток

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

  1. Открытие TCP соединения: TCP-соединение будет использоваться для отправки запроса (или запросов) и получения ответа. Клиент может открыть новое соединение, переиспользовать существующее или открыть несколько TCP-соединений к серверу.
  2. Отправка HTTP-сообщения: HTTP-сообщения (до HTTP/2) являются человекочитаемыми. Начиная с HTTP/2, простые сообщения инкапсулируются во фреймы, делая невозможным их чтение напрямую, но принципиально остаются такими же.

GET / HTTP/1.1 Host: developer.mozilla.org Accept-Language: fr 
HTTP/1.1 200 OK Date: Sat, 09 Oct 2010 14:28:02 GMT Server: Apache Last-Modified: Tue, 01 Dec 2009 20:18:22 GMT ETag: "51142bc1-7449-479b075b2891b" Accept-Ranges: bytes Content-Length: 29769 Content-Type: text/html  

Если активирован HTTP-конвейер, несколько запросов могут быть отправлены без ожидания получения первого ответа целиком. HTTP-конвейер тяжело внедряется в существующие сети, где старые куски ПО сосуществуют с современными версиями. HTTP-конвейер был заменён в HTTP/2 на более надёжные мультиплексные запросы во фрейме.

HTTP сообщения

HTTP/1.1 и более ранние HTTP сообщения человекочитаемые. В версии HTTP/2 эти сообщения встроены в новую бинарную структуру, фрейм, позволяющий оптимизации, такие как компрессия заголовков и мультиплексирование. Даже если часть оригинального HTTP сообщения отправлена в этой версии HTTP, семантика каждого сообщения не изменяется и клиент воссоздаёт (виртуально) оригинальный HTTP-запрос. Это также полезно для понимания HTTP/2 сообщений в формате HTTP/1.1.

Существует два типа HTTP сообщений, запросы и ответы, каждый в своём формате.

Запросы

Примеры HTTP запросов:

A basic HTTP request

Запросы содержат следующие элементы:

  • HTTP-метод, обычно глагол подобно GET , POST или существительное, как OPTIONS или HEAD , определяющее операцию, которую клиент хочет выполнить. Обычно, клиент хочет получить ресурс (используя GET ) или передать значения HTML-формы (используя POST ), хотя другие операции могут быть необходимы в других случаях.
  • Путь к ресурсу: URL ресурсы лишены элементов, которые очевидны из контекста, например без протокола ( http:// ), домена (здесь developer.mozilla.org ), или TCP порта (здесь 80 ).
  • Версию HTTP-протокола.
  • Заголовки (опционально), предоставляющие дополнительную информацию для сервера.
  • Или тело, для некоторых методов, таких как POST , которое содержит отправленный ресурс.

Ответы

Ответы содержат следующие элементы:

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

Вывод

HTTP — лёгкий в использовании расширяемый протокол. Структура клиент-сервера, вместе со способностью к простому добавлению заголовков, позволяет HTTP продвигаться вместе с расширяющимися возможностями Сети.

Хотя HTTP/2 добавляет некоторую сложность, встраивая HTTP сообщения во фреймы для улучшения производительности, базовая структура сообщений осталась с HTTP/1.0. Сессионный поток остаётся простым, позволяя исследовать и отлаживать с простым монитором HTTP-сообщений.

Found a content problem with this page?

  • Edit the page on GitHub.
  • Report the content issue.
  • View the source on GitHub.

This page was last modified on 7 авг. 2023 г. by MDN contributors.

Your blueprint for a better internet.

Сетевые протоколы: базовые понятия и описание самых востребованных правил

Рассказываем о самых часто используемых правилах взаимодействия устройств в сети.

Эта инструкция — часть курса «Как работают сетевые протоколы».

Смотреть весь курс

Изображение записи

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

Понятие протокола сети

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

Для взаимодействия протоколов между собой существует модель OSI, или Open Systems Interconnection. Дословно название переводится как «взаимодействие открытых систем».

OSI — эталонная модель взаимодействия устройств в сети

Модель OSI — это модель, позволяющая разным системам связи коммуницировать между собой по общепринятым стандартам. Ее можно сравнить с английским, то есть глобальным, универсальным языком в мире сетей.

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

семь уровней модели OSI

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

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

TCP/IP — модель, на которой работает сеть Интернет

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

Модель используется во всем современном интернете, новые сетевые протоколы разрабатываются с опорой на модель TCP/IP. Например, подключаясь к сайту Selectel, вы используете протоколы IP, TCP и HTTPS, которые работают в рамках упомянутой модели.

сравнение моделей

Подробнее о модели TCP/IP можно прочитать в блоге.

Далее мы рассмотрим основные протоколы межсетевого, транспортного уровней, а также уровня приложений. Именно с ними мы сталкиваемся чаще всего, анализируя какие-либо проблемы в сети или на сервере.

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

Интернет-протокол и IP-адреса

Internet Protocol (IP) — это наиболее простой протокол, объединивший отдельные компьютеры в глобальную сеть. Главной его задачей является маршрутизация дейтаграмм — определение маршрута следования пакетов по узлам сети. Каждое устройство — ваш ПК, принтер и т.д. — имеет IP-адрес, чтобы данные попадали к нужному адресату. Так, например, отправленный на печать файл не окажется вместо принтера в личном ПК вашего коллеги.

В качестве минусов протокола можно отметить низкую надежность. Он не определяет факт передачи пакета и не контролирует целостность данных. IP просто осуществляет пересылку.

Для пересылки пакетов необходимо определить, на какой порт отправить пакет. Для этого протокол имеет свою систему адресации. В качестве адресов выступает 32-битные (IPv4) или 128-битные (IPv6) адреса. Перед отправкой пакета в него добавляются header (заголовок) и payload (данные для доставки).

IPv4 является 32-разрядной системой, состоящей из четырех разделов (123.123.123.123). Он поддерживает до 4 294 967 296 адресов и является протоколом по умолчанию. Основным его преимуществом является простота. В недостатках — ограниченное адресное пространство, также называемое «исчерпанием адресов».

IPv6, напротив, — 128-битное адресное пространство, которое обеспечивает приблизительно 2^128 степени адресов. Формат записи состоит из восьми разделов, в каждый из которых записывается четыре 16-ричных цифры. Недостаток протокола — в сложности сетевого администрирования. При аренде сервера или виртуальной машины в Selectel выдается IPv4, однако можно запросить и IPv6-адреса, в облаке на базе VMware выдаются только IPv4-адреса.

Один из основных протоколов, который работает поверх IP, — это протокол TCP, из-за чего его часто обозначают как TCP/IP. Но это не единственный протокол, который является частью интернет-протокола.

TCP — протокол обмена сообщениями в сети Интернет

TCP помогает устройствам в сети обмениваться сообщениями. Он работает на четвертом, транспортном, уровне модели OSI.

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

Свойства протокола TCP:

структура пакета

  1. Система нумерации сегментов (Segment Numbering System). TCP отслеживает передаваемые или принимаемые сегменты, присваивая номера каждому из них. Байтам данных, которые должны быть переданы, присваивается определенный номер байта, в то время как сегментам присваиваются порядковые номера.
  2. Управление потоком. Эта функция ограничивает скорость, с которой отправитель передает данные. Это делается для обеспечения надежности доставки. Получатель постоянно сообщает отправителю о том, какой объем данных может быть получен.
  3. Контроль ошибок. Данная функция реализуется для повышения надежности путем проверки байтов на целостность.
  4. Порт источника и порт назначения. Протокол TCP использует специальные порты для связи различных протоколов. Например протокол SSH использует 22й порт, HTTP — 80, HTTPS — 443, Gopher — 70. Все порты делятся на три диапазона — общеизвестные (0—1023), зарегистрированные (1024—49151) и динамические (49152—65535).

UDP — аналог TCP: описание отличий в поведении протокола в сети

В отличие от протокола ТСР User Datagram Protocol обеспечивает передачу данных без получения подтверждения от пользователя о результате действия. Благодаря этому достигается большая скорость работы и передачи данных в ущерб надежности и безопасности.

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

UDP работает путем сбора данных в UDP-пакете и добавления в пакет собственной информации заголовка. Заголовок UDP включает четыре поля, объем которых составляет 2 байта каждый: номер порта источника, номер порта назначения, длина заголовка и контрольная сумма блока.

заголовок UDP

Протокол UDP любят злоумышленники при организации DDOS — или DOS-атак. Из-за того, что данный протокол не требует подтверждения от сервера, открывается возможность просто «залить» сервер запросами. Стандартная атака подразумевает отправку большого количества дейтаграмм. Это заставляет сервер отвечать на каждый из них, расходуя вычислительные мощности.

SCTP — протокол передачи управления потоком

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

SCTP аналогичен протоколам UDP и TCP, которые обеспечивают функции транспортного уровня для некоторых интернет-приложений. Так как преимущество протокола SCTP — в быстром переключении между интерфейсами, на него переходят только компании, для которых критична недоступность приложений. SCTP работает поверх бесконтактной пакетной сети, такой как IP, и поддерживает передачу данных в случаях с одним или несколькими IP.

RTP — транспортный протокол реального времени

Real-time Transfer Protocol — это протокол, который используется при передаче потокового аудио и видео и применяется при передаче голоса преимущественно в IP-телефонии. RTP применяется в совокупности с протоколом управления RTCP. Когда RTP транслирует медиа, RTCP применяется при анализе статистик QoS (Quality of Service) и обеспечивает синхронизацию разных потоков. RTP отправляется и принимается с помощью четных номеров портов, а RTCP использует нечетные номера.

Также протокол считают главным стандартом, применяемым при передаче аудио и видео по IP-сети. Поскольку RTP может осуществлять ее нескольким конечным адресатам одновременно при помощи многоадресной IP-рассылки.

Протоколы межсетевого уровня: краткое описание

ICMP — протокол управляющих сообщений в сети

Задача протокола — диагностика проблем при взаимодействии устройств. Он определяет, достигли ли данные места назначения или нет.

Основная цель ICMP — сообщать об ошибках. Если какие-либо данные не попали по назначению, ICMP генерирует ошибки для обмена с отправляющим устройством. Например, если объем передаваемых данных слишком велик для маршрутизатора, маршрутизатор отбросит пакет и отправит ICMP-сообщение исходному источнику данных.

Как и в случае UDP, протокол ICMP можно использовать для сетевых атак, таких как ICMP flood и ping of death, где главный прием — генерация большого количества ICMP-сообщений.

OSPF — протокол маршрутизации состояния канала сети

Open Shortest Path First используется для поиска наилучшего пути между исходным и конечным маршрутизатором. Работает на межсетевом уровне модели OSI.

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

На основе собранной информации он вычислит наилучший кратчайший путь к каждой доступной подсети/сети, используя алгоритм под названием Shortest Path First (SFP).

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

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

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

Описание работы протокола в сети Интернет

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

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

FTP-сессии работают в двух режимах — активном и пассивном:

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

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

DNS — справочник сети Интернет

Браузеры взаимодействуют между собой через IP-адреса. Люди, пытаясь подключиться к сайту, используют его доменное имя — например, https://selectel.ru/. Domain Name System преобразует домены в IP-адреса, чтобы сделать возможной загрузку интернет-ресурса через браузер. Каждому устройству в сети назначается свой IP-адрес, который используется другими устройствами для подключения к нему, а DNS-сервер позволяет людям не запоминать их.

На данный момент существуют четыре основных DNS-сервера, которые участвуют в загрузке веб-страниц:

  • DNS recursor — своеобразный справочник, отвечающий за прием запросов от компьютеров пользователей, например, приложений браузеров;
  • Root nameserver, или корневой сервер, является первым в процессе конвертации имени хоста в IP-адрес и позволяет получить список DNS-серверов.
  • TLD nameserver — следующий шаг при поиске IP; хранит информацию про все доменные имена с общим расширением (.ru, .com и т.д.);
  • Authoritative nameserver дает окончательные ответы на запросы о DNS.

Бесплатный DNS-хостинг от Selectel

Размещайте домены и записи на наших DNS-серверах. Запуск за несколько минут.

HTTP(S) — протокол передачи гипертекста

HTTP является основой интернета и используется для загрузки веб-страниц с использованием гипертекстовых ссылок. Относится к прикладным протоколам и работает поверх других уровней стека сетевых протоколов.

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

  • версию HTTP,
  • URL-адрес,
  • метод HTTP-запроса — указание на ожидание запроса от сервера (например, PUT- и GET-запросы),
  • заголовок — он передает основную информацию о запросе и содержит пары ключ-значение,
  • тело запроса (опционально, это любая отправляющаяся информация).

После получения запроса сервер должен дать ответ. В его стандартную структуру входят: код состояния, заголовок и тело ответа.

Код состояния HTTP-запроса — это трехзначные коды, которые, как правило, указывают на успешность его выполнения. Они разбиваются на пять основных блоков:

  1. 1xx* Информация (Informational),
  2. 2хх Успешность выполнения (Success),
  3. 3хх Перенаправление (Redirection),
  4. 4xx Ошибка клиента (Client Error),
  5. 5xx Ошибка сервера (Server Error),

*ХХ обозначают цифры от 00 до 99.

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

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

SSH — основное средство подключения к серверам

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

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

В панели управления Selectel пользователь может загрузить собственный SSH-ключ для повышения надежности и безопасности подключения или сгенерировать его на месте. Подробнее — в нашей базе знаний.

Устаревшие протоколы: Telnet, Gopher, FTP

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

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

Заключение

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

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

url image

Что такое сетевые протоколы

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

Что такое сетевой протокол?

Сетевой протокол — это набор правил, которым следуют подключённые друг к другу сетевые устройства при обмене данными. Протокол можно описать программой или встроить в аппаратную часть сетевого оборудования. При этом оборудование может быть самым разным — компьютеры, маршрутизаторы, модемы, точки доступа, телефоны, сетевые принтеры, охранные камеры, компоненты «умного дома» и так далее. С помощью сетевых протоколов открывается доступ к сайтам в интернете, онлайн-сервисам, хранилищам данных, сетевому оборудованию, IP-телефонии. Сетевые ресурсы могут работать интерактивно или в реальном времени. Ресурсы реального времени — это системы потокового вещания, видеоконференции, IP-телефония. К интерактивным, то есть обеспечивающим совместную работу, можно отнести мессенджеры, почту, форумы, а также приложения, использующие искусственный интеллект. Мы ведь можем поговорить с голосовым помощником, например с Алисой, верно? Но чтобы всё это технологическое многообразие программ и компьютеров могло понимать друг друга, нужен стандарт, позволяющий участникам сети как-то договориться между собой.

Модель OSI

Одной из первых попыток стандартизировать сетевое общение стала модель OSI (The Open Systems Interconnection model, модель взаимодействия открытых систем), предложенная международной организацией ISO (International Organization for Standardization): Модель состоит из семи уровней (layers), каждый из которых решает свою задачу.

  1. Физический уровень определяет метод передачи сигналов (электрические сигналы, световые сигналы, радиоэфир).
  2. Канальный уровень занимается аппаратной адресацией, необходимой идентификации устройств и доставки сигналов.
  3. Сетевой уровень находит пути передачи данных, то есть маршрутизирует трафик.
  4. Транспортный уровень предназначен для установки соединения, управления потоком и доставки данных.
  5. Сеансовый уровень как следует из названия, поддерживает сеансы соединений (сессии). На этом уровне сетевые инженеры складывают свои полномочия и в игру вступают прикладные программисты.
  6. Уровень представления готовит информацию к взаимодействию с пользователем или приложением, при необходимости кодируя и сжимая данные.
  7. Прикладной уровень определяет взаимодействие сети и пользователя. На этом уровне мы с вами отправляем запросы к интернет-ресурсам, файлам и электронной почте.

В настоящее время модель OSI устарела и представляет теперь лишь теоретический интерес, но заложенные в ней принципы входят в состав современных моделей, таких, как TCP/IP.

Модель TCP/IP

Модель TCP/IP — это стек протоколов, который обеспечивает связь и передачу данных в компьютерных сетях. Эта модель проще, чем OSI, и содержит только четыре уровня:

По историческим причинам номера уровней позаимствованы из модели OSI. Необходимо отметить, что разделение протоколов на уровни оказалось очень удобным, так как позволило развивать технологии каждого слоя независимо от остальных. Например, когда на смену модемам, коаксиальным кабелям и витой паре пришли оптоволоконные сети, модель TCP/IP продолжила своё существование как ни в чём не бывало.

Благодаря такой гибкости модель TCP/IP завоевала всеобщую популярность и фактически стала основой современного интернета.

Важно иметь представление о том, что в состав набора протоколов TCP/IP входят такие составляющие межсетевого уровня, как BGP (Border Gateway Protocol), который применяется для маршрутизации трафика между разными автономными системами, OSPF (Open Shortest Path First), использующийся для построения маршрутов внутри одной автономной системы, и ICMP (Internet Control Message Protocol), отвечающий за диагностику взаимодействия сетевых устройств и сообщения об ошибках.

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

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

Internet Protocol (IP). Именно этот протокол объединил отдельные компьютеры и локальные сети во всемирную паутину, известную нам как современный интернет. Одной из базовых концепций протокола IP стала адресация сети, благодаря чему и появились знакомые нам IP-адреса.

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

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

Впрочем, несмотря на очевидные преимущества IPv6, сетевые администраторы не торопятся внедрять этот протокол по ряду причин.

  1. Ограниченная поддержка устройств и программного обеспечения. Многие старые устройства и программное обеспечение не поддерживают IPv6.
  2. Миграция с IPv4 на IPv6 требует значительных усилий и ресурсов. Для перехода на IPv6 компании должны пересмотреть свою сетевую инфраструктуру, а это зачастую непросто и довольно затратно.
  3. Совместимость с IPv4. IPv4 все ещё широко используется, и многие компании продолжают полагаться на него. IPv6 сети должны быть совместимы с IPv4, чтобы обеспечить безопасный и плавный переход, что требует дополнительных настроек и конфигураций.
  4. Отсутствие необходимости. Некоторые компании считают, что во внедрении IPv6 нет необходимости, особенно если у них достаточно адресов IPv4 или текущая сетевая инфраструктура удовлетворяет потребности проекта.

Однако, с учетом исчерпания запасов IPv4 адресов и расширения сетей IoT (интернета вещей) и облака, внедрение IPv6 становится все более необходимым для обеспечения роста и развития сетей в будущем.

Другой важнейшей составляющей современного интернета стал протокол TCP, работающий на транспортном уровне.

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

1. TCP (Transmission Control Protocol, протокол управления передачей). TCP работает поверх протокола IP и предназначен для управления передачей данных в интернете. Это ключевой протокол взаимодействия в модели TCP/IP.

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

Давайте ненадолго остановимся на процедуре передачи данных.

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

Чтобы снизить вероятность потери данных и обеспечить надёжность передачи, пакеты обычно содержат контрольную сумму (checksum), которая позволяет проверить целостность полученных данных. Также в пакеты включается порядковый номер (sequence number), который обозначает порядок пакетов в передаваемой последовательности. В случае потери пакета или его повреждения, получатель может запросить повторную передачу только этого конкретного пакета, а не всего набора данных.

Чтобы доставку данных можно было надёжно контролировать, к каждой части данных добавляется служебная информация — заголовок (header):

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

Поскольку протокол TCP работает поверх IP, к каждому сегменту добавляется ещё один заголовок, содержащий IP-адреса отправителя и получателя:

Теперь перед нами полноценный пакет информации, который можно было бы передать по сети. Но для того, чтобы обеспечить точную доставку получателю, необходимо знать его физический адрес, называемый MAC-адресом (Media Access Control address). Для этого пакет снабжается дополнительной служебной информацией, содержащей MAC-адреса отправителя и получателя, и окончанием (footer) с контрольной суммой пакета:

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

2. UDP (User Datagram Protocol, протокол пользовательских датаграмм). В отличие от TCP, не гарантирует доставку пакетов получателю, но работает быстрее.

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

При UDP трансляции отправитель просто посылает пакеты данных (датаграммы), не заботясь о том, будут ли они доставлены и существует ли получатель вообще, и не ожидая какого-либо подтверждения приёма.

Впрочем, протокол UDP всё же требует указания портов отправителя и получателя, длины датаграммы и контрольной суммы так же, как этого требует TCP.

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

1. HTTP(S) (HyperText Transfer Protocol, протокол передачи гипертекста). Изначально предназначался для получения с серверов гипертекстовых документов в формате HTML (HyperText Markup Language, язык гипертекстовой разметки). В настоящее время фактически стал универсальным средством взаимодействия между узлами интернета.

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

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

Впрочем, гибкость протокола HTTP позволяет не только получать гипертекстовые документы, но и отправлять различные данные, такие как HTML-формы, JSON, AJAX и многие другие.

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

Но из-за большого количества промежуточных узлов пакеты, передаваемые по протоколу HTTP, могут быть легко перехвачены. Кто угодно, имея доступ к любому оборудованию, участвующему в обмене, может считать и расшифровать проходящие данные. Поэтому было создано расширение HTTP, получившее название HTTPS (HyperText Transfer Protocol Secure, безопасный протокол передачи гипертекста).

HTTPS обеспечивает защищённое соединение, используя криптографические сетевые протоколы SSL (Secure Sockets Layer, уровень защищённых сокетов) и TLS (Transport Layer Security, защита транспортного уровня) для шифрования данных.

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

Изображение замка слева от адреса сайта означает, что ваше подключение безопасно.

2. SSH (Secure Shell, безопасная оболочка) — ещё один важнейший протокол прикладного уровня. В первую очередь этот протокол используется для управления удалёнными операционными системами и фактически является основой сетевого администрирования.

Если вы хоть раз настраивали интернет-сайт или сетевую службу, монтировали сетевые папки или запускали команды на удалённом компьютере, то этот протокол вам, безусловно, уже знаком.

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

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

3. FTP(S) (File Transfer Protocol, протокол передачи файлов). Это один из самых старых протоколов прикладного уровня. FTP появился задолго до HTTP, но используется и по сей день для обмена данными в сети и для удалённой работы с файлами.

FTP, так же как и HTTP, работает поверх протокола TCP, но открывает одновременно два канала — для передачи данных и для контроля соединения. Возможности удалённой работы с файлами ограничены специфичным для FTP набором команд. В основном, это просмотр каталогов, создание, удаление и передача файлов.

Поскольку протокол FTP передаёт данные в открытом виде, использовать его для передачи чувствительной информации не рекомендуется. Для усиления безопасность было разработано расширение этого протокола, известное как FTPS (File Transfer Protocol + SSL, или FTP/SSL). Как следует из названия, FTPS добавляет к базовому функционалу FTP создание шифрованных сессий SSL или TLS.

4. SFTP (Secure File Transfer Protocol, безопасный протокол передачи файлов). Несмотря на схожее название, SFTP не является расширением FTP, а работает поверх протокола SSH прикладного уровня.

В качестве практического преимущества протокола SFTP перед FTPS можно отметить отсутствие необходимости устанавливать на сервер какие-либо дополнительные программы — служба SSH поддерживает весь необходимый функционал «из коробки».

5. (S)RTP (Real-time Transfer Protocol, протокол передачи реального времени). Используется при трансляции видео и аудио потоков. Протокол прикладного уровня RTP был разработан для обеспечения минимальной задержки воспроизведения. Это может быть важно, например, в видео/аудио чатах, в системах видеонаблюдения или интернет-телефонии VoIP, где значительное отставание изображения или звука от оригинала недопустимо.

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

Для обеспечения безопасной передачи данных используется версия протокола SRTP (Secure Real-time Transport Protocol, безопасный протокол передачи реального времени), расширяющая RTP набором механизмов защиты.

Наиболее известная технология, использующая протокол RTP (SRTP) — WebRTC (Web Real-Time Communications, коммуникации по сети в реальном времени). WebRTC предназначена для организации прямой передачи потоковых данных между двумя браузерами без использования серверов. Поскольку поддержка этой технология включена во все современные браузеры, установка дополнительных приложений не требуется. В настоящее время эта возможность активно используется, например, при проведении вебинаров и видеоконференций в интернете, а также в системах прокторинга при контроле качества дистанционного обучения.

Обзор основных протоколов прикладного уровня был бы неполным без упоминания таких важных стандартов, как IMAP(S) (Internet Message Access Protocol) — протокол доступа к электронной почте, а также DHCP (Dynamic Host Configuration Protocol, протокол динамической настройки узла) и DNS (Domain Name System, система доменных имён).

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *