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