План лекции:

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

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

3. Клиентская и серверная стороны приложении

4. Взаимодействие процессов через сеть

5. Адресация процессов

6. Агенты пользователя

7. Службы, необходимые приложению

8. Службы протоколов транспортного уровня

9. Web и HTTP

9.1 .Обзор HTTP

9.2.Непостоянное соединение

9.3.Постоянные соединения

9.4.Формат НТТР-сообщения

9.5.Взаимодействие пользователя с сервером

9.6.Авторизация

9.7.Cookie

9.8.Метод GET

10. Резюме

11. Вопросы для самоконтроля

12. Тесты для самоконтроля знаний

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

Несмотря на разнообразие сетевых приложений и большое число их взаимодействующих компонентов, почти всегда программное обеспечение является «ядром» приложения. Программное обеспечение приложения распределяется между двумя или более оконечными системами (хостами). Так, например, web-приложения обычно состоят из двух взаимодействующих частей: браузера, находящегося на стороне пользователя, и программного обеспечения сервера. Аналогично приложение Telnet состоит из программы па локальном компьютере и программы на удаленном компьютере. Приложение, обеспечивающее проведение видеоконференций, состоит из множества программ, находящихся на всех участвующих в конференции хостах.

На языке операционных систем взаимодействие осуществляется не между программами, а между процессами. Процесс можно представить как программу, выполняющуюся на оконечной системе. Если процессы выполняются на одном и том же хосте, их взаимодействие обеспечивается операционной системой хоста и не связано с компьютерной сетью. Нас будет интересовать обмен данными между процессами, расположенными на разных оконечных системах (в общем случае использующих различные операционные системы). Такой обмен осуществляется с помощью сообщений, передаваемых через компьютерную сеть. Отправитель генерирует сообщение и посылает его в сеть, а адресат получает это сообщение, выполняет определенные действия и иногда отсылает ответное сообщение отправителю. Сетевые приложения строятся на основе протоколов прикладного уровня, которые регламентируют формат и порядок обмена сообщениями, а также процедуры, выполняемые при приеме или передаче сообщений. На рис. 3.1 приведена схема взаимодействия процессов с использованием прикладного уровня пятиуровневой коммуникационной модели.

НЕ нашли? Не то? Что вы ищете?

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

Необходимо различать понятия сетевых приложений и протоколов прикладного уровня. Протоколы прикладного уровня являются частью (хотя и весьма большой) сетевых приложений. Рассмотрим два примера. Web является сетевым приложением, позволяющим пользователям получать web-документы по запросу и состоящим из множества компонентов, включая стандарт формата документов (HTML), браузеры (Netscape Navigator, Microsoft Internet Explorer и др.), web-серверы (например, Apache, Microsoft или Netscape), протоколы прикладного уровня. Протокол прикладного уровня для web носит название протокола передачи гипертекста (HyperText Transfer Protocol, HTTP) и описывает формат и порядок обмена сообщениями между клиентом и сервером (RFC 2646). Таким образом, HTTP является лишь частью web-приложения.

В качестве второго примера рассмотрим приложение электронной почты. Элек­тронная почта Интернета также состоит из множества компонентов: почтовых серверов, содержащих почтовые ящики пользователей, программ для просмотра и создания электронных писем, стандартов, описывающих структуру электронных писем, протоколов прикладного уровня, регламентирующих порядок обмена со­общениями серверов между собой и с оконечными системами пользователей, а также интерпретацию полей, из которых состоят электронные письма. Основным протоколом прикладного уровня для электронной почты является протокол про­стой передачи сообщений (Simple Mail Transfer Protocol, SMTP). Как видим, SMTP (RFC 2821) — лишь часть (хотя и достаточно большая) структуры прило­жений электронной почты.

Рис. 3.1 Соединение между приложениями осуществляется на прикладном уровне коммуникационной модели

Как сказано выше, протоколы прикладного уровня определяют способ обмена со­общениями между двумя процессами, выполняющимися на разных оконечных системах. Обычно протокол определяет следующие элементы:

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

Некоторые из протоколов прикладного доступа (HTTP, SMTP и др.) являются официально документированными в RFC. Это означает, что если разработчик но­вого браузера будет следовать стандарту, то браузер сможет получать документы с любого web-сервера, построенного по этому же стандарту. Тем не менее, суще­ствует множество протоколов прикладного уровня, которые не стандартизирова­ны и при этом используются для поддержки коммерческих продуктов. В частно­сти, это характерно для Интернет-телефонии.

3. Клиентская и серверная стороны приложения

Как показано на рис. 3.2. сетевое приложение, как правило, состоит из двух «сто­рон»: клиентской и серверной. Клиентская и серверная стороны находятся на раз­ных оконечных системах и взаимодействуют путем обмена сообщениями. Так, web-браузер является клиентской стороной HTTP, в то время как программное обеспечение web-сервера представляет собой серверную сторону протокола. Роль клиентской и серверной сторон для SMTP играют соответственно передающий и принимающий почтовые серверы соответственно.

Рис. 3.2. Взаимодействие между клиентом и сервером

Во многих приложениях хост может играть роль, как клиента, так и сервера. Представим себе сеанс Telnet, установленный между хостами А и В (как вы помните, Telnet представляет собой когда-то популярное приложение для организации удаленного доступа). Если сеанс был инициирован хостом А, то хост А будет играть роль клиента, а хост В — роль сервера. Если же инициатором сеанса был хост В, то хосты А и В поменяются ролями. В качестве другого примера представьте себе обмен файлов между двумя хостами по протоколу FTP (File Transfer Protocol — протокол передачи файлов). Во время FTP-сеанса клиент и сервер могут неоднократно меняться местами, при этом клиентом считается та сторона, которая осуществляет прием файла. Тем не менее чаще всего пользуются следующим правилом: клиентом является хост, инициирующий обмен.

4. Взаимодействие процессов через сеть

Как было сказано выше, многие приложения состоят из двух «сторон», взаимодействующих друг с другом через компьютерную сеть. Взаимодействие осуществляется путем передачи и приема сообщений. Процесс осуществляет прием и передачу сообщений через свой сокет. Сокет можно сравнить с дверью: когда процессу необходимо произвести отправку сообщения, он «выталкивает» сообщение через «дверь», предполагая, что некто снаружи (службы более низких уровней) осуществит доставку сообщения до «двери» адресата. Затем сообщение попадает через «дверь» непосредственно приложению-адресату, которое осуществляет его обработку.

На рис. 3.3 изображено взаимодействие двух процессов через Интернет посредством сокетов (хотя в представленной ситуации используется протокол TCP, с тем же успехом это мог бы быть протокол UDP). Как можно видеть, сокет представляет собой интерфейс между прикладным и транспортным уровнями хоста. Сокет также часто называют прикладным программным интерфейсом (API), осуществляющим связь приложения и компьютерной сети. Под контролем разработчика приложения практически целиком находится часть сокета, относящаяся к прикладному уровню, чего нельзя сказать о его «транспортной» части. Здесь в компетенции разработчика лишь выбор протокола транспортного уровня и установка значений нескольких параметров транспортного уровня (максимальный размер буфера, максимальный размер сегмента и др.). Приложение всегда строится с использованием единственного транспортного протокола.

Рис. 3.3 Процессы приложения, сокеты и протоко транспортного уровня

5. Адресация процессов

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

□ имя или адрес хоста, которому принадлежит процесс;

□ идентификатор процесса внутри хоста.

Сначала рассмотрим адрес хоста. В Интернет-приложениях хосты идентифицируются с помощью IP-адресов. Пока нам достаточно знать, что IP-адрес представляет собой 32-разрядное двоичное число, уникальное для каждого хоста сети (говоря точнее, это число уникально для каждого интерфейса, с помощью которого осуществляется подключение хоста к сети). Проблема уникальности IP-адресов является очень важной, и в главе 4 мы подробно ее обсудим.

Идентификация процесса внутри хоста производится с помощью уникального для каждого процесса хоста номера порта. Популярные Интернет-протоколы прикладного уровня имеют стандартизированные (говорят: хорошо известные) значения номеров портов. Так, процесс, использующий протокол HTTP, получает порт номер 80, а процесс, использующий протокол SMTP, — порт номер 25. Хорошо известные номера портов можно найти в документе RFC 1700 (который в настоящее время является несколько устаревшим) и на сайте http://www. iana. org (RFC 3232).

6. Агенты пользователя

Перед тем как начать более детальное изучение протоколов прикладного уровня, было бы целесообразно ознакомиться с понятием агента пользователя. Агентом пользователя называется интерфейс между пользователем и сетевым приложением. Представим себе web. Для web роль агента пользователя играет браузер, например Netscape Navigator или Microsoft Internet Explorer. Браузеры позволяют пользователям просматривать содержимое web-страниц, осуществлять навигацию в web, заполнять формы, взаимодействовать с Java-апплетами и т. д. Кроме того, браузер является клиентской частью протокола HTTP. Таким образом, браузер — это процесс, осуществляющий обмен сообщениями через сокет и одновременно предоставляющий пользовательский интерфейс. В качестве другого примера возьмем приложение электронной почты. Здесь роль агента пользователя играет программа чтения почты, позволяющая обрабатывать электронные письма. Современные программы (Microsoft Outlook, Eudora, AOL, Netscape Communicator) обладают развитым графическим интерфейсом. Как мы увидим в разделе «Электронная почта» этой главы, перечисленные программы зачастую используют как минимум два разных протокола прикладного уровня: SMTP — для отправки электронных писем и РОРЗ или IMAP — для их доставки.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76