Клиент-серверное взаимодействие
Содержание
межсетевой протокол
Интернет
глобальная сеть соединенных между собой компьютеров
построена на базе стека протоколов TCP/IP
front end (frontend)
Frontend веб-приложения
система скриптов, работающая на стороне пользователя (в браузере)
backend
Backend веб-приложения
система скриптов, выполняющихся на сервере, которая позволяет формировать ответ на запросы клиентов
Internet Protocol
Ip-адрес
идентификатор физической машины в сети (одно сетевое соединение)
Dynamic Internet Protocol
Динамический Ip-адрес
Ip-адрес, меняющийся при заходе в сеть
Domain Name System
DNS
система преобразования доменных имен в Ip-адрес
прикладной уровень (верхний)
Функции HTTP
хранилище + СУБД
Функции сервера БД
правила передачи данных между узлами компьютерной сети
Протоколы передачи данных
Hyper Text Transfer Protocol
HTTP
протокол передачи гипертекста
(использует порт 80)
Hyper Text Transfer Protocol Secure
HTTPS
расширение протокола HTTP для поддержки шифрования в целях повышения безопасности
(использует порт 443)
Transmission Control Protocol / Internet Protocol
TCP/IP
набор сетевых протоколов передачи данных
IP строит маршрут, а TCP контролирует, чтобы всё передавалось правильно
Secure Sockets Layer / Transport Level Security
SSL/TLS
криптографический протокол, который шифрует передаваемую информацию
(обёртка для HTTP)
User Datagram Protocol
UDP
транспортный протокол передачи данных, но без подтверждения доставки
File Transfer Protocol
FTP
протокол передачи файлов со специального файлового сервера на компьютер пользователя
Post Office Protocol
POP3
стандартный протокол почтового соединения
Simple Mail Transfer Protocol
SMTP
протокол, который задает набор правил для передачи почты
Teletype Network
TELNET
протокол удаленного доступа
Secure Shell
SSH
протокол удаленного доступа, шифрует весь трафик, включая и передаваемые пароли.
ether + network
Ethernet
протокол, определяющий стандарты сети на физическом и канальном уровнях
статус запросов
Коды ответов клиента и сервера
коды ответов клиента и сервера
1хх
информационный код, отвечающий за передачу данных
т.е. запрос принят и обрабатывается
коды ответов клиента и сервера
2хх
код успешной обработки запроса
коды ответов клиента и сервера
3хх
код редиректа (перенаправление)
т.е. для выполнения запроса нужно предпринять дополнительные действия
коды ответов клиента и сервера
4хх
клиентская ошибка
коды ответов клиента и сервера
5хх
серверная ошибка
Web Technology
Веб-технологии
JS
Java Script
язык программирования, позволяющий создавать скрипты, которые встраиваются в HTML-страницы и выполняются в браузере посетителем страницы
Cascading Style Sheets
CSS
каскадная таблица стилей – язык, отвечающий за визуальное представление документов пользователю
JSON | XML |
---|---|
текстовый формат обмена данными, основанный на JavaScript | расширяемый язык разметки – язык описания данных (исп. для хранения и передачи информации в удобном для человека и компьютера виде) |
LAMP
LAMP = Linux + Apache + MySQL + PHP
набор ПО с открытым исходным кодом, который обычно устанавливают на сервер для отображения динамических веб-сайтов и веб-приложений
Asynchronous Javascript and XML
Ajax = Java Script + XML
набор техник разработки веб-интерфейсов, позволяющий делать запросы к серверу без видимой перезагрузки веб-страницы
(пользователь не замечает, когда его браузер запрашивает данные)
application programming interface
API
набор готовых классов, процедур, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) для использования во внешних программных продуктах
набор правил написания кода серверного приложения
REST API
Representational State Transfer — «передача репрезентативного состояния»
REST
это не протокол, а подход, архитектурный стиль к написанию прикладных интерфейсов.
Данные по умолчанию передаются в JSON.
Simple Object Access Protocol
SOAP
стандартный протокол обмена структурированными сообщениями в распределённой вычислительной среде.
Данные передаются в XML.
методы REST API
GET
передает заголовок
(для извлечения информации)
(после символа «?»)
методы REST API
POST
передает большие объемы данных (включаются в тело запроса) в бинарном виде, т.е. без искажений и изменений
методы REST API
PUT
загружает содержимое запроса на указанный в запросе url
(используется для обновления ресурсов)
методы REST API
DELETE
удаляет указанный ресурс
методы REST API
OPTIONS
используется для описания параметров поля … между клиентом и сервером
методы REST API
HEAD
аналогичен GET, но в ответе сервера содержится только заголовок без поля
(применяется для проверки существования ресурса по указанному адресу, не изменился ли с момента последнего обращения)
методы REST API
CONNECT
преобразует соединение запроса в прозрачный TCP/IP-туннель
методы REST API
TRACE
создает тест обратного цикла с тем же телом запроса, которое клиент отправил серверу ранее
(предназначен для диагностики)
POST | PUT |
---|---|
предполагает, что по указанному URI будет производиться обработка передаваемого клиентом содержимого | предполагает, что загружаемое содержимое соответствует находящемуся по данному URI ресурсу |

REST api design
REST используется:

таблица сравнения
HTTP методы (CRUD)
CRUD — акроним
(стандартная классификация функций по манипуляции данными)
REST функционирует поверх протокола HTTP
Идентификация ресурсов в Вебе
Веб-адрес
пример запроса
http://site.com/api.php?action=get.user&id=1&key=46syhy77sash

Uniform Resource Identifier
URI — унифицированный идентификатор ресурса
является либо указателем ресурса URL, либо именем ресурса URN, либо одновременно обоими
Стартовая строка для запроса (от клиента):
<method> URI HTTP/ <version>
Пример:
GET /path/resource?param1=value1¶m2=value2 HTTP/1.1
Стартовая строка для ответа (от сервера):
HTTP/<version> <Код Состояния> <Пояснение>
Пример:
HTTP/1.0 200 OK
protocol
Протокол
набор соглашений интерфейса логического уровня
(язык, на котором общаются браузер и сервер)
host
Хост
адрес/имя сервера, у которого мы запрашиваем документ
path
Путь
используется для организации иерархических ресурсов
query
Запрос
набор соглашений интерфейса логического уровня
(язык, на котором общаются браузер и сервер)
fragment
Фрагмент
идентифицирует подчинённый ресурс, не имеющий прямого URL, обычно это якорная ссылка на странице
client–server
Типы архитектуры
веб-сервис | веб-сайт |
---|---|
не имеет пользовательского интерфейса | имеет пользовательский интерфейс (или графический интерфейс) |
предназначены для взаимодействия других приложений через Интернет | предназначены для использования людьми |
не зависят от платформы, так как используют открытые протоколы | являются кроссплатформенными, так как требуют настройки для работы в разных браузерах, операционных системах и т. д. |
доступ осуществляется с помощью HTTP-методов — GET, POST, PUT, DELETE и т. д. | доступ осуществляется с помощью компонентов GUI — кнопок, текстовых полей, форм и т. д. |
cookie
Ку́ки
небольшой фрагмент данных (часть http заголовка), который сервер отправляет в веб-браузер пользователя
fat client
«Толстый клиент»
клиентское приложение, содержащее значительную часть логики и функциональности непосредственно на стороне пользователя
thin client
«Тонкий клиент»
клиентское приложение, которое минимизирует логику и функциональность на стороне пользователя, делегируя большинство задач серверу
«Толстый клиент» | «Тонкий клиент» |
---|---|
высокая производительность | легкость в управлении |
возможность работы в автономном режиме | зависимость от сети |
требует установки | ограниченные возможности без подключения |
обновления сложны | простота обновлений |