Лекция 2. Обмен данными между клиентом и сервером
Лекция 2. Обмен данными между клиентом и сервером
Протокол передачи данных – набор соглашений интерфейса логического уровня, которые определяют обмен данными между различными программами. Эти соглашения задают единообразный способ передачи сообщений и обработки ошибок при взаимодействии программного обеспечения разнесённой в пространстве аппаратуры, соединённой тем или иным интерфейсом.
Сетевой протокол – набор правил и действий (очерёдности действий), позволяющий осуществлять соединение и обмен данными между двумя и более включёнными в сеть устройствами.
Наиболее распространённой системой классификации сетевых протоколов является так называемая модель OSI, в соответствии с которой протоколы делятся на 7 уровней по своему назначению – от физического (формирование и распознавание электрических или других сигналов) до прикладного (интерфейс программирования приложений для передачи информации приложениями).
Сетевые протоколы предписывают правила работы компьютерам, которые подключены к сети. Они строятся по многоуровневому принципу. Протокол некоторого уровня определяет одно из технических правил связи. В настоящее время для сетевых протоколов используется модель OSI (Open System Interconnection – взаимодействие открытых систем, ВОС).
Модель OSI – это 7-уровневая логическая модель работы сети. Модель OSI реализуется группой протоколов и правил связи, организованных в несколько уровней:
– на физическом уровне определяются физические (механические, электрические, оптические) характеристики линий связи;
– на канальном уровне определяются правила использования физического уровня узлами сети (Физическая адресация);
– сетевой уровень отвечает за адресацию и доставку сообщений (Определение маршрута и логическая адресация);
– транспортный уровень контролирует очередность прохождения компонентов сообщения (Прямая связь между конечными пунктами и надежность);
– задача сеансового уровня — координация связи между двумя прикладными программами, работающими на разных рабочих станциях (Управление сеансом связи);
– уровень представления служит для преобразования данных из внутреннего формата компьютера в формат передачи (Представление и шифрование данных);
– прикладной уровень является пограничным между прикладной программой и другими уровнями — обеспечивает удобный интерфейс связи сетевых программ пользователя (Доступ к сетевым службам).
Другая модель – стек протоколов TCP/IP – содержит 4 уровня:
– канальный уровень (link layer), (Уровень доступа к сети)
– сетевой уровень (Internet layer), (Интернет-уровень)
– транспортный уровень (transport layer), (Транспортный протокол хост-хост)
– прикладной уровень (application layer). (Уровень приложений)
Методы (POST, GET) передачи информации.
Метод GET.
Метод GET удобен тем, что прост в эксплуатации. Но у него есть недостатки. Во-первых, методом GET нельзя передавать большие объемы информации, потому что данные, передаваемые этим методом входят в состав URL, длина которого ограничена.
Пример: ссылка http://dayte2.com/?u=shaman&act=state&num=9 содержит данные, передаваемые методом GET. Эти данные идут после знака вопроса.
Так как данные, передаваемые методом GET входят в соства URL документа, их может подсмотреть любой желающий. У этого есть преимущества и недостатки. Преимущество состоит в том, что можно послать ссылку вместе с данными другу. Недостаток в том, что в строке браузера отображается и ваш, только что введенный пароль. Это одна из причин, почему данные, представляющие ценность, всегда нужно передавать методом POST.
Метод POST.
Как и метод GET, метод POST служит для передачи данных на сервер. Однако, данные, переданные таким образом, идут не в URL документа, а в теле запроса, после заголовков. Эти данные могут быть восприняты CGI-программой.
Когда данные отправляются методом POST, серверу приходит что-то вроде:
POST lines.pl HTTP/1.1
Accept: */*
Referer: http://dayte2.com/shaman.shtml
Accept-Language: ru
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: dayte2.com
Content-Length: 106
Connection: Keep-Alive
Cache-Control: no-cache
*Тут post данные*
После анализа заголовков, сервер видит пустую строку, которая говорит об окончании заголовков. После нее сервер видит какие-то непонятные данные. Недолго думая, сервер решает, что эти данные нужны файлу, который вызывается, и посылает эти данные документу. Если этот документ – скрипт, то он получит эти данные так же, как получает данные с клавиатуры при работе с консолью, то есть, через STDIN.
Плюсы метода POST очевидны: можно передавать неограниченные объемы информации, причем, никто не увидит эту информацию после того, как вы ее отправили (имеется ввиду, в строке браузера).
При таком подходе приходится несколько раз оптправлять данные от клиента серверу. Скажем, вы ввели логин и пароль. На следующей странице вас просят ввести адрес и номер телефона, а в полях hidden хранят ваши логин и пароль, полученные на предыдущей странице. При отправке формы заново будут отправлены и новые данные и старые (логин и пароль).
HEAD
Данный метод по своей сути похож на GET, но сервер отвечает на запрос одним лишь заголовком. (Отсюда и название метода.) Применяется, например, чтобы узнать, существует ли в сети тот или иной URL и не произошло ли каких-нибудь изменений.
PUT и PATCH
Как и POST, метод PUT тоже служит для передачи на сервер каких-то данных, но является, так сказать, менее продвинутым. В основном, применяется для обновления информации, когда не нужно закачивать и обрабатывать большие объемы данных. Иногда используется PATCH, метод с ещё более урезанными возможностями, работающий только с частью ресурса.
Форматы передачи данных
Двоичный (бинарный) файл – в широком смысле: последовательность произвольных байтов.
С физической точки зрения документ состоит из сущностей, из которых каждая может отсылать на другую сущность. Единственный корневой элемент – документная сущность. Содержание сущностей – символы.
Пользовательский формат
OK — успешный запрос
Unauthorized – для доступа к запрашиваемому ресурсу требуется аутентификация. В заголовке ответ должен содержать поле WWW-Authenticate с перечнем условий аутентификации. Клиент может повторить запрос, включив в заголовок сообщения поле Authorization с требуемыми для аутентификации данными.
Коды 5xx выделены под случаи неудачного выполнения операции по вине сервера. Для всех ситуаций, кроме использования метода HEAD, сервер должен включать в тело сообщения объяснение, которое клиент отобразит пользователю.
Лекция 2. Обмен данными между клиентом и сервером
Протокол передачи данных – набор соглашений интерфейса логического уровня, которые определяют обмен данными между различными программами. Эти соглашения задают единообразный способ передачи сообщений и обработки ошибок при взаимодействии программного обеспечения разнесённой в пространстве аппаратуры, соединённой тем или иным интерфейсом.