Что делает веб-сервер при получении запроса от вашего интернет-браузера

Обновлено: 21.11.2024

Эта страница создана с помощью сети HTML, CSS и Javascript, отправленной вам Codecademy через Интернет. Интернет состоит из множества ресурсов, размещенных на разных серверах. Термин «ресурс» соответствует любому объекту в Интернете, включая файлы HTML, таблицы стилей, изображения, видео и сценарии. Чтобы получить доступ к контенту в Интернете, ваш браузер должен запрашивать у этих серверов необходимые ему ресурсы, а затем отображать эти ресурсы для вас. Этот протокол запросов и ответов позволяет просматривать эту страницу в браузере.

В этой ситуации ваш компьютер, который делает запрос, называется клиентом. Запрашиваемый вами URL-адрес принадлежит серверу.

Давайте рассмотрим пример того, как запросы GET (наиболее распространенный тип запросов) используются, чтобы помочь вашему компьютеру (клиенту) получить доступ к ресурсам в Интернете.

Вторая строка запроса содержит адрес сервера "www.codecademy.com" . Также могут быть дополнительные строки в зависимости от того, какие данные предпочитает отправлять ваш браузер.

Если серверу удается найти запрошенный путь, он может ответить заголовком:

Если сервер не может найти путь, запрошенный клиентом, он ответит заголовком:

Аналогия:

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

Доставщик почты возвращается на легком скоростном поезде, разрывая пути на обратном пути, и сообщает вам, что возникла проблема «404 Not Found». После проверки правописания того, что вы написали, вы понимаете, что ошиблись в названии газеты. Вы исправляете его и сообщаете исправленный заголовок доставщику почты.

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

Как работает Интернет предоставляет упрощенное представление о том, что происходит, когда вы просматриваете веб-страницу в веб-браузере на компьютере или телефоне.

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

Клиенты и серверы

Компьютеры, подключенные к Интернету, называются клиентами и серверами. Упрощенная схема их взаимодействия может выглядеть так:

  • Клиенты – это подключенные к Интернету устройства типичного веб-пользователя (например, ваш компьютер, подключенный к сети Wi-Fi, или ваш телефон, подключенный к вашей мобильной сети) и программное обеспечение для доступа в Интернет, доступное на этих устройствах (обычно веб-браузер, такой как Firefox или Chrome).
  • Серверы — это компьютеры, на которых хранятся веб-страницы, сайты или приложения. Когда клиентское устройство хочет получить доступ к веб-странице, копия веб-страницы загружается с сервера на клиентский компьютер для отображения в веб-браузере пользователя.

Другие части набора инструментов

Клиент и сервер, которые мы описали выше, не рассказывают всей истории. Здесь задействовано много других частей, и мы опишем их ниже.

На данный момент давайте представим, что сеть — это дорога. На одном конце дороги находится клиент, который как ваш дом. На другом конце дороги находится сервер, который является магазином, в котором вы хотите что-то купить.

Помимо клиента и сервера, нам также нужно поздороваться с:

Так что именно происходит?

Когда вы вводите веб-адрес в браузере (по аналогии с походом в магазин):

  1. Браузер обращается к DNS-серверу и находит реальный адрес сервера, на котором живет веб-сайт (вы находите адрес магазина).
  2. Браузер отправляет сообщение HTTP-запроса на сервер с просьбой отправить копию веб-сайта клиенту (вы идете в магазин и заказываете товары). Это сообщение и все другие данные, передаваемые между клиентом и сервером, передаются через ваше подключение к Интернету с использованием протокола TCP/IP.
  3. Если сервер одобряет запрос клиента, сервер отправляет клиенту сообщение "200 OK", что означает "Конечно, вы можете посмотреть этот веб-сайт! Вот он", а затем начинает отправлять файлы веб-сайта в браузер. в виде серии небольших фрагментов, называемых пакетами данных (магазин дает вам ваши товары, а вы приносите их домой).
  4. Браузер собирает небольшие фрагменты в полноценную веб-страницу и отображает ее вам (товары доставляются к вашей двери — новые блестящие вещи, круто!).

Порядок, в котором анализируются файлы компонентов

Когда браузеры отправляют запросы на серверы для HTML-файлов, эти HTML-файлы часто содержат элементы, ссылающиеся на внешние таблицы стилей CSS, и

Теперь, когда вы знаете цель и потенциальные преимущества программирования на стороне сервера, мы подробно рассмотрим, что происходит, когда сервер получает "динамический запрос" от браузера. Поскольку большая часть серверного кода веб-сайта обрабатывает запросы и ответы аналогичным образом, это поможет вам понять, что вам нужно делать при написании большей части собственного кода.

Предварительные требования: Базовая компьютерная грамотность. Базовое понимание того, что такое веб-сервер.
Цель: Понимать взаимодействие клиент-сервер на динамическом веб-сайте и в частности, какие операции должны выполняться серверным кодом.

В обсуждении нет реального кода, потому что мы еще не выбрали веб-фреймворк для написания нашего кода! Тем не менее, это обсуждение по-прежнему очень актуально, потому что описанное поведение должно быть реализовано вашим кодом на стороне сервера, независимо от того, какой язык программирования или веб-фреймворк вы выберете.

Этот запрос включает:

Веб-серверы ожидают сообщений с запросами клиентов, обрабатывают их, когда они приходят, и отвечают веб-браузеру ответным сообщением HTTP. Ответ содержит код состояния ответа HTTP, указывающий, был ли запрос выполнен успешно (например, «200 OK» для успеха, «404 Not Found», если ресурс не может быть найден, «403 Forbidden», если пользователь не авторизован для просмотра ресурс и др.). Тело успешного ответа на запрос GET будет содержать запрошенный ресурс.

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

Пример запроса/ответа GET

Вы можете сделать простой запрос GET, щелкнув ссылку или выполнив поиск на сайте (например, на главной странице поисковой системы). Например, HTTP-запрос, который отправляется, когда вы выполняете поиск в MDN по термину «обзор клиент-сервер», будет очень похож на текст, показанный ниже (он не будет идентичен, поскольку части сообщения зависят от вашего браузера/настройки). ).

Примечание. Формат сообщений HTTP определяется "веб-стандартом" (RFC7230). Вам не нужно знать такой уровень детализации, но, по крайней мере, теперь вы знаете, откуда все это взялось!

Запрос

Каждая строка запроса содержит информацию о нем. Первая часть называется заголовком и содержит полезную информацию о запросе, точно так же, как заголовок HTML содержит полезную информацию о HTML-документе (но не само фактическое содержимое, которое находится в теле):

Первая и вторая строки содержат большую часть информации, о которой мы говорили выше:

Остальные строки содержат информацию об используемом браузере и типах ответов, которые он может обрабатывать. Например, здесь вы можете увидеть, что:

Ответ

Первая часть ответа на этот запрос показана ниже. Заголовок содержит следующую информацию:

  • Первая строка содержит код ответа 200 OK , который говорит нам об успешном выполнении запроса.
  • Мы видим, что ответ имеет формат text/html ( Content-Type ).
  • Мы также видим, что он использует набор символов UTF-8 ( Content-Type: text/html; charset=utf-8 ).
  • Заголовок также сообщает нам, насколько он велик ( Content-Length: 41823 ).

В конце сообщения мы видим содержимое тела, которое содержит фактический HTML-код, возвращаемый запросом.

Остальная часть заголовка ответа включает информацию об ответе (например, когда он был сгенерирован), сервере и о том, как он ожидает, что браузер будет обрабатывать страницу (например, строка X-Frame-Options: DENY сообщает браузеру, что чтобы разрешить встраивание этой страницы в другой сайт).

Пример запроса/ответа POST

Запрос

Основное отличие состоит в том, что URL не имеет параметров. Как видите, информация из формы закодирована в теле запроса (например, полное имя нового пользователя задается с помощью: &user-fullname=Hamish+Willee ).

Ответ

Статические сайты

Статический сайт – это сайт, который возвращает одно и то же жестко запрограммированное содержимое с сервера при каждом запросе определенного ресурса.Так, например, если у вас есть страница о продукте в /static/myproduct1.html , эта же страница будет возвращена каждому пользователю. Если вы добавите на свой сайт еще один похожий продукт, вам нужно будет добавить еще одну страницу (например, myproduct2.html) и так далее. Это может стать действительно неэффективным — что произойдет, когда вы доберетесь до тысяч страниц продукта? Вы будете повторять много кода на каждой странице (базовый шаблон страницы, структура и т. д.), и если вы захотите что-то изменить в структуре страницы — например, добавить новый раздел «сопутствующие товары», — тогда вы приходится менять каждую страницу по отдельности.

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

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

Когда пользователь хочет перейти на страницу, браузер отправляет HTTP-запрос GET с указанием URL-адреса его HTML-страницы. Сервер извлекает запрошенный документ из своей файловой системы и возвращает ответ HTTP, содержащий документ и код состояния ответа HTTP «200 OK» (указывающий на успех). Сервер может вернуть другой код состояния, например "404 Not Found", если файл отсутствует на сервере, или "301 Moved Permanently", если файл существует, но был перенаправлен в другое место.

Понимание того, как работают статические сайты, тем не менее полезно при изучении серверного программирования, поскольку динамические сайты обрабатывают запросы на статические файлы (CSS, JavaScript, статические изображения и т. д.) точно так же.

Динамические сайты

Использование базы данных позволяет эффективно хранить информацию о продуктах в легко расширяемом, модифицируемом и доступном для поиска виде.

Использование шаблонов HTML упрощает изменение структуры HTML, поскольку это нужно делать только в одном месте, в одном шаблоне, а не на тысячах статических страниц.

Структура динамического запроса

В этом разделе представлен пошаговый обзор «динамического» цикла HTTP-запросов и ответов, основанный на том, что мы рассмотрели в предыдущей статье, с более подробным описанием. Чтобы «сохранить реальность», мы будем использовать контекст веб-сайта менеджера спортивной команды, где тренер может выбрать название своей команды и размер команды в HTML-форме и получить предложенный «лучший состав» для своей следующей игры.

После того, как тренер отправит форму с названием команды и количеством игроков, последовательность операций следующая:

  1. Веб-браузер создает HTTP-запрос GET на сервер, используя базовый URL-адрес ресурса ( /best ) и кодируя номер команды и игрока либо как параметры URL-адреса (например, /best?team=my_team_name&show=11), либо как его часть. шаблона URL (например, /best/my_team_name/11/ ). Запрос GET используется, поскольку запрос только извлекает данные (не изменяет данные).
  2. Веб-сервер определяет, что запрос является «динамическим», и перенаправляет его в веб-приложение для обработки (веб-сервер определяет, как обрабатывать разные URL-адреса на основе шаблона). правила сопоставления, определенные в его конфигурации).
  3. Веб-приложение определяет, что намерение запроса состоит в том, чтобы получить «список лучших команд» на основе URL-адреса ( /best/ ), и находит необходимые название команды и количество игроков из URL. Затем веб-приложение получает необходимую информацию из базы данных (используя дополнительные «внутренние» параметры, чтобы определить, какие игроки являются «лучшими», и, возможно, также получая идентификационные данные тренера, вошедшего в систему, с клиентской стороны). куки).
  4. Веб-приложение динамически создает HTML-страницу, помещая данные (из базы данных) в заполнители внутри шаблона HTML.
  5. Веб-приложение возвращает сгенерированный HTML-код в веб-браузер (через веб-сервер) вместе с кодом состояния HTTP 200 ("успешно"). Если что-то препятствует возврату HTML, веб-приложение вернет другой код, например "404", чтобы указать, что команда не существует.
  6. Затем веб-браузер начнет обрабатывать возвращенный HTML-код, отправляя отдельные запросы для получения любых других файлов CSS или JavaScript, на которые он ссылается (см. шаг 7).
  7. Веб-сервер загружает статические файлы из файловой системы и возвращает их непосредственно в браузер (опять же, правильная обработка файлов основана на правилах конфигурации и сопоставлении шаблонов URL-адресов).

Выполнение другой работы

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

Возврат чего-либо, отличного от HTML

Код веб-сайта на стороне сервера не должен возвращать фрагменты HTML или файлы в ответе. Вместо этого он может динамически создавать и возвращать другие типы файлов (текст, PDF, CSV и т. д.) или даже данные (JSON, XML и т. д.).

Идея возвращать данные в веб-браузер, чтобы он мог динамически обновлять свой собственный контент (AJAX), существует уже довольно давно. В последнее время стали популярными «одностраничные приложения», когда весь веб-сайт написан с помощью одного HTML-файла, который динамически обновляется при необходимости. Веб-сайты, созданные с использованием этого стиля приложений, требуют больших вычислительных затрат от сервера к веб-браузеру и могут привести к тому, что веб-сайты будут вести себя намного больше, чем нативные приложения (высокая скорость отклика и т. д.).

Веб-фреймворки упрощают веб-программирование на стороне сервера

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

Одна из наиболее важных операций, которые они выполняют, — предоставление простых механизмов для сопоставления URL-адресов различных ресурсов/страниц с определенными функциями обработчика. Это упрощает хранение кода, связанного с каждым типом ресурса, отдельно. Это также имеет преимущества с точки зрения обслуживания, поскольку вы можете изменить URL-адрес, используемый для доставки определенной функции, в одном месте, без необходимости изменять функцию обработчика.

Например, рассмотрим следующий код Django (Python), который сопоставляет два шаблона URL с двумя функциями представления. Первый шаблон гарантирует, что HTTP-запрос с URL-адресом ресурса /best будет передан функции с именем index() в модуле представлений. Вместо этого запрос с шаблоном " /best/junior " будет передан в функцию просмотра Junior().

Примечание. Первые параметры в функциях url() могут выглядеть немного странно (например, r'^junior/$' ), потому что они используют технику сопоставления с образцом, называемую "регулярными выражениями" (RegEx или RE). На данном этапе вам не нужно знать, как работают регулярные выражения, за исключением того, что они позволяют нам сопоставлять шаблоны в URL-адресе (а не жестко закодированные значения выше) и использовать их в качестве параметров в наших функциях представления. Например, в очень простом регулярном выражении может быть указано «соответствует одной прописной букве, за которой следует от 4 до 7 строчных букв».

Веб-фреймворк также позволяет функции представления легко извлекать информацию из базы данных. Структура наших данных определяется в моделях, которые представляют собой классы Python, определяющие поля, которые должны храниться в базовой базе данных. Если у нас есть модель с именем Team с полем "team_type", мы можем использовать простой синтаксис запроса, чтобы получить все команды определенного типа.

В приведенном ниже примере отображается список всех команд, которые имеют точное (с учетом регистра) значение team_type для "junior". Обратите внимание на формат: имя поля ( team_type ), за которым следует двойное подчеркивание, а затем используемый тип соответствия (в этот случай точный ). Есть много других типов спичек, и мы можем объединить их в гирляндную цепочку. Мы также можем контролировать порядок и количество возвращаемых результатов.

Очевидно, что веб-фреймворки могут помочь вам во многих других задачах. В следующей статье мы обсудим гораздо больше преимуществ и некоторые популярные веб-фреймворки.

Обзор

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

В следующем модуле мы поможем вам выбрать лучший веб-фреймворк для вашего первого сайта.

Как веб-сервер обрабатывает запросы?

Как происходит ответ на запрос между веб-браузером и веб-сервером?

Как сервер различает запросы от двух разных клиентов?

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

В чем разница между клиентом и сервером?

Сервер — это программа или машина, ожидающая входящих запросов. Клиент – это программа или машина, которая отправляет запросы на серверы.

Что такое сеть клиент-сервер?

Что такое сеть клиент-сервер? Сеть клиент-сервер — это среда, через которую клиенты получают доступ к ресурсам и службам с центрального компьютера через локальную сеть (LAN) или глобальную сеть (WAN), например Интернет.

Каковы недостатки серверов?

недостатки и недостатки, с которыми вы неизбежно столкнетесь в среде сервера.

  • Увеличение затрат. Наиболее очевидным моментом в использовании сети на основе сервера является увеличение стоимости.
  • Единая точка отказа.
  • Переход.
  • Качество поддержки.

Действительно ли мне нужен сервер?

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

Что еще означает сервер?

Что еще означает сервер?

официант официант
стюардесса стюард
метрдотель хозяйка
хозяин метрдотель
старшая официантка слуга

Что делает сервер в сети?

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

Является ли сервер сетевым устройством?

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

Как называется компьютер, не подключенный к сети?

Сеть – это два или более компьютеров (или других электронных устройств), соединенных между собой, как правило, с помощью кабелей или Wi-Fi. Компьютер, не подключенный к сети, называется автономным компьютером.

Какое из следующего является именем для всех компьютеров, подключенных к сети?

Как называется компьютер, подключенный к серверу?

Ответ: Если ваш персональный компьютер подключен к сети, он называется сетевой рабочей станцией (обратите внимание, что это отличается от использования термина рабочая станция в качестве высокопроизводительного микрокомпьютера). Остальные рабочие станции называются клиентскими компьютерами, а это сеть сервер/клиент.

Что не подключено к Интернету?

Существует множество возможных причин, по которым ваш интернет не работает. Ваш маршрутизатор или модем могут быть устаревшими, ваш кэш DNS или IP-адрес могут испытывать сбои, или у вашего интернет-провайдера могут быть сбои в вашем регионе. Проблема может заключаться в неисправном кабеле Ethernet.

Читайте также: