Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Дополнительный курс по WEB-программированию. Ле...

Дополнительный курс по WEB-программированию. Лекция 1.

Avatar for Vladimir Polyakov

Vladimir Polyakov

November 18, 2013

More Decks by Vladimir Polyakov

Other Decks in Programming

Transcript

  1. URI (Uniform resource identifier) — это символьная строка, позволяющая идентифицировать

    какой-либо ресурс: документ, изображение, файл, службу, ящик электронной почты и т. д.
  2. Структура URI U R I = [ с х е

    м а " : " ] и е р - ч а с т ь [ " ? " з а п р о с ] [ " # " ф р а г м е н т ] схема: схема обращения к ресурсу (часто указывает на сетевой протокол), например http, ftp, file иер-часть: содержит данные, обычно организованные в иерархической форме, которые, совместно с данными в неиерархическом компоненте запрос, служат для идентификации ресурса в пределах видимости URI-схемы. Обычно иер-часть содержит путь к ресурсу (и, возможно, перед ним, адрес сервера, на котором тот располагается) или идентификатор ресурса (в случае URN). фрагмент: позволяет косвенно идентифицировать вторичный ресурс посредством ссылки на первичный и указанием дополнительной информации. Вторичный идентифицируемый ресурс может быть некоторой частью или подмножеством первичного, некоторым его представлением или другим ресурсом, определённым или описанным таким ресурсом.
  3. Примеры URI h t t p : / / e

    n . w i k i p e d i a . o r g / w i k i / U R I # E x a m p l e s _ o f _ U R I _ r e f e r e n c e s h t t p : / / e x a m p l e . o r g / a b s o l u t e / U R I / w i t h / a b s o l u t e / p a t h / t o / r e s o u r c e . t x t / / e x a m p l e . o r g / s c h e m e - r e l a t i v e / U R I / w i t h / a b s o l u t e / p a t h / t o / r e s o u r c e . t x t / r e l a t i v e / U R I / w i t h / a b s o l u t e / p a t h / t o / r e s o u r c e . t x t r e l a t i v e / p a t h / t o / r e s o u r c e . t x t . . / . . / . . / r e s o u r c e . t x t . / r e s o u r c e . t x t # f r a g 0 1 r e s o u r c e . t x t # f r a g 0 1
  4. URL Uniform Resource Locator (Единый указатель ресурсов) — единообразный локатор

    (определитель местонахождения) ресурса. URL — это стандартизированный способ записи адреса ресурса в сети Интернет.
  5. Схема URL < с х е м а > :

    / / < л о г и н > : < п а р о л ь > @ < х о с т > : < п о р т > / < U R L ‐ п у т ь > ? < п а р а м е т р ы > # < я к о р ь > логин имя пользователя, используемое для доступа к ресурсу пароль пароль указанного пользователя хост полностью прописанное доменное имя хоста в системе DNS или IP-адрес хоста в форме четырёх групп десятичных чисел, разделённых точками; числа — целые в интервале от 0 до 255. порт порт хоста для подключения
  6. Кодирование URL C момента изобретения и по сей день стандарт

    URL обладает серьёзным недостатком — в нём можно использовать только ограниченный набор символов, даже меньший, нежели в ASCII: латинские буквы, цифры и лишь некоторые знаки препинания Пример — ресурс «Ад»: h t t p : / / r u . w i k i p e d i a . o r g / w i k i / А д h t t p : / / r u . w i k i p e d i a . o r g / w i k i / % D 0 % 9 0 % D 0 % B 4
  7. URN Uniform Resource Name — единообразное название (имя) ресурса. URN

    указывает неизменное имя ресурса без указания его местонахождения и способа обращения. В результате URN-имена постоянны, они не зависят от конкретных серверов и протоколов. Другими словами, URN концептуально обозначает сам ресурс, а не место, где находится какой-то ресурс (а может, уже не находится), как это делает URL.
  8. Структура URN < U R N > : : =

    " u r n : " < N I D > " : " < N S S > NID идентификатор пространства имён (англ. Namespace Identifier); представляет собой синтактическую интерпретацию NSS, не чувствителен к регистру. NSS строка из определённого пространства имён (англ. Namespace Specific String); если в этой строке содержатся символы не из набора ASCII, то они должны быть закодированы в Юникоде (UTF-8) и предварены (каждый из них) знаком процента «%». При этом начальная последовательность символов "urn:" не чувствительна к регистру. А идентификаторы пространства имён «urn» и «URN» запрещены вообще, чтобы не возникло путаницы с этой начальной строкой "urn:".
  9. Примеры URN U R N к н и г и

    , и д е н т и ф и ц и р у е м о й н о м е р о м I S B N u r n : i s b n : 5 1 7 0 2 2 4 5 7 5 U R N т е х н и ч е с к о й с п е ц и ф и к а ц и и R F C 3 4 0 6 ( а н г л . R e q u e s t F o r C o m m e n t s — з а п р о с к о м м е н т а р и е в ) о р г а н и з а ц и и « I E T F » u r n : i e t f : r f c : 3 4 0 6 U R N Р о с с и й с к о й Ф е д е р а ц и и , о п р е д е л ё н н о й п о к о д у O I D u r n : o i d : 2 . 1 6 . 6 4 3 U R N к о н к р е т н о г о ф а й л а M P 3 , и д е н т и ф и ц и р у е м о г о х э ш - к о д о м п о а л г о р и т м у S H A 1 u r n : s h a 1 : Y N C K H T Q C W B T R N J I V 4 W N A E 5 2 S J U Q C Z O 5 C U R N , и д е н т и ф и ц и р у ю щ и й р е с у р с ч е р е з и д е н т и ф и к а т о р U U I D ( в е р с и и 1 ) u r n : u u i d : 6 e 8 b c 4 3 0 - 9 c 3 a - 1 1 d 9 - 9 6 6 9 - 0 8 0 0 2 0 0 c 9 a 6 6 U R N к о н к р е т н о г о ф а й л а A V I , и д е н т и ф и ц и р у е м о г о х э ш - к о д о м п о а л г о р и т м у T T H u r n : t r e e : t i g e r : S L W 7 H 5 L W X R C K 3 W F X 5 U S V W I U Y C O L S B T Z R Y G C A O J Y
  10. HTTP HTTP (англ. HyperText Transfer Protocol — «протокол передачи гипертекста»)

    — протокол прикладного уровня передачи данных (изначально — в виде гипертекстовых документов). Основой HTTP является технология «клиент- сервер», то есть предполагается существование потребителей (клиентов), которые инициируют соединение и посылают запрос, и поставщиков (серверов), которые ожидают соединения для получения запроса, производят необходимые действия и возвращают обратно сообщение с результатом.
  11. Ключевые определения Отсутствие сохранения промежуточного состояния между парами «запрос-ответ»; Протокол

    не осведомлен о предыдущих запросах и ответах; Возможность указать в запросе и ответе способ представления одного и того же ресурса по различным параметрам: формату, кодировке, языку и т. д.
  12. Структура протокола Каждое HTTP-сообщение состоит из трёх частей, которые передаются

    в указанном порядке: 1. Стартовая строка (англ. Starting line) — определяет тип сообщения; 2. Заголовки (англ. Headers) — характеризуют тело сообщения, параметры передачи и прочие сведения; 3. Тело сообщения (англ. Message Body) — непосредственно данные сообщения. Обязательно должно отделяться от заголовков пустой строкой. Заголовки и тело сообщения могут отсутствовать, но стартовая строка является обязательным элементом, так как указывает на тип запроса/ответа.
  13. Запрос от клиента G E T / w i k

    i / с т р а н и ц а H T T P / 1 . 1 H o s t : r u . w i k i p e d i a . o r g U s e r - A g e n t : M y L o n e l y B r o w s e r / 5 . 0 A c c e p t : t e x t / h t m l C o n n e c t i o n : c l o s e ( п у с т а я с т р о к а ) Ответ от сервера H T T P / 1 . 1 2 0 0 O K D a t e : W e d , 1 1 F e b 2 0 0 9 1 1 : 2 0 : 5 9 G M T S e r v e r : A p a c h e X - P o w e r e d - B y : P H P / 5 . 2 . 4 - 2 u b u n t u 5 w m 1 L a s t - M o d i f i e d : W e d , 1 1 F e b 2 0 0 9 1 1 : 2 0 : 5 9 G M T C o n t e n t - L a n g u a g e : r u C o n t e n t - T y p e : t e x t / h t m l ; c h a r s e t = u t f - 8 C o n t e n t - L e n g t h : 1 2 3 4 C o n n e c t i o n : c l o s e ( п у с т а я с т р о к а ) ( д а л е е с л е д у е т з а п р о ш е н н а я с т р а н и ц а в H T M L )
  14. Коды состояния 1xx Информационные В этот класс выделены коды, информирующие

    о процессе передачи. Cообщения от сервера содержат только стартовую строку ответа и, если требуется, несколько специфичных для ответа полей заголовка. Прокси-сервера подобные сообщения должны отправлять дальше от сервера к клиенту. 2xx Успех Сообщения данного класса информируют о случаях успешного принятия и обработки запроса клиента. В зависимости от статуса сервер может ещё передать заголовки и тело сообщения. 3xx Перенаправление Коды этого класса сообщают клиенту, что для успешного выполнения операции необходимо сделать другой запрос, как правило, по другому URI. 4xx Ошибка клиента Класс кодов 4xx предназначен для указания ошибок со стороны клиента. При использовании всех методов, кроме HEAD, сервер должен вернуть в теле сообщения гипертекстовое пояснение для пользователя. 5xx Ошибка сервера Коды 5xx выделены под случаи неудачного выполнения операции по вине сервера. Для всех ситуаций, кроме использования метода HEAD, сервер должен включать в тело сообщения объяснение, которое клиент отобразит пользователю.
  15. Определение FTP (англ. File Transfer Protocol — протокол передачи файлов)

    — стандартный протокол, предназначенный для передачи файлов по TCP-сетям (например, Интернет). FTP часто используется для загрузки сетевых страниц и других документов с частного устройства разработки на открытые сервера хостинга. Пользователи FTP могут пройти аутентификацию, передавая логин и пароль открытым текстом, или же, если это разрешено на сервере, они могут подключиться анонимно. Можно использовать протокол SSH для безопасной передачи.
  16. Сравнение с HTTP Свойство FTP HTTP Основан на сессиях работы

    Да Нет Встроена аутентификация пользователей Да Нет В основном предусмотрен для передачи Больших двоичных файлов Небольших текстовых файлов Модель соединения Двойное подключение Одиночное подключение В основном приспособлен для приёма/передачи Приёма и передачи Приёма Поддерживает текстовый и двоичных режимы передачи Да Нет Поддерживает указание типов передаваемых данных (MIME заголовки) Нет Да Поддерживает операции над файловой системой (mkdir, rm, rename, и т.д.) Да Нет
  17. Веб­сервер Веб-сервер — это сервер, принимающий HTTP-запросы от клиентов, обычно

    веб-браузеров, и выдающий им HTTP- ответы, как правило, вместе с HTML-страницей, изображением, файлом, медиа-потоком или другими данными. Веб-сервером называют как программное обеспечение, выполняющее функции веб-сервера, так и непосредственно компьютер, на котором это программное обеспечение работает.
  18. Примеры веб­серверов Apache — свободный веб-сервер, наиболее часто используемый в

    UNIX-подобных операционных системах; IIS от компании Microsoft, распространяемый с серверными ОС семейства Windows; nginx — свободный веб-сервер, разрабатываемый Игорем Сысоевым с 2002 года и пользующийся большой популярностью на крупных сайтах; lilighttpd — свободный веб-сервер. Все эти серверы обрабатывают запросы, вызывая указанные скрипты для соответствующих URL.
  19. Приложения сами являющиеся web­серверами node.js — неблокирующий HTTP сервер написанный

    на JavaScript; tornado — неблокирующий HTTP сервер написанный на Python; play — веб-сервер написанный на Scala.
  20. Прокси­сервера Прокси-сервер (от англ. proxy — «представитель, уполномоченный») — служба

    (комплекс программ) в компьютерных сетях, позволяющая клиентам выполнять косвенные запросы к другим сетевым службам. Сначала клиент подключается к прокси-серверу и запрашивает какой-либо ресурс (например, e-mail), расположенный на другом сервере. Затем прокси-сервер либо подключается к указанному серверу и получает ресурс у него, либо возвращает ресурс из собственного кэша (в случаях, если прокси имеет свой кэш).
  21. Виды прокси­серверов Прозрачный прокси схема связи, при которой трафик, или

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