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

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

Например, протоколы типа HTTP поддерживают функцию доставки веб-страниц на оконечные устройства. Теперь, когда мы изучили все уровни и их функциональные возможности, можно понаблюдать за процессом запроса веб-страницы на веб-сервере, чтобы увидеть, как все эти независимые функции работают вместе.

При использовании модели TCP/IP полный процесс обмена данными состоит из шести шагов.

Создание данных

Первый шаг — это создание данных на уровне приложений исходного оконечного устройства. В этом случае после создания запроса веб-клиента (HTTP GET) эти данные будут закодированы, сжаты и, если необходимо, зашифрованы. Этот процесс выполняется на уровне приложений модели TCP/IP, но к нему также относятся функции, описанные уровнем приложений, уровнем представления и сеансовым уровнем модели OSI. После уровня приложений эти данные передаются в виде потока на транспортный уровень.

Сегментация и первоначальная инкапсуляция

Следующий шаг — это сегментация и инкапсуляция данных по мере их прохождения по стеку протоколов. На транспортном уровне сообщение HTTP GET будет разбито на более мелкие и более управляемые части, в каждую из которых будет добавлен заголовок транспортного уровня. В заголовках транспортного уровня находятся индикаторы, по которым можно будет воссоздать сообщение. В заголовок также добавляется идентификатор — номер порта 80. Он сообщает конечному серверу, что сообщение предназначено для приложения веб-сервера. Также добавляется сгенерированный случайным образом исходный порт, чтобы клиент смог получить ответное сообщение и переслать его соответствующему клиентскому приложению.