Большинство разговоров о компьютерных сетях сводится к набору аббревиатур: HTTP, TCP, REST. Разберёмся в том, как всё устроено.
Сети подразумевают передачу информации.Самый простой способ передачи информации — это текст.Протоколы — это наборы соглашений, что обеспечивают передачу данных.
Если не углубляться в сложную терминологию, то хорошим примером передачи информации послужат системы мгновенного обмена сообщениями (англ. IM — Instant messaging). Viber, Skype, Messenger, etc. Все они имеют отдельные серверы и протоколы, оснащены своими особенностями и правилами передачи данных. Теперь разбираемся подробно:
TCP
Протокол управления передачей (англ. TCP — Transmission Control Protocol) обеспечивает надежную доставку данных. Сервис TCP так и называется: reliable byte stream (надежная передача потока байт). Этот протокол отвечает за доставку данных и сохранение порядка передаваемых сообщений.
Поток может быть большим. Как же в этом случае работает протокол? Допустим, вы скачиваете файл, который весит несколько Гб. В протоколе поток будет разбиваться на сегменты, и каждый из этих сегментов — отправляться получателю. На стороне получателя все части снова собираются.
Чтобы обеспечить гарантию доставки данных, TCP использует подтверждение получения сообщений. Как это работает?
От отправителя к получателю «уходит» некий сегмент данных.Приняв этот сегмент, получатель посылает отправителю подтверждение (ACK или Acknowledgement).Данный процесс повторяется, пока передаются данные.
А вот что происходит, если при передаче произошла ошибка: сегмент теряется в сети, не доходит до получателя, и подтверждение не отправляется. Со стороны отправителя есть таймер, который задает время ожидания подтверждения. По истечении этого времени и за неимением ACK сегмент отправляется повторно.
Вот только в протоколе TCP подтверждаются сразу несколько сегментов, которые отправляются друг за другом (механизм скользящего окна). В противном случае скорость обмена данными была бы ужасающе медленной.
В протоколе TCP также предусмотрена защита от дублирования и нарушения порядка сообщений (сообщения нумеруются).
HTTP
Мы видим HTTP в каждой ссылке: http://google.com/. Что это значит? HTTP — это протокол передачи гипертекста. Грубо говоря, это тип разметки, которая добавляется в текстовые документы для определенного отображения текста.
В стеке протоколов HTTP находится на прикладном уровне.
Он использует протокол TCP и порт сервера 80 (для клиента порт генерируется операционной системой).
Режим работы HTTP — запрос-ответ: клиент посылает серверу запрос на передачу web-страницы, после чего сервер пересылает эту страницу клиенту. При этом нет жестко заданного формата пакетов: используется текстовый режим.
REST
REST представляет собой стиль архитектуры ПО для распределенных систем вроде World Wide Web. Используется, как правило, для построения веб-служб. Именно Рой Филдинг, один из авторов HTTP, ввел термин REST в 2000 году.
Это очень простой интерфейс управления данными, в котором не предусмотрены дополнительные внутренние «прослойки». Такой механизм означает передачу информации в точно том же виде, что и сама информация. Грубо говоря, мы не заворачиваем ее в XML, что присуще SOAP, не юзаем AMF, как Flash, etc.
Управление информацией основано на протоколе передачи данных. Наиболее распространенный — HTTP, о котором мы говорили ранее. В этом случае операции над информацией выполняются с помощью GET, PUT, POST, DELETE.