Основы работы веб приложений Flashcards
Клиент-серверная архитектура
- архитектура, в которой сетевая нагрузка распределяется между поставчиками услуг (серверами) и заказчиками услуг (клиентами).
Клиент и сервер - программное обеспечение. Находятся на разных сетевых машинах, иногда на одной, взаимодействуют между собой через сетевые протоколы (например http)
Если есть база данных, то сервер еще отправляет запрос туда, а база данных обратно через сервер
Тонкие и толстые клиенты
Тонкий клиент - компьютер в сетях или программа-клиент, которая переносит все или большую часть задач по обработке инфы на сервер. Пример - браузер. Тонкий потому что все вычислительные мощности на сервере, а клиент это просто ПО, отправляющее запросы
Толстый - обеспечивает расширенную функциональность вне зависимости от сервера. Сервер может быть как хранилище данных. Например - 1С бухгалтерия, онлайн игры
Веб-сайт, Веб-приложение, Веб-сервисы
Веб-сайт - носят информационный характер. Простая архитектура, просто объединены страницы в одном месте. Взаимодействия почти нет. Пример - новостные сайт, сайты с погодой
Веб-приложение - интерактивные приложения, в которых пользователь может вводить, получать или манипулировать данными. Имеют более тесную связь с сервером, больше запросов. Пример - соц. сети, магазины
Веб-сервисы - Прикладной программный интерфейс. Разрабатываются не самим исполнителем, а встраиваются уже в наш продукт. Человек отправляет запрос в службу программного обеспечения, которая, в свою очередь, возвращает ответ в удобочитаемом для человека формате. Если создается программное приложение, не нужно создавать все с нуля. Существует множество готовых сервисов, которые вы можете подключить к своему приложению, и вы можете начать предоставлять эти сервисы в своем приложении. Разрабатываются сервисы соответстенно чаще для встраивания в другие проекты
REST и SOAP, в чем разница
Существуют два архитектурных стиля REST и SOAP. Первый более распространен
REST (Representational state transfer)
Приложения на REST архитектуре должны быть:
Клиент-серверными.
Взаимодействие между клиентом и сервером должно быть на HTTP.
Все операции над ресурсами указываются в самих запросах. В архитектуре REST все данные являются «ресурсами» Все, что необходимо сделать с ресурсом в архитектуре REST, несется в самом запросе.
Stateless – состояние клиента не сохраняется на сервере. Каждый раз, при обращении клиента к серверу, сервер воспринимает клиента как нового. Для аутентификации клиента на сервере могут использоваться cookies, например: сookies предоставляет дополнительную информацию от клиента пользователю (позиции в корзине пользователя в интернет-магазине).
Возможность работать с любыми форматами данных (json, xml, text…).
SOAP (Simple Object Access Protocol) - является стандартизированным протоколом передачи сообщений между клиентом и сервером. Обычно он используется совместно с HTTP(S), но может работать и с другими протоколами прикладного уровня (например, SMTP и FTP).
В отличие от REST, который может использовать любые форматы данных, SOAP работает только с XML форматом (XML - расширенный язык разметки)
То есть REST более гибкий
HTTP протокол
HTTP протокол
HyperText Transfer Protocol
Протокол - набор правил передачи информации
TCP/IP Model и OSI Model
Их Уровни
Сетевые модели - TCP/IP и OSI (вторая устарела и используется редко). В OSI 7 уровней, в TCP/IP их четыре
TCP/IP
Уровень сетевых интерфейсов. Передаются физические импульзы - оптоволокно (Ethernet)
Сетевой уровень - передача сигналов в виде битов и байтов (IP, ARP, ICMP)
Транспортный - Транспортные взаимодействия в сети. TCP/UDP.
Прикладной уровень - специфичный для приложения, как в приложении происходит взаимодействие с информацией (HTTP, FTTP, NTP, PING)
OSI
Физический уровень - биты - работа со средой передачи, сигналами и тд (за счёт сетевого обордования) - USB, RJ («витая пара», коаксиальный, оптоволоконный), радиоканал
Канальный Уровень (Data link) - Биты или кадры - Физическая адресация (Сетевой мост, коммутатор, точка доступа) - PPP, IEEE 802.22, Ethernet, DSL, ARP, сетевая карта.
Сетевой - пакеты - Определение маршрута и логическая адресация (Маршрутизатор, Сетевой шлюз,
Межсетевой экран) - IPv4, IPv6, IPsec, AppleTalk, ICMP
Транспортный Уровень - Сегменты или Датаграммы - прямая связь между конечными пункатми и надежность- TCP, UDP, SCTP, Порты
Сеансовый Уровень - Данные - Управление сеансом связи - RPC, PAP, L2TP, gRPC
Уровень Представления - Данные - Представление и шифрование данных - ASCII, EBCDIC, JPEG, MIDI
Уровень Прикладной - Данные - Доступ к сетевым службам - HTTP, FTP, POP3, WebSocket
Разница TCP и UDP протоколов
TCP - транспортный протокол, в результате которого при передаче файлов происходит гарантия того, что инфа доходит до клиента. Если приходит инфа, что данные не доходят, то происходит повторная отправка. Применяются например в почтовых сервисах
UDP - тут ненужно убеждаться, что инфа дошла, она идёт непрерывным потоком. Применяются например в играх
Прикладной уровень - специфичный для приложения, как в приложении происходит взаимодействие с информацией
Из чего состоит HTTP протокол
Основная часть (Payload) - что мы должны передать
Служебная информация - то как основаня часть должна передаваться (Header - Заголовок, доп. инфа для сервера)
HTTP Request
HTTP Response и из чего состоит
Версия протокола, статус код и статус месседж (говорит об успешности того, как отвечает сервер), Дата,информация о сервере, заголовки
Status Message - Статус ответа, дошел ли он.
Нет бэйс лайна
вместо него status code
например 404 Not Found, 200 OK
HEADERS - здесь также используются, но уже необходимы клиенту чтобы правильно отрендерить то, что отправляет нам сервер
также есть параметры и их атрибуты
param1: attr1, attr2, attr3 …..
param2: attr1, attr2, …..
+
content-typ: image:jpg
чтобы клиент понял, что было отправлено изображение и смог расшифровать текст в изображение (потому что любой контент (картинка, видео, музыка отправляются в виде текста, который потом расшифровывается)
cookies:
last-modified: 14.01.2022 15:10:20 GMT (говорит о том когда файл на сервере менялся последний раз. клиент отправляет запрос if-modified-since, в котором пишется дата, когда изображение было получено в прошлый раз. Если на сервере изображение с тех пор не менялось, то оно не отправляется еще раз)
BODY: тело запроса, данные
SSL/TLS
Протокол TLS (transport layer security) основан на протоколе SSL (Secure Sockets Layer), изначально разработанном в Netscape для повышения безопасности электронной коммерции в Интернете
Протокол SSL был реализован на application-уровне, непосредственно над TCP (Transmission Control Protocol), что позволяет более высокоуровневым протоколам (таким как HTTP или протоколу электронной почты) работать без изменений. Если SSL сконфигурирован корректно, то сторонний наблюдатель может узнать лишь параметры соединения (например, тип используемого шифрования), а также частоту пересылки и примерное количество данных, но не может читать и изменять их.
После того, как протокол SSL был стандартизирован IETF (Internet Engineering Task Force), он был переименован в TLS. Поэтому хотя имена SSL и TLS взаимозаменяемы, они всё-таки отличаются, так как каждое описывает другую версию протокола.
Протокол TLS предназначен для предоставления трёх услуг всем приложениям, работающим над ним, а именно: шифрование, аутентификацию и целостность.
Шифрование, Аутентификация, Целостность
Шифрование – сокрытие информации, передаваемой от одного компьютера к другому;
Аутентификация – проверка авторства передаваемой информации;
Целостность – обнаружение подмены информации подделкой.
Версии HTTPS
0.9 1.0, 1.1, 2.0
2.0 разработан гуглом
Преимущества: использует бинарный формат (нули и единицы) вместо текста (таким образом уменьшается количество инфы, которую нужно передавать), 2.0 мультипликсирован (то есть все запросы и вся информация проходят по одному TCP соединению одновременно (транспортному протоколу) в то время как в 1.1 все запросы проходят друг за другом.
Следовательно 2.0 быстрее
Уже есть HTTP3, пока не так часто встречается, тоже разработан гуглом. Вместо TCP новая версия HTTP использует QUIC. Это экспериментальный транспортный протокол, разработанный Google
Какие есть протоколы еще?
FTP - File Transfer Protocol
POP3 & SMTP - POP3 для входящей почты, SMTP для исходящей почты
IMAP - тоже почтоый протокол от майкрософт
UDP - User Datagram Protocol - непрерываная передача данных
URL
Uniform Resource Locator - Уникальный адрес в сети
URN
Uniform Resource Name - Неизменяемая последовательность символов, определяющая название ресурса. Это имя определяет только название самого ресурса, но не говорит как к нему подключаться