1. Как это устроено

В 23 томе “Библиотеки системного программиста”, который называется “Глобальные сети компьютеров. Практическое введение в Internet, E-Mail, FTP, WWW и HTML, программирование для Windows Sockets” мы описали основы технологий, которые широко используются в сети Internet. Если вы никогда раньше не работали в этой сети и не имеете о ней ни малейшего представления, указанный том может послужить для вас отправной точкой. В книге, которую вы сейчас читаете, есть все необходимое для создания сервера Web или размещения своей информации на сервере Web поставщика услуг Internet, поэтому предварительное знакомство с 23 томом “Библиотеки системного программиста” не обязательно, хотя и желательно.

Если же вы знакомы с технологиями Internet, то можете пропустить первую главу и сразу перейти ко второй, где мы рассказываем о создании статических документов HTML.

Что такое сеть Internet

Как вы, наверное, знаете, глобальная сеть Internet объединяет миллионы компьютеров, расположенные в разных странах по всему свету. Большинство таких компьютеров - это рабочие станции конечных пользователей, подключенные к сети Internet через модем и обычную телефонную линию. Другие компьютеры выполняют функцию серверов и служат хранилищами информации в сети. Серверы соединяют между собой, как правило, высокоскоростными и дорогостоящими каналами связи, например, каналами ISDN, оптоволоконными или спутниковыми каналами.

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

На рис. 1.1 мы воспроизвели схему основных компонент глобальной сети Internet, взяв ее из упомянутого выше 23 тома “Библиотеки системного программиста”.

Рис. 1.1. Основные компоненты глобальной сети Internet

Из этой схемы видно, что существуют различные возможности для подключения компьютеров к сети Internet.

Обычные “одиночные” пользователи подключаются к сети через модем. Пользователи локальной сети могут также подключаться к Internet через свои модемы, однако чаще такое подключение выполняется через сервер, расположенный в этой локальной сети. Сервер может быть подключен к Internet через модем, адаптер линии ISDN, оптоволоконную линию связи или спутниковую линию.

Заметим, что не существует никакого администратора сети Internet. Никакая организация не отвечает за работоспособность этой сети в целом, так как фактически сеть состоит из большого количества самостоятельных сетей, отдельных серверов и рабочих станций, принадлежащим различным фирмам и частным лицам. Тем не менее, сеть Internet работает, и достаточно надежно для того, чтобы ее можно было использовать в коммерческих целях.

Какова скорость передачи данных в сети Internet?

Разная. Здесь все зависит от пропускной способности и загруженности каналов связи, от производительности и загруженности серверов. Если вы приобрели современный модем со скоростью передачи данных 33600 бит/с, то совсем не обязательно, что вы будете получать информацию из сети Internet именно с этой скоростью. Некоторые серверы так загружены, что способны отдавать данные со скоростью не более 100-200 байт/с, и никакой даже самый дорогой модем тут не поможет. Однако в среднем может быть достигнута скорость 1-2 Кбайт/с, что вполне достаточно для многих приложений.

Серверы в сети Internet

Прежде чем мы перейдем к рассказу о серверах Web, сделаем краткий обзор основных типов серверов, подключенных к сети Internet.

В сети Internet имеются серверы, предоставляющие различные услуги. Это серверы FTP, Gopher, почтовые серверы (серверы e-mail), серверы новостей (серверы News), серверы WWW, которые часто называют также серверами Web.

Серверы FTP

Серверы FTP хранят большие объемы файлов, которые могут быть переписаны с дисков сервера через сеть Internet на локальные диски пользователей. При этом используется протокол передачи данных c названием FTP (File Transfer Protocol). Возможна также передача данных в обратном направлении - пользователи могут записать свои локальные файлы на диски сервера FTP. Однако из-за опасности распространения компьютерных вирусов последняя возможность используется редко.

Несмотря на то, что созданы достаточно удобные программы, предназначенные для работы с протоколом FTP, найти нужную вам информацию на серверах FTP бывает очень трудно. Как правило, в каждом каталоге такого сервера расположен список файлов с кратким описанием содержимого. Чтобы найти файл, вы должны последовательно переписывать к себе такие списки и просматривать их. Эта процедура может отнять немало времени, так как списки могут быть очень большими. К тому же, описание файлов может быть слишком кратким, чтобы по ним можно было сделать заключение о полезности файлов для вас.

Серверы Gopher

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

Попадая на сервер Gopher с помощью специально предназначенной для этого программы или универсальной программы, такой как Netscape Navigator или Microsoft Internet Explorer, вы попадаете в меню, отражающее содержимое разделов сервера Gopher. Выбирая строки такого меню, вы попадаете в меню следующего уровня или переходите в режим просмотра текстового документа. Документ может содержать гипертекстовые ссылки на другие документы, что упрощает навигацию.

Серверы Gopher хорошо подходят для хранения статей, коротких заметок, документации или другой аналогичной текстовой информации. Однако в настоящее время серверы Gopher почти вытеснены серверами WWW, которые имеют более широкие возможности. В частности, эти серверы могут хранить любые файлы (как серверы FTP) и текстовые документы (как серверы Gopher).

Почтовые серверы

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

С помощью специальных почтовых программ пользователи могут подготовить для отправки нужное количество писем, не подключаясь с серверу поставщика услуг Internet. Затем, когда все письма будут готовы, достаточно нажать кнопку и почтовая программа сама подключится к сети Internet, отправит ваши письма и автоматически получит адресованные вам почтовые сообщения. Затем почтовая программа отключится от сети Internet.

Помимо текста, электронное письмо может содержать дополнительные “вложения” в виде произвольных файлов. Таким образом, вы можете отправить, например, звуковое письмо, записав звуковое сообщение в файл и вложив этот файл в “конверт” электронного письма.

Серверы новостей

Серверы новостей представляют собой наиболее удобное и демократичное средство оперативного обмена самой разной информацией между всеми пользователями сети Internet.

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

Как происходит обмен информацией в конференции?

Подключившись к серверу новостей с помощью одной из программ, специально предназначенной для этого, вы можете получить полный список названий конференций. Названия отражают тему, которой посвящена конференция.

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

Если у вас есть что сообщить всему миру по теме конференции, вы легко можете послать в конференцию свою статью, программу или любую другую информацию. Вы можете адресовать свою статью всем или послать ее как ответ на другую статью, загруженную вами из конференции.

Заметим, что в некоторых конференциях происходит достаточно интенсивный обмен мнениями, поэтому посланные туда статьи хранятся всего несколько дней.

Серверы WWW

Больше всего серверы WWW напоминают серверы Gopher, так как они тоже хранят информацию в виде гипертекста с ссылками. Однако серверы WWW имеют намного больше возможностей, чем серверы Gopher.

Информация хранится на сервере WWW в виде страниц, на которых кроме текста могут находиться самые разные объекты. Это графические изображения, аудио- и видеоролики, формы для ввода данных, интерактивные приложения и так далее.

Страницы сервера WWW также содержат ссылки на другие страницы, оформленные либо как специальным образом выделенные текстовые строки, либо как графические объекты или органы управления. Страница может ссылаться на страницы, расположенные не только на том же самом сервере WWW, но и на любом другом сервере, подключенном к сети Internet. В том числе возможны ссылки на серверы FTP, Gopher и конференции сервера новостей, электронные почтовые адреса (для отправки сообщений в процессе просмотра страницы).

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

Более того, сервер WWW может решать любую задачу, принимая любые данные от удаленного пользователя, обрабатывая их и передавая обратно. Например, сервер WWW АО “ДиалогНаука” может принимать файлы пользователя и проверять их на отсутствие вирусов самыми свежими версиями программ Doctor Web и Aidstest.

На страницах сервера WWW организуются дискуссии в реальном времени, как текстовые, так и голосовые. Есть даже возможность проведения в реальном времени видеоконференций, хотя качество видеоизображения при этом оставляет желать лучшего. Словом, возможностей много, они ограничиваются только фантазией разработчиков страниц сервера WWW и, конечно, уровнем достижений современных технологий передачи и обработки данных.

Работа с сервером WWW достаточно прозрачна и не более сложна, чем работа с электронной справочной системой, встроенной в Microsoft Windows. В результате даже неподготовленный пользователь сможет успешно читать страницы сервера WWW, не испытывая при этом мучительной головной боли. Все это и привело к скачкообразному росту интереса к серверам WWW.

Как работает сервер WWW

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

Текстовые файлы страниц готовятся с использованием специального языка разметки гипертекста HTML (Hyper Text Markup Language). Этот язык будет предметом подробного изучения в нашей книге. Напомним также, что введение в язык HTML вы можете найти в 23 томе “Библиотеки системного программиста”, который называется “Глобальные сети компьютеров. Практическое введение в Internet, e-mail, FTP, WWW и HTML, программирование для Windows Sockets”.

Соединение с сервером WWW

Пользователь устанавливает соединение с сервером WWW через сеть Internet с помощью специальной программы просмотра страниц WWW. Среди наиболее известных программ просмотра страниц WWW можно выделить навигаторы Netscape Navigator и Microsoft Internet Explorer. В литературе такие программы часто называются браузерами, но мы будем избегать этого термина, образовавшегося в результате транслитерации слова browser.

При установке соединения пользователь указывает адрес сервера WWW. Дополнительно он может указать путь к файлу страницы WWW (адрес страницы WWW), которая должна быть отображена сразу после подключения к серверу. Об адресах страниц мы поговорим позже.

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

Полученная текстовая страница (составленная на языке HTML) интерпретируется навигатором и отображается в окне последнего. Затем соединение с сервером разрывается. Если на странице есть графические изображения, навигатор повторно устанавливает соединение с сервером, получая от него файлы графических изображений. При получении каждого такого файла соединение сначала устанавливается, а затем разрывается.

Упрощенно процесс взаимодействия навигатора и сервера WWW показан на рис. 1.2.

Рис. 1.2. Взаимодействие навигатора и сервера WWW

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

Статические и динамические документы HTML

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

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

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

Документы HTML, которые создаются описанным выше образом, называются динамическими документами. Сервер WWW, содержащий наряду со статическими динамические документы, часто называют активным. В нашей книге мы подробно рассмотрим создание активных серверов WWW с использованием программных расширений сервера WWW - приложений CGI и ISAPI (соответственно, в седьмой и восьмой главах).

Связь сервера WWW с СУБД

Приложения CGI и ISAPI позволяют организовать связь между документами HTML и системами управления базами данных (СУБД). В результате вы можете создавать формы, предназначенные для выполнения обращений к базам данных (запросов, обновлений и так далее).

Данные, полученные через запросную форму, предаются программному расширению CGI или ISAPI Это расширение может обратиться к СУБД через интерфейс ODBC или через интерфейс этой СУБД, а результат запроса оформить в виде документа HTML и вернуть удаленному пользователю.

Корпорация Microsoft также предлагает удобные средства, позволяющие организовать взаимодействие между сервером WWW и сервером СУБД без программирования. Возможно, мы рассмотрим эти средства в одной из наших следующих книг.

Органы управления ActiveX

Язык HTML, хотя и позволяет создавать достаточно красивые страницы, обладает ограниченными возможностями. В некоторых случаях требуется обрабатывать содержимое локальных файлов, отображать данные в графическом виде или выполнять другую нетривиальную работу. Создав орган управления ActiveX и расположив его на сервере WWW, вы можете сделать ссылку на этот орган в документе HTML. При этом окно органа управления появится в документе HTML, а содержимое окна будет полностью определяться самим органом управления ActiveX.

Что такое орган управления ActibeX?

Орган управления ActiveX является объектом OCX, реализующим некоторое подмножество технологии OLE и сделанном как библиотека DLL. Система разработки программ Microsoft Visual C++ версии 4.2 позволяет создавать заготовки для органов управления ActiveX автоматически. Вам достаточно наделить созданную заготовку теми возможностями, которые требуются для решения ваших специфических задач.

Внешне орган ActiveX выглядит как окно, размер которого задается в документе HTML. Содержимое этого окна определяется написанным вами программным кодом, поэтому в нем может быть изображено все что угодно.

Код ActiveX загружается из сервера WWW в адресное пространство уделенного компьютера и потому имеет доступ ко всем его ресурсам. Это позволяет организовать достаточно сложные алгоритмы обработки и отображения любых локальных данных, что невозможно при использовании одних только программных расширений CGI или ISAPI.

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

Для уменьшения угрозы корпорация Microsoft предусмотрела систему сертификации органов управления ActiveX. Когда пользователь попадает на страницу сервера WWW, содержащую ссылку на такой орган управления, ему на экран выдается изображение сертификата фирмы-разработчика. Если пользователь доверяет фирме и сертификату, он может согласиться на загрузку и запуск органа управления ActiveX, если нет - есть возможность отказаться от загрузки. Однако беспечные пользователи могут проигнорировать предупреждающее сообщение и стать жертвой злонамеренных разработчиков.

Тем не менее, органы управления ActiveX очень удобны для использования на серверах корпоративных сетей Intranet, не имеющих подключения к сети Internet. В этом случае угроза вирусного заражения от органа управления ActiveX невелика, так как все такие органы разработаны в корпорации и их использование может контролироваться администратором сервера.

В нашей книге мы не будем рассматривать создание органов управления ActiveX, так как этот материал заслуживает отдельной книги.

Языки программирования Java, JavaScript и VBScript

Язык программирования Java был разработан фирмой Sun как платформно-независимый интерпретируемый объектно-ориентированныя язык. Этот язык был разработан на основе языка программирования С++.

Вы можете создать программы Java и разместить ссылки на них в документах HTML. Такие программы являются подмножеством программ Java и называются аплетами (applets).

Программы Java, расположенные на сервере WWW, также как и органы управления ActiveX обладают большими возможностями по обработке и отображению данных, однако они более безопасны, так как не могут выполнять запись в локальные файлы. Кроме того, эти программы проще в разработке по сравнению с органами управления ActiveX и потому доступны более широкому кругу разработчиков.

Для создания программ Java вам нужны такие средства разработки, как Java Development Kit (JDK) от фирмы Sun, SDK-Java или Visual J++ от фирмы Microsoft.

Исходный текст программ, составленных на языке программирования JavaScript или VBScript вставляется непосредственно в документ HTML, поэтому для их разработки не нужны специальные средства (исключая, возможно, отладчик). Интерпретатор языка JavaScript и VBScript встроен непосредственно в навигатор Microsoft Internet Explorer (навигатор Netscape Navigator не работает с языком VBScript).

В дальнейшем мы планируем выпустить книгу, посвященную языкам программирования Java и JavaScript, получающими все большую популярность.