четверг, 7 июня 2012 г.

Основы веб-коммуникации

Как и все клиент-серверные приложения, у веб-приложений есть два отдельных компонента:
              ■ Клиент   Также известный как внешний интерфейс (front-end interface), веб-браузер предоставляет пользователю интерфейс для ввода пользовательских данных и отправляет данные на сервер для обработки.
             ■ Сервер    Также известен как back end, веб-сервер отвечает на запросы
клиентов для конкретных страниц. Он взаимодейстует со страницей, содержащей HTML - код и инструкции о том, как создать пользовательский интерфейс.

     Веб-браузер (клиент) взаимодействует с  веб-сервером посредством протокола HTTP (Hypertext Transfer Protocol), который является текстовым сетевым протоколом TCP и использует порт 80. Если у сервера есть сертификат, тогда  клиент и сервер могут использовать HTTP Secure (HTTPS) для проверки подлинности сервера и шифрование сообщений. HTTPS использует TCP-порт 443.


Перед каждым соединением обычно выполняются следующие действия:

    1. Пользователь вводит адрес, например http://www.microsoft.com/, в веб-браузере.

    2. Веб-браузер подключается с помощью HTTP и посылает GET запрос веб-серверу, который выглядит как GET / (для получения доступа к корневой странице) .

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

    4. Веб-сервер использует HTTP, чтобы отправить ответ обратно  браузеру. Если запрос был  обработан успешно, веб-сервер возвращает код статуса HTTP 200, вместе с HTML-документом. Если сервер не может найти страницу, он возвращает
код 404
. Если пользователь запрашивает устаревшие или перемещенные страницы, сервер возвращает код 302 и новый URL, так что браузер может получить доступ к нужной странице. Это
известно как перенаправление (redirection). Также возможны и некоторые другие ответы, в зависимости от конкретной ситуации.

   5. Далее веб-браузер пользователя обрабатывает ответ, показывая HTML страницу (если
 был код 200), показывает сообщение об ошибке (если был код 404), или загружает другую
страницу (если был код 302). Так же обрабатываются браузером и другие ответы сервера.

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

                                            РОЛЬ ВЕБ-СЕРВЕРА.

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

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

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

      2. Аутентификация сервера. Если сервер имеет Secure Sockets Layer (SSL) сертификат и запрос был сделан при помощи HTTPS, веб-браузер использует этот сертификат для проверки подлинности сервера. Веб-сервер также будет шифровать все содержимое перед возвращением его веб-браузеру.

      3. Аутентификация пользователя. Если содержание требует авторизации, веб-сервер проверяет, подтвердил ли пользователь свои полномочия. Если пользователь не прошел проверку подлинности, веб-сервер перенаправляет пользователя на форму аутентификации.

       4. Авторизация пользователей. После того, как веб-сервер аутентифицировал пользователя, он проверяет возможность пользователя получить доступ к запрашиваемому содержанию.

      5. Определение способа обработки запроса. Если веб-браузер запрашивает статическое содержимое или просто определяет, что сохраненные данные все еще можно использовать, веб-сервер непосредственно отвечает. Если веб-браузер щапрашивает страницы ASP.NET, веб-сервер должен направить запрос в ASP.NET.
     6.Обработка ошибок. Если сервер не может обработать запрос пользователя, он выдает информацию об ошибках, которая отображается веб-браузером.

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

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

    9. Логирование. Веб-серверы обычно записывают информацию об использовании для безопасности и мониторинга производительности.

                                              РОЛЬ ВЕБ-БРАУЗЕРА.

     Несмотря на внимание, которое получают веб-браузеры, их роль является относительно простой:
     1. Посылка запросов к веб-серверу. Если пользователь вводит http://www.microsoft.com,
веб-браузер разрешает имени www.microsoft.com системы доменных имен (DNS) данный адрес, использует протокол HTTP для подключения к серверу и запрашивает страницу.

     2. Проверка сервера. Если сервер обладает SSL-сертификатом и запрос был
сделан при помощи HTTPS, тогда веб-браузер использует сертификат для проверки подлинности сервера и расшифровки возможного соединения.

     3. Получение ответа. Если сервер предоставил HTML, браузер извлекает встраиваемые объекты, такие как изображения, видео или анимацию, которые были переданы средствами HTML. Если сервер вернул ошибку, перенаправление или другой ответ, браузер реагирует соответствующим образом.

     4. Отображение HTML и встраиваемых объекты. Веб-браузеры используют стандарты HTML для определения того, как отображать веб-страницы для пользователя. Поскольку HTML могут содержать встроенные объекты, веб-браузер может отображать десятки объектов на  одной странице.

5. Запуск клиентских сценариев. Клиентские сценарии, такие, как сценарии, написанные на JavaScript, делают  страницу более интерактивной без перезагрузки.

                                          ПОНИМАНИЕ РОЛИ HTTP.

       HTTP является текстовым протоколом, который используется для запроса веб-страниц с веб-сервера и отправки ответов обратно веб-браузеру. Когда запрашивается веб-страница, браузер посылает запрос веб-серверу. Запрос может выглядеть следующим образом: 

                   GET /default.aspx HTTP/1.1 
                   Host: www.northwindtraders.com

         Первое слово в запросе является командой, часто называемой методом. В данном случае это команда GET. Команда сопровождается унифицированным идентификатором ресурса (URI), который будет возвращен. В нашем случае это выглядит как  URI /default.aspx. После URI следует версия  HTTP, который будет использоваться для обработки команды. В данном листинге, версия HTTP-HTTP/1.1.

        Во второй строке запроса (Host: www.northwindtraders.com) определяется имя
веб-сайта. Большинство веб-серверов размещают несколько сайтов с одного адреса IP, и нужно знать имя сайта, для того, чтобы вернуться на нужную страницу. Этот процесс предполагает использование заголовков дляопределения  веб-сайта, который будет обрабатывать запрос.

        HTTP поддерживает и другие команды, как показано в таблице ниже. Если на веб-сайте включен DAV (Distributed Authoring and Versioning), становятся доступными многие другие команды, в том числе LOCK и UNLOCK.

Методы HTTP /1.1
МЕТОД HTTPОПИСАНИЕ
GET Получает объект с сервера, такой как веб-страница. GET запрос для конкретного URL (Uniform Resource Locator) вернет содержимое. Например, GET / test.htm получает содержимое файла test.htm (как правило, статический файл, но он может быть создан динамически).
POST Передает данные на веб-сервер для обработки. Как правило, это то, что происходит, когда пользователь вводит данные в форму и отправляет эти данные в качестве части запроса, но он имеет и другие значения при использовании вне предела HTML-формы.
HEAD Получает мета-информацию для объектов, не скачивая самой страницы. HEAD обычно используется для проверки того, что содержимое не изменилось по сравнению с кэшем браузера.
OPTIONS Используется клиентскими приложениями для запроса списка всех поддерживаемых команд. Вы можете использовать опции, чтобы проверить, позволяет ли сервер выполнять определенные команды, что позволяет избежать траты пропускной способности сети, предотвратит попытку отправки неподдерживаемого запроса.
PUT Позволяет клиенту создать содержимое на сервере по указанному URL-адресу . Если у пользователя есть необходимые права, то сервер принимает тело запроса, создает файл, указанный в URL, и копирует полученные данные на вновь созданный файл.
DELETE Удаляет содержимое с сервера, если пользователь имеет на то необходимые права.
TRACE Используется для тестирования и диагностики, позволяет клиенту видеть то, что получил на другом конце цепочки запросов.
CONNECT Зарезервировано для использования прокси-сервером, который может динамически подключаться, чтобы быть туннелем, например, таким как SSL протокол.
DEBUG Начинает отладку ASP.NET. Эта команда сообщает Visual Studio о процессе, к которому подключить отладчик.


1 комментарий: