Урок 29 — Клиент-серверная архитектура. TCP/IP. HTTP и HTTPS

Буду также рад подписке на мой уютный telegram бложик: https://t.me/OlegMalyshevBlog

Клиент:

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

Сервер:

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

И иными словами клиент-серверная архитектура — это сетевая архитектура, в котором клиентом является запрашивающая машина, а сервером машина, которая отвечает на этот запрос.

Пример клиент-серверной архитектуры на примере приложения погоды на смартфоне

Для простоты понимания давайте рассмотрим мобильное приложение  погода на смартфоне и данное приложение как раз и будет клиентом, запуская это мобильное приложение мы ожидаем увидеть актуальную для нагло местоположения погоду.

 

 

На нашем телефоне нет данных о погоде во всем мире, но зато эти данные могут быть у Элл или Гугл если мы используем смартфон на ОС андройд.

То есть у нас есть где-то пополняемое хранилище о погоде на земле и без него наши мобильное приложение эту задачу не решит. Назовем это хранилище север.

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

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

Протоколы прикладного уровня

Теперь давайте разберем как у нас может происходить взаимодействие клиента и сервера и в данном случае нас интересует переда данных через  wi-fi, lte, 5G и т д. Этот тип взаимодействия дает возможность получить доступ к сети интернет, а значит это самый перспективный способ для нас для реализации связи между клиентом и сервером. Этот способ называется сетевым взаимодействием. Для непосредственной передачи данных используются протоколы прикладного уровня, самые популярные это http и https.

Также у нас есть ряд других известных протоколов прикладного уровня.

Это FTP (File Transfer Protocol) — протокол передачи файлов, используется для передачи файлов между клиентом и сервером. Это SMTP (Simple Mail Transfer Protocol) — протокол передачи почты, используется для отправки электронной почты. Это POP3 (Post Office Protocol, версия 3) и IMAP (Internet Message Access Protocol) — протоколы для получения электронной почты с почтовых серверов на клиентские устройства.

Это RDP (Remote Desktop Protocol) — протокол для удаленного управления рабочими столами компьютеров в операционной системе Windows и многие многие другие протоколы.

TCP/IP

Также необходимо упомянуть о семействе потоколов сетевого и транспортного уровня tcp/ip

TCP/IP — это набор протоколов, работающих на более низких уровнях сетевой структуры, стек протоколов TCP/IP имеет несколько уровней, включая сетевой уровень (где действует IP протокол, который отвечает за марщрутизацию, идентификацию, местоположение устройства по IP адресу), транспортный уровень (где действует TCP, UDP и др.), и прикладной уровень (где действуют протоколы, такие как HTTP, FTP, SMTP и другие)

Иными словами HTTP и HTTPS использует протокол TCP/IP в качестве транспортного уровня для отправки данных через сеть.

Разница между HTTP и HTTPS

Данные, передаваемые по протоколу HTTP, не шифруются и передаются в открытом виде. Это означает, что они могут быть подвержены перехвату и просмотру третьими лицами, если они имеют доступ к сетевому трафику.

HTTPS — это защищенная версия HTTP, которая использует шифрование для обеспечения конфиденциальности и безопасности данных.

Данные, передаваемые по протоколу HTTPS, шифруются с использованием SSL (Secure Sockets Layer) или его более современного варианта TLS (Transport Layer Security). Это означает, что данные остаются зашифрованными при передаче между браузером и сервером, что делает их недоступными для прослушивания третьими лицами.

Использование HTTPS также предоставляет подтверждение подлинности веб-сайта через сертификаты, что помогает предотвратить подделку

 

Трехуровневая архитектура с использованием базы данных

Далее мы снова возвращаемся к клиент северной архитектуре, только справа если смотреть на монитор у нас добавилась база данных. Давайте ее разберем с учетом базы данных. У  нас есть клиент и у нас есть сервер.

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

К примеру они ищут велосипед, вводят какое-то название велосипеда  и нажимают кнопку найти. В этом случае по http или https протоколу отправляется request запрос на сервер, сервер обращается к серверу базы данных и получает от сервера базы данных нужную модель велосипеда, если она есть в таблице. Веб-сервер по определенной логике обрабатывает запрос с велосипедом при помощи back-end языков программирования и далее респонсом при помощи https протокола отправляет ответы обратно клиентам. Ответ же может включать веб-страницы, JSON-данные, изображения и другие ресурсы, которые будут использоваться клиентом и отображаться при помощи front-end языков, в которые входят и разметка текста при помощи html и  css и такой язык как typescript,  различные библиотеки, такие как redux, react и т д. Если мы говорим, что со стороны клиентов выступают смартфоны, то в случае iOS это будет Swift + различные библиотеки работающие с ui, а в случае andriod — это будет kotlin.

Клиент серверная архитектура с балансировщиком

Далее я привел схему, когда наш интернет магазин посещает большое количество пользователей, как правило, в этом случае одного сервера недостаточно, их несколько и для того, чтобы с этими серверами эффективно работать, нам нужен балансировщик.

Балансировщик равномерно распределяет входящий трафик между несколькими серверами, обеспечивая более равномерное использование ресурсов и предотвращая перегрузку отдельных серверов.  Если один из серверов выходит из строя или становится недоступным, балансировщик нагрузки перераспределяет трафик на доступные серверы, обеспечивая тем самым высокую доступность и надежность интернет-магазина в данном случае.

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

Некоторые балансировщики нагрузки также предоставляют функциональность защиты от Ddos атак.

Многие балансировщики нагрузки предоставляют инструменты для мониторинга и управления серверами и трафиком, что упрощает управление сетевой инфраструктурой.

Простыми словами представьте, что у нас есть два сервера, на которые идут запросы со многих клиентов и вот на один север идет 10 запросов, а на другой все 2, балансировщик это увидит и равномерно распределит запросы между серверами.

Клиент серверная архитектура с несколькими балансировщиками

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

При это часть серверов может быть совершенно не нагружены и они используются как резервные, в случае если откажут основные сервера.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.