лекция. Лекция 3 WEB Технологии. Лекция 3 web технологии
![]()
|
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 достаточно распространен в современной веб-разработке, есть поддержка во всех популярных языках программирования и браузерах. Его используют в интеративных играх, мессенджерах, веб-консолях, приложениях трейдеров. |