Для чего нужен веб сервер

Для чего нужен веб сервер

Для чего нужен веб сервер




Скачать файл - Для чего нужен веб сервер

















В предыдущей лекции мы разобрались с функционированием протокола HTTP. Теперь давайте рассмотрим, как работают инструменты, которые делают возможным описанные ранее взаимодействия. В основе функционирования веб-приложений лежит такое понятие как веб-сервер. Веб- сервер — это программа , которая принимает входящие HTTP -запросы, обрабатывает эти запросы, генерирует HTTP -ответ и отправляет его клиенту. Общий алгоритм работы веб-сервера можно представить следующим образом зеленым цветом помечены действия, которые обрабатываются веб-сервером. После того, как пользователь обратился к определенному ресурсу по протоколу HTTP , клиент обычно браузер формирует HTTP - запрос к веб-серверу. Обычно указывается символическое имя сервера например, ' http: После этого по протоколу HTTP на веб- сервер отправляется сформированное HTTP -сообщение. В этом сообщении браузер указывает какой ресурс необходимо загрузить и всю дополнительную информацию. Задача веб-сервера — прослушивать определенный TCP - порт обычно порт 80 и принимать все входящие HTTP -сообщения. Если входящие данные не соответствуют формату сообщения HTTP , то такой запрос игнорируется, а клиенту возвращается сообщение об ошибке. В простейшем случае при поступлении HTTP -запроса веб- сервер должен считать содержимое запрашиваемого файла с жесткого диска, упаковать его содержимое в HTTP -ответ и отправить клиенту. В случае если требуемый файл не найден на жестком диске, то веб- сервер сгенерирует ошибку с указанием статусного кода и отправит это сообщение клиенту. Такой вариант работы веб-сервера принято называть статическими сайтами. В этом случае на стороне сервера не запускается никакой программный код, кроме программного кода самого веб-сервера. Однако подобные сценарии работы все чаще оказываются непригодными, а им на смену приходят полноценные веб-приложения. Отличие таких приложений состоит в том, что HTML -документы и другие ресурсы не хранятся на сервере в виде неизменяемых данных. Вместо этого, на сервере хранится программный код, который способен сгенерировать эти данные в момент обработки запроса. Разумеется, некоторые ресурсы такие как файлы каскадных стилей, изображения и т. В таком случае веб- сервер при обработке запроса HTTP должен обращаться к программному коду, который должен сгенерировать содержимое. С учетом вышесказанного алгоритм работы веб-сервера будет выглядеть следующим образом. Одной из наиболее важных задач, которые решаются при построении веб-сервера является задача обеспечения масштабируемости то есть возможности увеличения количества обслуживаемых пользователей и защищенности от внешних атак. Поскольку веб- сервер работает в открытой среде — глобальной сети Интернет — то зачастую доступ к нему может осуществляться откуда угодно. Это делает веб- сервер подверженным большим нагрузкам и потенциальным атакам. Наиболее распространенными атаками на веб- сервер является обращение к веб-серверу с большим количеством запросов и их высокой частотой. В этом случае веб- сервер не сможет быстро обрабатывать все запросы, а это может сказаться на производительности веб-сервера для настоящих пользователей. Особенно остро подобным атакам подвержены веб-сервера, на которых исполняется какой-то внешний программный код за исключением программного кода самого веб-сервера. Обычно для борьбы с подобными атаками блокируются все запросы, которые приходят с определенного IP -адреса. Кроме того, в подобных случаях следует позаботится об оптимизации программного кода приложения, например, использовать кэширование — в этом случае при обработке каждого запроса нагрузка на центральный процессор будет меньше, что может существенно усложнить задачу атакующим. Нередко на одном и том же веб-сервере располагается множество независимых веб-сайтов. Более того, все эти веб-сайты используют один и тот же IP - адрес. Каким образом это становится возможным? Такое явление называется виртуальным хостингом. Для того чтобы понять как это работает, давайте еще раз обратимся к процессу взаимодействия клиента и сервера. Браузер отправляет HTTP - запрос на IP - адрес веб-сервера, который ассоциирован с доменным именем. Разрешение IP -адреса происходит с помощью служб DNS. Однако, несмотря на то, что запрос отправляется, используя полученный IP - адрес , клиент указывает дополнительный HTTP -заголовок ' Host ', в котором определяется оригинальное имя веб-сайта. Благодаря этой информации веб- сервер может разграничить доступ к нескольким веб-сайтам и при этом использовать один и тот же IP - адрес. Это очень важный момент, поскольку если бы для каждого доменного имени приходилось бы регистрировать отдельный IP - адрес , то адресное пространство протокола IP v. Для того, чтобы было более понятно давайте рассмотрим работу виртуального хостинга на примере. Предположим, имеется веб- сервер с IP -адресом На этом сервере размещено несколько веб-сайтов: Сервера DNS настроены таким образом, что каждое из этих доменных имен указывает на единственный IP - адрес Давайте посмотрим, какие HTTP -запросы браузер будет генерировать при обращении к каждому из сайтов. При обращении к сайту 'mysite1. При обращении к сайту 'mysite2. При анализе HTTP -запросов хорошо видно, что HTTP -заголовок ' Host ' отличается в каждом из запросов. Таким образом, становится понятно, что веб- сервер анализирует этот заголовок и отправляет клиенту содержимое соответствующего сайта. Схематически этот процесс можно представить следующим образом. Подобную схему виртуального хостинга использует большинство компаний, занимающихся размещением веб-сайтов в Интернет. Поскольку в этом случае на одном физическом сервере могут размещаться большое количество совершенно различных сайтов, то этот способ один из самых дешевых. Однако, в рамках виртуального хостинга обычно запрещено запускать различные службы и сервисы, а также существует ограничение по степени использования центрального процессора. Это означает, что в случае, когда веб- сайт потребляет слишком много серверных ресурсов, то владельцу сайта предлагается либо перейти на более дорогой тариф с большим количеством выделенных ресурсов , либо при превышении допустимого порогового значения веб- сайт блокируется на некоторое время. Поскольку иногда от сервера требуется большое количество ресурсов или в рамках этого сервера необходимо запускать дополнительные приложения или службы, виртуальный хостинг можно использовать не всегда. В этом случае обычно арендуют выделенный сервер — физический или виртуальный. Однако, это более дорогой вид размещения веб-приложений в сети Интернет , поэтому зачастую используется именно виртуальный хостинг. Как уже говорилось ранее, самый простой сценарий работы веб-сервера заключается в получении HTTP -запроса, его обработки, считывания нужного файла с жесткого диска, формирование HTTP -ответа и отправки его клиенту. Подобный сценарий является самым простым, однако, в реальности встречается все реже. Дело в том, что при подобном подходе, содержимое, которое передается клиенту, является статическим то есть не изменяется от запроса к запросу. Однако если требуется построить веб- приложение , то содержимое HTML -страницы, которое передается клиенту должно изменяться от различных внешних условий параметров запроса, содержимого базы данных , времени обработки запроса, типа пользователя и т. В этом случае требуется запускать внешний по отношению к веб-серверу программный код, реализующий логику веб-приложения. Этот код должен содержаться отдельно от программного кода самого веб-сервера, поскольку код приложения будет различным от одного приложения к другому, а веб- сервер будет один и тот же. Таким образом, программный код, обрабатывающий HTTP -запросы и генерирующий HTTP -ответы можно условно разделить на две части:. Поскольку программный код веб-приложения обычно упаковывается в отдельные модули и поставляется независимо, то требуются механизмы взаимодействия этих двух частей, то есть интерфейс взаимодействия. В данном случае под интерфейсом взаимодействия понимается набор правил, по которым веб- сервер и приложение будут взаимодействовать друг с другом. Фактически, схема обработки запроса может выглядеть следующим образом. Исторически сложилось так, что существует два главных типов интерфейс взаимодействия внешнего приложения и веб-сервера - CGI и ISAPI. CGI Common Gateway Interface — наиболее ранний способ взаимодействия веб-сервера и веб-приложения. Основная идея, которая лежит в основе CGI заключается в том, что при поступлении очередного HTTP -запроса, веб- сервер инициирует создание нового процесса и передает ему все необходимые данные HTTP -запроса. После того, как этот процесс отработает, он завершается, передав при этом результат обратно веб-серверу. Поскольку веб- сервер и приложение — это разные процессы с точки зрения операционной системы, то для обмена информации между ними используются средства межпроцессного взаимодействия IPC — зачастую это переменные окружения , именованные каналы и т. Основным преимуществом CGI является то, что процесс веб-сервера и приложения изолированы друг от друга и в случае неполадок в веб-приложении, завершится с ошибкой именно процесс приложения, при этом процесс самого веб-сервера будет продолжать функционировать. С другой стороны, необходимость создания каждый раз нового процесса влечет за собой дополнительные накладные расходы на создание процесса создание процесса — дорогостоящая операция с точки зрения операционной системы и передачи данных через границы процессов. Этот факт является серьезным недостатком и оказывает существенное влияние на масштабируемость веб-приложения возможность обрабатывать большее количество поступающих запросов. ISAPI Internet Server API — альтернативный способ взаимодействия веб-сервера и веб-приложения. В отличии от CGI , при взаимодействии в рамках интерфейса ISAPI , при поступлении очередного запроса, веб- сервер инициирует создание нового потока в рамках основного процесса, в котором работает веб- сервер. Поскольку с точки зрения операционной системы создание потока — это менее дорогостоящая операция, чем создание процесса , то такие приложения на практике оказываются более масштабируемыми. Кроме того, упрощается взаимодействие веб-сервера и веб-приложения, поскольку в этом случае используется единое адресное пространство в рамках операционной системы поскольку весь код работает в одном и том же процессе. Однако, в случае серьезных неполадок в веб-приложении, которое взаимодействует с веб-сервером в рамках ISAPI , веб- сервер также потенциально подвергается риску быть завершенным. Поскольку веб- сервер и веб- приложение работают в одном и том же процессе, это действительно так. Поэтому разработчикам программного кода веб-сервера, поддерживающего ISAPI следует уделить этому вопросу особое внимание. На сегодняшний день наиболее распространенным способом взаимодействия веб-сервера и веб-приложения является интерфейс ISAPI , поскольку обеспечивает наиболее оптимальные показатели по накладным расходам и масштабируемости. Однако, при работе нескольких веб-приложений на одном и том же веб-сервере, в этом случае существует потенциальная опасность влияния одного приложения на другое. Если говорить о компаниях, размещающих веб-приложения на своих серверах, то может случиться такая ситуация, что на одном и том же веб-сервере одновременно размещаются веб-сайты компаний-конкурентов. В этом случае теоретически одна из компаний может намеренно загрузить код, который будет завершать работу веб-сервера с ошибкой и, таким образом, все веб-сайты размещенные на этом веб-сервере окажутся недоступными. Для того, чтобы избежать подобной ситуации используется совмещенный подход — для каждого приложения может создаваться пул приложения application pool , который представляет из себя отдельный процесс, в котором функционируют потоки для обработки входящих HTTP -запросов от пользователей. В этом случае, если какое-то из приложений будет содержать код, который завершает работу процесса с ошибкой, то будет завершаться процесс только этого приложения. Более того, каждый пул приложения содержит набор заранее созданных и подготовленных потоков. Это необходимо для того, чтобы не тратить время на создание потока в момент поступления входящего запроса. Такой набор заранее созданных потоков называется пулом потоков. Как правило, веб- сервер следит за каждым пулом приложения и если оно завершает свою работу с ошибкой, то веб- сервер перезапускает его процесс. Кроме приведенных функций и механизмов веб-сервера, в его функции зачастую входят и сопутствующие дополнительные задачи. К этим задачам относится аутентфикация и авторизация пользователя, ведение серверного лога для отладки работы веб-сервера , поддержка нескольких веб-сайтов на одном сервере виртуальный хостинг , поддержка безопасных подключений по протоколу HTTPS и др. Эти функции в каждом конкретном случае зависят от реализации веб-сервера. На сегодняшний день существует большое количество различных реализаций веб-серверов. Одним из наиболее популярных и универсальных веб-серверов является веб- сервер с открытым исходным кодом Apache. Он был создан для работе в среде Linux, также существует реализация для работы в рамках Windows. На его основе были построены другие различные вариации, например, Apache Tomcat для запуска веб-приложений на основе Java. Другим, наиболее серьезным продуктом в этой области является веб- сервер Microsoft Internet Information Services IIS , который работает в рамках операционной системы Windows. Как правило, в рамках этого веб-сервера работают приложения на базе ASP. NET и родственных технологий , а также приложения PHP и статические веб-сайты. При создании веб-приложений на базе ASP. NET мы будем использовать именно IIS 7. Наконец, существуют другие, менее масштабные проекты по разработке веб-серверов, например Nginx. Этот проект был разработан одним из разработчиков Rambler с целью оптимизации производительности этой поисковой системы. Впоследствии проект оказался настолько удачным, что нашел применение и для работы в других приложений. Обычно Nginx используют когда необходимо построить высоконагруженную инфраструктуру. Веб- сервер — это программа , которая обрабатывает входящие HTTP -запросы и генерирует HTTP -ответы. В простейшем случае веб- сервер передает клиенту содержимое файлов, которые размещены на жестком диске сервера. Когда необходимо генерировать HTTP -ответы на основе какой-то программной логики, подключается внешний программный код. Для подключения внешнего программного кода используются интерфейсы CGI и ISAPI. В настоящий момент наиболее перспективным считается использование интерфейса ISAPI в силу более высокой масштабируемости. В рамках веб-сервера создается пул приложения для каждого веб-приложения отдельный процесс в рамках ОС, в составе которого работает несколько потоков для обработки запросов. Существует большое количество реализаций веб-серверов, для приложений ASP. NET обычно используется веб- сервер Microsoft Internet Information Services IIS. Мы ищем курсы, покупаем и публикуем их для вас бесплатно. Учеба Академии Учителя Рейтинг Вопросы Магазин. Курсы Школа Высшее образование Мини-МБА Профессиональная переподготовка Повышение квалификации Сертификации. Информация Глоссарий Дипломы Вопросы и ответы Студенты Рейтинг выпускников Мнения Учебные программы. Программист , Разработчик интернет-проектов. После нажатия кнопки Play ничего не происходит. Украина, Киев, , Россия, Новосибирск, Сибирский государственный университет телекоммуникаций и информатики, Пользовательское соглашение Политика конфиденциальности Реклама на сайте Напишите нам.

Что такое сервер и зачем он нужен?

Как увеличить подтягивания на турнике

Во сколько сегодня выступает трамп 29 июня

Веб-сервер

Как гасить соду для питья

Выбрать велосипед для путешествий

Киномакс расписаниена 11 июня

Где обедатьв казани

Создаем свой сайт. Как устроен и работает веб-сервер

Областная больница 23 г ялуторовск расписание врачей

Эротический стих на ночь парню

Ролики для штабелера

Что такое веб сервер?

Право и организация социального обеспечения колледж москва

Блюда из маринованных опят рецепты

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

Report Page