Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых
[Назад] [Содержание] [Дальше]

Создание Web-приложений: Практическое руководство

© Александр Фролов, Григорий Фролов
М.: Русская Редакция, 2001, 1040 стр.

1. Основные понятия и определения

1. Основные понятия и определения.. 1

Краткий курс истории компьютерных систем... 2

Мэйнфреймы и пакетный режим обработки данных. 2

Интерактивная обработка данных. 3

Персональный компьютер. 4

Локальные сети компьютеров. 5

Глобальные сети компьютеров и Интернет.. 6

Устройство Интернета.. 10

Узлы и каналы Интернета. 10

Поставщики услуг Интернета. 15

Управление Интернетом.. 17

Стандарты Интернета. 19

Протокол TCP/IP. 21

Название протокола TCP/IP.. 21

Адреса в сети TCP/IP.. 22

Классы сетей. 23

Запись адреса IP. 23

Маска подсети. 24

Порты TCP/IP.. 24

Маршрутизаторы в сети TCP/IP.. 25

Доменные имена узлов. 26

Утилиты для работы с TCP/IP. 28

Утилита PING.. 28

Трассировка пакетов утилитой TRACERT. 30

Утилита NETSTAT. 31

Утилита ROUTE.. 32

Основы работы сервера Web.. 32

Первые попытки систематизации информации. 33

Преимущества серверов Web. 34

Адреса страниц Web. 35

Универсальный идентификатор ресурсов URL. 35

Ссылки на страницах Web. 36

Протокол HTTP.. 37

Статические и динамические страницы.. 38

Серверы Web и базы данных. 38

Активность браузера.. 39

Сценарии JavaScript и VB Script 39

Аплеты Java. 40

Элементы управления ActiveX.. 40

Активные каналы.. 40

Пассивные и активные серверы Web.. 41

Приложения Web. 42

Программы CGI 42

Приложения ISAPI 43

Расширения ISAPI 43

Фильтры ISAPI 43

Приложения ASP.. 44

Приложения PHP.. 44

Активность на стороне клиента.. 44

Клиентские сценарии JavaScript 45

Клиентские сценарии VB Script 45

Аплеты Java. 45

Элементы управления ActiveX.. 46

Проблемы с реализацией клиентской активности.. 46

Интеграция серверов Web и SQL Server.. 47

Программный интерфейс DB Library. 47

Программный интерфейс ODBC.. 47

Объектный интерфейс Remote Data Object 47

Объектный интерфейс OLE DB.. 48

Объектный интерфейс ActiveX Data Objects. 48

 

 

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

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

Краткий курс истории компьютерных систем

Прежде чем мы начнем рассказ о приложениях Web, вспомним историю развития современных технологий компьютерной обработки данных, а также расскажем, как работают обычные программы. При этом мы рассмотрим различные режимы работы программ — однозадачный, многозадачный, однопользовательский и многопользовательский. Все эти понятия актуальны и сегодня, особенно для разработки Web-приложений.

Мэйнфреймы и пакетный режим обработки данных

Возможно, некоторые из Вас еще помнят курсовые и дипломы, выполненные в институте на «больших» компьютерах (мэйнфреймах) серий IBM 360/370 или на их отечественных аналогах серии ЕС. Такие компьютеры занимали одну или несколько комнат, а для их обслуживания требовался целый штат квалифицированных технических специалистов.

Первые программы для мэйнфреймов работали в пакетном режиме (рис. 1-1), когда они запускались по очереди.

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

 

Рис. 1-1. Обработка данных в пакетном режиме

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

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

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

Интерактивная обработка данных

Немного позже появились интерактивные системы, в которых ресурсы компьютера распределялись между несколькими пользователями, для чего в системе были предусмотрены простейшие неинтеллектуальные терминалы (рис. 1-2).

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

Рис. 1-2. Обработка данных в интерактивном режиме

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

Интерактивные системы работали в многопользовательском и многозадачном режиме.

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

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

Персональный компьютер

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

Известны несколько версий этой операционной системы, такие как PC-DOS и MS-DOS. Есть даже отечественная разработка — PTC DOS. Несмотря на свой более чем солидный возраст, в нашей стране до сих пор используется MS-DOS и ее разновидности.

Практически одновременно были предприняты усилия по созданию для персонального компьютера версий многопользовательских многозадачных операционных систем, применявшихся ранее на мэйнфреймах. В первую очередь это была, конечно, операционная система Unix. Несмотря на то, что ресурсы компьютеров с процессорами Intel 80386 по сегодняшним представлениям были просто ничтожны, на их базе удавалось создавать успешно работающие вычислительные системы, подобные показанной на рис. 1-2.

Развивались и однопользовательские операционные системы. В первую очередь заслуживают упоминания операционные системы IBM OS/2 и Microsoft Windows. Но если IBM OS/2 была настоящей мультизадачной операционной системой, то Microsoft Windows первых версий представляла собой ни что иное, как надстройку над MS-DOS, снабжавшую пользователя графическим интерфейсом для запуска программ, выполнения операций с файлами и печати.

Тем не менее, несмотря на неустойчивость своей работы, Microsoft Windows оказалась намного популярнее у пользователей, чем стабильная IBM OS/2. Возможно, тут возымело действие то обстоятельство, что Microsoft Windows работала заметно быстрее, чем IBM OS/2. Ну а с некоторой нестабильностью в функционировании приложений Microsoft Windows большинство пользователей согласилоись смириться.

Сегодня современные версии Microsoft Windows, такие как Microsoft Windows NT, Microsoft, Windows NT Terminal Server и Microsoft Windows 2000, стали заслуженными фаворитами. Они стали работать весьма стабильно (особенно на сертифицированном компьютерном оборудовании и с проверенными драйверами периферийных устройств), и превратились не только в истинно мультизадачные, но и многопользовательские системы. Последнее утверждение справедливо, однако, только для операционных систем Windows NT 4.0 Terminal Server и Microsoft Windows 2000 Server.

Не потеряла популярности и операционная система Unix, особенно ее бесплатный клон Linux. Более того, различные версии Unix и Linux вместе с Microsoft Windows на сегодняшний день широко применяются в Интернете.

Операционная система Linux

В начале 90-х годов Linus Torvalds разработал операционную систему Linux. В этом ему помогали программисты из разных стран мира. Linux представляет собой версию операционной системы Unix, созданную в университетскими специалистами «на общественных началах».

Одной из важнейших особенностей этой ОС является то, что она распространяется бесплатно по открытой лицензии GNU (http://www.linux.org/info/gnu.html) в рамках Фонда бесплатного программного обеспечения (Free Software Founation). Лицензия GNU в том числе разрешает бесплатное распространение ПО при условии, что вместе с загрузочными модулями программ поставляются и их исходные тексты. Коммерческое использование ПО при этом сильно ограничено.

Как расшифровать аббревиатуру GNU?

Как сказано на странице Web, посвященной проекту GNU (http://www.gnu.org/gnu/the-gnu-project.html), эта аббревиатура была образована в лучших хакерских традициях как рекурсивное сокращение от «GNU's Not Unix» (что означает «GNU — это не Unix»). Вероятно, этим подчеркивается, что создание и распространение бесплатного ПО вместе с исходными текстами не является прерогативой программистов, создающих свои проекты только в среде операционной системы Unix.В настоящее время за разработку ядра операционной системы отвечает Linus Torvalds, поэтому эта работа выполняется централизованно. Что же касается системных и пользовательских программ, то над ними работает бесчисленное количество программистов — любителей и профессионалов.

Локальные сети компьютеров

Как только персональные компьютеры получили распространение, их стали объединять в локальные сети (рис. 1-3). Расположенные в пределах одной комнаты или одного здания, локальные сети позволяют распределять дорогостоящие ресурсы, такие как принтеры и дисковая память, между несколькими пользователями.

Рис. 1-3. Объединение персональных компьютеров в локальную сеть

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

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

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

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

Глобальные сети компьютеров и Интернет

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

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

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

История Интернета насчитывает более 35 лет. Учитывая, сколь стремительные изменения произошли и происходят в области компьютерных технологий за это время, это значительный возраст.

Датой образования прототипа современной Сети можно считать 1966 год. Именно тогда американское Агентство перспективных исследовательских проектов Министерства обороны США (Defense Advanced Research Project Agency, DARPA), созданное немного раньше, в 1957 году, после запуска первого советского спутника, начало разработку глобальной компьютерной сети ARPANET (получившей название от Advanced Research Project Agency). Целью этого проекта было создание сети, способной надежно функционировать в случае ядерного конфликта. Предполагалось, что эта сеть соединит ведущие американские научно-исследовательские организации, а в случае войны будет использоваться для управления войсками.

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

В результате исследований в 1969 году была создана сеть, охватывающая четыре научно-исследовательских центра, — именно на ее основе, как считается, в дальнейшем и развивалась сеть, названная впоследствии Интернетом. Для передачи данных в этой сети использовалась технология коммутации пакетов, когда данные передавались небольшими порциями. Потеря отдельных пакетов при этом не сказывалась на процессе передачи данных в целом.

Следующая дата, о которой нельзя не упомянуть при рассказе об истории Интернета, — 1974 год — год создания протокола передачи данных TCP/IP, который с успехом используется в Интернете до сих пор. Этот протокол позволяет динамически изменять конфигурацию сети при повреждении ее отдельных фрагментов. Его применение позволяет передавать большие объемы данных по ненадежным каналам глобальной сети. Главные разработчики протокола — Vint Cerf и Bob Kahn. В 1974 году они опубликовали статью «A Protocol for Packet Network Interconnection», в которой описали программу Transmission Control Program (TCP).

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

В 1976 году специалисты лаборатории AT&T Bell Labs (http://www.bell-labs.com) компании Lucent Technologies  разработали программу копирования данных между компьютерами — UUCP (Unix-to-Unix CoPy). В 1997 году она вошла в состав операционной системы UNIX и до сих пор широко используется для передачи данных (в частности, посредством электронной почты).

В 1982 году возник термин «Internet», обозначающий объединение компьютерных сетей по протоколу TCP/IP. Таким образом, этот год можно считать датой рождения Интернета, каким мы его знаем сегодня, хотя нужно принять во внимание, что составляющие его сети и технологии были разработаны раньше. Сегодня Интернет объединяет огромное количество различных сетей.

Следующие несколько лет продолжалось бурное развитие новых компьютерных сетей и их слияние. В 1988 году в качестве базового для сетей был рекомендован протокол TCP/IP, который стал стандартом в новой объединенной сети NSFNET. Эта сеть была создана в рамках инициатив американского Национального научного фонда (National Science Foundation) и получила свое имя по названию этого фонда (более подробную информацию о проектах фонда, истории создания сети NSFNET и статистические данные об ее использовании Вы найдете на странице http://www.merit.edu/merit/archive/nsfnet/final.report/intro.html).

В начале 90-х общее количество центров сети NSFNET исчислялось несколькими тысячами, а пропускная способность каналов многократно возрасла.

Еще одна знаменательная дата в истории Интернета — 1991 год. Именно тогда был обнародован проект «всемирной паутины» World Wide Web (WWW), который разработал Tim Berners-Lee — сотрудник Европейской лаборатории физики элементарных частиц (Conseil Européen pour la Recherche Nucléaire, CERN).

Европейская лаборатория физики элементарных частиц (CERN)

Conseil Européen pour la Recherche Nucléaire (CERN) была создана в 1951 году как совет ученых. В 1953 году совет CERN принял решение о создании центральной лаборатории недалеко от Женевы. Официальное название лаборатории — European Organization for Nuclear Research, однако, до сих пор используется французская аббревиатура — CERN. Это связано с тем, что слово Conseil, образующее первую букву аббревиатуры CERN, означает «совет», что наиболее точно отражает сущность данной организации.

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

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

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

Более подробную информацию о лаборатории CERN Вы найдете на сервере http://cern.web.cern.ch.

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

В 1991 году сотрудники CERN создали программу, позволяющую просматривать информацию, размещенную на узлах Web. Эта программа получила название браузер (browser). На рис. 1-4 мы показали внешний вид окна современного браузера Microsoft Internet Explorer версии 5.0.

В начале 1993 года в мире насчитывалось около 50 Web-узлов, однако, к концу 1993 года их количество возросло до 500. 1994 год можно считать «годом Web»: тогда сотрудниками CERN была проведена самая первая международная конференция WWW.

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

Хотя все основные события, связанные с развитием Интернета, происходили за океаном, некоторые передовые организации в России обратили свое внимание на сеть и начали ее освоение. Одна из них — Российский научный центр «Курчатовский Институт» (http://www.kiae.ru, рис. 1-4), занимающийся фундаментальными исследованиями в области ядерной физики. Эти организации создавали в Интернете свои серверы Web, серверы электронной почты и другие службы, подключали к Интернету сети российских организаций и отдельных пользователей.

Рис. 1-4. Узел Web Российского научного центра «Курчатовский Институт»

Одной из первой российских сетей, подключенных к Интернету, стала Relcom (Релком). Название ее происходит от слов Reliable Communications, то есть «надежные коммуникации».

Она была создана в августе 1990 года на базе сети Курчатовского института. В работах по созданию сети принимали участие специалисты кооператива «Демос» (сейчас это ООО «Компания Демос», ее узел Web показан на рис. 1-5) — в большинстве своем сотрудники Курчатовского института. Уже к концу года их стараниями к Интернету было подключено около 30 организаций, в том числе центры российской науки в Серпухове, Санкт-Петербурге, Новосибирске и Дубне.

Рис. 1-5. Узел Web компании «Демос»

В 1991 году в Релкоме появился первый сервер новостей (электронных конференций). И именно в этом году компьютерная сеть Релком объединила многие крупные города России — Екатеринбург, Барнаул и др., а также некоторых других стран СНГ и стран Балтии.

К 1994 году в этой сети насчитывалось несколько сотен узлов и стони тысяч пользователей.

Устройство Интернета

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

Узлы и каналы Интернета

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

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

Серверы Web и FTP (сервер FTP предназначен для обмена файлами) часто называют сайтами (sites) или узлами Web. Этот термин появился в результате транслитерации распространенных английских терминов «Web site» и «FTP site». В большинстве случаев, однако, термин «сайт» используется как синоним термина «сервер Web».

Вы также встретитесь с такими названиями, как страница сервера Web (Web page) или домашняя страница Web (Web Home page). Страница сервера Web или просто страница Web — это один из документов, хранящихся на сервере Web. Домашняя или персональная страница Web обычно содержит личную информацию о своем создателе, его интересах, работе и т. д. Страница сервера Web имеет свой собственный адрес, образующийся из адреса сервера Web, на котором она расположена, и пути к файлу страницы. Подробнее об адресах серверов Web и страниц мы расскажем позже.

На рис. 1-6 мы показали несколько узлов Интернета, соединенных между собой различными каналами связи.

Рис. 1-6. Соединение узлов Интернета: а) локальные сети, соединенные между собой посредством спутниковых каналов и телефонных линий; б) отдельный компьютер, подключенный посредством спутникового канала связи; в) отдельный компьютер, подключенный посредством телефонной линии

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

Через спутниковые каналы связи можно подключать и отдельные компьютеры (рис. 1-6б), однако это очень дорогое удовольствие.

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

Отдельные компьютеры можно подключить к Интернету и через спутниковые линии связи. При этом обычно применяют специальные модемы. Хотя таким образом обеспечивается рекордная скорость обмена данными с другими узлами Интернета, непомерно высокая стоимость этого способа заметно сужает область его применения.

Как мы уже рассказывали во введении к нашей книге, возможен относительно недорогой вариант использования асимметричного спутникового доступа, при котором данные из Интернета в компьютер поступают через скоростной спутниковый канал связи, а в обратном направлении — через обычную телефонную линию с применением модема. Таким способом можно подключать как отдельные компьютеры, так и локальные сети.

Рис. 1-7. Асимметричный спутниковый доступ в Интернет

Пропускная способность спутниковых линий связи исчисляется десятками Мбит в секунду, в то время как телефонные линии обычно пропускают поток данных со скоростью не более 512 Кбит/с.

Конечно, чем больше пропускная способность канала связи, тем быстрее будут передаваться данные, однако из-за высокой стоимости спутниковых каналов их применяют только крупные компании, специализирующиеся, например, на предоставлении доступа в Интернет. Такие компании называются поставщиками услуг Интернет (Internet Service Providers, ISP) или провайдерами (providers).

Единицы измерения информации

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

Как известно, объем информации исчисляется в битах (bit). Бит может иметь только два значения — 1 или 0. Для представления символьной информации (например, букв и цифр) используется более крупная единица измерения — 1 байт (byte), содержащая 8 бит.

Если речь идет о количестве информации (число символов в тексте, размер файла), то наряду с байтом используют производные единицы, такие, как килобайт — кбайт (Kbyte), мегабайт — Мбайт (MByte), гигабайт — Гбайт (Gbyte) и терабайтTбайт (TByte).

Считается, что 1 Кбайт = 1 024 байт, а не 1 000, как это можно было бы подумать. Соответственно, 1 Мбайт = 1 024 кбайт, 1 Гбайт = 1 024 Мбайт, а 1 Тбайт = 1 024 Мбайт. Выбор числа 1 024 вместо 1 000 связан с широким использованием в вычислительной технике двоичных и шестнадцатеричных чисел (известная шутка: начинающий программиста думает, что в одном килобайте 1 000 байт, а опытный — что в одном километре 1 024 метра).

Заметим, что некоторые производители жестких дисков считают, что в 1 Мбайте содержится 1 000 000, а не 1 048 576 байт. Это позволяет им «добавлять» 48 576 байт на каждый Мбайт емкости диска. Пользователь, однако, не получит от этого никакого выигрыша, так как производители программного обеспечения, заявляя о требованиях программ к памяти, имеют в виду «полновесные», а не «облегченные» мегабайты.

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

Дешевле всего обходятся обычные телефонные линии, проложенные практически везде. Основной их недостаток — низкая максимальная скорость передачи данных, обычно не превышающая 28 800—33 600 бит/с. Применяя специальное дорогостоящее оборудование и современные технологии передачи данных, эту скорость можно увеличить.

Скорость передачи данных

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

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

Например, во многих случаях данные передаются последовательно, бит за битом. Так, например, работает модем, с помощью которого Вы будете, скорее всего, подключаться к Интернету. При этом на каждые 8 бит «полезной» информации приходится передавать 2 бита служебной информации.

Когда говорят про такую единицу измерения скорости передачи данных, как биты в секунду — бит/с (Bits Per Second, bps), то имеют в виду скорость с учетом всех передаваемых битов данных, как полезной, так и служебной информации.

Единица измерения скорости символы в секунду (Characters Per Second, cps) подразумевает измерение скорости передачи только полезной информации. Таким образом, для одного и того же канала, скорость, указанная в cps, будет меньше, скорости, указанной в bps, умноженной на 8 (так как для передачи 1 байта нужно дополнительно передавать биты служебной информации). Кроме того, при вычислении скорости в cps учитывается возможная упаковка информации, выполняемая модемами. Она исключает передачу избыточной информации.

Известна и еще одна единица измерения скорости передачи данных — боды (baud). Эта число изменений сигнала, передаваемого модемом, за одну секунду, оно зависит от технических особенностей модема. Обычно скорость, выраженная в бодах, превосходит скорость, выраженную в бит/с.

Например, цифровые сети с интегрированными услугами (Integrated Services Digital Network, ISDN) позволяют передавать информацию по обычным кабельным линиям со скоростью до 512 Кбит/с и даже до 1 920 Кбит/с. Свое название сети ISDN получили благодаря тому, что наряду с компьютерными данными позволяют передавать голосовые сообщения.

Еще большие скорости можно получить при передаче данных по цифровым абонентским линиям (Digital Subscriber Line, DSL) и ее аналогам типа асимметричных цифровых абонентских линий (Asymmetric Digital Subscriber Line, ADSL), цифровых линий с переменной скоростью (Rate Adaptive DSL, RADSL) и сверхбыстрых цифровых абонентских линий (Very high-speed DSL, VDSL). Эти технологии позволяют передавать информацию по обычным медным проводам со скоростью нескольких Мбит/с.

Однако наибольшей пропускной способностью обладают оптоволоконные линии — до нескольких Тбит/с. Работа таких линий основана на передаче света, излучаемого полупроводниковыми лазерами относительно небольшой мощности.

Единственный, но существенный недостаток оптоволоконных линий — высокая стоимость оборудования и монтажа. Заметим, что сейчас практикуется подключение новых жилых домов к Интернету при помощи оптоволоконного кабеля. Так как прокладка кабеля выполняется сразу при строительстве дома, новоселы получают быстрый и относительно недорогой канал связи, применяемый, в том числе, и для соединения с Интернетом.

Часто жители создают домашние локальные сети, подключенные к Интернету, своими силами. Жители Москвы могут найти такие сети в своем районе при помощи каталога домашних сетей, расположенного по адресу http://www.mosnet.ru (рис. 1-8).

Рис. 1-8. Каталог домашних сетей Москвы

Телефонные линии бывают выделенными, или арендуемыми (leased line), а также коммутируемыми (switched line).

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

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

Если Вашей компании нужно подключить свою локальную сеть к Интернету, то во многих случаях предпочтение отдается выделенной телефонной линии с использованием технологий ISDN или DSL. Когда же быстрый и надежный канал в Интернет жизненно необходим, наилучшим решением может оказаться применение оптоволоконного канала.

Кроме спутниковых каналов, беспроводная связь между узлами Интернета устанавливается при помощи так называемых радиомодемов. Они используют для передачи данных радиосигналы с частотой несколько гигагерц и действуют на расстоянии до нескольких десятков километров. Радиомодемы позволяют передавать данные со скоростью примерно 2 Мбит/с, что значительно быстрее, чем по телефонным линиям, однако радиоканалы подвержены атмосферным помехам и помехам со стороны сотовой телефонной связи, радио- и телевизионных станций и пр.

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

Кроме того, известны попытки использовать для доступа в Интернет телевизионные каналы, линии электропитания и каналы городской радиотрансляционной сети (применяемой в России). Однако в силу ряда причин эти способы не стали популярны.

Поставщики услуг Интернета

Вне зависимости от того, какой способ подключения к Интернету домашнего компьютера или локальной сети офиса Вы выберете, Вам не обойтись без поставщиков услуг Интернета, или провайдеров (Internet Service Provider, ISP).

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

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

Обычно серверы провайдера подключены не к одной, а к нескольким телефонным станциям (АТС). Общее количество телефонных подключений такого рода исчисляется сотнями, хотя группы таких линий могут быть объединены логически одним телефонным номером.

На рис. 1-9 схематически показан узел провайдера, подключенный к линии ISDN, спутниковому каналу и трем телефонным станциям. Здесь для простоты мы опустили такие элементы оборудования провайдера, как, например, рабочие станции и дополнительные серверы.

Рис. 1-9. Схема подключений узла провайдера

На этом рисунке видно, что сервер провайдера подключен через спутниковый канал и линии ISDN к провайдеру Интернета более высокого уровня.

Уместно заметить, что мелкие провайдеры сами получают доступ в Интернет у других провайдеров более высокого уровня. Цепочка посредников в предоставлении доступа к Интернету может быть достаточно длинной. Подключаясь к концу такой цепочки трудно рассчитывать на высокую скорость доступа, так как каналы посредников могут быть медленными.

А бывают ли «самые» главные провайдеры?

Строго говоря, нет.

Хотя Интернетом не управляет некий единый центр, в структуре Сети имеется множество мощных узлов, соединенных между собой высокоскоростными каналами. Если Ваш провайдер владеет одним из таких узлов, его можно считать главным, или, как еще говорят, первичным. Хотя Вы должны понимать, что понятие первичного провайдера относительно.

Вернемся к рис. 1-9.

Сервер провайдера подключается обычными телефонными линиями через модемы (на рисунке не показаны) к нескольким телефонным станциями (мы обозначили их как АТС 1, АТС 2 и АТС 3). Таких линий у хорошего провайдера может быть очень много. Именно через это «окно» к провайдеру посредством модемов подключаются рабочие станции пользователей.

Обратите внимание, что рабочая станция 1 подключена к той же самой АТС 1, что и сервер провайдера. Такое соединение, выполняемое по кратчайшему пути, скорее всего, будет достаточно надежным. Станции 2 и 3 подключены к другим АТС, поэтому маршрут передачи данных удлиняется. Теперь качество связи зависит и от качества линий между АТС провайдера и АТС пользователя.

Если провайдер подключен к нескольким АТС, Вы можете выбрать из них ту, связь через которую считается наиболее устойчивой и надежной.

Провайдеры, всегда имеют свои серверы Web. Например, главная страница сервера московского провайдера Россия-Он-Лайн (http://www.online.ru) показана на рис. 1-10.

Рис. 1-10. Сервер Web московского провайдера Россия-Он-Лайн

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

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

Непосредственно с узла Web своего провайдера Вы можете получить справку о балансе и, используя специальные Интернет-карточки, пополнить свой счет.

Обычно помимо доступа в Интернет провайдеры предоставляет за отдельную плату и другие услуги. Это создание домашних страничек и серверов Web, физическое подключение серверов Web к Интернету через локальную сеть провайдера, подключение офисов и домашних сетей к Интернету. Подробная информация о дополнительных услугах публикуется на узлах Web провайдеров.

Управление Интернетом

Интернет представляет собой огромную сеть. Но кто же этой сетью управляет?

Строго говоря, никто. Хотя Интернет был разработан в Америке и получил коммерческое применение, у этой сети нет единого хозяина или единого управляющего центра. Тем не менее, различные заинтересованные организации выполняют необходимую работу по стандартизации и координации функционирования сети, а также разрабатывают для нее документацию.

Вот некоторые из них:

·         Сообщество Интернета (Internet Society, ISOC);

·         Рабочая группа инженеров Интернета (Internet Engineering Task Force, IETF);

·         Исследовательская группа Интернета (Internet Research Task Force, IRTF);

·         Группа управления инженерами Интернета (Internet Engineering Steering Group, IESG);

·         Совет по архитектуре Интернета (Internet Architecture Board, IAB);

·         Центр сетевой информации Интернета (Internet Network Information Center, InterNIC).

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

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

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

Организация InterNIС выполняет такие важные функции, как распределение адресов IP и доменных имен, оказание справочных и информационных услуг. Узел Web InterNIС расположен по адресу http://www.internic.net и показан на рис. 1-11.

Рис. 1-11. Узел Web организации InterNIС

В России существует институт Российский НИИ Развития Общественных Сетей РОСНИИРОС (Russian Institute for Public Networks, RIPN), занимающийся координацией российских исследований и разработок в Интернете, регистрацией российских доменных имен, сопровождением документации и решающий другие подобные задачи. Подробную информацию об этой организации Вы найдете на узле Web, расположенном по адресу http://www.ripn.net (рис. 1-12). Здесь же можно выполнить поиск свободных доменов и подготовить документы для регистрации домена.

Рис. 1-12. Узел Web института Российский НИИ Развития Общественных Сетей РОСНИИРОС

Совсем недавно было объявлено о создании российского Союза операторов Интернета (http://www.soi.ru, рис. 1-13). Его учредители — компании «Ситилайн», «Сеть Глобал Один», «Релком Деловая сеть», Российская телекоммуникационная сеть RosNet, Региональный общественный центр Интернет-технологий и институт РОСНИИРОС.

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

Рис. 1-13. Узел Web российского Союза операторов Интернета

Стандарты Интернета

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

В 1969 году была создана серия документов Request for Comments (RFC), которые содержат сведения о рекомендуемых стандартах и технологиях для применения в Интернете. Их разработчики — любые заинтересованные лица и организации. Однако, прежде чем эти документы получат новый номер и будут добавлены в серию, необходимо, чтобы их рассмотрели и оценили специалисты IETF. Хотя документы RFC носят рекомендательный характер и не обязательны для исполнения, разработчики технологий и программ для Интернета обычно следуют им.

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

По мере создания новым документам RFC присваиваются последовательные номера. Даже новый документ, замещающий существующий, получает новый номер. Таким образом, номера документов RFC повторно не используются.

Документы RFC разделяются по необходимости применения и степени готовности.

С точки зрения необходимости использования документы RFC подразделяются следующим образом:

·         обязательные к применению (Required),

·         рекомендованные (Recommended),

·         факультативные (Elective),

·         ограниченного применения (Limited Use),

·         не рекомендуемые к использованию (Not Recommended). 

Заметим еще раз, что документы RFC носят рекомендательный характер — никто не обязывает разработчиков аппаратного и программного обеспечения для Интернета следовать этим документам в точности.

Однако фактически без удовлетворения требований, сформулированным в некоторых документах, обязательных к применению (Required), созданные программы и системы не будут работать в Интернете. Например, протокол IP должен быть реализован в соответствии с соответствующим документом RFC. Поэтому необязательность следования документам RFC во многих случаях условная: Вы, будучи разработчиком, можете ими не руководствоваться, но тогда Ваши изделия могут оказаться несовместимыми со стандартами, реализованными в Интернете.

Доменное имя

Забегая вперед, скажем, что каждый узел Интернета обладает своим адресом, задаваемым в виде числа. Однако численные адреса неудобны для человека, поэтому была разработана система символьных имен, позволяющая установить однозначное соответствие между численным адресом узла и его символьным доменным именем.  Доменные адреса состоят из нескольких имен, разделенных символами точки, а также некоторого префикса, определяющего тип ресурса. Вот пример доменного адреса сервера издательства компьютерной литературы «Русская редакция»: www.rusedit.ru. Позже мы расскажем о доменных адресах подробнее

По степени готовности различают следующие типы документов RFC:

·         экспериментальные (Experimental),

·         предлагаемые к использованию (Proposed),

·         черновые (Draft),

·         стандартные (Internet Standard) документы RFC.

Кроме того, документы RFC делятся еще и так:

·         информационные (Informational),

·         исторические (Historic).

В нашей книге мы будем ссылаться на те или иные документы RFC, указывая их номер. По нему Вы сможете легко найти и загрузить текст соответствующего документа RFC. Это можно сделать, например, c сервера RFC Editor Site (1-14), расположенного в Интернете по адресу http://www.rfc-editor.org.

Рис. 1-14. Раздел поиска документов RFC на узле RFC Editor Site

Помимо документов RFC, существует другая серия документов, посвященных Интернету. Это черновые документы Internet-Drafts, публикуемые рабочими группами IETF на своем сервере http://www.ietf.org (рис. 1-15).

Рис. 1-15. Документы, публикуемые рабочими группами IETF

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

Протокол TCP/IP

Прежде чем двинуться дальше, нам необходимо познакомится с основами протокола передачи данных TCP/IP, широко применяемого в Интернете. Этот протокол изначально ориентирован на глобальные сети, в которых качество соединительных каналов оставляет желать лучшего. Он позволяет создавать глобальные сети, компьютеры в которых соединены друг с другом самыми разными способами — от высокоскоростных оптоволоконных кабелей и спутниковых каналов до коммутируемых телефонных линий.

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

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

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

Название протокола TCP/IP

Как нетрудно заметить, название протокола TCP/IP состоит из двух элементов — TCP и IP. Почему же?

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

Очевидно, что намного удобнее было бы работать с каналом передачи данных, который работает корректно, доставляя все пакеты по порядку. Представьте себе, что Вы отправили письмо по электронной почте, а до адресата дошли только отдельные отрывки послания, да и те перепутаны местами.

Поэтому над протоколом IP работает протокол передачи данных более высокого уровня — TCP (Transmission Control Protocol). Посылая и принимая пакеты через протокол IP, протокол TCP гарантирует доставку всех переданных пакетов данных в правильной последовательности.

Протокол TCP/IP может служить носителем для других протоколов передачи данных, например:

·         межсетевой передачи пакетов (Internetwork Packet Exchange, IPX),

·         последовательного обмена пакетами (Sequenced Packet Exchange, SPX),

·         базовой сетевой системы ввода/вывода (Network Basic Input/Output System, NETBIOS),

·         служебных протоколов адресации(Address Resolution Protocol, ARP),

·         протокола межсетевых управляющих сообщений (Internet Control Message Protocol, ICMP).

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

Одно из них заключается в том, что он позволяет рассылать пакеты данных в широковещательном режиме, при котором они достигают всех компьютеров физической сети. Протоколы IPX и NETBIOS также обладают этим свойством. Заметим, однако, что широковещательная рассылка пакетов данных не используется в Интернете, так как из-за огромного количества составляющих эту сеть узлов такой способ вызвал бы перегрузку оборудования связи. Широковещательный режим применяется только в локальных сетях.

Что же касается протокола TCP, то для передачи данных с его помощью необходимо создать канал связи между компьютерами. Он и создается с использованием протокола IP.

Адреса в сети TCP/IP

Каждый компьютер, подключенный к сети TCP/IP, имеет свой адрес, представленный 32-разрядным двоичным числом. Этот адрес не должен совпадать с адресами других компьютеров.

Помимо компьютеров, к сети могут подключаться и другие устройства, такие, например, как сетевые принтеры. Им также разрешено иметь собственный адрес. Поэтому в дальнейшем для обозначения устройств, подключаемых к сети, мы будем применять термин «узел» (в некоторых переводных изданиях узел называют хостом — от английского слова «host»).

Адрес узла состоит из двух частей, одна из которых называется идентификатором сети, а другая — идентификатором узла (рис. 1-16).

Рис. 1-16. Компоненты адреса TCP/IP

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

Мы, однако, ничего не сказали о количестве разрядов, отведенных для указанных полей из полного 32-разрядного адреса. Дело в том, что существует три класса адресов, обозначаемых буквами A, B и С, для которых используется различная разрядность полей идентификатора сети и идентификатора узла.

Классы сетей

В сети с адресами класса A для идентификатора сети отводится 8 разрядов. При этом возможным значениям номера сети отведен диапазон от 1 до 126. Поле идентификатора узла при этом получается 24-разрядным.

Очевидно, что сети с адресами класса A — крупные, объединяющие до 16 777 214 узлов. Из-за выбранного диапазона номеров сети таких крупных сетей может быть всего 126.

Сетей с адресами класса B намного больше (до 16 384), так как для идентификатора таких сетей отводится два байта, причем первый байт принимает значения в диапазоне от 128 до 191. Для идентификатора узла отводится тоже два байта. В результате к сети с адресами класса B можно подключить до 65 534 узлов.

И наконец, больше всего сетей с адресами класса C: в них идентификатор сети задается тремя байтами, а идентификатор узла — одним байтом. Таких сетей, объединяющих до 254 узлов каждая, может существовать примерно 2 миллиона (точное значение — 2 097 151).

Запись адреса IP

Адреса IP принято записывать в виде четырех десятичных чисел, разделенных точками, например 201.23.1.12. Каждое десятичное число соответствует одному байту 32-разрядного адреса и может принимать значение от 0 до 255. Заметим, что адреса IP разрешается также записывать в двоичной, восьмеричной или шестнадцатеричной системах счисления, однако такие записи встречаются редко.

С учетом всего сказанного выше адреса узлов, например, класса A попадают в диапазон от 1.w1.w2.w3 до 126.w1.w2.w3. Здесь символами w1, w2 и w3 обозначены числа, которые могут принимать значения от 0 до 255, но с некоторыми ограничениями. А именно, адреса вида n.0.0.0 и n.255.255.255 зарезервированы соответственно для обозначения сети с номером n и всех узлов, подключенных к сети n.

В табл. 1-1 для каждого класса адреса приведено возможное начальное значение первого байта адреса и обозначение сети в виде четырех десятичных чисел.

Таблица 1-1. Адреса различных классов

Класс адреса

Значение первого байта адреса

Идентификатор сети

Идентификатор узла

A

1—126

n

w1.w2.w3

B

128—191

n1.n2

w1.w2

C

192—223

n1.n2.n3

w

 

Как мы уже говорили, некоторые адреса зарезервированы для специальных нужд:

·         адрес 0.0.0.0 предназначен для передачи пакетов «самому себе», т. е. на свой узел;

·         адрес 127.0.0.1 используется для тестирования сетевых приложений;

·         адрес, в котором указан номер сети, а номер узла равен нулю, применяется для обозначения сети (пример такого адреса — 193.24.2.0);

·         если все биты поля номера узла равны единице (например, 193.24.2.255), то это широковещательный адрес, пользуясь которым можно передавать пакеты сразу всем узлам указанной сети;

·         в том случае, когда все биты идентификатора сети и все биты идентификатора узла равны единице (например, 255.255.255.255), адрес используется для передачи пакетов данных всем узлам сети;

·         для адресации узла в данной сети можно вместо номера сети указать нулевое значение (например, 0.0.0.2)

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

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

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

Если же Вы создаете собственный сервер Web, который должен работать круглосуточно, необходим постоянный адрес IP, а при подключении к этому серверу других пользователей (через локальную сеть или модем) — некоторый диапазон адресов IP.

Маска подсети

При настройке сетевого компонента TCP/IP на рабочей станции, подключенной к локальной сети, Вам потребуется указать такой параметр, как маска подсети (subnet mask). Обычно такие параметры задаются сетевым администратором, поэтому мы расскажем о масках сети кратко.

Маска подсети представляет собой 32-разрядное число, предназначенное для выделения компонентов идентификатора сети и идентификатора узла из 32-разрядного адреса. При этом выделение идентификатора сети выполняется простой логической операцией «И» между адресом и маской подсети.

По умолчанию для маски подсети используются значения, приведенные в табл. 1-2. Они зависят от класса адресов сети.

Таблица 1-2. Маска подсети

Класс адреса

Маска подсети, принятая по умолчанию

A

255.0.0.0

B

255.255.0.0

C

255.255.255.0

 

Для примера возьмем адрес 193.24.2.23. Исходя из значения первого байта, это адрес сети с адресами класса C. Следовательно, для него по умолчанию используется маска сети 255.255.255.0. В этом случае адрес относится к сети 193.24.2.0. Адрес узла в данной сети равен 0.0.0.23.

Маску подсети применяют для разделения крупных сетей на подсети. Если, например, у Вас сеть с адресами класса B, допускающая подключение до 65 534 узлов, Вы можете разделить ее на несколько подсетей, указывая соответствующие маски подсетей.

Так, если для сети 130.10.0.0 с адресами класса B Вы укажете маску подсети 255.255.255.0, то сеть будет разделена на 254 подсети с адресами от 130.10.1 до 130.10.254. Каждая из таких подсетей может объединять до 254 узлов. Заметим, что указанная маска должна использоваться в этом случае на всех узлах подсети. Кроме того, для каждого узла подсети необходимо задать один и тот же идентификатор сети.

Порты TCP/IP

Узел с одним адресом IP способен обмениваться данными по протоколу TCP/IP с несколькими компьютерами. На этом узле также можно запустить одновременно несколько программ, выполняющих такой обмен.

Здесь возникает вопрос: как программы, работающие на одном и том же компьютере, различают друг друга при обмене данными, если компьютеру выделяется только один адрес IP?

В этом им помогает такой адресный компонент, как порт.

Каждая программа, выполняющая обмен данными по протоколу TCP/IP, получает для себя одно или несколько идентифицирующих значений, называемых портами. Например, программа сервера Web обычно использует порты с номерами 80 или 8080.

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

Маршрутизаторы в сети TCP/IP

Глобальная сеть Интернет с протоколом TCP/IP объединяет множество локальных сетей и отдельные компьютеры (узлы), соединенные друг с другом различными способами с помощью так называемых маршрутизаторов.

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

Сказанное иллюстрирует рис. 1-17, где изображены две сети, соединенные маршрутизатором.

Рис. 1-17. Две сети, соединенные маршрутизатором

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

В маршрутизаторе установлено два сетевых адаптера, причем каждый из них имеет собственный адрес. Заметьте, что адрес 222.10.10.60 относится к первой сети, а адрес 222.10.11.50 — ко второй.

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

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

А зачем, спросите Вы, нужны маршрутизаторы в локальной сети?

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

Маршрутизаторами соединяют друг с другом несколько логических сегментов, в результате чего большинство ограничений снимается. Кроме того, маршрутизаторы могут объединять сети, в которых применяются линии связи различных типов, например спутниковые, ISDN, выделенные и коммутируемые телефонные линии и т. д.

При подключении к Интернету роль маршрутизатора играет сервер поставщика услуг, обеспечивающий такое подключение.

Доменные имена узлов

В то время как компьютеру удобнее работать с числами, человек предпочитает имена. Ареса IP, заданные в виде четырех десятичных чисел, запоминать крайне неудобно.

Устанавливая операционную систему Microsoft Windows для работы в локальной сети, Вы должны указать имя своего компьютера, по которому к нему будут обращаться другие пользователи сети. При применении протокола TCP/IP у Вас тоже есть такая возможность.

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

В Интернете эта задача решается с помощью доменной системы имен, имеющей иерархическую структуру. Пример такой структуры показан на рис. 1-18 (указанные на этом рисунке имена узлов являются вымышленными и не имеют отношения к реальной сети Интернет).

Рис. 1-18. Пример иерархической доменной структуры имен

Здесь в домене с именем org определены домены sample и simple. Домен simple можно считать вложенным доменом по отношению к домену org. В нем определены домены first, ivs и tiger. Во вложенном домене определен домен tiger (имя этого домена совпадает с именем одного из доменов, вложенных в домен simple).

Полный доменный адрес формируется справа налево добавлением имен вложенных доменов, разделенных точкой (рис. 1-19).

Рис. 1-19. Полные доменные имена узлов

В рамках одного домена допускаются сокращения, т. е. Вы можете опустить имя домена. Например, узлы first.simple.org, ivs.simple.org, tiger.simple.org в домене simple.org можно называть first, ivs и tiger соответственно.

Имя tiger Вы вправе использовать в доменах simple.org и first.simple.org, при этом они будут обозначать разные узлы. Таким образом, если узлы имеют одинаковые имена, но принадлежат к разным доменам, конфликт имен не возникает (эти узлы всегда имеют разные полные доменные адреса).

Для отображения доменных имен на адреса IP в Интернете создана специальная система доменных имен (Domain Name System, DNS) с распределенной базой данных , пользуясь которой узлы преобразуют доменные адреса в численные адреса IP.

В процессе настройки параметров соединения с Интернетом Вам надо указать адрес узла, на котором находится база данных DNS. Лучше всего использовать адрес, полученный у Вашего поставщика услуг, хотя допустим адрес любого другого известный Вам сервера DNS. Например, подключившись к Интернету через поставщика услуг ORC, Вы можете указать адрес базы данных DNS, принадлежащей московскому провайдеру Россия-Он-Лайн. И хотя в таком подключении нет никакого смысла, мы рассказали об этой возможности, для того чтобы подчеркнуть, что база данных DNS — распределенная, и Вы можете найти ее на большинстве узлов Интернета.

А почему эту базу сделали распределенной?

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

Когда Интернет формировался, в нем было определено несколько доменов верхнего уровня, разделявших доменные адреса по их принадлежности к различным организациям (табл. 1-3).

Таблица 1-3. Домены верхнего уровня

Имя домена

Организация

gov

Правительственные организации

com

Коммерческие организации

org

Некоммерческие организации

edu

Исследовательские организации и университеты

net

Организации, которые занимаются сетевыми технологиями

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

Таблица 1-4. Домены некоторых стран

Имя домена

Страна

au

Австралия

fr

Франция

de

Германия

gr

Греция

Ie

Ирландия

Il

Израиль

It

Италия

nz

Новая Зеландия

ru

Российская Федерация

us

США

Пользуясь списком имен доменов верхнего уровня, Вы можете с некоторой долей вероятности определить принадлежность адреса той или иной стране, однако это получается не всегда. Заметим, что в России до сих пор используется имя домена su, принадлежавшее СССР, хотя страна с таким названием уже не существует.

Утилиты для работы с TCP/IP

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

Утилита PING

Утилита PING порождена операционной системой UNIX. Сейчас она входит в состав операционных систем Microsoft Windows 98, Microsoft Windows NT и Microsoft Windows 2000. Средствами этой утилиты можно проверить, доходят ли пакеты данных протокола IP до любого узла Интернета, адрес которого Вам известен.

Сделать это очень просто — достаточно указать адрес или доменное имя узла утилите PING при запуске в виде параметра, например:

c:\>ping 254.123.45.6

или так:

c:\>ping some.node.com

Запуск утилиты PING в среде операционных систем Microsoft Windows 98, Microsoft Windows NT и Microsoft Windows 2000 необходимо выполнять из командного приглашения. В случае Windows 98 это должно быть командное приглашение сеанса MS-DOS, запущенного в середе Microsoft Windows 98, а в случае Microsoft Windows NT и Microsoft Windows 2000 — командное приглашение Microsoft Windows NT или Microsoft Windows 2000 соответственно.

После запуска утилита PING сделает четыре попытки передачи указанному узлу диагностического эхо-пакета и отобразит на экране результат:

C:\W98>ping www.shm.ru

Обмен пакетами с web.shm.ru [195.178.200.80] по 32 байт:

Ответ от 195.178.200.80: число байт=32 время=165мс TTL=127
Ответ от 195.178.200.80: число байт=32 время=119мс TTL=127
Ответ от 195.178.200.80: число байт=32 время=117мс TTL=127
Ответ от 195.178.200.80: число байт=32 время=120мс TTL=127

Статистика Ping для 195.178.200.80:
     Пакетов: послано = 4, получено = 4, потеряно = 0 (0% потерь),
Приблизительное время передачи и приема:
     наименьшее = 117мс, наибольшее = 165мс, среднее = 130мс

Сейчас мы проверили связь с сервером московского Исторического музея, к которому наш компьютер был подключен при помощи модема и телефонной линии. Доменное имя этого сервера — www.shm.ru, а адрес IP — 195.178.200.80.

По умолчанию между передачами пакетов выдерживается интервал в 1 секунду.

Вот результаты тестирования другого узла Интернета — мощного поискового сервера Altavista:

C:\W98>ping www.altavista.com

Обмен пакетами с altavista.com [204.152.190.61] по 32 байт:

Ответ от 204.152.190.61: число байт=32 время=926мс TTL=40
Время ожидания запроса истекло.
Время ожидания запроса истекло.
Время ожидания запроса истекло.

Статистика Ping для 204.152.190.61:
     Пакетов: послано = 4, получено = 1, потеряно = 3 (75% потерь),
Приблизительное время передачи и приема:
     наименьшее = 926мс, наибольшее = 926мс, среднее = 231мс

Как видите, время отклика этого сервера в несколько раз больше, чем время отклика сервера Исторического музея. Из четырех эхо-пакетов обратно вернулся только один.

Если узел, указанный утилите PING, недоступен или не существует в сети, для всех четырех пакетов Вы получите четыре сообщения об истечении времени ожидания запроса:

C:\W98>ping 200.200.200.200

Обмен пакетами с 200.200.200.200 по 32 байт:

Заданный узел недоступен.
Заданный узел недоступен.
Заданный узел недоступен.
Заданный узел недоступен.

Статистика Ping для 200.200.200.200:
     Пакетов: послано = 4, получено = 0, потеряно = 4 (100% потерь),
Приблизительное время передачи и приема:
     наименьшее = 0мс, наибольшее = 0мс, среднее =   0мс

В этом случае нужно проверить, правильно ли указан адрес. Если в качестве параметра программе PING было указано доменное имя, то следует проверить настройку сервиса DNS (в первую очередь — адрес сервера DNS).

Для проверки настройки сетевого компонента TCP/IP укажите утилите PING адрес 127.0.0.1 или локальное доменное имя localhost. Это имя отображается на указанный адрес:

C:\W98>ping localhost

Обмен пакетами с frolov [127.0.0.1] по 32 байт:

Ответ от 127.0.0.1: число байт=32 время<10мс TTL=128
Ответ от 127.0.0.1: число байт=32 время<10мс TTL=128
Ответ от 127.0.0.1: число байт=32 время<10мс TTL=128
Ответ от 127.0.0.1: число байт=32 время<10мс TTL=128

Статистика Ping для 127.0.0.1:
     Пакетов: послано = 4, получено = 4, потеряно = 0 (0% потерь),
Приблизительное время передачи и приема:
     наименьшее = 0мс, наибольшее = 0мс, среднее =   0мс

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

Трассировка пакетов утилитой TRACERT

Средства только что описанной утилиты PING позволяют узнать только время отклика узла Интернета. Что же касается пути, по которому проходят пакеты от Вашего компьютера до любого заданного узла, то он легко определяется утилитой TRACERT.

В качестве параметра утилите TRACERT, запускаемой из командного приглашения операционной системы, передается адрес IP или доменное имя интересующего Вас узла. Ниже мы показали результат трассировки пути следования пакетов до сервера Государственного Исторического музея (наш компьютер был подключен через сервер провайдера Гласнет):

C:\W98>tracert www.shm.ru

Трассировка маршрута к web.shm.ru [195.178.200.80]
с максимальным числом переходов 30:

1 127 мс     *     121 мс m9-pm16.glasnet.ru [195.218.254.132]
2 123 мс   120 мс  151 мс m9-r7-e1.glas.net [195.218.254.129]
3 133 мс   130 мс  139 мс glasnet2-lgw.Moscow.ST.NET [194.186.0.145]
4 686 мс   293 мс  167 мс MSK-M9-1-S1-0-1.iip.net [195.178.192.65]
5 220 мс   189 мс  191 мс hist-mus.fr.iip.net [195.178.192.97]
6    *     *      *    Превышен интервал ожидания для запроса.
7 241 мс   166 мс  191 мс   web.shm.ru [195.178.200.80]

Трассировка завершена.

Каждая строка в листинге результата трассировки соответствует одному маршрутизатору, через который проходит пакет. Таким образом, между нашим компьютером и сервером www.shm.ru расположено семь маршрутизаторов.

Для каждого промежуточного маршрутизатора в листинге приведено время прохождения трех тестовых пакетов до тестируемого узла, а также доменное имя узла или его адрес IP (если доменное имя недоступно). В том случае, когда по каким-либо причинам тестовый пакет не добрался до пункта назначения, вместо времени в листинг записывается символ *.

В приведенном выше примере наш компьютер и все серверы, вовлеченные в процесс передачи тестовых пакетов, находились в Москве. Если выполнить трассировку какого-либо зарубежного узла, листинг будет длиннее. Вот, например, трасса до поискового сервера с адресом www.altavista.com:

C:\W98>tracert www.altavista.com

Трассировка маршрута к altavista.com [204.152.190.25]
с максимальным числом переходов 30:

1 2069 мс   121 мс  118 мс   m9-pm16.glasnet.ru [195.218.254.132]
2 119 мс   117 мс  116 мс   m9-r7-e1.glas.net [195.218.254.129]
3 124 мс   124 мс  120 мс   cp-r4-s2.glas.net [195.218.254.205]
4 158 мс   291 мс  133 мс   kv-r1-s3.glas.net [195.218.254.198]
5 126 мс   3133 мс  131 мс   kk-rd-fa0-0.2.GLAS.net [194.154.65.253]
6 131 мс   132 мс  128 мс   glasnet-lgw.Moscow.ST.NET [194.186.0.81]
7 160 мс   177 мс  158 мс   dkcop204-tb-s5-2.ebone.net [195.158.226.33]
8 170 мс   180 мс  191 мс   195.158.247.38
9 194 мс   179 мс  179 мс   nlams303-tc-p2-0.ebone.net [195.158.235.42]
10 186 мс   179 мс  182 мс   bebru203-tc-p1-0.ebone.net [195.158.225.85]
11 183 мс   183 мс     * bebru204-tc-p2-0.ebone.net [195.158.225.82]
12 180 мс   184 мс  181 мс   gblon303-tc-p0-0.ebone.net [195.158.225.21]
13 3197 мс   190 мс  176 мс   gblon304-tb-p2-0.ebone.net [195.158.225.30]
14 259 мс   266 мс  263 мс   usnyk301-ta-p0-0-0.ebone.net [195.158.224.25]
15 270 мс   258 мс  270 мс   Serial2-0-1.BR1.nyc4.ALTER.NET [137.39.23.205]
16 270 мс   274 мс  270 мс   134.ATM2-0.XR1.NYC4.ALTER.NET [146.188.177.178]
17 261 мс   272 мс  368 мс   189.at-1-0-0.TR1.NYC9.ALTER.NET [152.63.21.122]
18 369 мс   349 мс  354 мс   125.at-5-0-0.TR1.SAC1.ALTER.NET [152.63.6.50]
19 343 мс   329 мс  334 мс   197.ATM7-0.XR1.PAO1.ALTER.NET [152.63.50.97]
20 339 мс   357 мс  365 мс   189.ATM10-0-0.GW6.PAO1.ALTER.NET [146.188.149.25]
21 355 мс   394 мс  397 мс   mibh-gw.customer.ALTER.NET [157.130.197.122]
22 330 мс   344 мс  359 мс   pla1b.head5.pla.mibh.net [204.152.184.215]
23 407 мс   370 мс  387 мс   altavista.com [204.152.190.25]

Трассировка завершена.

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

Еще одно применение утилиты трассировки — определение физического расположения компьютеров злоумышленников, занимающихся в Интернете таким «делом», как распространение вирусов и другой вредоносной информации. Определив адрес IP компьютера нарушителя, посредством утилиты трассировки можно «вычислить» сервер провайдера, через который его компьютер подключен к Интернету. Далее, проанализировав журналы подключений пользователей, нетрудно вычислить идентификатор злоумышленника. Учитывая, что при регистрации провайдеры требуют предоставить паспорт, правоохранительные органы без труда определят фамилию, имя и место жительства нарушителя. А там уж и до его компьютера добраться — пара пустяков! Было бы желание у заинтересованных сторон.

Утилита NETSTAT

Средствами утилиты командной строки NETSTAT, входящей в состав операционных систем Microsoft Windows 98, Microsoft Windows NT и Microsoft Windows 2000, можно получить информацию об установленных соединениях. Эта утилита показывает список соединений, работающих по протоколу TCP/IP.

Ниже мы показываем сообщение, которое программа NETSTAT вывела на экран при подключении к серверу провайдера Гласнет:

C:\W98>netstat

Активные подключения

  Имя    Локальный адрес    Внешний адрес        Состояние
  TCP    frolov:1032        207.46.185.27:80     ESTABLISHED
  TCP    frolov:1034        www.msn.com:80          ESTABLISHED
  TCP    frolov:1036        lg.msn.com:80        ESTABLISHED
  TCP    frolov:1037        lg.msn.com:80        ESTABLISHED
  TCP    frolov:1045        glas.apc.org:telnet  ESTABLISHED

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

Утилита ROUTE

Утилита командной строки ROUTE предназначена для работы с таблицей маршрутизации. Она позволяет просматривать и изменять содержимое этой таблицы, добавляя в нее новые маршруты или удаляя существующие.

Ниже мы показываем результат работы утилиты ROUTE, запущенной с параметром print:

C:\W98>route print

Активные маршруты:

Сетевой адрес    Маска            Адрес шлюза      Интерфейс   Метрика
0.0.0.0            0.0.0.0           195.178.200.73   195.178.200.73     1
127.0.0.0        255.0.0.0        127.0.0.1        127.0.0.1        1
195.178.200.0    255.255.255.0    195.178.200.73     195.178.200.73     1
195.178.200.73     255.255.255.255  127.0.0.1        127.0.0.1       1
195.178.200.255  255.255.255.255  195.178.200.73     195.178.200.73     1
224.0.0.0        224.0.0.0       195.178.200.73     195.178.200.73     1
255.255.255.255  255.255.255.255  195.178.200.73     195.178.200.73     1

Перед запуском утилиты мы установили соединение с Интернетом.

В данном случае при подключении к серверу поставщика услуг нам был выделен адрес 195.178.200.73. Это адрес моста, через который пакеты IP попадают в Интернет. При обычной работе таблицу маршрутизации настраивать не приходится, однако, для того чтобы у Вас было общее представление об этой процедуре, мы опишем показанную выше таблицу маршрутизации.

Адрес 0.0.0.0 принадлежит маршрутизатору, используемому по умолчанию. Значит, в первой строке указан адрес маршрутизатора, используемого по умолчанию. В данном случае это адрес нашего узла 195.178.200.73.

Остальные строки таблицы маршрутизации создаются автоматически при установке протокола TCP/IP.

Адрес 127.0.0.0 применяется в качестве локального тестового маршрутизатора. Адрес 127.0.0.1 также задействован для локальных тестов сетевых приложений. Локальный маршрутизатор, через который пакеты попадают во «внешний мир», как мы уже говорили, имеет адрес 195.178.200.73.

Адрес 195.178.200.0 принадлежит сети, к которой подключен ваш узел. Этой сети соответствует маска 255.255.255.0. Адрес 255.255.255.255 — широковещательный — используется для отправки пакетов всем узлам сети.

Ниже в табл. 1-5 показан список параметров программы ROUTE для операционной системы Microsoft Windows NT и Microsoft Windows 2000.

Таблица 1-5. Команды утилиты ROUTE

Параметр

Назначение

print

Вывод таблицы маршрутизации

add

Добавление нового маршрута в таблицу маршрутизации

delete

Удаление заданного маршрута

change

Изменение адреса маршрута

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

Основы работы сервера Web

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

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

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

Первые попытки систематизации информации

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

Подключаясь к серверу Gopher с помощью специально предназначенной для этого программы или обычного браузера, Вы попадаете в меню, отражающее содержимое разделов сервера Gopher (рис. 1-16).

Рис. 1-16. Корневой каталог сервера Gopher

Выбирая строки такого меню, Вы перейдете в меню следующего уровня (рис. 1-17) или в режим просмотра текстового документа. Документ может содержать гипертекстовые ссылки на другие документы, что упрощает навигацию.

Рис. 1-17. Просмотр документа на сервере Gopher

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

Преимущества серверов Web

С точки зрения организации связи между документами серверы Web напоминают серверы Gopher, так как они тоже содержат информацию в виде текста со ссылками. Однако есть и существенные отличия:

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

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

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

·         в-четвертых, сервер Web способен решать практически любую задачу, принимая данные от пользователя, обрабатывая их и передавая обратно. Таким способом можно организовать, например, антивирусную обработку файлов или перевод файлов с текстом с одного языка на другой;

·         в-пятых, страницы сервера Web позволяют организовать дискуссии в реальном времени, как текстовые, так и голосовые. Допустимо даже проводить в реальном времени видеоконференции, хотя качество видеоизображения при этом оставляет желать лучшего

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

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

Адреса страниц Web

Внутренняя «механика» работы серверов Web иногда достаточно сложна, однако как разработчику приложений Web, она будет Вам интересна. В частности, Вы должны хорошо представлять себе систему адресации страниц Web.

Как Вы уже знаете, все узлы в Интернете имеют свои адреса IP. К большинству таких серверов (но не ко всем) можно также обращаться, используя доменные имена, более простые для запоминания. Все это относится и к серверам Web, которые тоже являются узлами Интернета.

Сервер Web хранит в своих каталогах текстовые файлы страниц, которые пересылаются посетителям, а также все другие файлы, на которые есть ссылки в страницах (например, файлы с графическими изображениями). Текстовые файлы страниц готовятся с использованием специального языка разметки гипертекста HTML (Hyper Text Markup Language), о котором мы подробно расскажем в следующей главе нашей книги.

Одна из страниц сервера Web считается главной. Указывая браузеру адрес вида http://www.microsoft.com, состоящий из префикса протокола HTTP и доменного имени сервера Web, Вы попадете на главную страницу этого сервера. В корневом каталоге сервера Web помимо файла главной страницы могут находиться другие файлы и каталоги. Таким образом, каталоги сервера Web имеют древовидную структуру.

Файлы, хранящиеся в каталогах сервера Web, имеют то или иное расширение имени в зависимости от назначения. Обычные текстовые страницы HTML хранятся в файлах с расширением имени html или htm. Активные документы с так называемыми серверными сценариями могут находиться в файлах с расширением имени asp или php. Кроме этого, на сервере Web обычно имеются программные файлы exe и dll, файлы графических изображений gif и jpg, а также файлы других типов.

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

Например, полный адрес старой домашней странички авторов этой книги в Интернете был таков: http://www.glasnet.ru/~frolov/index.html (новая страничка находится по адресу http://www.frolov.pp.ru). Здесь http://www.glasnet.ru — адрес сервера московского провайдера Гласнет, где находилась наша страничка, ~frolov — имя каталога с файлами и каталогами странички, а index.html — имя главной страницы.

Заметим, что обычно в каждом каталоге сервера Web имеется страница, загружаемая в окно браузера по умолчанию, если задать браузеру адрес этого каталога. Например, если указать браузеру адрес http://www.glasnet.ru/~frolov, то, хотя в данном каталоге есть и другие файлы, в окно браузера будет загружен файл index.html. Дело в том, что именно он играет роль страницы, загружаемой по умолчанию.

Главная страница сервера Web — это та, которая загружается по умолчанию для корневого каталога сервера. При указании браузеру адреса вида http://www.microsoft.com в его окне появится соответствующий документ.

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

Описанные Выше адреса страниц относятся к общим универсальным адресам ресурсов Universal Resource Locator (URL). Позже мы познакомимся с другими типами адресов URL.

Универсальный идентификатор ресурсов URL

Как мы уже говорили, документы HTML передаются посетителям из сервера Web с помощью протокола HTTP. Для ссылки на сетевые ресурсы через протокол HTTP используется следующая форма универсального идентификатора ресурсов URL:

http://host[:port][path]

Параметр host обязательный. Он должен быть указан как доменный адрес или как адрес IP (в виде четырех десятичных чисел). Например:

http://www.microsoft.com
http://154.23.12.101

Если указать браузеру первую из этих ссылок, Вы попадете на главную страницу сервера корпорации Microsoft. Эта страница содержит ссылки на другие страницы и ресурсы.

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

Необязательный параметр port задает номер порта для работы с протоколом HTTP. По умолчанию используется порт с номером 80, однако для специализированных серверов Web это может быть и не так.

Как мы уже говорили, номер порта идентифицирует программу, работающую в узле сети TCP/IP и взаимодействующую с другими программами, расположенными на том же или на другом узле сети.

Если Вы разрабатываете программу, передающую данные через сеть TCP/IP с использованием, например, интерфейса Windows Sockets, то при создании канала связи с уделенным компьютером необходимо указать не только адрес IP, но и номер порта, который будет использован для передачи данных. Иногда номер порта требуется указывать в документах HTML и при организации ссылок на те или иные ресурсы Интернета.

Ниже мы показали, как нужно указывать в адресе URL номер порта:

http://www.myspecial.srv:82/

Теперь займемся параметром path, определяющим путь к объекту.

Обычно любой сервер Web имеет корневой каталог, в котором расположены подкаталоги. Как в корневом каталоге, так и в подкаталогах могут находиться документы HTML, двоичные файлы, файлы с графическими изображениями, звуковые и видео-файлы, расширения сервера в виде программ CGI или библиотек динамической компоновки, дополняющих возможности сервера (такие, как библиотеки ISAPI для сервера Microsoft Information Server).

Если в качестве адреса URL указать браузеру только доменное имя сервера, сервер перешлет браузеру свою главную страницу. Имя файла этой страницы зависит от сервера. Большинство серверов на базе операционной системы UNIX посылают по умолчанию файл документа с именем index.html, но может использоваться любое другое, определенное при установке сервера, например, home.html или home.htm.

Для ссылки на конкретный документ HTML или на файл любого другого объекта необходимо указать в адресе URL его путь, например:

http://www.frolov.pp.ru/index.html

Корневой каталог сервера Web обозначается символом /. В спецификации протокола HTTP сказано, что если путь не задан, то используется корневой каталог.

Ссылки на страницах Web

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

На рис. 1-20 мы показали два сервера с придуманными нами адресами http://www.server_one.ru и http://www.server_two.ru. На первом из них расположены четыре страницы с именами index.html, page1.html, page2.html и page3.html, а на втором — три страницы с именами index.html, one.html и two.html.

Рис. 1-20. Страницы сервера Web ссылаются друг на друга (адреса серверов вымышленные)

Стрелками мы показали ссылки между страницами. Если, Вы загрузите в браузер страницу http://www.server_one.ru/index.html, то по расположенным на ней трем ссылкам сможете попасть на страницы http://www.server_one.ru/page1.html, http://www.server_one.ru/page2.html и http://www.server_two.ru/index.html.

Первые две из них находятся на сервере http://www.server_one.ru, а третья — на сервере http://www.server_two.ru.

Перемещаясь по ссылкам (вдоль стрелок), Вы обойдете все страницы обоих серверов, причем каждый такой переход осуществляется одним щелчком клавши мыши.

Протокол HTTP

Итак, теперь Вы знаете, что каждая страница сервера Web имеет свой адрес ресурса URL. Для того чтобы получить доступ к той или иной странице, пользователь должен указать ее адрес URL программе браузера.

В этом случае страница Web начинает загружаться с сервера. При этом браузер устанавливает соединение с сервером Web, применяя протокол передачи гипертекстовых данных (Hyper Text Transfer Protocol, HTTP), получает нужную страницу и разрывает соединение. Принятая страница отображается в окне браузера. Этот процесс показан на рис. 1-21.

Рис. 1-21. Взаимодействие браузера и сервера Web

Заметим, что протокол HTTP работает «поверх» протокола TCP/IP, используя его для обмена данными между браузером и сервером Web.

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

Статические и динамические страницы

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

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

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

Документы HTML, которые создаются описанным выше образом, называются динамическими документами. Если наряду со статическими страницами на сервере Web имеются динамические документы, то такой сервер называют активным.

Серверы Web и базы данных

Многие современные серверы Web, расположенные в Интернете, интегрированы с базами данных. При этом информация, хранящаяся в таких базах данных, становится доступной посетителям сервера. Некоторым посетителям разрешается только просматривать содержимое баз данных, а некоторым — редактировать (после ввода своего идентификатора и пароля).

Для того чтобы сервер Web мог вести диалог с пользователем, разработан механизм программных расширений сервера, основанный на применении так называемого стандартного шлюзового интерфейса (Common Gateway Interface, CGI). Программы CGI пользуются этим интерфейсом для получения (через протокол HTTP) информации от пользователя, для ее обработки и отправки обратно в виде нового документа HTML, ссылки на существующий документ или на другой объект.

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

Процесс взаимодействия браузера посетителя сервера и программного расширения показан на рис. 1-22.

Рис. 1-22. Формирование динамических документов HTML

Помимо программ CGI, существуют и другие средства создания активных серверов Web. Это программные расширения, созданные с применением программного интерфейса приложений Internet Server  (Internet Server Application Programming Interface, ISAPI), работающие в среде сервера Web, — Microsoft Internet Information Server, активные серверные страницы (Active Server Pages, ASP) и препроцессор гипертекста (PHP Hypertext Preprocessor, PHP), а также другие средства. В следующих главах нашей книги эти средства будут подробно рассмотрены.

Активность браузера

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

Что это за активные объекты?

Это сценарии JavaScript, VB Script, аплеты Java, элементы управления ActiveX и некоторые другие.

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

Так, предварительную обработку введенных данных, отправляемых серверу, имеет смысл выполнять на стороне клиента. Это позволит исключить, например, повторные передачи неправильно заполненных форм. Графическое представление результатов запроса также стоит выполнять на стороне клиента, что существенно сократит объем данных, передаваемых по сети. А вот выборку из базы данных должен выполнять сервер.

Сценарии JavaScript и VB Script

Язык сценариев JavaScript разработан фирмой Netscape Communication Corporation и первоначально назывался LiveScript. Заметим, что JavaScript не имеет никакого отношения к языку Java, созданному Sun Microsystems на базе языка Oak.

Помимо JavaScript, широко используются еще два языка сценариев, разработанных компанией Microsoft. Это JScript и VB Script. Последний совместим только с браузером Microsoft Internet Explorer и функционально равноценен языку JavaScript.

Конструкции языка сценария встраиваются в страницы HTML и исполняются (интерпретируются) под управлением браузера при загрузке страниц, а также при совершении пользователем определенных действий над объектами, расположенными в этих страницах.

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

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

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

Аплеты Java

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

Аплеты выполняются под управлением браузера и не имеют никакого доступа к локальным ресурсам компьютера. Однако они способны взаимодействовать с расширениями сервера CGI и ISAPI, а также читать файлы с того сервера Web, с которого они были загружены.

Элементы управления ActiveX

Элементы управления ActiveX (ActiveX control) применяют для решения тех же задач, что и аплеты Java. Дополнительно они предоставляют неограниченный доступ к ресурсам локального компьютера.

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

Для того чтобы убедить пользователей в том, что предлагаемый для загрузки элемент управления ActiveX безопасен, предлагается технология цифровых сертификатов. Следует, однако, учесть, что сама по себе эта технология не ограждает от проблем, связанных с наличием «дыр» в защите браузера. Многие просто предпочтут не рисковать и не станут загружать потенциально опасное программное обеспечение.

Активные каналы

Несмотря на наличие в Интернете мощных поисковых систем до появления браузера Microsoft Internet Explorer версии 4.0 пользователю приходилось самому искать нужную ему информацию и загружать ее на свой компьютер. Однако вместе с этой версией браузера появилась и технология так называемых активных каналов (Active Channel).

Активные каналы предполагают «проталкивание» информации от серверов Web к пользователям, причем пользователь не принимает в этом процессе непосредственного участия. От него требуется лишь подписаться на интересующий его канал и задать периодичность получения информации по каждому каналу.

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

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

Список каналов отображается в окне браузера Microsoft Internet Explorer при помощи соответствующей строки меню Избранное (Favorites) (рис. 1-23).

Рис. 1-23. Канал Русского Бюро Новостей

Есть и другой способ — щелкнуть мышью маленький значок с изображением спутниковой антенны в инструментальной линейке браузера. Аналогичный значок есть и на линейке задач, расположенной в нижней части экрана. Он позволяет просматривать каналы в полноэкранном режиме.

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

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

Помимо подписки на каналы, современные версии браузера Microsoft Internet Explorer позволяют «оформить» подписку и на обычные страницы Web. При этом браузер периодически проверяет, не изменились ли указанные Вами страницы. За Вами остается право задать периодичность такой проверки.

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

Сегодня создано более десяти отечественных каналов, доступных для подписки через браузер Microsoft Internet Explorer. Эти каналы принадлежат известным фирмам и информационным агентствам, таким, например, как «Россия-Он-Лайн »,  «Гарант-Парк», «Русское бюро новостей», «ZDNet», «Росит Инфо», «Weekend» и др.

Заслуживает упоминания и канал Microsoft Сhannel Guide, содержащий краткое руководство по работе с каналами на русском языке. В режиме поиска он откроет Вам доступ к десяткам и сотням зарубежных каналов, организованных в разделы «Новости науки», «Спорт», «Деловая информация», «Досуг и развлечения», «Путешествия и туризм».

Пассивные и активные серверы Web

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

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

Приложения Web

Как же создаются и как работают активные серверы Web?

Мы рассмотрим два варианта. Первый них предполагает применение специальных программных расширений сервера Web, таких, как CGI и ISAPI. Второй связан с использованием серверных сценариев, технологии активных страниц Active Server Pages (ASP) и предварительной обработки гипертекста PHP.

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

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

Однако сервер Web выполняет только часть работы. Он отвечает за получение данных от пользователя и подготовку страниц, отправляемых обратно. Что же касается запросов к базе данных или обращений к другим активным объектам, реализующим бизнес-логику, то для решения этих задач сервер Web обращается к серверам базы данных или другим серверам приложений. Обращения выполняются либо средствами ASP и PHP, либо при помощи расширений CGI или ISAPI.

Мы будем называть приложением Web набор страниц ASP, PHP, HTML, DHTML, объектов COM, клиентских и серверных элементов управления ActiveX, клиентских и серверных сценариев, а также аплетов Java, расположенных на одном или нескольких серверах Web и предназначенных для работы в рамках одного приложения. При этом активные компоненты приложений Web могут обращаться к серверам баз данных или другим прикладным серверам для выполнения тех ли иных запросов.

Подмножество приложений Web, созданных с применением технологии активных серверных страниц ASP, мы будем называть приложениями ASP. Более точное определение мы приведем позже. Аналогично, приложения, созданные с применением технологии PHP, будут называться приложениями PHP.

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

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

Программы CGI

Для того чтобы сервер Web мог вести диалог с пользователем, был разработан механизм программных расширений сервера, основанный на применении так называемого стандартного шлюзового интерфейса Common Gateway Interface (CGI). Программы CGI пользуются этим интерфейсом для получения (через протокол HTTP) информации от пользователя, для ее обработки и отправки обратно в виде нового документа HTML, ссылки на существующий документ или на другой объект.

При этом для ввода информации со стороны пользователя в документ HTML встраиваются формы, содержащие такие органы управления, как текстовые поля, списки, переключатели, кнопки и т. д. Обычно одна из кнопок предназначена для завершения ввода. Когда пользователь заполнит всю форму, он нажимает эту кнопку, и данные из полей формы передаются программе CGI. Обработав данные, программа CGI динамически формирует новый документ HTML с результатами обработки и отправляет его обратно пользователю. При необходимости программа CGI может обращаться к СУБД. Этот процесс был проиллюстрирован на рис. 1-22.

Таким образом, программы CGI позволяют серверу Web вести активный диалог с пользователем.

Что представляет собой программа CGI?

Это обычное консольное приложение, работающее в среде операционной системы сервера Web и осуществляющее обмен данными через стандартные потоки ввода и вывода. Такое приложение загружается в оперативную память сервера и запускается только по явному запросу пользователя, когда к нему выполняется обращение из документа HTML. Окончив обработку запроса пользователя, программа CGI завершает свою работу и выгружается из памяти сервера.

Программа CGI работает на сервере как отдельный процесс. В рамках этого процесса она способна, в частности, обращаться к базам данных для выборки или обновления информации.

Вы можете писать программы CGI на любом языке программирования, допускающем создание исполняемых модулей. Часто их составляются с применением интерпретируемого языка Perl. Интерпретаторы Perl доступны на различных платформах. Программы CGI, приведенные в нашей книге, написаны на языках программирования C++ и Perl, доступных как на платформе Microsoft Windows, так и на платформе Linux.

Приложения ISAPI

Если сервер Web создан на базе Microsoft Internet Information Server, вместо программ CGI Вы можете использовать приложения ISAPI, реализованные в виде библиотек динамической загрузки DLL.

Приложения ISAPI условно делятся на расширения ISAPI и фильтры ISAPI.

Расширения ISAPI

Расширения ISAPI выполняют те же функции, что и только что рассмотренные программы CGI. Однако есть и очень важные отличия.

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

Заметим, что сервер Microsoft Internet Information Server версии 4.0 позволяет загружать программы ISAPI в отдельное адресное пространство. Эта возможность, замедляющая работу сервера, обычно используется для отладки новых программ. Аварийное завершение программы ISAPI, загруженной в отдельное адресное пространство, как правило, не приводит к полной остановке сервера Web.

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

С другой стороны, приложения ISAPI приходится отлаживать намного тщательнее, чем программы CGI. Так как приложение ISAPI работает в адресном пространстве сервера Web, ошибка в приложении ISAPI способна вызвать аварийное завершение работы сервера Web. Ошибки в программе CGI обычно менее значимы, так как в худшем случае авария произойдет только в том процессе, в котором работает эта программа, а не в процессе сервера Web.

Фильтры ISAPI

Фильтры ISAPI, так же как и расширения ISAPI, реализованы в виде библиотек динамической загрузки DLL, однако они предназначены для другого. Фильтры ISAPI способны контролировать весь поток данных между браузером и сервером Web на уровне протокола HTTP. Благодаря этому их можно применять для решения таких задач, как динамическая перекодировка и шифрование данных, создание дополнительных процедур аутентификации пользователей, сбор статистической информации об использовании ресурсов сервера и т. д.

Приложения ASP

Технология ASP предполагает интенсивное использование серверных сценариев и объектов COM для создания активных серверов Web. При ее применении на сервере Microsoft Internet Information Server располагаются текстовые файлы с расширением asp, содержащие операторы языка HTML, и сценарии, составленные на языках JScript или VB Script.

Средствами технологии ASP можно легко создавать интерактивные страницы Web, не используя расширения CGI или ISAPI, что позволяет в ряде случаев полностью избежать или максимально сократить программирование на C++ или Perl. Активные страницы ASP выполняют обработку данных, введенных пользователями при помощи форм, обращаясь при необходимости к базам данных или другим активным объектам.

Как работают серверные сценарии в страницах ASP?

Когда пользователь обращается к странице ASP, сервер Web интерпретирует расположенный в ней сценарий. При этом анализируются параметры, переданные этой странице. Далее страница модифицируется (или создается заново), а затем отправляется обратно пользователю.

Заметим, что пользователь не может каким-либо образом получить содержимое страницы ASP, так сервер Web отправляет ему не саму страницу, а результат ее интерпретации. Таким образом, логика работы страницы скрыта от пользователей.

Серверный сценарий, встроенный в страницу ASP, способен обращаться к базам данных через вызов методов интерфейса ActiveX Data Objects (ADO) — простую и понятную процедуру. Если у Вас возникнет необходимость реализовать собственную бизнес-логику, Вы можете создать новые объекты COM или использовать объекты COM сторонних разработчиков.

Приложения PHP

По своему принципу действия приложения PHP напоминают приложения ASP, однако между ними имеется много отличий.

В то время как ASP предполагает активное использование модели компонентного объекта COM и элементов управления ActiveX, технология PHP базируются на классических библиотеках объектных модулей. Это, в частности, означает, что для добавления каких-либо функций, не входящих в стандартную библиотеку PHP требуется перекомпилировать исходные тексты PHP. С этим, однако, не возникает особых проблем, так как в соответствии с открытой лицензией PHP поставляется бесплатно и вместе с исходными текстами.

Будучи изначально разработанной для платформы Unix и ее клонов, PHP сегодня доступна и на платформе Microsoft Windows.

Более подробно мы расскажем о создании приложений PHP в отдельной главе нашей книги.

Активность на стороне клиента

В большинстве случаев целесообразно разделять работу между клиентом и сервером, чтобы добиться оптимальной производительности в условиях низкоскоростных каналов Интернета и лимитированных ресурсов серверов Web.

Так, предварительную обработку введенных данных, отправляемых серверу, имеет смысл выполнять на стороне клиента. Это позволит исключить, например, повторные передачи неправильно заполненных форм. Графическое представление результатов запроса также стоит выполнять на стороне клиента, что существенно сократит объем данных, передаваемых по сети. А вот выборку из базы данных должен выполнять сервер.

Для реализации клиентской активности Вы можете применять сценарии JavaScript, VB Script, аплеты Java и элементы управления ActiveX.

Клиентские сценарии JavaScript

Язык сценариев JavaScript разработан фирмой Netscape Communication Corporation и первоначально назывался LiveScript. Язык JavaScript не имеет никакого отношения к языку Java, созданному Sun Microsystems на базе языка Oak.

Конструкции языка JavaScript встраиваются в страницы HTML и исполняются (интерпретируются) под управлением браузера при загрузке страниц, а также при совершении пользователем определенных действий над объектами, расположенными в этих страницах.

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

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

Механизм локальной памяти Cookie позволяет сценариям JavaScript сохранять на компьютере локальную информацию, введенную пользователем. Например, в Cookie может храниться список товаров из Интернет-магазина, отобранных для покупки.

Так как язык JavaScript разработан для применения непрофессиональными программистами, создание клиентских сценариев обычно не составляет особого труда. Однако для обеспечения совместимости с различными браузерами все же приходится учитывать многочисленные детали. Например, браузер Microsoft Internet Explorer реализует собственную версию JavaScript, называемую JScript. Кроме того, для выполнения многих функций клиентские сценарии обращаются к интерфейсу объектной модели браузера. Эта модель отличается для разных браузеров.

Клиентские сценарии VB Script

Помимо JScript, браузер Microsoft Internet Explorer (и только он) способен работать с языком клиентских сценариев VB Script. Последний представляет собой подмножество Microsoft Visual Basic и функционально равноценен языку JavaScript.

Так как многие пользователи сети Интернет не работают с браузером Microsoft Internet Explorer, применение VB Script для создания страниц серверов Web, расположенных в Интернете, едва ли можно считать оправданным.

Ситуация меняется, если технологии Интернета применяются в корпоративной интрасети. Когда администратор может установить на компьютеры всех пользователей Microsoft Internet Explorer, а в штате компании есть программисты, имеющие большой опыт работы с Microsoft Visual Basic, то применение VB Script вместо JavaScript заметно сокращает сроки и стоимость разработки.

Аплеты Java

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

Аплеты Java встраивают в страницы сервера Web, дабы они взаимодействовали с клиентскими сценариями, составленными на JavaScript или VB Script. В частности, сценарии способны вызывать методы аплета, передавать данные или принимать их от аплетов.

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

Аплеты выполняются под управлением браузера и не имеют никакого доступа к локальным ресурсам компьютера. Однако они способны взаимодействовать с расширениями сервера CGI и ISAPI, а также читать файлы с того сервера Web, с которого они были загружены. Это несколько увеличивает выигрыш от применения аплетов Java при создании приложений для Интернета.

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

Элементы управления ActiveX

Элементы управления ActiveX можно использовать как на стороне сервера, так и на стороне клиента. В последнем случае их применяют для решения тех же задач, что и аплеты Java. Дополнительно они предоставляют неограниченный доступ к ресурсам локального компьютера.

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

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

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

Заметим, что если Вы разрабатываете элементы управления ActiveX для сервера Web, то их можно не подписывать. Эти модули не загружаются клиентами, а выполняются непосредственно на сервере.

Проблемы с реализацией клиентской активности

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

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

По возможности не обременяйте посетителей загрузкой разного рода клиентских программ, особенно больших. Если для того чтобы сделать покупки посетитель столкнется с необходимостью загрузить, например, приложение размером 2 Мбайт, весьма вероятно, что он решит поискать тот же товар в другом Интернет-магазине.

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

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

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

Что же касается клиентских сценариев VB Script, то мы не рекомендуем их применять вовсе. Создав с их помощью в сети Интернет электронный магазин, Вам заранее придется отказаться от посетителей, использующих, например, браузер Netscape Navigator. А таких весьма много.

Аплеты Java тоже способны вызвать проблемы, связанные с совместимостью, а также с тем, что пользователи отключают их загрузку при настройке браузера. И уж, конечно, еще больше сложностей будет с самодельными органами управления ActiveX. Вы, естественно, можете средствами соответствующего модуля заставить их работать под управлением браузера Netscape Navigator, но Вам придется еще убедить пользователей в безопасности их загрузки.

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

Интеграция серверов Web и SQL Server

В нашей книге мы рассмотрим использование приложений Web с сервером Microsoft SQL Server, однако многое из сказанного можно применить и к другим серверам баз данных, вместе с которыми поставляются драйверы ODBC для операционной системы Microsoft Windows.

Что же касается Microsoft SQL Server, то для него разработан целый набор интерфейсов и средств доступа. Мы расскажем, как использовать некоторые из них для интеграции SQL Server и сервера Web, выполненного на базе Microsoft Internet Information Server.

Программный интерфейс DB Library

Программный интерфейс DB Library представляет собой естественный интерфейс SQL Server, реализованный как набор функций. В документации Microsoft не рекомендует применять этот интерфейс, так как вместо него гораздо удобнее пользоваться другими, о которых мы расскажем далее. Фактически в новой версии SQL Server этот интерфейс оставлен только для совместимости с разработанными ранее приложениями.

Программный интерфейс ODBC

Программный интерфейс ODBC создан специально для доступа к реляционным базам данных. Это универсальный интерфейс, доступный не только в SQL Server, но и при работе с другими (в том числе нереляционными) базами данных.

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

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

Заметим, что программный интерфейс ODBC выполнен как набор функций. Поэтому он непосредственно доступен только из программ, составленных на традиционных языках программирования, таких, как С++. Следовательно, этот интерфейс можно использовать при взаимодействии сервера Web с базами данных только через расширения CGI и ISAPI. Технология ASP не позволяет обращаться непосредственно к интерфейсу ODBC, так как серверные сценарии способны вызывать интерфейсы объектов COM только посредством механизма автоматизации (известным ранее как OLE Automation).

Объектный интерфейс Remote Data Object

Современные технологии Microsoft в области Интернета основаны не на программных интерфейсах — Win32 или ODBC, а на объектных интерфейсах, доступных в модели компонентных объектов COM.

Упрощенно такую модель можно представить в виде набора интерфейсов, реализующих методы и свойства. Проведя аналогию между моделью компонентных объектов COM и обычными классами языка программирования C++, можно сказать, что методы соответствуют функциям — членам класса, а свойства — переменным, определенным в классе. На самом деле свойства в модели компонентных объектов COM тоже реализуются через функции, однако суть дела от этого не меняется. Свойства используются преимущественно для хранения данных, а методы — для выполнения операций над данными или другими объектами. Подробнее обо всем этом мы расскажем в главе, посвященной разработке и использованию элементов управления ActiveX.

Теперь вернемся к интерфейсам SQL Server.

Специально для упрощения доступа к SQL Server из приложений Microsoft Visual Basic и Visual Basic for Applications разработан объектный интерфейс Remote Data Object (RDO). Он реализует все основные возможности интерфейса ODBC, но не применяется при разработке приложений Web. Мы его упомянули для полноты изложения.

Объектный интерфейс OLE DB

Другой объектный интерфейс, разработанный для предоставления доступа к базам данных, называется OLE DB. Фактически OLE DB представляет собой открытый стандарт, предназначенный для организации универсального доступа к базам данных. Причем здесь имеются в виду не только реляционные БД, но и нереляционные, такие, как серверы почты, базы данных на мэйнфреймах с методами доступа IMS, VSAM и т. д.

Компоненты OLE DB состоит из трех элементов: провайдера (provider), потребителя (consumer) и служебного элемента, выполняющего обработку и передачу данных.

В роли потребителя могут выступать приложения, составленные на языке программирования C++, или объекты ADO, о которых мы расскажем позже. Такие приложения получают доступ к базам данных посредством объектного интерфейса OLE DB.

Задача провайдера OLE DB — реализовать интерфейс OLE DB. В составе OLE DB поставляются провайдеры для интерфейсов ODBC, для текстовых файлов и некоторые другие. Пользуясь провайдером ODBC, потребители интерфейса OLE DB могут получить доступ к базам данных через драйвер ODBC.

Объектный интерфейс OLE DB не реализует механизм автоматизации. Поэтому Вы сумеете задействовать OLE DB только в расширениях CGI и ISAPI сервера Web, но не в страницах ASP (строго говоря, к объектам OLE DB можно обращаться через интерфейс ADO, о котором мы расскажем ниже). Тем не менее, интерфейс OLE DB иногда удобнее интерфейса ODBC, особенно в тех случаях, когда сервер Web должен обращаться к нереляционным базам данных. Он рекомендуется как средство для создания системных утилит, работающих с базами данных, а также для создания инструментов для разработки приложений.

Объектный интерфейс ActiveX Data Objects

Объектный интерфейс ActiveX Data Objects (ADO) построен на основе интерфейса OLE DB. Модель ADO представляет собой набор объектов и значительно упрощает разработку приложений с базами данных, так как позволяет использовать высокоуровневые средства разработки и серверные сценарии.

Это возможно, в частности, потому, что объекты ADO реализуют средства автоматизации. В результате интерфейс ADO доступен из приложений, составленных с применением целого спектра инструментальных средств, таких, как ASP, C++, Visual Basic, Visual Basic for Applications, Java и т. д.

Для нас сейчас важнее всего то, что интерфейс ADO доступен из серверных сценариев, размещенных в страницах ASP на сервере Microsoft Internet Information Server. Это позволяет организовать очень простой и наглядный интерфейс приложения Web с базой данных, исключающий необходимость программирования на таких сложных языках, как C++.

Разумеется, объекты ADO доступны и из программных расширений сервера Web типа программ CGI и приложений ISAPI, однако нас будет интересовать в первую очередь именно связь страниц ASP с базами данных через объекты ADO.

[Назад] [Содержание] [Дальше]