Skip to content

Instantly share code, notes, and snippets.

@jigi-33
Last active October 1, 2023 13:39
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jigi-33/5cca0dac52da6a39a63d9546fb696320 to your computer and use it in GitHub Desktop.
Save jigi-33/5cca0dac52da6a39a63d9546fb696320 to your computer and use it in GitHub Desktop.
Стек протоколов TCP/IP. HTTP, TCP, REST

Стек протоколов TCP/IP. Прочие сетевые протоколы

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

Модель TCP/IP

Изначально данный стек создавался для объединения больших компьютеров в университетах по телефонным линиям связи соединения «точка-точка». Но когда появились новые технологии, широковещательные (Ethernet) и спутниковые, возникла необходимость адаптировать TCP/IP, что оказалось непростой задачей. Именно поэтому наряду с OSI появилась модель TCP/IP.

Через модель описывается, как необходимо строить сети на базе различных технологий, чтобы в них работал стек протоколов TCP/IP.

Сравнение моделей OSI и TCP/IP

Последняя включает в себя 4 уровня:

  1. Самый нижний, уровень сетевых интерфейсов, обеспечивает взаимодействие с сетевыми технологиями (Ethernet, Wi-Fi и т. д.). Это объединение функций канального и физического уровней OSI.

  2. Уровень Интернет стоит выше, и по задачам перекликается с сетевым уровнем модели OSI. Он обеспечивает поиск оптимального маршрута, включая выявление неполадок в сети. Именно на этом уровне работает маршрутизатор.

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

  4. Прикладной объединил в себе 3 уровня модели OSI: сеансовый, представления и собственно, прикладной. То есть он выполняет такие функции, как поддержка сеанса связи, преобразование протоколов и информации, а также взаимодействие пользователя и сети.

Иногда специалисты пытаются объединить обе модели в нечто общее. Например, приведено пятиуровневое представление симбиоза от авторов [«Компьютерные сети»] Э.Таненбаума и Д. Уэзеролла.

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

Важно не путать их:

  • TCP/IP -- это стек протоколов, представляющий собой основу Интернета.

  • Модель OSI (Базовая Эталонная Модель Взаимодействия Открытых Систем) - подходит для описания самых разных сетей.

Стек протоколов TCP/IP

Рассмотрим каждый уровень более подробно:

Нижний уровень сетевых интерфейсов включает в себя Ethernet, Wi-Fi и DSL (модем). Данные сетевые технологии формально не входят в состав стека, но крайне важны в работе интернета в целом.

Основной протокол сетевого уровня -- IP (Internet Protocol). Это маршрутизированный протокол, частью которого является адресация сети (IP-адрес). Здесь также работают такие дополнительные протоколы, как ICMP, ARRP и DHCP. Они обеспечивают работу сетей.

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

Прикладной уровень - это HTTP (для web), SMTP (передача почты), DNS (назначение IP-адресам понятных доменных имен), FTP (передача файлов). Протоколов на прикладном уровне стека TCP/IP больше, но приведенные можно назвать самыми значимыми для рассмотрения.

Стек протоколов TCP/IP задает стандарты связи между устройствами и содержит соглашения о межсетевом взаимодействии и маршрутизации.

                                                    *   *   *

Разбираем подробнее сетевые технологии: HTTP, TCP, REST

Большинство разговоров о компьютерных сетях сводится к набору аббревиатур: HTTP, TCP, REST. Как все это устроено?

  • Сети подразумевают передачу информации.

  • Самый простой способ передачи информации - это текст.

  • Протоколы - это наборы соглашений, что обеспечивают передачу данных.

Если не углубляться в сложную терминологию, то хорошим примером передачи информации послужат системы мгновенного обмена сообщениями (англ. IM - Instant messaging). Viber, Skype, ICQ etc. Все они имеют отдельные серверы и протоколы, оснащены своими особенностями и правилами передачи данных. Теперь разбираемся подробно.

TCP - что это?

Протокол управления передачей (англ. TCP - Transmission Control Protocol) обеспечивает надежную доставку данных. Сервис TCP так и называется: reliable byte stream (надежная передача потока байт). Этот протокол отвечает за доставку данных и сохранение порядка передаваемых сообщений.

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

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

Как это работает?

  1. От отправителя к получателю "уходит" некий сегмент данных.

  2. Приняв этот сегмент, получатель посылает отправителю подтверждение (ACK или Acknowledgement).

  3. Данный процесс повторяется, пока передаются данные.

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

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

В протоколе TCP также предусмотрена защита от дублирования и нарушения порядка сообщений (сообщения нумеруются).

Протокол HTTP

Мы видим HTTP в каждой ссылке: http://google.com/ и т.д.

Что это значит? HTTP - это протокол передачи гипертекста.

Грубо говоря, это тип разметки, которая добавляется в текстовые документы для определенного отображения текста. Например, в HTML используются теги. Так это выглядит в браузере, все знают.

В стеке протоколов HTTP находится на прикладном уровне.

Он использует протокол TCP и порт сервера 80 (для клиента порт генерируется операционной системой).

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

Что такое REST?

REST представляет собой стиль архитектуры ПО для распределенных систем вроде World Wide Web. Используется, как правило, для построения веб-служб. Именно Рой Филдинг, один из авторов HTTP, ввел термин REST в 2000 году.

Это очень простой интерфейс управления данными, в котором не предусмотрены дополнительные внутренние «прослойки». Такой механизм означает передачу информации в точно том же виде, что и сама информация. Грубо говоря, мы НЕ заворачиваем ее в XML, что присуще SOAP, НЕ юзаем AMF, как Flash, etc.

Управление информацией основано на протоколе передачи данных. Наиболее распространенный - HTTP, о котором шла речь ранее. В этом случае операции над информацией выполняются с помощью GET, PUT, POST, DELETE.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment