лекция. Лекция 3 WEB Технологии. Лекция 3 web технологии
Скачать 1.33 Mb.
|
1xx — Информационные – коды этой группы дают понять, что на данный момент запросы обрабатываются в штатном режиме. 2xx —Успешные - коды означают, что те данные, которые браузер запрашивал у сервера, были успешно ему переправлены. 3xx — Перенаправления - коды сообщают пользователю, что для успешного выполнения, поданного пользователем запроса, необходимо сделать еще один запрос к другому URI. 4xx — Ошибка со стороны клиента - коды означают, что в результате неверно сформированного запроса он не может быть обработан сервером 5xx — Ошибка со стороны сервера – коды дают понять, что сбой в обработке корректно сформированного запроса произошел из-за ошибки на сервере. Полный список кодов ответов HTTP с описаниями: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status Распространенные коды ответа сервера 200 ОК - Страница с кодом 200 ОК говорит об успешной обработке запроса. Это значит, что сервер работает нормально, а поисковый робот получил возможность ее проиндексировать. "Успешно". Запрос успешно обработан. Что значит "успешно", зависит от метода HTTP, который был запрошен: GET: "ПОЛУЧИТЬ". Запрошенный ресурс был найден и передан в теле ответа. HEAD: "ЗАГОЛОВОК". Заголовки переданы в ответе. POST: "ПОСЫЛКА". Ресурс, описывающий результат действия сервера на запрос, передан в теле ответа. TRACE: "ОТСЛЕЖИВАТЬ". Тело ответа содержит тело запроса полученного сервером. 301 Moved Permanently - Код переадресации означает, что URI запрашиваемого ресурса был изменен. Возможно, новый URI будет предоставлен в ответе. 302 Found - Код означает, что страница временно недоступна по данному адресу, но у нее есть новый временный URL. 304 Not Modified - Этот ответ сервера говорит, что на запрашиваемой странице не было обновлений с момента последнего ее посещения. Получая такой ответ браузер или поисковый робот не будут полностью ее запрашивать с сервера, а возьмут сохраненную копию из собственного кеша. 403 Forbidden - Данный код ошибки говорит о запрете на просмотр страницы. Его можно увидеть, если пользователь получил отказ в доступе, например, при ограничении по IP-адресу или попытке просмотра системных файлов сайта. 404 Not Found - код ошибки показывающий, что заданная страница больше не существует. Сервер не может найти запрашиваемый ресурс. Код этого ответа, наверно, самый известный из-за частоты его появления в вебе. 500 Internet Server Error - Этот код ошибки сообщает, что произошла ошибка на стороне сервера. Сервер столкнулся с ситуацией, которую он не знает, как обработать. 502 Bad Gateway — Номер ошибки сервера, говорящий что прокси сервер не может получить ответ от сайта. Эта ошибка означает что сервер, во время работы в качестве шлюза для получения ответа, нужного для обработки запроса, получил недействительный (недопустимый) ответ. 503 Service Unavailable - Ответ сервера (код ошибки) означает, что сервер не готов обрабатывать запрос. Зачастую причинами являются отключение сервера или то, что он перегружен. 504 Gateway Timeout - Этот ответ об ошибке предоставляется, когда сервер действует как шлюз и не может получить ответ вовремя. ЧТО ТАКОЕ URI, URL, URN И ЧЕМ ОНИ РАЗЛИЧАЮТСЯ URI (Uniform Resource Identifier - унифицированный идентификатор ресурса) – имя и адрес ресурса в сети, включает в себя URL и URN URL (Uniform Resource Locator унифицированный определитель местонахождения ресурса) - адрес ресурса в сети, определяет местонахождение и способ обращения к нему URN (Unifrorm Resource Name - унифицированное имя ресурса) – имя ресурса в сети, определяет только название ресурса, но не говорит как к нему подключиться Многие считают, что http://google.com или http://yandex.ru - это просто URL-адреса, но, однако мы можем говорить о них как о URI. Фактически, URI представляет собой расширенный набор URL-адресов и нечто, называемое URN. Таким образом, мы можем с уверенностью заключить, что все URL являются URI. Однако обратное неверно. Наглядно это можно показать так: Например: В чем различия URL: Исторически возник самым первым из понятий и закрепился как синоним термина веб-адрес. URL определяет местонахождение ресурса в сети и способ его (ресурса) извлечения. Это позволяет нам полностью узнать: как, кому и где можно достать требуемый ресурс, вводя понятия схемы, данных авторизации и местонахождения. URN: Неизменяемая последовательность символов определяющая только имя некоторого ресурса. Смысл URN в том, что им единоразово и уникально именуется какая-либо сущность в рамках конкретного пространства имен (контекста), либо без пространства имен, в общем (что не желательно). Таким образом, URN способен преодолеть недостаток URL связанный с возможным будущим изменением и перемещением ссылок, однако, теперь для того, чтобы знать местонахождение URN ресурса необходимо обращаться к системе разрешения имен URN, в которой он должен быть зарегистрирован. URI: Это лишь обобщенное понятие (множество) идентификации ресурса, включающее в нашем случае как URL, так и URN, как по отдельности, так и совместно. Т.е. мы можем считать, что: URI = URL или URI = URN или URI = URL + URN Сравнение URI и URL ПЕРЕДАЧА ПАРАМЕТРОВ В URL Структура любого URL выглядит так: В структуре обязательно используется <схема> и Схема — протокол передачи данных. Существует огромное количество протоколов, но чаще всего это: FTP:// (File Transfer Protocol) предоставляет удаленный доступ к хостингу, передаче данных с сервера на устройство пользователя и наоборот; HTTP:// (Hyper Text Transfer Protocol) — протокол передачи гипертекста предназначен для транспортировки произвольных данных (изначально, в формате HTML). HTTPS:// (Hyper Text Transfer Protocol Secure) — HTTP протокол, для повышения безопасности работающий с помощью транспортных механизмов SSL и TLS. SMTP:// (Simple Mail Transfer Protocol) — протокол передачи почты в сетях TCP/IP. Логин: пароль — имя и пароль для входа в учетную запись. Для HTTP/HTTPS-протоколов не используется. Обычно применяется для протокола FTP (ftp://name:password@qwerty.ua). Хост — доменное имя сайта. Зачастую используется название бренда, например netpeak.ua. Также может использоваться IP-адрес (172.217.168.195), но сейчас его применяют очень редко, так как IP запомнить сложнее. Порт — порт хоста для подключения, числовой идентификатор программы или процесса, предоставляющий возможность доступа к ресурсам на указанном IP-адресе. Например, за http-сервером закреплен 80 порт, а за https — 443. То есть для соединения с веб-сервером нам необходимо знать IP-адрес компьютера и его порт. В свою очередь, чтобы веб-сервер мог передать данные на наш компьютер, ему необходимо предоставить IP и порт нашего компьютера, чтобы принять ответ от сервера, а после обработать данные. URL-путь — уточняющая информация о месте нахождения ресурса. Параметры — специальные данные, которые браузер сообщает веб-серверу. Как правило, параметры указываются после знака «?» и разделяются «&». Всё, что идет до вопросительного — основной URL, после — дополнительные параметры. https://site.com/cat332t1.html?sort_direction=desc&sort_by=price_desc Якорь — вид закладки на странице, которая направляет пользователя на определенную часть страницы (помеченный фрагмент кода). Реализовывается с помощью символа «#»: https://en.wikipedia.org/wiki/URL#Syntax Логин, пароль, хост, порт - используются редко. Поэтому обычно структура выглядит как: <схема>://URL‐путь>?<параметры>#<якорь> Или даже так: <схема>://URL‐путь>? HTTPS Безопасной версией протокола HTTP является HyperText Transfer Protocol Secure — защищённый протокол передачи гипертекста (HTTPS). HTTPS обеспечивает шифрованную связь между браузером (клиентом) и веб-сайтом (сервером). HTTPS не является отдельным протоколом. В HTTPS протокол связи шифруется с использованием безопасности транспортного уровня (TLS) или уровня защищенных сокетов (SSL). Также протокол часто называют HTTP поверх TLS или HTTP поверх SSL. Оба протокола TLS и SSL используют систему асимметричного шифрования. Система асимметричного шифрования использует открытый ключ (ключ шифрования) и закрытый ключ (ключи дешифрования) для шифрования сообщения. Любой может использовать открытый ключ для шифрования сообщения. Однако закрытые ключи являются секретными, и это означает, что только предполагаемый получатель может расшифровать сообщение. Пример асимметричной системы шифрования: Что шифруется в HTTPS? Всё - вся информация получается зашифрованной (данные от клиента и данные от сервера) SSL/TLS handshake При запросе HTTPS-соединения с сайтом, сайт отправляет свой SSL-сертификат вашему браузеру. Этот процесс, когда ваш браузер и веб-сайт инициируют связь, называется «SSL/TLS handshake». SSL/TLS handshake включает в себя ряд шагов, когда браузер и веб-сайт проверяют друг друга и начинают связь через туннель SSL/TLS. Можно заметить, что во время соединения HTTPS используется надежный защищённый туннель и в адресной строке браузера отображается значок замка. Главные преимущества HTTPS: Защита информации клиентов — например номера кредитных карт и другая конфиденциальная информация,зашифрована и не может быть перехвачена. Посетители могут подтвердить, что вы являетесь зарегистрированным предприятием и владеете доменом. Клиенты знают, что им не следует посещать сайты без HTTPS, и поэтому они с большей вероятностью будут доверять и совершать покупки на сайтах, использующих HTTPS. FTP FTP (англ. File Transfer Protocol) — протокол передачи файлов по сети, является одним из старейших прикладных протоколов, появившихся задолго до HTTP. Он отличается от других протоколов тем, что если в процессе передачи возникает какая-то ошибка, то процесс останавливается и выводится сообщение для пользователя. Если ошибок не было, значит, пользователь получил именно тот файл, который нужен, в целости и без недостающих элементов. По FTP-протоколу можно скачивать что угодно: фильмы, музыку, документы, программы, драйверы и картинки. Сейчас многие производители железа выкладывают драйверы от устройств на FTP-серверы, чтобы их могли скачать все желающие. В корпоративной среде FTP используется для организации локального хранилища внутренних документов и файлов для работы. Например, там могут храниться видеолекции или архивные сканы документов. Ещё FTP позволяет загружать свои файлы на сервер, чтобы их мог скачать любой желающий. Основные отличия между FTP и HTTP Отличия от HTTP: Порты (FTP – 21, HTTP - 80) Размеры пакетов - накладные расходы при передаче по HTTP выше, чем по FTP FTP считается надёжней для стабильности передачи данных FTP не может шифровать свой траффик ПРОЦЕСС ОБМЕНА ЗАПРОСАМИ МЕЖДУ КЛИЕНТОМ И СЕРВЕРОМ В основе взаимодействия клиент-сервер лежит принцип того, что такое взаимодействие начинает клиент, сервер лишь отвечает клиенту и сообщает о том может ли он предоставить услугу клиенту и если может, то на каких условиях. Перед тем как пользователь увидит содержимое сайта у себя на экране, браузер делает запрос на сервер чтобы получить это самое содержимое. Запрос происходит в несколько этапов: DNS-запрос — поиск ближайшего DNS-сервера, чтобы преобразовать URI (например, google.com) в его числовое представление — IP-адрес (например, 74.125.87.99, получено посредством команды ping). Это адрес и будет реальным адресом сайта в Интернет Соединение — установка соединения с сервером по полученному IP-адресу Отправка данных (от клиента к серверу) Ожидание ответа — ждем пока пакеты данных дойдут до сервера, он их обработает и ответ вернется назад Получение данных (от сервера к клиенту) Синхронное соединение Клиент послал запрос серверу и пока ждет от него ответ, следующие запросы послать не может. Параллельные HTTP соединения Браузер для одновременной доставки нескольких объектов веб страницы устанавливает несколько соединений. HTTP конвейер Браузер может послать несколько GET-запросов в одном соединении, не дожидаясь ответа от сервера. Сервер в таком случае должен ответить на все запросы последовательно. Ссылки: https://habr.com/ru/post/215117/ https://developer.mozilla.org/ru/docs/Web/HTTP https://habrahabr.ru/post/188042/ REST REST(Representational State Transfer — «передача состояния представления») —архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Не является стандартом или протоколом. Обеспечивает общение между клиентом (как правило, это браузер) и сервером с помощью обычных HTTP-запросов (GET, POST, PUT, DELETE и т. д), передавая информацию от клиента в параметрах самих запросов, информацию от сервера – в теле ответа (который может быть, например, JSON-объектом или XML-документом). REST представляет собой согласованный набор ограничений, учитываемых при проектировании распределённой гипермедиа-системы. В определённых случаях (интернет-магазины, поисковые системы, прочие системы, основанные на данных) это приводит к повышению производительности и упрощению архитектуры. В широком смысле компоненты в REST взаимодействуют наподобие взаимодействия клиентов и серверов во Всемирной паутине. Преимущества REST: Надёжность (за счёт отсутствия необходимости сохранять информацию о состоянии клиента, которая может быть утеряна); Производительность (за счёт использования кэша); Масштабируемость; Прозрачность системы взаимодействия (особенно необходимая для приложений обслуживания сети); Простота интерфейсов; Портативность компонентов; Лёгкость внесения изменений; Способность эволюционировать, приспосабливаясь к новым требованиям (на примере Всемирной паутины). SOAP SOAP(Simple Object Access Protocol) – простой протокол доступа к объектам. Протокол обмена структурированными сообщениями в распределённой вычислительной среде. Характеризуется использованием HTTP(S)-протокола лишь как транспорта (чаще всего, методом POST). Все детали сообщений (в обе стороны – от клиента к серверу и обратно) передаются в стандартизованном XML-документе. SOAP может работать и с другими протоколами прикладного уровня (SMTP, FTP), но чаще всего он применяется поверх HTTP(S). Несимметричный, не зависит от платформы. Недостаток: Использование SOAP для передачи сообщений увеличивает их объём и снижает скорость обработки. В системах, где скорость важна, чаще используется пересылка XML-документов через HTTP напрямую, где параметры запроса передаются как обычные HTTP-параметры. https://habr.com/ru/post/131343/ Различия REST и SOAP https://habr.com/ru/post/483204/ Websocket Итак, что такое WebSocket? Википедия дает следующее определение: «WebSocket — протокол полнодуплексной связи поверх TCP-соединения, предназначенный для обмена сообщениями между браузером и веб‑сервером в режиме реального времени». В отличие от синхронного протокола HTTP, построенного по модели «запрос — ответ», WebSocket полностью асинхронный и симметричный. Он применяется для организации чатов, онлайн‑табло и создает постоянное соединение между клиентом и сервером, которое обе стороны могут использовать для отправки данных. Для веб используется HTTP протокол, зачем же нужен еще один? Протокол HTTP работает в режиме «запрос-ответ»: клиент отправляет запрос на сервер, в ответ получает от сервера веб-страницу и показывает ее в браузере. Такая модель обеспечивает очень простую работу протокола, но недостаток ее заключается в том, что сервер ничего не может отправить клиенту по своей воле, ему приходится ждать, когда клиент направит запрос и включать эти данные в ответ. Раньше, когда основной функционал сводился к просмотру веб-страниц в интернете, этого было достаточно, сейчас же веб усложнился и применяется для большого другого количества задач, например, для мессенджеров. HTTP протокол (полудуплексная передача): (При полудуплексной (HDX) передаче пакет данных отправляется одной системой и принимается другой. Следующий пакет данных нельзя отправить, пока принимающая система не подтвердит получение предыдущего пакета.) Эту проблему как раз решает WebSocket, где между клиентом и сервером устанавливается постоянное двунаправленное соединение. По этому соединению клиент может в любое время отправлять данные серверу, и сервер тоже в любой момент может отправлять данные клиенту по своей инициативе. Также любая сторона, получившая запрос, можешь ответить на него сразу либо через некоторое время. Примечание: Дуплексный (duplex) и полнодуплексный (full-duplex) способы связи - одно и то же. Полу-дуплексный (half-duplex)- уже другое. WebSocket (дуплексная/полнодуплексная передача): (При полнодуплексной (FDX) передаче обе системы, и отправляющая и принимающая, могут передавать данные одновременно.) WebSocket достаточно распространен в современной веб-разработке, есть поддержка во всех популярных языках программирования и браузерах. Его используют в интеративных играх, мессенджерах, веб-консолях, приложениях трейдеров. |