james f. kurose, keith w. ross · Что такое протокол? 26 Несколько...

700
James F. Kurose, Keith W. Ross Computer Networking A Top-Down Approach Featuring the Internet Second Edition Boston San Francisco Ney York London Toronto Sydney Tokio Singapore Madrid Mexico City Munich Paris Cape Town Hong Kong Montreal

Upload: others

Post on 01-Jul-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

  • James F. Kurose, Keith W. Ross

    Computer Networking A Top-Down Approach Featuring the Internet

    Second Edition

    Boston San Francisco Ney York London Toronto Sydney Tokio Singapore Madrid

    Mexico City Munich Paris Cape Town Hong Kong Montreal

  • Джеймс Ф. Куроуз, Кит В. Росс

    Компьютерные сети Многоуровневая архитектура Интернета

    2-е издание

    М о с к в а - С а н к т - П е т е р б у р г - Н и ж н и й Н о в г о р о д - В о р о н е ж Р о с т о в - н а - Д о н у • Е к а т е р и н б у р г - С а м а р а - Н о в о с и б и р с к

    Киев - Х а р ь к о в - М и н с к 2004

  • ББК 32.988.02я7 УДК 681.324(075) К93

    Куроуз Дж., Росс К.

    К93 Компьютерные сети. 2-е изд. — СПб.: Питер, 2004. — 765 с: ил.

    ISBN 5-8046-0093-1

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

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

    ББК 32.988.02я7 УДК 681.324(075)

    Права на издание получены по соглашению с Addison-Wesley Longman.

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

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

    © 2003 by Pearson Education, Inc. ISBN 0-201-97699-4 (англ.) © Перевод на русский язык, ЗАО Издательский дом «Питер», 2004 ISBN 5-8046-0093-1 © Издание на русском языке, оформление, ЗАО Издательский дом «Питер», 2004

  • Краткое содержание

    Об авторах 13

    Предисловие 14

    ГЛАВА 1. Компьютерные сети и Интернет 21

    ГЛАВА 2. Прикладной уровень 94

    ГЛАВА 3-Транспортный уровень 194

    ГЛАВА 4. Сетевой уровень и маршрутизация 300

    ГЛАВА 5- Канальный уровень и локальные сети 430

    ГЛАВА 6. Мультимедиа в компьютерных сетях...., 536

    ГЛАВА 7. Безопасность в компьютерных сетях 622

    ГЛАВА 8. Сетевое администрирование 691

    Ссылки 721

    Алфавитный указатель 753

  • Содержание

    Об авторах -- 13 Джеймс Куроуз 13 Кит Росс 13

    Предисловие -- 14 Новое во втором издании 14 Требования к аудитории 15 Уникальность книги 15

    Подход «сверху вниз» 15 Ориентация на Интернет 16 Упор на основополагающие принципы 17 Web-сайт 17

    Педагогические аспекты 18 История, принципы и практика 18 Интервью 19 Преподавателям 19 Порядок изложения материала 19 Последнее замечание 20

    Благодарности 20 От издателя перевода 20

    ГЛАВА 1. Компьютерные сети и Интернет 21

    Что такое Интернет? 22 Структура Интернета 22 Интернет с точки зрения обслуживания 25 Что такое протокол? 26 Несколько полезных ссылок 29

    Периферия компьютерных сетей 30 Оконечные системы, клиенты и серверы 30 Службы с установлением и без установления соединения 32

    Ядро компьютерных сетей 35 Коммутация каналов и коммутация пакетов 36 Передача сообщений 45

  • Доступ к сети и ее физическая среда 49 Доступ к сети 50 Физическая среда передачи 55

    Интернет-провайдеры и магистрали Интернета 59 Задержки и потери данных в сетях с коммутацией пакетов 61

    Виды задержек 61 Задержка ожидания и потеря пакетов 64 Задержки и маршруты в Интернете 66

    Уровни протоколов и модели их обслуживания 68 Многоуровневая структура 68 Стек протоколов Интернета 72 Сетевые устройства и уровни коммуникационной модели 75

    История компьютерных сетей и Интернета 76 Развитие коммутации пакетов: 1961-1972 76 Возникновение новых компьютерных сетей и Интернета: 1972-1980 77 Распространение компьютерных сетей: 1980-1990 79 Распространение Интернета: 1990-е 80 Новейшие разработки 81

    Резюме 82 Дальнейшие планы 83 Вопросы и задания для самостоятельной работы 84 Упражнения 85 Дополнительные вопросы и задания 90 Интервью 91

    ГЛАВА 2. Прикладной уровень 94

    Принципы работы протоколов прикладного уровня 95 Протоколы прикладного уровня 95 Службы, необходимые приложению 100 Службы протоколов транспортного уровня 102 Интернет-приложения, рассматриваемые в этой книге 105

    Web и HTTP 105 Обзор HTTP 106 Постоянные и непостоянные соединения 108 Формат HTTP-сообщения 111 Взаимодействие пользователя с сервером 116 Метод GET с условием 118 Область применения HTTP 119

    Передача файлов по протоколу FTP 119 Электронная почта 122

    SMTP 125 Сравнение SMTP и HTTP 127 Форматы сообщений электронной почты и MIME 128 Протоколы доступа к электронной почте 132

    Служба трансляции имен Интернета 137 Функции DNS 137 Общие принципы функционирования DNS 139 DNS-записи 146 DNS-сообщения 147

  • Программирование ТСР-сокетов 148 Взаимодействие процессов при помощи ТСР-сокетов 149 Пример приложения клиент/сервер на языке Java 151

    Программирование UDP-сокетов 157 Разработка простого web-сервера 163

    х Распределение ресурсов 166 Web-кэширование 167 Совместное кэширование 171 Сети распределения ресурсов 172 Одноранговое разделение файлов 175

    Резюме 183 Вопросы и задания для самостоятельной работы 183

    Упражнения 185 Дополнительные вопросы и задания 189 Задания по программированию 190 Интервью 192

    ГЛАВА 3-Транспортный уровень 194

    Службы транспортного уровня 194 Взаимодействие между транспортным и сетевым уровнями 196

    Транспортный уровень в Интернете 197 Мультиплексирование и демультиплексирование 199 Протокол UDP — передача без установления соединения 205

    Структура UDP-сегмента 209 Контрольная сумма UDP-сегмента 209

    Принципы надежной передачи данных 211 Создание протокола надежной передачи данных 212 Протоколы надежной передачи данных с конвейеризацией 221 Возвращение на N пакетов назад 225 Выборочное повторение 230

    Протокол TCP — передача с установлением соединения 236

    TCP-соединение 236 Структура TCP-сегмента 238 Время оборота и интервал ожидания 243 Надежная передача данных 245

    Контроль потока , 252 Управление TCP-соединением 255

    Принципы контролирования перегрузки 259 Причины и следствия перегрузки 259 Подходы к контролированию перегрузки 265 Контроль перегрузок в службе ABR сетей ATM 266

    Контроль перегрузок в TCP 268 Выравнивание скоростей передачи 274 Модель задержек протокола TCP 278

    Резюме 286 Вопросы и задания для самостоятельной работы 288 Упражнения 289

  • Дополнительные вопросы и задания 297 Интервью 297

    ГЛАВА 4. Сетевой уровень и маршрутизация 300

    Модели сетевого обслуживания 300 Понятие модели сетевого обслуживания 303 Происхождение дейтаграммной службы и службы

    виртуальных каналов 307 Основы маршрутизации 308

    Алгоритм маршрутизации, основанный на состоянии линий 311 Алгоритм дистанционно-векторной маршрутизации 316 Сравнение алгоритмов маршрутизации 324 Другие алгоритмы маршрутизации 325

    Иерархическая маршрутизация 326 Интернет-протокол 329

    Адресация в протоколе IPv4 330 Адресация, маршрутизация и продвижение дейтаграмм 338 Формат дейтаграммы 341 Фрагментация IP-дейтаграмм 344 Протокол ICMP 347 Протокол DHCP 348 Трансляторы сетевых адресов 351

    Маршрутизация в Интернете 354 Протоколы внутренней маршрутизации 354 Протоколы внешней маршрутизации 361

    Устройство маршрутизатора 367 Входные порты 369 Коммутационный блок 372 Выходные порты 374 Очереди 374

    Протокол IPv6 378 Формат дейтаграммы протокола IPv6 378 Новый протокол ICMP для протокола IPv6 381 Переход с IPv4 на IPv6 381

    Групповая маршрутизация 384 Групповая рассылка в Интернете и группы рассылки 385 Протокол IGMP 388 Общий случай групповой маршрутизации 392 Групповая маршрутизация в Интернете 398

    Мобильность и сетевой уровень 402 Учет мобильности в структуре сетевого уровня 402 Управление мобильной связью 4 0 4 Мобильный протокол IP 411

    Резюме 415 Вопросы и задания для самостоятельной работы 417 Упражнения 419 Дополнительные вопросы и задания 425 Задание по программированию 426 Интервью 427

  • ГЛАВА 5. Канальный уровень и локальные сети 430 Введение и терминология 431

    Службы канального уровня 432 Адаптеры 435

    Обнаружение и исправление ошибок 436 Контроль четности 438 Вычисление контрольной суммы 440 Циклический избыточный код 441

    Протоколы коллективного доступа 443 Протоколы разделения канала 446 Протоколы произвольного доступа 450 Протоколы последовательного доступа 457 Локальные сети 458

    Адресация в локальных сетях и протокол ARP 460 Адресация в локальных сетях 460 Протокол ARP 462

    Ethernet 466 Основы технологии Ethernet 467 Протокол CSMA/CD 471 Технологии Ethernet 474

    Хабы, мосты, коммутаторы 478 Хабы 479 Мосты 480 Коммутаторы 488

    Беспроводные каналы связи 492 Беспроводные локальные сети стандарта IEEE 802.11b 493 Bluetooth 500

    Протокол РРР 500 Формат кадра протокола РРР 502 Протоколы управления каналом и сетью 504

    Технология ATM 506 Основные характеристики ATM 508 Физический уровень ATM 510 Уровень ATM 511 Уровень адаптации ATM 512 IP поверх ATM 515

    Frame Relay 518 Исторический контекст 518 Сети ретрансляции кадров 519

    Резюме 523 Вопросы и задания для самостоятельной работы 525 Упражнения 526 Дополнительные вопросы и задания 533 Интервью 534

    ГЛАВА 6. Мультимедиа в компьютерных сетях 536

    Сетевые мультимедийные приложения 536 Примеры мультимедийных приложений 537 Проблемы мультимедиа в сегодняшнем Интернете 540 Развитие Интернета в направлении поддержки мультимедиа 541 Сжатие аудио- и видеоданных 543

  • Записанное потоковое аудио и видео 545 Доступ к аудио- и видеоданным через web-сервер 547 Передача мультимедиа с потокового сервера 550 Протокол RTSP 552

    Интернет-телефония 556 Недостатки обслуживания по остаточному принципу 557 Борьба с д ж и г г е р о м у получателя в аудиоприложениях 558 Восстановление после потери пакета 561 Записанное потоковое аудио и видео 565

    Протоколы для интерактивных приложений реального времени 565 RTP 566' Протокол RTCP 571 Протокол SIP 573 Стандарт Н.323 580

    За пределами остаточного принципа 581 Сценарий 1 — мегабитное аудиоприложение и FTP-приложение 583 Сценарий 2 — мегабитное аудиоприложение и высокоприоритетное

    FTP-приложение 584 Сценарий 3 — некачественное аудиоприложение и FTP-приложение 584 Сценарий 4 — два мегабитных аудиоприложения на одной линии 587

    Механизмы проведения политики и планирования 588 Механизмы планирования 588 Политика дырявого ведра 592

    Интегрированное обслуживание 5 9 5 Гарантированное качество обслуживания 597 Обслуживание с контролируемой нагрузкой 597

    Протокол RSVP 598 Сущность протокола RSVP 598 Несколько простых примеров 600

    Дифференцированное обслуживание 603 Простой сценарий дифференцированного обслуживания 604 Классификация и согласование трафика 606 Поведение на ретрансляционном участке 608 Недостатки дифференцированного обслуживания 610

    Резюме 611 Вопросы и задания для самостоятельной работы 613 Упражнения 614 Дополнительные вопросы и задания 618 Задание по программированию 618 Интервью - 619

    ГЛАВА 7- Безопасность в компьютерных сетях - - - 622

    Понятие сетевой безопасности 623 Принципы криптографии 626

    Шифрование с симметричными ключами 628 Шифрование с открытым ключом 632

    Аутентификация 637 Протокол аутентификации ар 1.0 638 Протокол аутентификации ар 2.0 638 Протокол аутентификации ар 3.0 639 Протокол аутентификации ар 3.1 640

  • Протокол аутентификации ар 4.0 640 Протокол аутентификации ар 5.0 641

    Целостность данных 644 Генерирование цифровой подписи 645 Дайджест сообщения 646 Алгоритмы хэширования 649

    Передача ключей и сертификация 650 Центр распределения ключей 650 Сертификация открытых ключей 652

    Управление доступом с помощью брандмауэров 657 Фильтрация пакетов 658 Ш л ю з ы прикладного уровня 661

    Атака и оборона 663 Сбор информации 663 Анализатор пакетов 664 Подделка IP-адресов 665 Атаки отказа в обслуживании и распределенного отказа в обслуживании ... 666 Кража соединения 667

    Безопасность на разных уровнях 668 Безопасная электронная почта 669 Протоколы SSL и TLS 674 Безопасность на сетевом уровне 678 Безопасность в беспроводных локальных сетях стандарта IEEE 802.11 ... 682

    Резюме 684 Вопросы и задания для самостоятельной работы 685 Упражнения 686 Дополнительные вопросы и задания 688 Интервью 688

    ГЛАВА 8. Сетевое администрирование 691

    Понятие сетевого администрирования 691 Инфраструктура сетевого администрирования 696 Архитектура управляющих

    Интернет-стандартов 699 Структура управляющей информации 700 База управляющей информации 703 Операции и транспортное соответствие протокола SNMP 706 Безопасность и администрирование 709

    ASN.1 712 Резюме 716

    Вопросы и задания для самостоятельной работы 717 Упражнения 717 Дополнительные вопросы и задания 718 Интервью 718

    Ссылки 721

    Алфавитный указатель 753

  • Об авторах

    Джеймс Куроуз Джим Куроуз является профессором кафедры кибернетики Массачусетского университета в Амхерсте.

    Восемь раз он получал премию Outstanding Teacher Award от Национального технологического университета. Один раз эту премию ему вручил Колледж естественных наук и математики при Массачусетском университете. В 1996 году награду Outstanding Teaching Award ему присудила Северо-Восточная ассоциация аспирантур. Он был стипендиатом General Electric и Lilly Teaching. Кроме того, ему присуждалась премия IBM Faculty Development Award.

    Доктор Куроуз является бывшим главным редактором IEEE Transactions on Communications и IEEE/ACM Transactions on Networking. Он принимает активное участие в программных комитетах IEEE Infocom, ACM SIGCOMM и ACM SIGMETRICS. Степень доктора философии в области кибернетики он получил в Колумбийском университете.

    Кит Росс Кит Росс — профессор кафедры мультимедийных коммуникаций института Eure-com. С 1985 по 1997 год он был профессором Университета Пенсильвании, где занимал должности на кафедре системного проектирования и в Школе бизнеса Уор-тона. В 1999 году он принял участие в основании Интернет-компании Wimba.com.

    Доктор Росс является автором более 50 статей и двух книг. Он работал редактором пяти крупных журналов, а также включался в комитеты программирования крупных сетевых конференций, в том числе IEEE Infocom и ACM SIGCOMM. Доктор Росс был руководителем более десятка диссертаций на степень доктора философии. В сферу его исследовательских и преподавательских интересов входят мультимедийные сети, асинхронное обучение, web-кэширование, потоковые аудио-и видеоприложения, а также моделирование трафика. Степень доктора философии он получил в Университете штата Мичиган.

    http://Wimba.com

  • Предисловие

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

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

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

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

    Уникальность книги Компьютерные сети — чрезвычайно сложный и запутанный предмет, включающий в себя множество концепций, протоколов и технологий, для новичка загадочно переплетенных между собой. Для того чтобы преодолеть трудности в освоении столь сложной системы, в учебных изданиях авторы нередко опираются на многоуровневую архитектуру сети. Это позволяет студентам последовательно изучать различные концепции и протоколы и в то же время обращаться к общей картине, чтобы получить представление о связях между концепциями. Нередко структура учебных пособий основана на семиуровневой модели OSI. Как показал наш педагогический опыт, такая структура оказывается весьма эффективной, однако мы не придерживаемся ставшего традиционным подхода, заключающегося в изучении компьютерных сетей «снизу вверх». Далее мы поясним свою точку зрения.

    Подход «сверху вниз» Под изучением сетей «снизу вверх» мы понимаем последовательное изложение материала от самого низкого, физического, уровня модели OSI к прикладному уровню. Подход «сверху вниз» предполагает противоположное направление движения: от прикладного уровня к физическому. Первым несомненным достоинством такого подхода является акцент на прикладном уровне, поскольку именно прикладной уровень представляет собой базу для развития сетевых технологий. Этот тезис был выдвинут нами при подготовке первого издания книги, и время в полной мере подтвердило нашу правоту. В то же время мы столкнулись с множеством учебных изданий, в которых сетевым приложениям отводилась далеко не первостепенная роль. Их авторы практически не уделяли внимания потребностям сетевых приложений, парадигме прикладного уровня (клиент/сервер и т. п.), интерфейсам сетевых приложений и т. д.

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

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

    Ориентация на Интернет В большинстве существующих на сегодняшний день изданий Интернет рассматривается лишь как небольшая составная часть сетевых технологий. Мы придерживаемся другого подхода, помещая Интернет в центр внимания и придавая ему функцию «отправной точки» для изучения более фундаментальных принципов построения сетей. У некоторых читателей сразу возникнет вопрос: почему Интернет, ведь существует множество сетевых технологий, например ATM? Прежде всего, наш выбор обусловлен широкой распространенностью Интернета: в последние годы термины «сетевые технологии» и «Интернет-технологии» стали синонимами. Еще 5-10 лет назад ситуация вокруг Интернета была совершенно иной. Более того, велось множество разговоров о локальных вычислительных сетях, ATM и приложениях, напрямую взаимодействующих с ATM (без применения TCP/IP). В настоящее время ситуация такова, что почти весь трафик данных, существующий в мире, приходится на Интернет и интрасети. Пожалуй, лишь коммутируемые телефонные сети на сегодняшний день сравнимы с Интернетом по распространенности. Но и эта конкуренция оказывается весьма призрачной. Производители сетевого оборудования и операторы телефонной связи готовятся к переориентации на Интернет-технологии.

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

    Поскольку наша книга основана на Интернет-технологиях, ее структурным стержнем является пятиуровневая архитектура, а не семиуровневая модель OSI. В Ин-

  • тернет-технологиях различают прикладной, транспортный, сетевой, канальный и физический уровни.

    Упор на основополагающие принципы Помимо двух ключевых фраз, отражающих суть книги (подход «сверху вниз» и Интернет), третьей ключевой фразой (точнее, словом), незримо присутствующей в структуре книги, является слово «принципы». В настоящее время сетевые технологии находятся на той стадии развития, когда можно вести речь о принципах организации различных уровней сетевых моделей. Так, например, к принципам работы транспортного уровня относятся установление и разрыв логического соединения, управление потоками данных, мультиплексирование. Принципы функционирования сетевого уровня включают маршрутизацию, то есть выбор оптимального пути передачи сообщения и передачу данных между разнородными компьютерными сетями. Главной проблемой, разрешаемой на канальном уровне, является организация множественного доступа к каналу связи. Особо стоит отметить вопросы, касающиеся безопасности компьютерных сетей, методов обеспечения конфиденциальности передаваемых данных и целостности пакетов данных; как правило, эти вопросы лежат в области криптографии. В данной книге вы найдете не только описания перечисленных проблем, но и подходы, применяющиеся для их решения.

    Web-сайт У этой книги есть расширенная и существенно более функциональная электронная версия, расположенная по адресу http://www.aw.com/kurose-ross. Этот сайт мы рекомендуем посетить всем читателям.

    • Интерактивный обучающий материал. На сайте имеются интерактивные Java-апплеты, призванные проиллюстрировать основные сетевые концепции. Здесь же можно получить доступ к программе Traceroute, позволяющей с помощью браузера прослеживать маршрут движения пакетов через Интернет. Преподаватели могут использовать эти программы в лабораторных работах. Через сайт можно также получить прямой доступ к специальным поисковым системам, предназначенным для поиска Интернет-проектов и групп новостей, темы которых соответствуют излагаемому здесь материалу. Наконец, на сайте находятся интерактивные испытательные тесты, которые помогут студентам определить уровень своей подготовки.

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

    http://www.aw.com/kurose-ross

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

    • Авторский материал для мультимедийных лекций. На сайте имеются записи лекций в формате Real-Audio, которые авторы читают своим студентам.

    Мы надеемся, что будем постоянно развивать свой сайт, публикуя на нем собственные и читательские материалы. Обновления планируются не менее чем раз в три месяца. Если у вас при посещении сайта возникнут проблемы, свяжитесь с нами по электронной почте: [email protected].

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

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

    История, принципы и практика История развития компьютерных сетей началась в конце 60-х годов прошедшего столетия и является весьма интересной и насыщенной. В этой книге мы постарались познакомить читателя с наиболее значительными историческими событиями: изобретением пакетной передачи, развитием Интернета, появлением таких сетевых гигантов, как Cisco и 3Com, и т. д. Истории сетей посвящен специальный раздел в главе 1; более краткие исторические справки вы неоднократно можете встретить в других главах книги. Несомненно, для многих читателей освещение прогресса, происходящего в сетевых технологиях, станет хорошим стимулом для изучения предмета.

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

    mailto:[email protected]

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

    Интервью В нашу книгу вошло несколько интервью, взятых у видных новаторов в области компьютерных технологий. По нашему мнению, эти интервью будут весьма полезными, поскольку позволят узнать «из первых рук» мнение высокопрофессиональных специалистов. В число наших «интервьюируемых» вошли Леонард Клейн-рок, Тим Бернерз-Ли, Салли Флойд, Боб Меткалфи, Хеннинг Шульцринн, Стивен Беллоуин и Джефф Кейз.

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

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

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

    • Ответы на вопросы и задания. Наконец, на нашем web-сайте вы найдете ответы на вопросы, задания и упражнения, находящиеся в конце каждой из глав.

    Все указанные выше материалы находятся в разделе http://www.aw.com/kurose-ross сайта.

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

    http://www.aw.com/kurose-ross

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

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

    И, разумеется, как любые авторы, мы ждем от наших читателей отзывов о книге. Для нас было огромной пользой и удовольствием получать и читать мнения, комментарии, критику студентов и преподавателей, составивших аудиторию первого издания. Мы будем признательны, если вы направите свои отзывы авторам по адресам [email protected] и [email protected].

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

    От издателя перевода Ваши замечания, предложения, вопросы отправляйте по адресу электронной почты [email protected] (издательство «Питер», компьютерная редакция).

    Мы будем рады узнать ваше мнение!

    Подробную информацию о наших книгах вы найдете на web-сайте издательства http://www.piter.com.

    mailto:[email protected]:[email protected]:[email protected]://www.piter.com

  • ГЛАВА 1 Компьютерные сети и Интернет

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

    Эта глава посвящена обзору компьютерных сетей и Интернета. Цель излагаемого материала — дать общее представление о том, что такое компьютерные сети, какие они бывают и для чего предназначаются. Мы также подробно рассмотрим составляющие компьютерных сетей, стараясь в то же время не потерять общее представление о них. Все, о чем будет сказано в этой главе, ляжет в основу дальнейшего повествования. Эта глава также может использоваться для разработки мини-курса по теме «компьютерные сети».

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

    Изучив «периферию» и «ядро» компьютерной сети, мы несколько расширим предмет рассмотрения. В поле нашего зрения окажутся такие фундаментальные явле-

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

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

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

    Интернет представляет собой всемирную компьютерную сеть, то есть сеть, связывающую в единое целое миллионы вычислительных устройств, расположенных в разных уголках земного шара. Вычислительными устройствами могут быть настольные персональные компьютеры, а также так называемые серверы, хранящие и передающие информацию, представленную в виде, например, web-страниц или сообщений электронной почты. В последнее время все чаще к Интернету подключаются такие нетрадиционные оконечные системы, как устройства PDA (Personal Digital Assistant — персональный цифровой помощник), телевизоры, мобильные компьютеры, автомобили и даже тостеры. (Тостер [519] является не единственным необычным устройством, подключенным к Интернету [17].) Так или иначе, все вышеперечисленные устройства в терминологии Интернета называют хостами, или оконечными системами. По оценкам специалистов, в январе 2002 года в Интернете насчитывалось от 100 до 500 миллионов оконечных устройств, и со временем это число экспоненциально возрастает [240].

    Оконечные системы связаны друг с другом линиями связи. Как мы увидим позже, существует большое количество различных линий связи, использующих разнообразные типы физических носителей: коаксиальные, медные, волоконно-оптические кабели, линии радиосвязи PI т. д. Линия связи определяет скорость передачи данных. Максимальную скорость передачи данных называют пропускной способностью линии и измеряют в битах в секунду.

  • Условные обозначения:

    Хост Мобильный Сервер Маршрутизатор Модем Базовая Спутниковая (или оконечная компьютер станция линия связи

    система)

    Рис. 1.1. Некоторые составные части Интернета

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

  • тизатор принимает порцию данных, передаваемую по одному из его входных каналов связи, а затем перенаправляет ее в один из своих выходных каналов связи. В терминологии компьютерных сетей передаваемые порции данных называют пакетами. Последовательность каналов связи и маршрутизаторов, через которые пакет проходит в процессе передачи, называется маршрутом, или путем, пакета в сети. Путь пакета заранее не известен и определяется непосредственно в процессе передачи. В Интернете каждой паре оконечных систем не предоставляется выделенный маршрут, а используется технология коммутации пакетов, при этом различные пары оконечных систем могут одновременно пользоваться одним и тем же маршрутом или частью маршрута. Первые сети с коммутацией пакетов, созданные в начале 70-х годов, являются «далекими предками» сегодняшнего Интернета.

    Доступ оконечных систем к Интернету осуществляется при помощи поставщиков услуг Интернета, или Интернет-провайдеров (Internet Service Provider, ISP). Интернет-провайдеры подразделяются на резидентных (например, AOL или MSN), университетских (Университет Стенфорда) и корпоративных (компания Ford Motor). Интернет-провайдер предоставляет сеть маршрутизаторов и линий связи. Как правило, Интернет-провайдеры предлагают несколько способов подключения оконечных систем к Сети: коммутируемое модемное соединение на скорости 56 Кбит/с, резидентное широкополосное подключение при помощи кабельного модема или цифровой абонентской линии (Digital Subscriber Line, DSL), высокоскоростной доступ через локальную сеть (Local Area Network, LAN), а также беспроводной доступ. Кроме того, Интернет-провайдеры осуществляют прямое подключение к сети web-сайтов. Для того чтобы обеспечить связь между удаленными пользователями, а также предоставить пользователям доступ к информации, хранящейся в Интернете, местные Интернет-провайдеры подключаются к Интернет-провайдерам национального или интернационального звена, таким как UUNet и Sprint. Последние используют высокоскоростные маршрутизаторы, соединенные оптоволоконными кабелями. Каждый из Интернет-провайдеров как нижнего, так и верхнего звеньев является административной единицей, передающей данные по протоколу IP (см. далее) и придерживающейся соглашений об именах и адресах, принятых в Интернете. Более подробно вопросы, связанные с Интернет-провайдерами и их взаимодействием, будут рассмотрены в разделе «Интернет-провайдеры и магистрали Интернета» этой главы.

    Оконечные системы, маршрутизаторы и другие «компоненты» Интернета используют протоколы, осуществляющие управление приемом и передачей информации внутри Интернета. Наиболее важными протоколами в глобальной Сети являются TCP (Transmission Control Protocol — протокол управления передачей) и IP (Internet Protocol — Интернет-протокол). Протокол IP определяет формат пакетов, передающихся между оконечными системами и маршрутизаторами. Стек основных протоколов, использующихся в Интернете, известен под названием TCP/IP. В этой главе мы начнем с сути понятия «протокол». Но помните, что это лишь начало — сетевым протоколам посвящена большая часть книги.

    То, что мы обычно называем словом «Интернет», — это так называемый открытый Интернет. Кроме общедоступного Интернета существует также множество

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

    С точки зрения технологий и развития существование Интернета обеспечивается созданием, проверкой и внедрением Интернет-стандартов. Эти стандарты вырабатываются проблемной группой разработок для Интернета (Internet Engineering Task Force, IETF). Документы, создаваемые IETF [237], носят название RFC (Requests For Comments — предложения для обсуждения). Изначально подобные документы предназначались для разрешения архитектурных проблем, возникавших в сетях-предшественницах Интернета. Со временем ситуация сложилась так, что, формально не обладая статусом стандарта, документы RFC стали стандартами де-факто. В настоящее время эти документы составляются весьма точно и детально, описывая такие протоколы, как TCP, IP, HTTP (для web) и SMTP (для электронной почты). Существует более 3000 различных документов RFC.

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

    • Интернет позволяет распределенным приложениям, работающим на оконечных системах, осуществлять обмен данными друг с другом. В число таких приложений входят удаленный терминал, электронная почта, средства навигации в web, средства передачи аудио- и видеоданных, Интернет-телефония, сетевые компьютерные игры, средства однорангового (Peer-to-Peer, Р2Р) обмена файлами и т. д. Следует подчеркнуть, что web — это не отдельная компьютерная сеть, а одно из множества распределенных приложений, использующих предоставляемые Интернетом службы связи.

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

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

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

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

    Итак, вы только что познакомились с двумя описаниями Интернета. Однако возможно, что эти описания не только не дали вам ответа на вопрос, что такое Интернет, но и породили множество новых вопросов. Что такое коммутация пакетов, стек протоколов TCP/IP и служба на основе соединений? Что такое маршрутизаторы? Какие виды каналов связи используются в Интернете? Что представляет собой распределенное приложение? Если сейчас мы не прояснили этого для вас, не стоит отчаиваться — чуть позже вы обязательно получите наглядное представление о каждом из перечисленных понятий.

    Что такое протокол? Теперь, когда мы имеем общее представление о том, что такое Интернет, давайте обратимся к другому центральному понятию сетевых технологий — понятию протокола. Что такое протокол? Для чего он нужен? Ответы на эти вопросы вы найдете ниже.

    Аналогия из мира людей Для того чтобы понять, что означает слово «протокол» в контексте компьютерных сетей, давайте рассмотрим ситуацию, далекую от вычислительной техники. Каждый человек, находясь во взаимодействии с другими людьми, всегда следует некоторым стереотипам общения. Например, ситуацию, когда один человек обращается к другому для того, чтобы узнать, который час, графически можно представить так, как это сделано на рис. 1.2. «Человеческий протокол» (обычно называемый правилами хорошего тона) гласит, что для установления контакта человеку необходимо поздороваться с собеседником и получить от него ответное приветствие. Этому начальному фрагменту общения соответствуют первые две стрелки с надписями «Привет!» на рисунке. В случае, если потенциальный собеседник не настроен на общение, он, вероятно, выдаст другой ответ, например: «Не беспокойте меня» или «Я не говорю по-русски». Тогда инициатору общения следует прекратить попытки контакта с собеседником. Возможна также ситуация, когда собесед-

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

    Время Время Время Время

    Рис. 1.2. Протоколы общения между людьми и между компьютерами

    Давайте рассмотрим еще один пример аналогии «человеческих» и сетевых протоколов. Предположим, что вы находитесь на лекции в учебном заведении (пусть это будет лекция по компьютерным сетям!). Преподаватель не вполне понятно для вас излагает материал о протоколах, а затем останавливается и обращается к аудитории: «Не желает ли кто-нибудь задать вопрос?» Последняя фраза является сообщением, которое передается преподавателем и принимается всеми (кто еще не спит) студентами. Вы поднимаете руку, тем самым посылая сообщение преподавателю (хотя и в менее явной форме). Преподаватель подтверждает получение

  • вашего сообщения, говоря: «Да?» (передавая сообщение, поощряющее вашу любознательность — преподаватели любят, когда им задают вопросы). Ваше обращение к преподавателю с вопросом и его ответ также являются сообщениями, передаваемыми в процессе общения. Мы снова видим, что в основе описанного протокола вопросов и ответов лежат передача и прием сообщений, а также набор определенных договором или соглашением действий, предпринимаемых при передаче и приеме этих сообщений.

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