Введение

"Закоренелый циник определил бы Интернет как средство имитировать полезную деятельность и одурачивать обладателей модемов красивыми картинками."

Виктор Стоун,
менеджер по разработкам
Microsoft Corporation

Немного истории

Все это началось в 1969 г., когда Пентагон создал агентство ARPA (Advanced Research Projects Agency) и поручил ему разработку нецентрализованной компьютерной сети, которая должна функционировать даже тогда, когда многие ее части будут отключены или разрушены в результате применения ядерного оружия. Проект был назван ARPANet (ARPA Network). Для решения поставленной задачи был разработан новый сетевой протокол IP (Internet Protocol), который определял, как электронные сообщения упаковываются, адресуются и передаются по сети. Окончательный стандарт был сформулирован в 1981 г. под названием TCP/IP (Transmission Control Protocol over Internet Protocol). Он позволил пользователям подключать различные службы их сетей к ARPAnet, которая вскоре получила название Интернет (INTERNET = INTER-connected group of NETworks) или просто Сеть (с большой буквы, в отличие от всех остальных сетей). В 70-е и 80-е годы ARPANet продолжала расти; кроме того, она стала высокоскоростной сетью за счет подключения к ней нескольких мощных суперкомпьютеров.

В это же время компьютерными сетями начали пользоваться ученые и исследователи различных специальностей, и, в конце концов, Национальный научный фонд США (NSF, National Science Foundation) перенял технологию TCP/IP у ARPANet и создал собственную распределенную сеть сетей NSFNet, способную обрабатывать гораздо большие объемы данных. В 1985 г. NSF открыл доступ к NSFNet всем образовательным организациям, академическим институтам, правительственным учреждениям и международным научно-исследовательским организациям. В 1989 г. проект ARPANet был закрыт Пентагоном из-за отсутствия средств и поддержки со стороны военных.

В 1987 г. к Интернету присоединился Европейский центр ядерных исследований (CERN, Conseil Europeen pour la Recherche Nucleaire) в Женеве. Этот факт не имел бы никакого значения для истории Сети, если бы там не работал Тим Бернерс-Ли (Tim Berners-Lee). В 1989 г. он и несколько его коллег разработали систему распределенных гипертекстовых документов, которой суждено было стать следующим этапом в развитии Интернета. Их усилиями были созданы протокол передачи гипертекстов HTTP, язык HTML и концепция Всемирной паутины (World Wide Web, WWW). Наконец, в 1993 г. Марк Андрисен (Marc Andreessen) и Эрик Бина (Eric Bina) из NCSA (The National Center for Supercomputing Applications) в Иллинойсе, США написали первый коммерческий Веб-обозреватель Mosaic, который и вызвал взрыв интереса к WWW.

Последующее развитие WWW проходило под знаком "войны обозревателей" за рынок. Эта война началась в 1994 г. с того, что команда разработчиков Mosaic перешла в корпорацию Netscape Communications и создала Netscape Navigator, надолго определивший облик стандартного Веб-обозревателя. Вскоре корпорация Microsoft оценила размер потенциального рынка пользователей Веб и вышла на него с собственным продуктом Internet Explorer. С тех пор и по сей день эта "сладкая парочка" (получившая в американском народе прозвище Microscape) борется за сердца и деньги пользователей всего мира.

В 90-е годы Интернет разрастается невероятными темпами, причем львиная доля его мощностей используется двумя подсистемами: World Wide Web и электронной почтой. По оценкам специалистов1, количество компьютеров, подключенных к Интернету, ежегодно удваивалось. В марте 2000 г. к Интернету было подключено более 300 миллионов пользователей более чем в 100 странах мира.

Веб глазами программиста

Итак, Интернет — это распределенная компьютерная сеть, объединяющая громадное количество отдельных сетей посредством единого межсетевого протокола TCP/IP. При этом пользователь "видит" только свой персональный компьютер (клиент) и сервер той сети, к которой он подключен — либо как рабочая станция локальной сети, либо посредством модема и телефонного канала. Доступ его сервера к остальным Интернет-серверам обеспечивается автоматической маршрутизацией через специальные устройства (т. н. рутеры). К счастью, для успешной разработки Веб-страниц нам нет нужды ни вникать в этот процесс, ни изучать протокол TCP/IP.

Общая архитектура Интернета

WWW, как подсистема Интернета, также основывается на архитектуре клиент-сервер. Отличие состоит в том, что и на сервере, и на клиенте должно быть установлено дополнительное программное обеспечение — Веб-сервер и Веб-обозреватель соответственно. Это программное обеспечение поддерживает стандартный протокол передачи гипертекстов (HTTP), а также ряд других протоколов, в частности, протокол передачи файлов (FTP). Архитектура клиент-сервер означает, что взаимодействие пользовательского компьютера с Интернетом происходит так:

  • пользователь вводит адрес (URI) Веб-документа, который он хочет просмотреть;
  • Веб-обозреватель формирует соответствующий запрос к Веб-серверу;
  • Веб-сервер находит в Сети запрошенный документ и передает его обозревателю в качестве отклика на запрос;
  • обозреватель интерпретирует полученный документ и отображает его пользователю.
Архитектура World Wide Web

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

  1. На каком сервере разместить разработанные нами документы?
  2. В каких обозревателях они будут просматриваться?

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

Немного статистики

Из сказанного ясно, что нас должны волновать два вопроса:

  • Какой Веб-сервер установлен на нашем сервере и под какой операционной системой он работает?
  • Какими обозревателями пользуются наши потенциальные пользователи и в каких операционных системах они работают?

Для того, чтобы ответить на эти вопросы, обратимся к статистическим данным2.

Интернет-серверы

Из диаграммы справа видно, что практически все серверы, подключенные к Интернету, работают под управлением всего двух семейств операционных систем. Это:
  • Unix-системы, включая Linux, BSD/OS Family, Solaris/SunOS и пр. (74% серверов);
  • Microsoft Windows NT Server (24% серверов).

Для нашего изложения не имеют особого значения различия между системами семейства Unix, поэтому в дальнейшем мы можем ограничиться рассмотрением двух операционных систем: Unix и Windows NT.

Операционные системы серверов
Что касается Веб-серверов, работающих на этих Интернет-серверах, то, как показывает следующая диаграмма, абсолютное большинство составляют Веб-серверы Apache (62%), за которыми следуют Microsoft Internet Information Server (21%) и Netscape-Enterprise (7%). Доля остальных Веб-серверов (Zeus, Rapidsite, thttpd и пр.) не превышает в сумме 10%. Сопоставив две приведенные диаграммы, можно внести уточнение. Практически каждый Интернет-сервер — это:
  • либо Unix-система с Веб-сервером Apache (около 70% серверов),
  • либо Windows NT с Веб-сервером IIS (около 20% серверов).
Веб-серверы

Компьютеры-клиенты

Если среди серверов пальму первенства уверенно держит Unix, то среди пользовательских рабочих станций Microsoft берет столь же уверенный реванш. Из диаграммы справа видно, что Microsoft Windows разных версий работает на 94% рабочих станций! Остальные 6% приходятся на долю Macintosh, WebTV и Windows 3.x. При этом рынок Windows 98 непрерывно растет за счет Windows 95, так что к тому моменту, когда вы будете читать этот текст, большая часть персональных компьютеров, подключенных к Интернету, будет работать под управлением Windows 98. Операционные системы клиентов
И, наконец, рассмотрим состояние рынка Веб-обозревателей. 2000 год, по всей видимости, будет решающим в битве между Microsoft и Netscape. С каждым месяцем ряды поклонников обозревателей Netscape Navigator редеют. В мае 2000 г. доля Microsoft Internet Explorer всех версий составила 71%, Netscape Navigator всех версий — 26%, прочих обозревателей (WebTV, Opera и пр.) — 3%. Судя по всему, ситуация не изменится и с появлением Netscape 6, и уже к концу 2000 г. абсолютным лидером будет Internet Explorer 5.x. О причинах этого мы поговорим позже. Веб-обозреватели

Выводы

Теперь мы можем ответить на поставленные выше вопросы.

  1. При создании своих Веб-страниц мы можем быть уверены в том, что практически все, кто будет к ним обращаться, сидят за компьютерами, работающими под управлением Microsoft Windows 95/98/NT. Это означает, что нам доступны все штатные ресурсы этих операционных систем, и наши HTML-документы могут запускать Java-аплеты и вызывать сценарии, которые будут пользоваться этими ресурсами.
  2. Сложнее ситуация с обозревателем, в котором отображаются созданные нами страницы. В большинстве случаев это будет Microsoft Internet Explorer 4.x или 5.x, но четверть наших потенциальных клиентов использует Netscape Navigator 4.x. Это приводит к определенным проблемам, т. к. даже статические HTML-документы эти обозреватели отображают немного по-разному. Если же мы включаем в наши документы динамически изменяемые элементы, то попадаем в зону полной несовместимости. По ряду причин, подробно изложенных в Части IV, а также исходя из приведенной статистики, при разработке динамических страниц следует ориентироваться на Internet Explorer 4.x/5.x, а в остальных обозревателях можно отображать статическую версию той же страницы, написанную на "минимальном" варианте языка HTML.
  3. Если, наконец, нашим Веб-страницам необходимо обращаться с какими-либо запросами к серверу, то следует исходить из следующего. На абсолютном большинстве серверов работает Веб-сервер Apache под управлением одного из вариантов операционной системы Unix. Однако, часть серверов, особенно обслуживающих интрасети, пользуется Microsoft IIS под управлением Microsoft Windows NT. Поэтому при написании серверных сценариев мы рекомендуем:
    • для Apache писать сценарии на языке PERL в соответствии с интерфейсом CGI (на большинстве Unix-серверов установлены интепретаторы PERL'а);
    • для Microsoft IIS писать сценарии на языке JavaScript и пользоваться технологией Active Server Pages (они встроены в службы Internet Information Server).

    Разумеется, прежде всего вы должны убедиться, что необходимые вам программные средства установлены на вашем сервере и получить от администратора сети полномочия, необходимые для их использования.

Инструментарий

Все приведенные в данном справочнике примеры HTML- и DHTML-документов, включая каскадные таблицы стилей, JavaScript-сценарии и VML-графику, проверялись на компьютере с процессором Pentium/MMX-233, работающем под управлением Microsoft Windows 98, в обозревателях Microsoft Internet Explorer 5.5, Netscape Navigator 4.7 и Mozilla/5.0 (M18). Для отладки сценариев использовался Microsoft Script Debugger 1.0.

Для создания и отладки Java-аплетов автор пользовался Microsoft SDK for Java 4.0 и виртуальной Java-машиной Microsoft Java VM Build 3240. Сценарии на языке PERL отлаживались и проверялись с помощью ActivePerl 5.6.0.613 for Windows, программы на языке VRML — с помощью PLATINUM World View 2.1 for Internet Explorer. Верификация XML-документов проводилась в Microsoft XML Notepad Beta 1.5, их отображение проверялось в обозревателе Microsoft Internet Explorer 5.5. Считаем важным подчеркнуть, что все перечисленные программные средства можно загрузить с соответствующих Веб-узлов бесплатно.


1 Статистические данные взяты из Internet Industry Almanac Внешняя ссылка.

2 Все данные приведены по состоянию на март-апрель 2000 г. Более свежую информацию см. на узлах: The Internet Operating System Counter Внешняя ссылка, Netcraft Web Server Survey Внешняя ссылка, StatMarket Внешняя ссылка.