Клиент-серверное взаимодействие

Содержание

Интернет
Протоколы передачи данных
Коды ответов клиента и сервера
Веб-технологии
REST API
Веб-адрес
Типы архитектуры
межсетевой протокол

Интернет

глобальная сеть соединенных между собой компьютеров

построена на базе стека протоколов 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хх

код успешной обработки запроса

200: ok
201: created
203: non-authoritative information
204: no content
коды ответов клиента и сервера

3хх

код редиректа (перенаправление)

т.е. для выполнения запроса нужно предпринять дополнительные действия

коды ответов клиента и сервера

4хх

клиентская ошибка

400: bad request
401: unauthorized
403: forbidden
404: not found
409: conflict
коды ответов клиента и сервера

5хх

серверная ошибка

500: internal server error
501: service unavaible
502: not implemented
503: gateway timeout
504: network timeout
509: bad gateway
Web Technology

Веб-технологии

JS

Java Script

язык программирования, позволяющий создавать скрипты, которые встраиваются в HTML-страницы и выполняются в браузере посетителем страницы

Cascading Style Sheets

CSS

каскадная таблица стилей – язык, отвечающий за визуальное представление документов пользователю

LAMP

LAMP = Linux + Apache + MySQL + PHP

набор ПО с открытым исходным кодом, который обычно устанавливают на сервер для отображения динамических веб-сайтов и веб-приложений

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

создает тест обратного цикла с тем же телом запроса, которое клиент отправил серверу ранее

(предназначен для диагностики)

REST api design

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

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

HTTP методы (CRUD)

CRUD — акроним
(стандартная классификация функций по манипуляции данными)

GET – получение
POST – создание
PUT – обновление, модификация
DELETE – удаление

REST функционирует поверх протокола HTTP

Идентификация ресурсов в Вебе

Веб-адрес

пример запроса

http://site.com/api.php?action=get.user&id=1&key=46syhy77sash

action – действие, которое необходимо выполнить
id – идентификатор пользователя
кey – ключ доступа (фактически, временный пароль)
Uniform Resource Identifier

URI — унифицированный идентификатор ресурса

является либо указателем ресурса URL, либо именем ресурса URN, либо одновременно обоими

Стартовая строка для запроса (от клиента):

<method> URI HTTP/ <version>

Пример:
GET /path/resource?param1=value1&param2=value2 HTTP/1.1

Стартовая строка для ответа (от сервера):

HTTP/<version> <Код Состояния> <Пояснение>

Пример:
HTTP/1.0 200 OK

protocol

Протокол

набор соглашений интерфейса логического уровня

(язык, на котором общаются браузер и сервер)

host

Хост

адрес/имя сервера, у которого мы запрашиваем документ

path

Путь

используется для организации иерархических ресурсов

query

Запрос

набор соглашений интерфейса логического уровня

(язык, на котором общаются браузер и сервер)

fragment

Фрагмент

идентифицирует подчинённый ресурс, не имеющий прямого URL, обычно это якорная ссылка на странице

client–server

Типы архитектуры

cookie

Ку́ки

небольшой фрагмент данных (часть http заголовка), который сервер отправляет в веб-браузер пользователя

управление сессиями: логины, корзины покупок, результаты игр и все, что сервер должен запомнить
пользовательские настройки, темы и пр.
запись и анализ поведения пользователя
fat client

«Толстый клиент»

клиентское приложение, содержащее значительную часть логики и функциональности непосредственно на стороне пользователя

thin client

«Тонкий клиент»

клиентское приложение, которое минимизирует логику и функциональность на стороне пользователя, делегируя большинство задач серверу

нравится контент?

Если хочешь поощрить за труд, жми кнопку

Прокрутить вверх