Что такое протокол
Сейчас многие устройства и программы умеют связываться друг с другом: компьютеры — между собой, телефон — с наушниками, а серверы — с браузером. И довольно часто всё происходит без сбоев. Этим мы обязаны протоколам — вот о них и поговорим.
Что такое протокол
Протокол в ИТ — это набор правил, по которым устройства и программы обмениваются данными. Можно сказать, что это язык — в смысле, что это набор правил общения. Можно сказать, что это грамматика языка. Короче — набор правил.
Обычно в протоколе будут правила:
- Как открывать общение и приветствовать другую сторону.
- Как договориться с другой стороной о параметрах передачи данных.
- Что делать в случае ошибок и недопонимания.
- Как понять, что передача данных завершена.
Когда мы говорили про умный дом, то там многое было завязано на протоколы. Именно по этой причине приборы от разных производителей часто не могут работать вместе — у них просто нет общего протокола.
Физические и логические протоколы
Протоколы делятся на два вида — физические и логические.
Физические протоколы регулируют то, как именно и какие сигналы будут идти от одного устройства к другому. Например, импульсами по 5 вольт 100 раз в секунду или на определённой частоте радиосигналов. Эти протоколы нужны для того, чтобы наладить связь между устройствами. А уже после налаживания связи можно передавать данные.
Физические протоколы часто называют сигнальными, потому что они регулируют передачу физических сигналов между устройствами.
Логические протоколы отвечают за смысл и передачу данных, когда связь уже установлена. Например, у нас есть два блютус-устройства, телефон и наушники, которые выяснили друг про друга, что они могут работать по одному и тому же проколу. После того как они наладили связь, они могут использовать протокол передачи данных, чтобы узнать друг о друге получше:
- какая версия блютуса стоит на каждом устройстве;
- кто что умеет делать — только играть музыку или ещё может работать как гарнитура;
- есть ли поддержка музыкальных кодеков;
- какой уровень заряда на каждом устройстве;
- нужно ли использовать энергосберегающий режим и так далее.
Получается, что задача физического протокола — установить связь между устройствами, а логического — передавать данные по этой установленной связи.

Сетевые модели
Скорее всего, вы уже знаете, что браузеры получают данные от серверов по протоколу HTTPS, файлы — по FTP-протоколу, а сервером можно управлять по SSH-протоколу. Но так как все они используют похожие схемы установления связи и логики работы, сетевые протоколы объединяют в модели передачи данных в сети.
Модель (в этом случае) — это сборник протоколов и других вещей, которые вместе помогают решать более сложные задачи, чем то, на что способен один конкретный протокол.
Можно представить, что модель — это как комплексный обед в столовой. В него входит несколько блюд, в каждое блюдо входят какие-то продукты, а всё вместе — это сложный комплекс из питательных веществ, который помогает вам наесться, не думая о деталях: содержании клетчатки и витаминах, белках, жирах и углеводах.
Соответственно, сетевая модель — это «комплексный обед» из протоколов, которые разложены на разных уровнях и служат каждый своей цели.
В ИТ есть две основных сетевых модели передачи данных — OSI и стек TCP/IP. OSI расшифровывается как Open Systems Interconnection Model, открытая модель взаимосвязей систем. Её разберём сейчас, а TCP/IP — в отдельной статье.
Как устроена модель OSI
В OSI всё делится на 7 уровней, каждый из которых отвечает за что-то своё.
- Физический уровень отвечает за физические параметры связи — будет ли это радиосвязь, передача тока по проводам или оптический канал связи.
- Канальный уровень регулирует то, как именно будет использоваться физический канал связи и как будут передаваться и приниматься сигналы по этому каналу.
- Сетевой уровень задаёт правила адресации и доставки сообщения — как сделать так, чтобы наше сообщение получил нужный нам адресат.
- Транспортный уровень делает так, чтобы все сообщения отправлялись по очереди, а не так, чтобы один всё время что-то отправляет, а второй не знает, как вклиниться.
- Сеансовый уровень отвечает за связь между двумя программами, которые работают на разных компьютерах.
- Уровень представления используется для того, чтобы внутренние данные компьютера представить в том формате, который нужен для передачи этих данных.
- Прикладной уровень обеспечивает понятный способ связи по сети для разных программ.
Предполагается, что более высокие уровни используют для своей работы более низкие уровни. Например, пятый, сеансовый уровень исходит из того, что все остальные четыре нижних уровня работают как нужно и ему про это думать не надо. Это позволяет разным программистам сосредоточиться каждый на своих задачах и не тратить силы на работу с другими уровнями.

Что это нам даёт
Как пользователю интернета вам не нужно знать, как работают протоколы и сетевые модели. Но как разработчику вам полезно понимать механизм, благодаря которому компьютеры могут друг до друга докричаться.
И вот этот механизм:
- У нас есть набор правил, которые приняли все компьютеры, которые друг друга понимают.
- Эти правила как бы вложены друг в друга. По-другому можно сказать, что более высокоуровневые правила сидят на низкоуровневых.
- Благодаря этой вложенности мы можем делать очень сложно взаимодействующие машины: нам не надо изобретать новый способ связи между устройствами, нам достаточно использовать общепринятые протоколы.
На основании этих базовых понятий мы расскажем о главной сетевой модели современности — TCP/IP. Это всё присказка, а сказка впереди.
Что такое HTTP и зачем он нужен
Рассказываем об одном из самых популярных интернет-протоколов, на котором работает весь современный веб — HTTP.


Иллюстрация: Оля Ежак для Skillbox Media

Дмитрий Зверев
Любитель научной фантастики и технологического прогресса. Хорошо сочетает в себе заумного технаря и утончённого гуманитария. Пишет про IT и радуется этому.
Каждый раз, когда вы включаете компьютер и заходите почитать статьи о программировании, браузер посылает куда-то какие-то запросы. Он делает это беспрерывно, пока вы сидите в интернете. Что это за запросы и зачем они нужны? Давайте разбираться.
Что такое HTTP
HTTP означает «протокол передачи гипертекста» (или HyperText Transfer Protocol). Он представляет собой список правил, по которым компьютеры обмениваются данными в интернете. HTTP умеет передавать все возможные форматы файлов — например, видео, аудио, текст. Но при этом состоит только из текста.
Например, когда вы вписываете в строке браузера www.skillbox.ru, он составляет запрос и отправляет его на сервер, чтобы получить HTML-страницу сайта. Когда сервер обрабатывает запрос, то он отправляет ответ, в котором написано, что всё «ок» и вот вам сайт.

Протокол HTTP используют ещё с 1992 года. Он очень простой, но при этом довольно функциональный. А ещё HTTP находится на самой вершине модели OSI (на прикладном уровне), где приложения обмениваются друг с другом данными. А работает HTTP с помощью протоколов TCP/IP и использует их, чтобы передавать данные.
Кроме HTTP в интернете работает ещё протокол HTTPS. Аббревиатура расшифровывается как «защищённый протокол передачи гипертекста» (или HyperText Transfer Protocol Secure). Он нужен для безопасной передачи данных по Сети. Всё происходит по тем же принципам, как и у HTTP, правда, перед отправкой данные дополнительно шифруются, а затем расшифровываются на сервере.
Например, HTTPS используют во время ввода данных банковской карты или паролей на сайтах — да и в целом большинство современных сайтов используют именно его.

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

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

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

Как HTTP-протокол работает
Весь процесс передачи HTTP-запроса можно разбить на пять шагов. Давайте разберём их подробнее.
Шаг первый — вписываем URL в браузер
Чтобы отправить HTTP-запрос, нужно использовать URL-адрес — это «унифицированный указатель ресурса» (или Uniform Resource Locator). Он указывает браузеру, что нужно использовать HTTP-протокол, а затем получить файл с этого адреса обратно. Обычно URL-адреса начинаются с http:// или https:// (зависит от версии протокола).
Например, http://www.skillbox.ru — это URL-адрес. Он представляет собой главную страницу Skillbox. Но также в URL-адресе могут быть и поддомены — http://www.skillbox.ru/media. Теперь мы запросили главную страницу Skillbox Media.

Шаг второй — браузер находит IP-адрес
Для пользователей URL-адрес — это набор понятных слов: Skillbox, Yandex, Google. Но для компьютера эти понятные нам слова — набор непонятных символов.
Поэтому браузер отправляет введённые вами слова в DNS, преобразователь URL-адресов в IP-адреса. DNS расшифровывается как «доменная система имён» (Domain Name System), и его можно представить как огромную таблицу со всеми зарегистрированными именами для сайтов и их IP-адресами.

Шаг третий — браузер отправляет HTTP-запрос
DNS возвращает браузеру IP-адрес, с которым тот уже умеет работать. Теперь браузер начинает составлять HTTP-запрос с вложенным в него IP-адресом.
Сам HTTP-запрос может выглядеть так:

Здесь четыре элемента: метод — «GET», URI — «/», версия HTTP — «1.1» и адрес хоста — «www.skillbox.ru». Давайте разберём каждый из них подробнее.
Метод — это действие, которое клиент ждёт от сервера. Например, отправить ему HTML-страницу сайта или скачать документ. Протокол HTTP не ограничивает количество разных методов, но программисты договорились между собой использовать только три основных:
- GET — чтобы получить данные с сервера. Например, видео с YouTube или мем с Reddit.
- POST — чтобы отправить данные на сервер. Например, сообщение в Telegram или новый трек в SoundCloud.
- HEAD — чтобы получить только метаданные об HTML-странице сайта. Это те данные, которые находятся в -теге HTML-файла.
URI расшифровывается как «унифицированный идентификатор ресурса» (или Uniform Resource Identifier) — это полный адрес сайта в Сети. Он состоит из двух частей: URL и URN. Первое — это адрес хоста. Например, www.skillbox.ru или www.vk.com. Второе — это то, что ставится после URL и символа / — например, для URI www.skillbox.ru/media URN-адресом будет /media. URN ещё можно назвать адресом до конкретного файла на сайте.
Версия HTTP указывает, какую версию HTTP браузер использует при отправке запроса. Если её не указывать, по умолчанию будет стоять версия 1.1. Она нужна, чтобы сервер вернул HTTP-ответ с той же версией HTTP-протокола и не создал ошибок с чтением у клиента.
Адрес хоста нужен, чтобы указать, с какого сайта клиент пытается получить данные. Адрес указывают в виде домена, но он сразу же меняется на IP-адрес перед отправкой запроса с помощью DNS.

Шаг четвёртый — сервер отдаёт HTTP-ответ
После получения и обработки HTTP-запроса сервер создаёт ответ и отправляет его обратно клиенту. В нём содержатся дополнительная информация (метаданные) и запрашиваемые данные.
Простой HTTP-ответ выглядит так:

Здесь три главные части: статус ответа — HTTP/1.1 200 OK, заголовки Content-Type и Content-Length и тело ответа — HTML-код. Рассмотрим их подробнее.
Статус ответа содержит версию HTTP-протокола, который клиент указал в HTTP-запросе. А после неё идёт код статуса ответа — 200, что означает успешное получение данных. Затем — словесное описание статуса ответа: «ок».
Всего статусов в спецификации HTTP 1.1 — 40. Вот самые популярные из них:
- 200 OK — данные успешно получены;
- 201 Created — значит, что запрос успешный, а данные созданы. Его используют, чтобы подтверждать успех запросов PUT или POST;
- 300 Moved Permanently — указывает, что URL-адрес изменили навсегда;
- 400 Bad Request — означает неверно сформированный запрос. Обычно это случается в связке с запросами POST и PUT, когда данные не прошли проверку или представлены в неправильном формате;
- 401 Unauthorized — нужно выполнить аутентификацию перед тем, как запрашивать доступ к ресурсу;
- 404 Not Found — значит, что не удалось найти запрашиваемый ресурс;
- 405 Forbidden — говорит, что указанный метод HTTP не поддерживается для запрашиваемого ресурса;
- 409 Conflict — произошёл конфликт. Например, когда клиент хочет создать дважды данные с помощью запроса PUT;
- 500 Internal Server Error — означает ошибку со стороны сервера.
Заголовки помогают браузеру разобраться с полученными данными и представить их в правильном виде. Например, заголовок Content-Type сообщает, какой формат файла пришёл и какие у него дополнительные параметры, а Content-Length — сколько места в байтах занимает этот файл.
Тело ответа содержит в себе сам файл. Например, сервер может вернуть код HTML-документа или отправить JPEG-картинку.

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

Что запомнить
- HTTP-протокол — это набор правил, по которым компьютеры обмениваются данными друг с другом. Его инициирует клиент (в данном случае — человек, заходящий в интернет с любого устройства), а обрабатывает сервер и возвращает обратно клиенту. Между ними могут находиться прокси-серверы, которые занимаются дополнительными задачами — шифрованием данных, перераспределением нагрузки или кэшированием.
- HTTP-запрос содержит четыре элемента: метод, URI, версию HTTP и адрес хоста. Метод указывает, какое действие нужно совершить. URI — это путь до конкретного файла на сайте. Версию HTTP нужно указывать, чтобы избежать ошибок, а адрес хоста помогает браузеру определить, куда отправлять HTTP-запрос.
- HTTP-ответ имеет три части: статус ответа, заголовки и тело ответа. В статусе ответа сообщается, всё ли прошло успешно и возникли ли ошибки. В заголовках указывается дополнительная информация, которая помогает браузеру корректно отобразить файл. А в тело ответа сервер кладёт запрашиваемый файл.
Читайте также:
- Что такое IP-адрес и маска подсети и зачем они нужны
- Тест: угадай, где реальная хакерская атака, а где — нет
- Что такое API и как он помогает в создании программных систем
Зачем компьютерам протоколы?
Компьютерные/сетевые протоколы — это своего рода язык, или набор правил, который компьютеры используют для обмена информацией и взаимодействия между собой.
Компьютеры отличаются друг от друга по производителю, типу операционной системы, программной начинке. Для того чтобы они понимали друг друга, процесс «общения» должен следовать определенным правилам. Например, есть правила для обмена сообщениями между почтовыми ящиками, для проведения видеоконференций или для передачи файлов. В компьютерных сетях их определяют протоколы передачи данных.
Компьютерные протоколы помогают зафиксировать:


какие данные и в каком формате передаются;


алгоритм действий на каждом этапе обмена информацией.
Что еще нужно помнить о протоколах
Каждый протокол определяет правила выполнения конкретных задач. К примеру, HTTP (Hyper Text Transfer Protocol) дает возможность просматривать веб-страницы и файлы в интернете, а SSH (secure shell) используется для защищенного удаленного доступа к ОС.
Стандарты развиваются. Раньше для передачи данных через интернет компьютеры использовали сразу несколько моделей транспортных протоколов: TCP/IP, NWLink IPX/SPX, NetBEUI. Сейчас же есть единый стандарт — TCP/IP. В нем протокол TCP (Transmission Control Protocol) отвечает за надежность соединения между компьютерами и доставки сообщений, а IP (Internet Protocol) — за поиск компьютеров в рамках сети.
Для работы с каждым протоколом предназначено свое программное обеспечение. Например, для протокола HTTP это браузер.
Сетевые протоколы: что это и для чего используются
![]()

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

Одной из первых попыток стандартизировать сетевое общение стала модель OSI (The Open Systems Interconnection model, модель взаимодействия открытых систем), предложенная международной организацией ISO (International Organization for Standardization): Модель состоит из семи уровней (layers), каждый из которых решает свою задачу.
- Физический уровень определяет метод передачи сигналов (электрические сигналы, световые сигналы, радиоэфир).
- Канальный уровень занимается аппаратной адресацией, необходимой идентификации устройств и доставки сигналов.
- Сетевой уровень находит пути передачи данных, то есть маршрутизирует трафик.
- Транспортный уровень предназначен для установки соединения, управления потоком и доставки данных.
- Сеансовый уровень как следует из названия, поддерживает сеансы соединений (сессии). На этом уровне сетевые инженеры складывают свои полномочия и в игру вступают прикладные программисты.
- Уровень представления готовит информацию к взаимодействию с пользователем или приложением, при необходимости кодируя и сжимая данные.
- Прикладной уровень определяет взаимодействие сети и пользователя. На этом уровне мы с вами отправляем запросы к интернет-ресурсам, файлам и электронной почте.
В настоящее время модель 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, сетевые администраторы не торопятся внедрять этот протокол по ряду причин.
- Ограниченная поддержка устройств и программного обеспечения. Многие старые устройства и программное обеспечение не поддерживают IPv6.
- Миграция с IPv4 на IPv6 требует значительных усилий и ресурсов. Для перехода на IPv6 компании должны пересмотреть свою сетевую инфраструктуру, а это зачастую непросто и довольно затратно.
- Совместимость с IPv4. IPv4 все ещё широко используется, и многие компании продолжают полагаться на него. IPv6 сети должны быть совместимы с IPv4, чтобы обеспечить безопасный и плавный переход, что требует дополнительных настроек и конфигураций.
- Отсутствие необходимости. Некоторые компании считают, что во внедрении 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, система доменных имён).
Впрочем, детальное рассмотрение всех существующих в настоящее время протоколов в рамках одного обзора вряд ли возможно — в современных компьютерных сетях их насчитывается более семи тысяч.
Надеемся, сегодня нам удалось прояснить хотя бы часть довольно запутанной теории сетей, порой вызывающей бурные споры даже у специалистов. Помните, что и к сложным вещам можно относиться просто. Особенно, если разбить информацию на составляющие, как это делают рассмотренные в этом обзоре сетевые модели.