Разбираем по косточкам компьютерные сети: HTTP, TCP, REST

2
11992

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

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

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

TCP: что за зверь такой?

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

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

TCP

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

  1. От отправителя к получателю «уходит» некий сегмент данных.
  2. Приняв этот сегмент, получатель посылает отправителю подтверждение (ACK или Acknowledgement).
  3. Данный процесс повторяется, пока передаются данные.

TCP

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

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

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

Разбираемся с HTTP

Мы видим HTTP в каждой ссылке: http://google.com/. Что это значит? HTTP — это протокол передачи гипертекста. Грубо говоря, это тип разметки, которая добавляется в текстовые документы для определенного отображения текста. Например, в HTML используются теги:

HTTP

Так это выглядит в браузере:

HTML

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

HTTP

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

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

Что такое REST?

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

REST

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

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

Дополнительные материалы по теме: