Предисловие
Я очень рад тому, что книга Компьютерные сети и Internet благожелательно встречена читателями. Она не только используется в преподавании курсов по сетям в сотнях школ США, но и, по отзывам многих специалистов, широко применяется на практике. Поступают также сообщения об удачных переводах книги на иностранные языки. Этот успех особенно радует в связи с тем, что рынок заполнен литературой по сетям. Настоящая книга отличается широтой охвата, продуманной организацией, описанием основополагающих принципов, сосредоточением на Internet и изобилием дополнительного материала для студентов и преподавателей на CD-ROM и Web-узле:
http://www.netbook.cs.purdue.edu
Новое издание было полностью пересмотрено и обновлено, добавлены три новые главы (3, 14 и 25), появилось много новых разделов и свыше 80 дополнительных элементов словаря терминов. CD-ROM и Web-узел также были реорганизованы и дополнены.
Новые главы были написаны в ответ на пожелания преподавателей и читателей. Глава 3 позволяет быстро ознакомиться с сетевыми приложениями и программированием. В ней описано, как создавать приложения, работающие по Internet, не зная соответствующих технологий или средств протокола, представлен упрощенный API-интерфейс (его исходный код может быть получен из дополнительных источников), а также приведены примеры приложений Internet, в которых этот API-интерфейс применяется для обмена данными. Даже те читатели, которых не интересуют вопросы программирования, смогут оценить, какой широкий набор функциональных средств может быть реализован с помощью небольшого числа программных процедур.
Глава 14 написана в ответ на пожелания тех читателей, которые хотят больше узнать о сетях с установлением логического соединения. В ней рассматриваются принципы установления логического соединения, и в качестве примера применяется протокол ATM. Описаны принципы работы этого протокола, и приведены подробные сведения о таких особенностях его реализации, как коммутация меток, дана оценка этой технологии и обсуждается, почему разработчики протокола ATM не смогли осуществить амбициозные цели этого проекта.
Глава 25 отвечает на запросы читателей, желающих ознакомиться с маршрутизацией в Internet и соответствующими протоколами маршрутизации. В этой главе описана статическая и автоматическая маршрутизация; рассматривается понятие автономной системы и анализируются протоколы RIP, OSPF и BGP. Исследуется сложная проблема построения маршрута групповой рассылки.
Материалы книги позволяют получить наиболее полный ответ на вопрос: как работают локальные и объединенные сети? В книге сделан всесторонний и полный обзор всех сетевых средств, начиная от самых низких уровней передачи данных и построения кабельных систем, и заканчивая наивысшими уровнями организации прикладного программного обеспечения. При описании каждого уровня показано, как в нем используются средства и службы нижних уровней и как он, в свою очередь, дополняет следующий уровень. Поэтому после описания принципов применения в модеме несущей для кодирования данных рассматривается использование модемов для передачи фреймов в таких системах коммутации пакетов, как Internet. Вслед за описанием принципов передачи фреймов в сетях типа Ethernet показано, как используются средства передачи для обеспечения надежного обмена данными с помощью протокола TCP. Описана также работа приложений Internet типа World Wide Web в инфраструктуре, образовавшейся на основе базовых уровней.
Книга предназначена для студентов старших курсов или аспирантов первых лет обучения, не знакомых с сетями или обладающих начальными знаниями в этой области. В книге не используются сложные математические выкладки и не предполагается наличие знаний по операционным системам. Все необходимые понятия четко разъясняются; чтобы можно было показать, как реализованы конкретные технологии, используются примеры и рисунки, а результаты анализа даются без математических доказательств.
Книга состоит из введения (главы 1-3) и четырех частей. В первой части (главы 4-6) кратко описаны основные аппаратные средства. Рассматривается понятие несущей, описаны способы ее модуляции и показано, как кодируются модемом данные для передачи. В этой части рассматривается также асинхронная посимвольная передача данных, и определены такие термины, как пропускная способность и скорость передачи, которые применяются в следующих главах.
Во второй части (главы 7-16) в основном рассматривается коммутация пакетов. Описаны преимущества использования пакетов и принципы классификации сетей, а также основные сетевые технологии и схемы кабельных систем. Кратко описаны такие понятия, как маршрутизация с учетом следующего участка маршрута, коммутация и многоуровневая организация протоколов, а также дана терминология, применяемая в каждой из этих областей. В качестве примеров рассмотрены широко применяемые сетевые технологии - Ethernet, FDDI, Token Ring, ATM и ADSL.
Третья часть (главы 17-25) посвящена протоколам Internet. Рассматривается архитектура объединенных сетей и применение маршрутизаторов, адресация объединенных сетей, привязка адресов и протоколы TCP/IP. В этой части протоколы IP, TCP, ICMP и ARP рассматриваются более подробно, что позволяет студентам понять, как описанные принципы применяются на практике. В главе 24, посвященной протоколу TCP, рассматривается важная и сложная тема надежности транспортных протоколов. В приложении 5 показано, как совместить теорию с практикой, создав домашнюю сеть, в которой несколько компьютеров подключается к Internet через один IP-адрес.
В последней части (главы 26-38) рассматриваются сетевые приложения. Часть начинается с описания модели клиент/сервер, которая применяется для обмена данными в сетевых приложениях. Далее описан API-интерфейс сокетов и приведены примеры кода клиента и сервера, в которых для обмена данными применяются сокеты. Описано преобразование имен в системе доменных имен и в таких приложениях, как электронная почта, передача файлов и просмотр Web, включая описание принципов создания динамических и активных документов с примерами, в которых используется технология CGI, языки Java и JavaScript. При описании каждой сетевой технологии рассматривается структура программного обеспечения и объясняется, как взаимодействуют клиент и сервер в целях предоставления конкретной услуги. В главе 35 рассматривается промежуточное программное обеспечение, включая процедурные и объектно-ориентированные технологии промежуточного программного обеспечения. В последних главах этой части обсуждается защита сети и использование прикладного программного обеспечения для управления сетью. Показано, как с помощью прикладного программного обеспечения достичь цели, которая может на первый взгляд показаться недостижимой: получить информацию, необходимую для инициализации применяемого программного обеспечения протокола.
Эта книга идеально подходит для вводного курса по работе с сетями продолжительностью один семестр для студентов старших курсов. Она охватывает всю тематику - от кабельных систем до приложений. Например, в процессе изучения этого курса в университете Пердью студенты еженедельно посещают лабораторные занятия для закрепления изученного материала и получения практического опыта. Ко времени окончания курса каждый студент должен знать, как используется таблица маршрутизации для перенаправления дейтаграмм IP в IP-маршрутизаторе; уметь объяснить, как дейтаграмма проходит по Internet, и описать различие между концентратором и коммутатором уровня 2; дать определение соединения по протоколу TCP и рассказать, почему Web-сервер может поддерживать сразу несколько соединений с портом 80; знать концептуальные различия между мостом и IP-маршрутизатором; вычислить длину одного бита, который проходит по сети 100BaseT; уметь объяснить, почему протокол TCP считается протоколом обмена данными без переприема, и показать различия между механизмом доступа к среде CSMA/CD, используемым в протоколе Ethernet, и схемой передачи маркеров; знать, как используется мультиплексирование в линии DSL для передачи данных с высокой скоростью.
Задачей подобного курса является широта охвата, а не глубина рассмотрения; невозможно охватить всю тему, рассматривая только отдельные технологии или понятия. Поэтому ключом к успешному изучению этого курса является высокая скорость подачи материала. Для того чтобы изучить все эти фундаментальные темы за один семестр, необходимо пройти вступительный материал первой части примерно за неделю, части с описанием локальных и объединенных сетей изучить за десять недель и оставить несколько недель на изучение части с описанием приложений и рассмотрение таких тем, как управление сетью и защита.
Преподаватели должны дать студентам понять, что нужно прежде всего освоить основные понятия и принципы: конкретные технологии могут через несколько лет устареть, а принципы останутся неизменными. Кроме того, преподаватели должны дать студентам почувствовать, насколько увлекательной является сетевая тематика.
Изучение этой книги не вызовет трудностей, но объем материала может показаться студентам слишком большим. В частности, студентам придется освоить множество новых терминов. Особенно трудными в освоении могут оказаться сетевые сокращения и профессиональные выражения; студенты не сразу привыкают к использованию правильных терминов. В приложении 1 приведен словарь терминов и сокращений, который поможет освоить терминологию.
Поскольку существенной частью любого курса должно быть приобретение практического опыта, в приложении 6 описано сетевое оборудование студенческой лаборатории университета Пердью и показано, как создать удобную площадку для проведения экспериментов с помощью недорогого оборудования. При проведении лабораторных занятий в университете Пердью в основном рассматриваются следующие два аспекта организации сетей: программирование сокетов и анализ пакетов. Семестр начинается с разработки студентами клиентского программного обеспечения для доступа к Web и извлечения данных (например, с написания программы для распечатки температуры воздуха). В главе 3 описан простой API-интерфейс, с помощью которого студенты могут создавать работоспособный код, еще не зная ничего о протоколах, адресах или сокетах. В ходе дальнейшего изучения курса студенты, безусловно, обучаются использованию API-интерфейса сокетов. В заключение они разрабатывают многопользовательский Web-сервер (с необязательной поддержкой CGI). Кроме прикладного программирования, студенты также используют лабораторное оборудование для перехвата пакетов из действующей сети и пишут программы, которые декодируют заголовки пакетов (Ethernet/IP/TCP).
Предоставление студентам доступа к сети вызывает у них энтузиазм и желание экспериментировать; наш опыт показывает, что студенты, имеющие доступ к действующей сети, лучше понимают сетевую тематику и увлекаются ею. Поэтому, если выделенный анализатор пакетов недоступен, можно настроить недорогой анализатор, установив соответствующее программное обеспечение на обычном персональном компьютере. Для студентов, не имеющих доступа к сетевым средствам, на CD-ROM представлены примеры трассировок пакетов; студенты могут писать программы для чтения трассировок и обработки пакетов так, как если бы они были перехвачены из сети.
На CD-ROM, прилагаемом к этой книге, и на Web-узле содержатся материалы, которые облегчают обучение и понимание материала. Для преподавателей на CD-ROM даны материалы курса, иллюстрации из книги, которые могут применяться в презентациях, и анимационные иллюстрации, которые могут быть использованы при изучении основных понятий. На CD-ROM содержатся также материалы, не вошедшие в книгу, в том числе фотографии сетевых кабельных систем и оборудования, а также файлы с данными, которые могут применяться в качестве исходной информации для проектов студентов.
Для того чтобы преподаватели и студенты могли найти нужную информацию, на CD-ROM предусмотрен механизм поиска по ключевым словам. После ввода термина механизм поиска находит определение из оперативного словаря терминов, а также все прочие данные, касающиеся этого термина. Кроме того, на CD-ROM содержатся ссылки на Web-узел, который постоянно обновляется. Материалам этой книги посвящены два списка рассылки; для получения общей информации читатель может присоединиться к списку рассылки [email protected], а обменяться мнениями о преподавании этого материала можно по адресу [email protected]. Чтобы присоединиться к любому из этих списков, отправьте электронное сообщение, состоящее из слова subscribe, в список с именем -request. Чтобы избежать отправки почтовым сервером по Internet многочисленных копий одного и того же сообщения, рекомендуем преподавателям установить на своем узле один локальный псевдоним для всех студентов.
Выражаю свою признательность тем, кто принимал участие в подготовке этого издания. Деннис Брайлоу (Dennis Brylow) и Джон Лин (John Lin) прочитали корректуру глав всей книги. Дженнифер Зайцер (Jennifer Seitzer), Абдулла Абонамах (Abdullah Abonamah) и Джордж Варгезе (George Varghese) рецензировали предыдущее издание и сделали ряд ценных замечаний. Майк Эвангелиста (Mike Evangelista) разработал код клиентского и серверного приложений для главы 3, а также API-интерфейс; он перенес API на платформы Linux, Solaris и Windows. Ральф Дром (Ralph Droms) подготовил CD-ROM и поддерживает в актуальном состоянии материалы на Web-сервере. Джим Гриффин (Jim Griffioen) просмотрел черновики трех новых глав и предложил внести важные дополнения, а также некоторые технические изменения. Хочу особо поблагодарить свою жену и партнера, Крис, которая тщательно отредактировала книгу, внесла полезные предложения, чем намного ее улучшила.
Дуглас Э. Камер
январь 2001 года
Об авторе
Доктор Дуглас Камер (Douglas Comer) - признанный в мире специалист по протоколу TCP/IP и Internet. Он стоял у истоков Internet и внес огромный вклад в развитие и становление глобальной сети в конце 70-х и начале 80-х годов XX века. Он был членом архитектурного совета Internet (Internet Architecture Board, IAB) - группы специалистов, определявших стратегию развития глобальной сети. Дуглас также являлся председателем технического и членом исполнительного комитета CSNET.
Мистер Камер консультирует различные компании по вопросам разработки и реализации сетей, а также проводит по всему миру семинары по протоколу TCP/IP и созданию сетей на его основе. Его лекции рассчитаны как на профессионалов, так и на рядовых пользователей Internet. Дуглас написал операционную систему Xinu и создал собственную реализацию протокола TCP/IP. Все это он отразил в своих книгах. Написанное им программное обеспечение используется во многих коммерческих продуктах.
Мистер Камер - профессор компьютерных наук университета Пердью (Purdue University), где он преподает и занимается научно-исследовательской работой в области локальных и глобальных компьютерных сетей и операционных систем. Кроме написания серии научно-технических книг, ставшими бестселлерами во всем мире, Дуглас редактирует североамериканский журнал Software - Practice and Experience. Мистер Камер является также действительным членом ассоциации ACM (Association of Computing Machinery - Ассоциация пользователей вычислительных машин). Дополнительную информацию о нем вы можете получить в Internet по адресу: http://www.cs.purdue.edu/people/comer.
Мнение специалистов по поводу книги "Компьютерные сети и Internet"
"Это - одна из лучших прочитанных мной книг. Спасибо."
Гокхан Мутлу (Gokhan Mutlu), университет Ege, Турция
"Превосходная книга не только для начинающих, но и для профессионалов, содержащая все необходимые сведения и хорошо написанная."
Джон Лин (John Lin), Bell Laboratories
"Потрясающая широта охвата."
Джордж Варгезе (George Varghese), Калифорнийский университет, Сан-Диего
"Я буквально не мог оторваться, пока не прочитал ее до конца. Непревзойденная книга."
Лалит Й. Раджу (Lalit Y. Raju), региональный технический колледж, Индия
"Миниатюрный Web-сервер, описанный в главе 3, просто бесподобен. Читатели будут от него в восторге."
Деннис Брайлоу (Dennis Brylow), университет Пердью
"Несмотря на обилие сокращений, характерное для сетевых технологий, эта книга не вызывает растерянности. Камер - превосходный писатель, который умело вводит и объясняет терминологию. В книге рассматривается весь перечень вопросов организации сетей, начиная от технических средств и заканчивая Web. Ее вполне можно отнести к разряду выдающихся книг."
Дженнифер Зайцер (Jennifer Seitzer), Дейтонский университет