SlideShare a Scribd company logo
1 of 37
Архитектура и принципы работы типового web-
приложения
WEB-приложение
Клиент-серверное приложение, в котором клиентом
выступает браузер, а сервером — web-сервер.
Логика web-приложения распределена между
сервером и клиентом.
Хранение данных осуществляется, преимущественно,
на сервере.
Обмен информацией происходит по сети.
Диаграмма типового web-приложения
В web-приложениях существуют две программы,
работающие одновременно:
Код живущий на сервере и отвечающий на HTTP
запросы;
Код живущий в браузере и отвечающий на ввод
данных пользователем.
Серверный код
Языки программирования/фреймворки:
Javascript(Node.js), Python(Django), PHP, Ruby On
Rails, Java, C# etc;
Не виден пользователю;
Может отвечать только на HTTP запросы конкретного
URL, а не на любой тип пользовательского ввода;
Клиентский код
Языки программирования: HTML, CSS, JavaScript;
Парсится браузером пользователя;
Реагирует на пользовательский ввод;
Доступен для просмотра и редактирования
пользователю в полном объеме;
Не может читать файлы с сервера на прямую, должен
общаться с сервером через HTTP запросы;
Технологический стек
1. Операционная система (файловая система). Чаще
всего Linux;
2. WEB-сервер (Apache, NGINX, IIS etc.);
3. База данных (MySql, MongoDB, MS Sql, Oracle,
PostgreSql, Redis, Cassandra etc.);
Технологический стек
Путь запроса
1. DNS
2. HTTP, SPDY
3. Front Server (NGINX)
4. Back Server ot Application Server (Apache, PHP-FPM)
5. PHP code, opcode
6. Response
DNS
DNS (англ. Domain Name System — система доменных
имён) — компьютерная распределённая система для
получения информации о доменах. Чаще всего
используется для получения IP-адреса по имени хоста
(компьютера или устройства), получения информации о
маршрутизации почты, обслуживающих узлах для
протоколов в домене (SRV-запись).
DNS
Путь пользовательского запроса начинается с DNS:
1. Пользователь обращается к DNS для получения IP
адреса
2. DNS отдает пользователю IP адрес
3. Пользователь обращается к WEB-приложению по IP
через TCP/IP
4. Открывается сетевое соединение (HTTP, SPDY)
How web-browser works?
How web-browser works?
TCP/IP
Стек протоколов TCP/IP — набор сетевых протоколов передачи данных,
используемых в сетях, включая сеть Интернет. Название TCP/IP происходит
из двух наиважнейших протоколов семейства — Transmission Control Protocol
(TCP) и Internet Protocol(IP), которые были разработаны и описаны первыми
в данном стандарте. Также изредка упоминается как модель DOD в связи с
историческим происхождением от сети ARPANET из 1970 годов (под
управлением DARPA, Министерства обороны США).
TCP/IP
TCP/IP
IP — протокол, лежащий в основе Интернета, его название так и расшифровывается: Internet Protocol.
В настоящее время используются следующие две версии протокола IP:
IPv6 — сравнительно новая (текущая версия спецификации опубликована в декабре 1998[1]); IP-адрес имеет
разрядность 128 бит и записывается в виде восьми 16-битных полей, с использованием
шестнадцатеричной системы счисления и с возможностью сокращения двух и более последовательных
нулевых полей до ::; пример: 2001:db8:42::1337:cafe;
IPv4 — «классическая» (1981 г.[2]); IP-адрес имеет разрядность 32 бита и записывается в виде четырех
десятичных чисел в диапазоне 0 … 255 через точку; пример: 192.0.2.34.
Каждый узел может напрямую связаться только с узлами своей сети (например: подключенными к тому же
сегменту Ethernet), для определения которых используется адрес сети — часть IP-адреса, определяемая маской
сети). Связь с узлами других сетей осуществляется через промежуточные узлы — маршрутизаторы.
Посмотреть, как выглядит маршрут пакета от вашего компьютера к другим узлам, можно с помощью команды
traceroute (в Linux) или tracert (в Windows).
TCP/IP
TCP протокол базируется на IP для доставки пакетов, но добавляет две важные вещи:
установление соединения — это позволяет ему, в отличие от IP, гарантировать доставку
пакетов
порты — для обмена пакетами между приложениями, а не просто узлами
Протокол TCP предназначен для обмена данными — это «надежный» протокол, потому что:
1. Обеспечивает надежную доставку данных, так как предусматривает установления
логического соединения;
2. Нумерует пакеты и подтверждает их прием квитанцией, а в случае потери организует
повторную передачу;
3. Делит передаваемый поток байтов на части — сегменты - и передает их нижнему
уровню, на приемной стороне снова собирает их в непрерывный поток байтов.
TCP/IP
TCP-соединение
Соединение двух узлов начинается с handshake (рукопожатия):
1. Узел A посылает узлу B специальный пакет SYN — приглашение к соединению
2. B отвечает пакетом SYN-ACK — согласием об установлении соединения
3. A посылает пакет ACK — подтверждение, что согласие получено
После этого TCP соединение считается установленным, и приложения, работающие в этих узлах,
могут посылать друг другу пакеты с данными.
«Соединение» означает, что узлы помнят друг о друге, нумеруют все пакеты, идущие в обе
стороны, посылают подтверждения о получении каждого пакета и перепосылают потерявшиеся по
дороге пакеты.
Для узла A это соединение называется исходящим, а для узла B — входящим.
HTTP, SPDY
HTTP (англ. HyperText Transfer Protocol — «протокол передачи гипертекста»)
— протокол прикладного уровня передачи данных (изначально — в виде
гипертекстовых документов в формате «HTML», в настоящий момент
используется для передачи произвольных данных).
SPDY (читается как «speedy», «спиди») — протокол прикладного уровня для
передачи веб-контента. Протокол разработан корпорацией Google. По
замыслу разработчиков, данный протокол позиционируется как замена
некоторых частей протокола HTTP — таких, как управление соединениями и
форматы передачи данных.
HTTP, SPDY
Клиент общается с сервером посредством HTTP-
сообщений
Обмен сообщениями идёт по обыкновенной схеме
«запрос-ответ».:
1. Клиент отправляет на сервер запрос
2. Сервер генерирует ответ.
HTTP/HTTPS
Структура протокола
Каждое HTTP-сообщение состоит из трёх частей, которые передаются в указанном порядке:
1. Стартовая строка (англ. Starting line) — определяет тип сообщения;
2. Заголовки (англ. Headers) — характеризуют тело сообщения, параметры передачи и
прочие сведения;
3. Тело сообщения (англ. Message Body) — непосредственно данные сообщения.
Обязательно должно отделяться от заголовков пустой строкой.
Заголовки и тело сообщения могут отсутствовать, но стартовая строка является обязательным
элементом, так как указывает на тип запроса/ответа. Исключением является версия 0.9 протокола,
у которой сообщение запроса содержит только стартовую строку, а сообщения ответа только тело
сообщения.
Для версии протокола 1.1, сообщение запроса обязательно должно содержать заголовок Host.
HTTP/HTTPS
Стартовая строка
Стартовые строки различаются для запроса и ответа. Строка запроса выглядит так:
GET URI — для версии протокола 0.9;
Метод URI HTTP/Версия — для остальных версий.
Здесь:
Метод (англ. Method) — название запроса, одно слово заглавными буквами. В версии HTTP 0.9 использовался только метод GET,
список запросов для версии 1.1 представлен ниже;
URI определяет путь к запрашиваемому документу;
Версия (англ. Version) — пара разделённых точкой цифр. Например: 1.0.
Стартовая строка ответа сервера имеет следующий формат: HTTP/Версия КодСостояния Пояснение, где:
Версия — пара разделённых точкой цифр, как в запросе;
Код состояния (англ. Status Code) — три цифры. По коду состояния определяется дальнейшее содержимое сообщения и поведение
клиента;
Пояснение (англ. Reason Phrase) — текстовое короткое пояснение к коду ответа для пользователя. Никак не влияет на сообщение и
является необязательным.
Например, стартовая строка ответа сервера на предыдущий запрос может выглядеть так:
HTTP/HTTPS
Методы
Метод HTTP (англ. HTTP Method) — последовательность из любых символов, кроме управляющих
и разделителей, указывающая на основную операцию над ресурсом.
Каждый сервер обязан поддерживать как минимум методы GET и HEAD. Если сервер не распознал
указанный клиентом метод, то он должен вернуть статус 501 (Not Implemented). Если серверу
метод известен, но он неприменим к конкретному ресурсу, то возвращается сообщение с кодом
405 (Method Not Allowed).
Кроме методов GET и HEAD, часто применяется метод POST.
Front WEB-server
Первое звено в инфраструктуре, которое обслуживает запрос
пользователя
Может быть много, один за одним (могут решать разные задачи)
Задача front web-сервера - обработать входящий запрос и решить, что с
ним делать дальше
На front web-сервер обычно ставяться быстрые web-сервера (максимально
быстрые) и универсальные (NGINX, lighttpd)
Front WEB-server
Общается с пользователем (решает проблему
медленных пользователей)
Способен сам отдавать статику из файловой системы
(картинки, css, js и т.д.) без участия какого либо
дополнительного кода
Application Server
Сервер на котором работает наше приложение
Взаимодействует с:
front web-сервером
базой данных
кешом
внешними API
Application Server
Включает в себя:
WEB-сервер (Apache) или Fast CGI (PHP-FPM)
Интерпретатор языка (наш код работает внутри
сервера)
Application (Динамика(PHP code, other code, binaries))
Компоненты Application сервера работают в связке, в
рамках единого процесса
Application (PHP-code)
Реализует какую-то логику
Взаимодействует с :
Базой данных
Внешними API
Кешом
Статическими файлами
Response (ответ)
1. Application возвращает ответ back серверу
2. Back сервер отдает ответ front серверу (по
протоколу HTTP либо Fastcgi)
3. Front сервер, по тому же соединению, по протоколу
HTTP либо SPDY отдает ответ клиенту
4. Клиент получает ответ и рендерит его в браузере
Архитектура
PHP приложения
Уровни абстракции
Код выполняющий какую-то одну операцию должен
находиться на одном уровне абстракции
Приложение должно разделяться на уровни, более
высокие уровни должны опираться на более низкие
Каждый уровень выполняет свою задачу и
предоставляет сервис для более высокого уровня
Компонентный подход
Приложение должно быть модульным
Разделять на модули необходимо в зависимости от реализации логики,
(например модуль работы с хранилищем данных, модуль бизнес-
логики)
Модули должны в рамках всего приложения (back-end application, front-
end application, storage, API Access Application)
Модули должны быть автономными
Модули должны взаимодействовать через API
Необходимо абстрагировать способ взаимодействия между
Front-end
Это часть приложения
Это сайт
Это один из способов доступа к back-end`у
Back-end
Это ядро приложения (логика приложения)
Интерфейсом beck-end`а может выступать:
API CLI (command line interface) - в данном случае front-end вообще не
нужен
API Access Interface - реализуется доступ к бизнес логики для front-end`а
либо API Access Application
Business logic
Это основная задача приложения:
Обработка данных
Логические преобразования
Алгоритмические вычисления
etc.
Сосредоточена в back-end application
Для реализации чаще всего используются MVC фреймворки
Persistence Logic
Реализация логики хранения информации
CRUD+ (Create, Read, Update, Delete + расширенные
возможности)
Что нужно сохранить, куда, когда и в каком виде
ORM, DBAL
Инструменты работы с хранилищем данных
Запись/чтение из конкретной сущности конкретного
хранилища
Абстракция над хранилищем
Логика преобразования объектов в данные которые
воспринимает хранилище

More Related Content

Viewers also liked

Itil за 1,5 часа для менеджера проекта
Itil за 1,5 часа для менеджера проектаItil за 1,5 часа для менеджера проекта
Itil за 1,5 часа для менеджера проектаAlexey Frolov
 
Работа с людьми. Как обеспечить результат и предсказуемость.
Работа с людьми. Как обеспечить результат и предсказуемость.Работа с людьми. Как обеспечить результат и предсказуемость.
Работа с людьми. Как обеспечить результат и предсказуемость.Alexey Frolov
 
Трудное общение с непростыми людьми - как выйти в конструктив
Трудное общение с непростыми людьми - как выйти в конструктивТрудное общение с непростыми людьми - как выйти в конструктив
Трудное общение с непростыми людьми - как выйти в конструктивAlexey Frolov
 
Общие подходы к внедрению PMO
Общие подходы к внедрению PMOОбщие подходы к внедрению PMO
Общие подходы к внедрению PMOKonstantin Tushkov
 
Проектный офис. культура управления проектами
Проектный офис. культура управления проектамиПроектный офис. культура управления проектами
Проектный офис. культура управления проектамиЕвгений Пикулев
 
Проектный офис по сервисной модели
Проектный офис по сервисной моделиПроектный офис по сервисной модели
Проектный офис по сервисной моделиЦОРПУ
 
офис управления проектами как создать проектный офис своими руками
офис управления проектами   как создать проектный офис своими рукамиофис управления проектами   как создать проектный офис своими руками
офис управления проектами как создать проектный офис своими рукамиВадим Овечкин
 
Техническое задание на поставку системы управления электронной очередью
Техническое задание на поставку системы управления электронной очередьюТехническое задание на поставку системы управления электронной очередью
Техническое задание на поставку системы управления электронной очередьюApertum Projects
 
From Use case to User Story
From Use case to User StoryFrom Use case to User Story
From Use case to User StoryKunta Hutabarat
 
Техническое задание на разработку АС "Контроль доступа"
Техническое задание на разработку АС "Контроль доступа"Техническое задание на разработку АС "Контроль доступа"
Техническое задание на разработку АС "Контроль доступа"Anatoly Simkin
 

Viewers also liked (10)

Itil за 1,5 часа для менеджера проекта
Itil за 1,5 часа для менеджера проектаItil за 1,5 часа для менеджера проекта
Itil за 1,5 часа для менеджера проекта
 
Работа с людьми. Как обеспечить результат и предсказуемость.
Работа с людьми. Как обеспечить результат и предсказуемость.Работа с людьми. Как обеспечить результат и предсказуемость.
Работа с людьми. Как обеспечить результат и предсказуемость.
 
Трудное общение с непростыми людьми - как выйти в конструктив
Трудное общение с непростыми людьми - как выйти в конструктивТрудное общение с непростыми людьми - как выйти в конструктив
Трудное общение с непростыми людьми - как выйти в конструктив
 
Общие подходы к внедрению PMO
Общие подходы к внедрению PMOОбщие подходы к внедрению PMO
Общие подходы к внедрению PMO
 
Проектный офис. культура управления проектами
Проектный офис. культура управления проектамиПроектный офис. культура управления проектами
Проектный офис. культура управления проектами
 
Проектный офис по сервисной модели
Проектный офис по сервисной моделиПроектный офис по сервисной модели
Проектный офис по сервисной модели
 
офис управления проектами как создать проектный офис своими руками
офис управления проектами   как создать проектный офис своими рукамиофис управления проектами   как создать проектный офис своими руками
офис управления проектами как создать проектный офис своими руками
 
Техническое задание на поставку системы управления электронной очередью
Техническое задание на поставку системы управления электронной очередьюТехническое задание на поставку системы управления электронной очередью
Техническое задание на поставку системы управления электронной очередью
 
From Use case to User Story
From Use case to User StoryFrom Use case to User Story
From Use case to User Story
 
Техническое задание на разработку АС "Контроль доступа"
Техническое задание на разработку АС "Контроль доступа"Техническое задание на разработку АС "Контроль доступа"
Техническое задание на разработку АС "Контроль доступа"
 

Similar to архитектура и принципы работы типового Web приложения

Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet APIПротокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet APIEkaterina Kuchinskaya
 
Лекция #1. Основы Web-технологий
Лекция #1. Основы Web-технологийЛекция #1. Основы Web-технологий
Лекция #1. Основы Web-технологийЯковенко Кирилл
 
семейство протоколов
семейство протоколовсемейство протоколов
семейство протоколовliliya12345
 
МАИ, Сети ЭВМ, Лекция №2
МАИ, Сети ЭВМ, Лекция №2МАИ, Сети ЭВМ, Лекция №2
МАИ, Сети ЭВМ, Лекция №2Dima Dzuba
 
Антон Шумихин - Архитектура сетей
Антон Шумихин - Архитектура сетейАнтон Шумихин - Архитектура сетей
Антон Шумихин - Архитектура сетейGAiN@ESD
 
Мировые информационные ресурсы. Лекция 3
Мировые информационные ресурсы. Лекция 3Мировые информационные ресурсы. Лекция 3
Мировые информационные ресурсы. Лекция 3Dmitriy Krukov
 
JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.Igor Shkulipa
 
Лекция 1. Модель OSI.
Лекция 1. Модель OSI.Лекция 1. Модель OSI.
Лекция 1. Модель OSI.Alexey Furmanov
 
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.Igor Shkulipa
 
Qlogic: Технологии Ethernet
Qlogic: Технологии EthernetQlogic: Технологии Ethernet
Qlogic: Технологии EthernetExpolink
 
UNEC__1683904139.pptx
UNEC__1683904139.pptxUNEC__1683904139.pptx
UNEC__1683904139.pptxAdnanOktar1
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 67bits
 
введение в интернет
введение в интернетвведение в интернет
введение в интернетUlyana1973
 
Web осень 2012 лекция 2
Web осень 2012 лекция 2Web осень 2012 лекция 2
Web осень 2012 лекция 2Technopark
 
лекционное занятие №4
лекционное занятие №4лекционное занятие №4
лекционное занятие №4Pavlo Krasikov
 
Лекция #2. Принцип организации World Wide Web
Лекция #2. Принцип организации World Wide WebЛекция #2. Принцип организации World Wide Web
Лекция #2. Принцип организации World Wide WebЯковенко Кирилл
 
Принципы работы интернет.
Принципы работы интернет. Принципы работы интернет.
Принципы работы интернет. Dmitry Chabanenko
 
типы адресации в интернете
типы адресации в интернететипы адресации в интернете
типы адресации в интернетеfdfd454545
 

Similar to архитектура и принципы работы типового Web приложения (20)

Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet APIПротокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
 
сетевые протоколы
сетевые протоколысетевые протоколы
сетевые протоколы
 
Лекция #1. Основы Web-технологий
Лекция #1. Основы Web-технологийЛекция #1. Основы Web-технологий
Лекция #1. Основы Web-технологий
 
семейство протоколов
семейство протоколовсемейство протоколов
семейство протоколов
 
МАИ, Сети ЭВМ, Лекция №2
МАИ, Сети ЭВМ, Лекция №2МАИ, Сети ЭВМ, Лекция №2
МАИ, Сети ЭВМ, Лекция №2
 
Антон Шумихин - Архитектура сетей
Антон Шумихин - Архитектура сетейАнтон Шумихин - Архитектура сетей
Антон Шумихин - Архитектура сетей
 
Мировые информационные ресурсы. Лекция 3
Мировые информационные ресурсы. Лекция 3Мировые информационные ресурсы. Лекция 3
Мировые информационные ресурсы. Лекция 3
 
JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.
 
Протокол HTTP
Протокол HTTPПротокол HTTP
Протокол HTTP
 
Лекция 1. Модель OSI.
Лекция 1. Модель OSI.Лекция 1. Модель OSI.
Лекция 1. Модель OSI.
 
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.
 
Qlogic: Технологии Ethernet
Qlogic: Технологии EthernetQlogic: Технологии Ethernet
Qlogic: Технологии Ethernet
 
UNEC__1683904139.pptx
UNEC__1683904139.pptxUNEC__1683904139.pptx
UNEC__1683904139.pptx
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
 
введение в интернет
введение в интернетвведение в интернет
введение в интернет
 
Web осень 2012 лекция 2
Web осень 2012 лекция 2Web осень 2012 лекция 2
Web осень 2012 лекция 2
 
лекционное занятие №4
лекционное занятие №4лекционное занятие №4
лекционное занятие №4
 
Лекция #2. Принцип организации World Wide Web
Лекция #2. Принцип организации World Wide WebЛекция #2. Принцип организации World Wide Web
Лекция #2. Принцип организации World Wide Web
 
Принципы работы интернет.
Принципы работы интернет. Принципы работы интернет.
Принципы работы интернет.
 
типы адресации в интернете
типы адресации в интернететипы адресации в интернете
типы адресации в интернете
 

архитектура и принципы работы типового Web приложения

  • 1. Архитектура и принципы работы типового web- приложения
  • 2. WEB-приложение Клиент-серверное приложение, в котором клиентом выступает браузер, а сервером — web-сервер. Логика web-приложения распределена между сервером и клиентом. Хранение данных осуществляется, преимущественно, на сервере. Обмен информацией происходит по сети.
  • 4. В web-приложениях существуют две программы, работающие одновременно: Код живущий на сервере и отвечающий на HTTP запросы; Код живущий в браузере и отвечающий на ввод данных пользователем.
  • 5. Серверный код Языки программирования/фреймворки: Javascript(Node.js), Python(Django), PHP, Ruby On Rails, Java, C# etc; Не виден пользователю; Может отвечать только на HTTP запросы конкретного URL, а не на любой тип пользовательского ввода;
  • 6. Клиентский код Языки программирования: HTML, CSS, JavaScript; Парсится браузером пользователя; Реагирует на пользовательский ввод; Доступен для просмотра и редактирования пользователю в полном объеме; Не может читать файлы с сервера на прямую, должен общаться с сервером через HTTP запросы;
  • 7. Технологический стек 1. Операционная система (файловая система). Чаще всего Linux; 2. WEB-сервер (Apache, NGINX, IIS etc.); 3. База данных (MySql, MongoDB, MS Sql, Oracle, PostgreSql, Redis, Cassandra etc.);
  • 9. Путь запроса 1. DNS 2. HTTP, SPDY 3. Front Server (NGINX) 4. Back Server ot Application Server (Apache, PHP-FPM) 5. PHP code, opcode 6. Response
  • 10. DNS DNS (англ. Domain Name System — система доменных имён) — компьютерная распределённая система для получения информации о доменах. Чаще всего используется для получения IP-адреса по имени хоста (компьютера или устройства), получения информации о маршрутизации почты, обслуживающих узлах для протоколов в домене (SRV-запись).
  • 11. DNS Путь пользовательского запроса начинается с DNS: 1. Пользователь обращается к DNS для получения IP адреса 2. DNS отдает пользователю IP адрес 3. Пользователь обращается к WEB-приложению по IP через TCP/IP 4. Открывается сетевое соединение (HTTP, SPDY)
  • 14. TCP/IP Стек протоколов TCP/IP — набор сетевых протоколов передачи данных, используемых в сетях, включая сеть Интернет. Название TCP/IP происходит из двух наиважнейших протоколов семейства — Transmission Control Protocol (TCP) и Internet Protocol(IP), которые были разработаны и описаны первыми в данном стандарте. Также изредка упоминается как модель DOD в связи с историческим происхождением от сети ARPANET из 1970 годов (под управлением DARPA, Министерства обороны США).
  • 16. TCP/IP IP — протокол, лежащий в основе Интернета, его название так и расшифровывается: Internet Protocol. В настоящее время используются следующие две версии протокола IP: IPv6 — сравнительно новая (текущая версия спецификации опубликована в декабре 1998[1]); IP-адрес имеет разрядность 128 бит и записывается в виде восьми 16-битных полей, с использованием шестнадцатеричной системы счисления и с возможностью сокращения двух и более последовательных нулевых полей до ::; пример: 2001:db8:42::1337:cafe; IPv4 — «классическая» (1981 г.[2]); IP-адрес имеет разрядность 32 бита и записывается в виде четырех десятичных чисел в диапазоне 0 … 255 через точку; пример: 192.0.2.34. Каждый узел может напрямую связаться только с узлами своей сети (например: подключенными к тому же сегменту Ethernet), для определения которых используется адрес сети — часть IP-адреса, определяемая маской сети). Связь с узлами других сетей осуществляется через промежуточные узлы — маршрутизаторы. Посмотреть, как выглядит маршрут пакета от вашего компьютера к другим узлам, можно с помощью команды traceroute (в Linux) или tracert (в Windows).
  • 17. TCP/IP TCP протокол базируется на IP для доставки пакетов, но добавляет две важные вещи: установление соединения — это позволяет ему, в отличие от IP, гарантировать доставку пакетов порты — для обмена пакетами между приложениями, а не просто узлами Протокол TCP предназначен для обмена данными — это «надежный» протокол, потому что: 1. Обеспечивает надежную доставку данных, так как предусматривает установления логического соединения; 2. Нумерует пакеты и подтверждает их прием квитанцией, а в случае потери организует повторную передачу; 3. Делит передаваемый поток байтов на части — сегменты - и передает их нижнему уровню, на приемной стороне снова собирает их в непрерывный поток байтов.
  • 18. TCP/IP TCP-соединение Соединение двух узлов начинается с handshake (рукопожатия): 1. Узел A посылает узлу B специальный пакет SYN — приглашение к соединению 2. B отвечает пакетом SYN-ACK — согласием об установлении соединения 3. A посылает пакет ACK — подтверждение, что согласие получено После этого TCP соединение считается установленным, и приложения, работающие в этих узлах, могут посылать друг другу пакеты с данными. «Соединение» означает, что узлы помнят друг о друге, нумеруют все пакеты, идущие в обе стороны, посылают подтверждения о получении каждого пакета и перепосылают потерявшиеся по дороге пакеты. Для узла A это соединение называется исходящим, а для узла B — входящим.
  • 19. HTTP, SPDY HTTP (англ. HyperText Transfer Protocol — «протокол передачи гипертекста») — протокол прикладного уровня передачи данных (изначально — в виде гипертекстовых документов в формате «HTML», в настоящий момент используется для передачи произвольных данных). SPDY (читается как «speedy», «спиди») — протокол прикладного уровня для передачи веб-контента. Протокол разработан корпорацией Google. По замыслу разработчиков, данный протокол позиционируется как замена некоторых частей протокола HTTP — таких, как управление соединениями и форматы передачи данных.
  • 20. HTTP, SPDY Клиент общается с сервером посредством HTTP- сообщений Обмен сообщениями идёт по обыкновенной схеме «запрос-ответ».: 1. Клиент отправляет на сервер запрос 2. Сервер генерирует ответ.
  • 21. HTTP/HTTPS Структура протокола Каждое HTTP-сообщение состоит из трёх частей, которые передаются в указанном порядке: 1. Стартовая строка (англ. Starting line) — определяет тип сообщения; 2. Заголовки (англ. Headers) — характеризуют тело сообщения, параметры передачи и прочие сведения; 3. Тело сообщения (англ. Message Body) — непосредственно данные сообщения. Обязательно должно отделяться от заголовков пустой строкой. Заголовки и тело сообщения могут отсутствовать, но стартовая строка является обязательным элементом, так как указывает на тип запроса/ответа. Исключением является версия 0.9 протокола, у которой сообщение запроса содержит только стартовую строку, а сообщения ответа только тело сообщения. Для версии протокола 1.1, сообщение запроса обязательно должно содержать заголовок Host.
  • 22. HTTP/HTTPS Стартовая строка Стартовые строки различаются для запроса и ответа. Строка запроса выглядит так: GET URI — для версии протокола 0.9; Метод URI HTTP/Версия — для остальных версий. Здесь: Метод (англ. Method) — название запроса, одно слово заглавными буквами. В версии HTTP 0.9 использовался только метод GET, список запросов для версии 1.1 представлен ниже; URI определяет путь к запрашиваемому документу; Версия (англ. Version) — пара разделённых точкой цифр. Например: 1.0. Стартовая строка ответа сервера имеет следующий формат: HTTP/Версия КодСостояния Пояснение, где: Версия — пара разделённых точкой цифр, как в запросе; Код состояния (англ. Status Code) — три цифры. По коду состояния определяется дальнейшее содержимое сообщения и поведение клиента; Пояснение (англ. Reason Phrase) — текстовое короткое пояснение к коду ответа для пользователя. Никак не влияет на сообщение и является необязательным. Например, стартовая строка ответа сервера на предыдущий запрос может выглядеть так:
  • 23. HTTP/HTTPS Методы Метод HTTP (англ. HTTP Method) — последовательность из любых символов, кроме управляющих и разделителей, указывающая на основную операцию над ресурсом. Каждый сервер обязан поддерживать как минимум методы GET и HEAD. Если сервер не распознал указанный клиентом метод, то он должен вернуть статус 501 (Not Implemented). Если серверу метод известен, но он неприменим к конкретному ресурсу, то возвращается сообщение с кодом 405 (Method Not Allowed). Кроме методов GET и HEAD, часто применяется метод POST.
  • 24. Front WEB-server Первое звено в инфраструктуре, которое обслуживает запрос пользователя Может быть много, один за одним (могут решать разные задачи) Задача front web-сервера - обработать входящий запрос и решить, что с ним делать дальше На front web-сервер обычно ставяться быстрые web-сервера (максимально быстрые) и универсальные (NGINX, lighttpd)
  • 25. Front WEB-server Общается с пользователем (решает проблему медленных пользователей) Способен сам отдавать статику из файловой системы (картинки, css, js и т.д.) без участия какого либо дополнительного кода
  • 26. Application Server Сервер на котором работает наше приложение Взаимодействует с: front web-сервером базой данных кешом внешними API
  • 27. Application Server Включает в себя: WEB-сервер (Apache) или Fast CGI (PHP-FPM) Интерпретатор языка (наш код работает внутри сервера) Application (Динамика(PHP code, other code, binaries)) Компоненты Application сервера работают в связке, в рамках единого процесса
  • 28. Application (PHP-code) Реализует какую-то логику Взаимодействует с : Базой данных Внешними API Кешом Статическими файлами
  • 29. Response (ответ) 1. Application возвращает ответ back серверу 2. Back сервер отдает ответ front серверу (по протоколу HTTP либо Fastcgi) 3. Front сервер, по тому же соединению, по протоколу HTTP либо SPDY отдает ответ клиенту 4. Клиент получает ответ и рендерит его в браузере
  • 31. Уровни абстракции Код выполняющий какую-то одну операцию должен находиться на одном уровне абстракции Приложение должно разделяться на уровни, более высокие уровни должны опираться на более низкие Каждый уровень выполняет свою задачу и предоставляет сервис для более высокого уровня
  • 32. Компонентный подход Приложение должно быть модульным Разделять на модули необходимо в зависимости от реализации логики, (например модуль работы с хранилищем данных, модуль бизнес- логики) Модули должны в рамках всего приложения (back-end application, front- end application, storage, API Access Application) Модули должны быть автономными Модули должны взаимодействовать через API Необходимо абстрагировать способ взаимодействия между
  • 33. Front-end Это часть приложения Это сайт Это один из способов доступа к back-end`у
  • 34. Back-end Это ядро приложения (логика приложения) Интерфейсом beck-end`а может выступать: API CLI (command line interface) - в данном случае front-end вообще не нужен API Access Interface - реализуется доступ к бизнес логики для front-end`а либо API Access Application
  • 35. Business logic Это основная задача приложения: Обработка данных Логические преобразования Алгоритмические вычисления etc. Сосредоточена в back-end application Для реализации чаще всего используются MVC фреймворки
  • 36. Persistence Logic Реализация логики хранения информации CRUD+ (Create, Read, Update, Delete + расширенные возможности) Что нужно сохранить, куда, когда и в каком виде
  • 37. ORM, DBAL Инструменты работы с хранилищем данных Запись/чтение из конкретной сущности конкретного хранилища Абстракция над хранилищем Логика преобразования объектов в данные которые воспринимает хранилище