Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
45
32.973-018.2
93
James F. Kurose
Keith W. Ross
Computer Networking: A Top-Down Approach
Authorized translation from the English language edition, entitled
COMPUTER NETWORKING; A TOP-DOWN APPROACH, 6th Edition;
ISBN 0132856204 by KUROSE, JAMES F.; and by ROSS, KEITH W.;
published by Pearson Education, Inc, publishing as Addison-Wesley.
Copyright © 2013 by Pearson Education, Inc. All rights reserved. No part of this book
may be reproduced or transmitted in any form or by any means, electronic or mechanical,
including photocopying, recording or by any information storage retrieval system,
without permission from Pearson Education, Inc.
.
!
" ! ! #
!
!
, !$ %
, &
#
" , %
'
! Pearson Education, Inc.
,
.
93 &
: " / " $
$
,
(. — 6-
. — ) : *
«+», 2016. — 912 . — ()
-
" &
" !
).
ISBN 978-5-699-78090-7
#$
#$-
&
"
$
"
$
*
.
> !
&
" , &
$ ,
" "
$
$,
!-
"' $!
$
" "
$
. >-
!
! !. '
$ "
& !" – $"
, , #
$- . $$
-
$ " !
!
,
-
, ! & !
" ! #
".
!
,
& $ -
$
".
!$
,
$ ! " &
" — $
.
004.45
32.973-018.2
©
.,
, 2015
ISBN 978-5-699-78090-7 © . « «!», 2016
ОГЛАВЛЕНИЕ
Предисловие ..................................................................................................................... 12
Что нового в данном издании.............................................................................. 12
Целевая аудитория.................................................................................................. 14
Что особенного в этой книге? ............................................................................. 14
Нисходящий подход ............................................................................................... 14
Интернет как центральная тема книги ............................................................ 16
Обучение принципам функционирования сетей ......................................... 16
Примеры к книге...................................................................................................... 17
Педагогические аспекты ....................................................................................... 18
Взаимосвязи между главами ............................................................................... 18
Благодарности .......................................................................................................... 19
Глава 1. Компьютерные сети и Интернет ............................................................... 23
1.1. Что такое Интернет ......................................................................................... 24
1.1.1. Внутреннее устройство Интернета................................................... 25
1.1.2. Описание служб....................................................................................... 28
1.1.3. Что такое протокол?............................................................................... 30
1.2. Периферия сети ................................................................................................ 33
1.2.1. Сети доступа.............................................................................................. 36
1.2.2. Физические среды передачи данных ............................................... 45
1.3. Ядро сети............................................................................................................. 49
1.3.1. Коммутация пакетов .............................................................................. 49
1.3.2. Коммутация каналов.............................................................................. 55
1.3.3. Сеть сетей ................................................................................................... 61
1.4. Задержки, потери и пропускная способность в сетях
с коммутацией пакетов .......................................................................................... 65
1.4.1. Обзор задержек в сетях с коммутацией пакетов ......................... 66
1.4.2. Задержка ожидания и потеря пакетов............................................. 71
1.4.3. Общая задержка....................................................................................... 74
1.4.4. Пропускная способность в компьютерных сетях........................ 77
1.5. Уровни протоколов и модели их обслуживания................................... 81
1.5.1. Многоуровневая архитектура............................................................. 81
1.5.2. Инкапсуляция .......................................................................................... 89
1.6. Атаки на сети ..................................................................................................... 91
1.7. История компьютерных сетей и Интернета ........................................... 97
1.7.1. Развитие коммутации пакетов: 1961–1972.................................... 97
1.7.2. Развитие частных сетей и Интернета: 1972–1980....................... 99
1.7.3. Рост компьютерных сетей: 1980–1990 .......................................... 100
1.7.4. Интернет-взрыв: 1990-е ...................................................................... 102
1.7.5. Новое тысячелетие ............................................................................... 103
1.8. Заключение ......................................................................................................105
План этой книги................................................................................................ 106
5
Оглавление
Джеймс Куроуз
Кит Росс
ПРЕДИСЛОВИЕ
12
Предисловие
13
Предисловие
Целевая аудитория
Данная книга предназначена для изучения на вводном курсе по ком-
пьютерным сетям. Ее можно использовать как на факультете информа-
тики, так и на электротехническом. Что касается языков программиро-
вания, читатель должен иметь представление о C, C++, Java или Python
(эти знания потребуются всего в нескольких разделах). Хотя эта книга
более имеет более детальный и аналитический характер, чем другие ввод-
ные тексты по компьютерным технологиям, в ней почти не используются
математические концепции, выходящие за рамки курса старших классов.
Мы специально старались обходиться без сложного математического ана-
лиза, теории вероятности или стохастических процессов (хотя и даем не-
сколько таких заданий для студентов, разбирающихся в этих темах). Соот-
ветственно, книга подходит для изучения на старших курсах университета
и на первых курсах аспирантуры. Кроме того, она должна быть полезна для
практикующих специалистов, работающих в сфере телекоммуникаций.
Нисходящий подход
Когда мы выпустили первое издание этой книги 12 лет назад, мы
применили новый на тот момент подход, рассказав о компьютерных се-
14
Предисловие
Обучение принципам
функционирования сетей
Две уникальные черты книги — нисходящий подход к изложению
материала и акцент на Интернете — фигурировали в заголовках ее из-
даний. Если бы мы могли вместить в подзаголовок и третью фразу, то,
вероятно, в ней было бы слово «принципы». Сфера компьютерных сетей
уже достаточно зрелая, в ней можно выделить ряд фундаментальных
проблем. Например, на транспортном уровне примерами таких проблем
являются: обеспечение надежной коммуникации на базе ненадежно-
го сетевого уровня, установление/разрыв соединения и рукопожатие,
управление перегрузками и потоком данных, а также мультиплексиро-
вание. Две фундаментальных проблемы сетевого уровня — это нахожде-
16
Предисловие
Примеры к книге
Читателю предоставляется доступ к сайту с дополнительными мате-
риалами к книге по адресу http://eksmo.ru/upload/Networks_Primers.rar.
В загруженном архиве вы найдете:
• Ссылки на Java-апплеты. Вы найдете файл со ссылками на Java-
апплеты, необходимыми для выполнения упражнений из книги.
• Презентации PowerPoint. Для всех девяти глав мы подготовили пре-
зентации PowerPoint. В 6-м издании все слайды обновлены. В них
подробно рассматривается материал каждой главы. На слайдах при-
меняется графика и анимация (а не только скучные маркированные
списки), что помогает сделать материал более интересным и визу-
ально привлекательным. Мы предоставляем оригиналы презента-
ций, чтобы вы могли дорабатывать их в соответствии с деталями
вашего курса. Некоторые слайды были предоставлены другими пре-
подавателями, читавшими нашу книгу.
• Решения задач для самостоятельной работы. Мы предоставляем
справочник с решениями к задачам для самостоятельной работы, за-
даниям по программированию и лабораторным работам Wireshark.
Как было указано выше, в первых пяти главах книги мы добавили
множество новых задач.
17
Предисловие
Педагогические аспекты
Оба автора посвятили преподаванию теории компьютерных сетей
более чем по 20 лет каждый. Вместе мы вкладываем в эту книгу более
50 лет педагогического опыта, за которые мы успели обучить тысячи
студентов. На протяжении всего этого времени мы активно занимались
исследованиями в области компьютерных технологий (Джим и Кит по-
знакомились еще в 1979 году, когда учились в магистратуре по курсу
компьютерных сетей у Миши Шварца). Полагаем, такой опыт позво-
ляет нам уверенно судить о состоянии и перспективах развития ком-
пьютерных сетей. Тем не менее мы старались не переполнять эту книгу
материалами, которые были бы связаны с нашими собственными иссле-
довательскими проектами. Если они вас интересуют, вы можете ознако-
миться с ними на персональном сайте каждого из авторов. Итак, вы дер-
жите в руках книгу о современных компьютерных сетях — технологиях
и протоколах, а также о базовых принципах, лежащих в их основе. Мы
также уверены, что курс компьютерных сетей может быть увлекатель-
ным как для студента, так и для преподавателя. Надеемся, что юмор,
живые аналогии и примеры из жизни, которые встретятся вам на стра-
ницах этой книги, сделают материал значительно интереснее.
18
Предисловие
Благодарности
Мы начали работу над этой книгой еще в 1996 году, и с тех пор мно-
гие люди оказали нам неоценимую помощь, дали массу ценных рекомен-
даций о том, как лучше всего организовать и читать университетский
курс о компьютерных сетях. Мы хотим сказать БОЛЬШОЕ СПАСИБО
всем, кто помог нам — от вычитки первых черновиков вплоть до пятого
издания. Мы также очень благодарны сотням читателей со всего мира —
студентам, преподавателям, специалистам, — которые присылали нам
комментарии о первых изданиях книги и пожелания относительно но-
вых изданий. Отдельно хотелось бы поблагодарить следующих людей:
19
Предисловие
20
Предисловие
21
Предисловие
23
Глава 1
24
Компьютерные сети и Интернет
25
Глава 1
26
Компьютерные сети и Интернет
27
Глава 1
28
Компьютерные сети и Интернет
29
Глава 1
30
Компьютерные сети и Интернет
Аналогия с человеком
31
Глава 1
Сетевые протоколы
32
Компьютерные сети и Интернет
33
Глава 1
И С ТО Р И Я
34
Компьютерные сети и Интернет
35
Глава 1
36
Компьютерные сети и Интернет
37
Глава 1
38
Компьютерные сети и Интернет
39
Глава 1
40
Компьютерные сети и Интернет
41
Глава 1
варианты доступа с разной скоростью, при этом, чем выше скорость, тем
больше цена. Средняя скорость передачи входящих данных для поль-
зователей технологии FTTH в США составляла в 2011 году 20 Мбит/с
(по сравнению с 13 Мбит/с для сетей с кабельным доступом и менее чем
5 Мбит/с для технологии DSL)176.
42
Компьютерные сети и Интернет
43
Глава 1
44
Компьютерные сети и Интернет
45
Глава 1
Как было указано выше, витая пара широко используется и при ста-
ционарном подключении к Интернету. Также упоминалось, что техно-
логия коммутируемого доступа через модем позволяет передавать дан-
ные по кабелю «витая пара» со скоростью до 56 Кбит/с. Кроме того, мы
видели, что технологии DSL (digital subscriber line) используют витую
пару, обеспечивая для абонентов доступ в Интернет на скоростях в де-
сятки мегабит в секунду (когда пользователи находятся недалеко от мо-
дема Интернет-провайдера).
46
Компьютерные сети и Интернет
Коаксиальный кабель
Оптоволоконный кабель
47
Глава 1
Наземные радиоканалы
Спутниковые радиоканалы
48
Компьютерные сети и Интернет
50
Компьютерные сети и Интернет
52
Компьютерные сети и Интернет
53
Глава 1
55
Глава 1
57
Глава 1
Рис. 1.14. При частотном разделении каждый канал постоянно занимает свою
полосу частот. При временнóм канал периодически использует всю полосу
пропускания (в выделенные ему временные слоты)
60
Компьютерные сети и Интернет
61
Глава 1
62
Компьютерные сети и Интернет
рует для себя отправку и получение пакетов, если у одного из его про-
вайдеров проблемы на линии связи.
64
Компьютерные сети и Интернет
прямую, либо через точки обмена трафиком303. Однако из-за того, что
подключиться ко многим сетям доступа можно только через провайдера
первого уровня, Google также устанавливает соединение с провайдера-
ми первого уровня и платит им за трафик, которым с ними обменива-
ется. Создавая собственные сети, провайдер контента не только сокра-
щает расходы, связанные с подключением провайдера более высокого
уровня, но также получает возможность оптимизировать управление
своими сервисами, предоставляемыми конечным пользователям. Более
подробно инфраструктуру сети Google мы опишем в разделе 7.2.4.
65
Глава 1
Виды задержек
66
Компьютерные сети и Интернет
Пакет может быть передан в линию связи лишь при условии, что по
ней не передаются или не находятся в очереди другие пакеты; если же
линия связи в данный момент занята либо есть ожидающие в очереди
пакеты, то в нее встают и вновь прибывающие.
Задержка обработки
Задержка ожидания
67
Глава 1
Задержка передачи
Задержка распространения
68
Компьютерные сети и Интернет
69
Глава 1
Говорят, лучше один раз увидеть, чем сто раз услышать. Так вот, еще
лучше посмотреть анимацию, которая в сто раз лучше, чем статическое
изображение. На веб-сайте tinyurl.com/lgnn7bl вы можете увидеть ин-
терактивный Java-апплет, который прекрасно демонстрирует разницу
между задержкой передачи и задержкой распространения. Самые во-
одушевленные читатели могут посетить эту страничку. Источник606 так-
же предлагает очень интересное обсуждение задержек распространения,
ожидания и передачи.
70
Компьютерные сети и Интернет
71
Глава 1
72
Компьютерные сети и Интернет
Потеря пакетов
73
Глава 1
Traceroute
74
Компьютерные сети и Интернет
75
Глава 1
76
Компьютерные сети и Интернет
77
Глава 1
80
Компьютерные сети и Интернет
81
Глава 1
82
Компьютерные сети и Интернет
Уровни протоколов
83
Глава 1
84
Компьютерные сети и Интернет
Рис. 1.23. Стек протоколов Интернета (а) и эталонная модель OSI (б)
Прикладной уровень
85
Глава 1
Транспортный уровень
Сетевой уровень
86
Компьютерные сети и Интернет
Канальный уровень
Физический уровень
87
Глава 1
Модель OSI
Мы с вами подробно обсудили стек протоколов Интернета. Но стоит
упомянуть, что это не единственный набор протоколов для компьютер-
ных сетей. В конце 70-х годов международная организация по стандар-
тизации (International Organization for Standardization, ISO) предло-
жила так называемую эталонную модель взаимодействия открытых
систем (Open Systems Interconnection model или просто модель OSI247.
В ней предлагается организовать компьютерные сети с помощью семи
уровней. Модель OSI формировалась в то время, когда будущие про-
токолы Интернета только начинали свое развитие среди множества
других протоколов; в действительности разработчики первоначальной
модели OSI, создавая ее, не думали об Интернете. Тем не менее начиная
с конца 70-х годов все образовательные программы по компьютерным
сетям строились на базе концепции семиуровневой модели. Поскольку
такая модель оказала значительное влияние на образование в области
компьютерных сетей, она до сих пор не потеряла свое значение и упо-
минается во многих учебниках и обучающих курсах по сетевым техно-
логиям.
Семь уровней модели OSI, представленные на рис. 1.23б — это при-
кладной уровень, уровень представления, сеансовый уровень, транс-
портный уровень, сетевой уровень, канальный уровень и физический
уровень. Функциональность пяти из этих уровней та же самая, что
и у аналогичных уровней стека протоколов Интернета. Давайте рассмо-
трим два дополнительных уровня, представленных в эталонной моде-
ли OSI — уровень представления и сеансовый уровень. Основная роль
уровня представления — обеспечить сервис, позволяющий взаимодей-
ствующим приложениям интерпретировать данные, которыми они об-
мениваются. Это включает сжатие данных, их шифрование (название
говорит само за себя), а также описание (мы увидим в главе 9, что эти
службы позволяют приложениям не заботиться о внутренних форматах,
в которых данные представлены/сохранены, и которые могут отличать-
ся от одного компьютера к другому). Сеансовый уровень обеспечивает
разграничение и синхронизацию данных в процессе обмена, предостав-
ляет средства для контроля за сеансом и его восстановление в случае
разрыва соединения.
88
Компьютерные сети и Интернет
1.5.2. Инкапсуляция
89
Глава 1
90
Компьютерные сети и Интернет
91
Глава 1
92
Компьютерные сети и Интернет
93
Глава 1
96
Компьютерные сети и Интернет
97
Глава 1
98
Компьютерные сети и Интернет
99
Глава 1
100
Компьютерные сети и Интернет
101
Глава 1
102
Компьютерные сети и Интернет
103
Глава 1
104
Компьютерные сети и Интернет
1.8. Заключение
В этой главе мы изучили огромное количество материала! Мы по-
знакомились с различными элементами аппаратного и программного
обеспечения, которые составляют Интернет в частности и компьютер-
ные сети вообще. Мы начали с периферии сети, рассмотрев конечные
системы и приложения, а также транспортные услуги, предоставляемые
приложениям, исполняющимся в конечных системах. Мы также рас-
смотрели технологии канального уровня и физическую среду, использу-
ющуюся обычно в сетях доступа. Затем мы заглянули глубже внутрь —
в ядро сети, познакомившись с коммутацией пакетов и коммутацией
каналов — двумя ключевыми подходами к передаче данных в телеком-
муникационных сетях, рассмотрели сильные и слабые стороны каждого
подхода. Мы также изучили структуру глобальной сети Интернет, ко-
торая представляет собой сеть сетей. Мы увидели, что иерархическая
структура, состоящая из провайдеров высших и низших уровней, по-
зволяет Интернету легко масштабироваться и включать в себя тысячи
новых сетей.
105
Глава 1
106
Компьютерные сети и Интернет
108
Прикладной уровень
109
Глава 2
110
Прикладной уровень
111
Глава 2
112
Прикладной уровень
113
Глава 2
114
Прикладной уровень
115
Глава 2
Адресация процессов
116
Прикладной уровень
117
Глава 2
Пропускная способность
118
Прикладной уровень
Время доставки
119
Глава 2
Безопасность
120
Прикладной уровень
О БЕЗОПАСНОСТИ
121
Глава 2
123
Глава 2
цессы отправляют эти сообщения? Все эти вопросы ведут нас в область
протоколов прикладного уровня, которые определяют как прикладные
процессы, запущенные на различных конечных системах, передают друг
другу сообщения. В частности, протокол прикладного уровня опреде-
ляет:
• Типы сообщений, которыми обмениваются процессы, например со-
общения запроса или сообщения ответа
• Синтаксис различных типов сообщений, то есть состав полей сооб-
щения и их порядок
• Семантика полей, то есть значение информации, содержащейся
в каждом из них
• Набор правил для определения времени и порядка передачи сообще-
ний и получения ответов
125
Глава 2
126
Прикладной уровень
127
Глава 2
128
Прикладной уровень
129
Глава 2
Непостоянные HTTP-соединения
http://www.someSchool.edu/someDepartment/home.index
130
Прикладной уровень
131
Глава 2
132
Прикладной уровень
Постоянное HTTP-соединение
133
Глава 2
134
Прикладной уровень
HTTP/1.1 200 OK
Connection: close
Date: Tue, 09 Aug 2011 15:44:04 GMT
Server: Apache/2.2.3 (CentOS)
Last-Modified: Tue, 09 Aug 2011 15:11:03 GMT
Content-Length: 6821
Content-Type: text/html
(данные данные данные данные данные...)
137
Глава 2
telnet cis.poly.edu 80
GET /~ross/ HTTP/1.1
Host: cis.poly.edu
138
Прикладной уровень
139
Глава 2
140
Прикладной уровень
в прошлом уже посещала данный сайт. По мере того, как Сьюзен про-
должает работать с сайтом сервера Amazon, каждый раз, когда она за-
прашивает веб-страницу, ее браузер обращается к своему cookie-файлу,
извлекает идентификационный номер этого сайта и помещает строку
cookie-заголовка, включающую идентификационный номер, в HTTP-
запрос. В каждом таком HTTP-запросе к серверу Amazon содержится
строка заголовка:
Cookie: 1678
141
Глава 2
2.2.5. Веб-кэширование
142
Прикладной уровень
143
Глава 2
Рис. 2.12. Узкое место — канал связи между сетью организации и Интернетом
144
Прикладной уровень
145
Глава 2
что немногим больше, чем 1,2 с. Таким образом, второй вариант решения
обеспечивает еще более низкое время ответа, чем первый, в то же время
не требуя модернизировать сеть организации. Конечно же, нужно будет
покупать и устанавливать прокси-сервер, но эти расходы относительно
невысоки — многие прокси-серверы используют бесплатное программ-
ное обеспечение, которое работает на недорогих персональных компью-
терах.
146
Прикладной уровень
147
Глава 2
148
Прикладной уровень
149
Глава 2
150
Прикладной уровень
151
Глава 2
152
Прикладной уровень
И С ТО Р И Я
Веб-почта
В декабре 1995 года, спустя несколько лет после того, как люди
узнали о Всемирной паутине, Джек Смит (Jack Smith) и Сабир Батиа
153
Глава 2
154
Прикладной уровень
155
Глава 2
156
Прикладной уровень
157
Глава 2
159
Глава 2
From: alice@crepes.fr
To: bob@hamburger.edu
Subject: Поиск смысла жизни.
160
Прикладной уровень
161
Глава 2
Протокол POP3
162
Прикладной уровень
К: list
С: 1 498
С: 2 912
163
Глава 2
С: .
К: retr 1
С: (бла бла...
С: .................
С: ..........бла)
С: .
К: dele 1
К: retr 2
С: (бла бла...
С: .................
С: ..........бла)
С: .
К: dele 2
К: quit
С: +OK POP3 server signing off
164
Прикладной уровень
Протокол IMAP
После того как Боб загрузил свои сообщения на локальный ком-
пьютер, с помощью доступа по протоколу POP3 он может создавать
почтовые папки и перемещать в них загруженные сообщения. Затем он
может удалять их, разносить сообщения по папкам, осуществлять по-
иск (по имени получателя или по теме), но размещение писем в папке
на локальной машине влечет проблемы для мобильного пользователя,
который предпочитает работать с иерархической структурой папок на
удаленном сервере и иметь доступ к нему с любого компьютера. Такое
невозможно осуществить с помощью протокола POP3.
165
Глава 2
166
Прикладной уровень
167
Глава 2
ПРИНЦИПЫ В ДЕЙСТВИИ
168
Прикладной уровень
169
Глава 2
170
Прикладной уровень
171
Глава 2
172
Прикладной уровень
173
Глава 2
174
Прикладной уровень
175
Глава 2
DNS-кэширование
176
Прикладной уровень
177
Глава 2
• Если Тип равен A, то в поле Имя содержится имя хоста, а в поле Зна-
чение — IP-адрес этого хоста. То есть запись типа A предоставляет
стандартную таблицу преобразования имени в IP-адрес, например:
(relay1.bar.foo.com, 145.37.93.126, A). Это ресурсная за-
пись типа A.
• Если Тип равен NS, то поле Имя является значением домена (на-
пример, foo.com), а поле Значение содержит имя хоста автори-
тетного DNS-сервера, который отвечает за получение IP-адресов
соответствующего домена. Такой тип записи используется, чтобы
направлять DNS-запросы дальше по цепочке. Например, запись вида
(foo.com, dns.foo.com, NS) является записью типа NS.
• Если Тип равен CNAME, то поле Значение содержит каноническое
имя для псевдонима, который находится в поле Имя. Такая запись
обеспечивает запросы канонического имени для определенного име-
ни хоста. Пример такой записи: (foo.com, relay1.bar.foo.com,
CNAME).
• Если Тип равен MX, то в поле Значение содержится каноническое
имя почтового сервера, имеющего псевдоним, находящийся в поле
Имя. Пример такой записи: (foo.com, mail.bar.foo.com, MX).
Такие записи позволяют почтовым серверам иметь простые псев-
донимы. Отметим, что, с помощью записи MX, компании могут ис-
пользовать одинаковые псевдонимы для почтовых серверов и для
веб-серверов. Чтобы получить каноническое имя почтового сервера
DNS-клиент должен будет запрашивать запись MX, а если требуется
каноническое имя другого сервера — запись CNAME.
DNS сообщения
179
Глава 2
180
Прикладной уровень
1999 года единственным регистратором для доменов com, net и org была
компания Network Solutions. В настоящие дни множество компаний-
регистраторов конкурируют между собой. Они должны получать аккре-
дитацию в корпорации по управлению доменными именами и IP-адресами
(Internet Corporation for Assigned Names and Numbers, ICANN). Полный
список аккредитованных регистраторов можно найти на сайте www.
internic.net.
(dns1.networkutopia.com, 212.212.212.1, A)
О БЕЗОПАСНОСТИ
Уязвимости DNS
Мы узнали, что служба DNS является одним из важнейших компо-
нентов инфраструктуры Интернета. Многие важные службы — в том
числе веб-приложения и электронная почта — просто не в состоянии
функционировать без DNS. Поэтому возникает естественный во-
прос, может ли DNS подвергнуться нападению? Является ли служба
DNS беспомощной мишенью, ожидающей, когда выведут из строя
ее и вместе с ней большинство интернет-приложений?
181
Глава 2
182
Прикладной уровень
После того как все эти шаги будут завершены, пользователи Интер-
нета смогут посещать ваш веб-сайт и отправлять электронную почту со-
трудникам вашей компании. Давайте закончим обсуждение DNS, прове-
рив, что это действительно так. Эта проверка также поможет закрепить
наши знания о DNS. Предположим, Алиса, находясь в Австралии, хочет
посмотреть во Всемирной паутине страницу www.networkutopia.com.
Как уже говорилось ранее, ее хост сначала отправит DNS-запрос ее ло-
кальному серверу DNS. Локальный сервер DNS, в свою очередь, свя-
жется с сервером верхнего уровня домена com. (Локальный сервер DNS
обратится к корневому DNS-серверу, если в своем кэше не обнаружит
адрес сервера верхнего уровня.) Этот сервер верхнего уровня содержит
ресурсные записи типов NS и А, перечисленные выше, поскольку ре-
гистратор добавил эти записи во все серверы верхнего уровня домена
com. Он отправляет их в ответном сообщении локальному DNS-серверу
Алисы. После этого локальный сервер DNS отправляет сообщение
серверу с адресом 212.212.212.1, запрашивая запись типа A, соот-
ветствующую имени www.networkutopia.com. Эта запись предостав-
ляет IP-адрес нужного веб-сервера, скажем, 212.212.71.4, который
локальный сервер DNS передает обратно хосту Алисы. Теперь браузер
Алисы может инициировать TCP-соединение с хостом 212.212.71.4
и отправлять запрос HTTP через это соединение. Вот так! Когда кто-то
путешествует по сети, кроме видимых глазу событий в его браузере, за
кадром происходит еще много интересных вещей!
183
Глава 2
184
Прикладной уровень
185
Глава 2
186
Прикладной уровень
DP2P ≥ max { uF ,
F
dmin
,
NF
N } (2.2)
S uS + ∑ ui
i=1
187
Глава 2
DP2P = max { uF ,
F
dmin
,
NF
N } (2.3)
S uS + ∑ ui
i=1
На рис. 2.25 представлено сравнение минимальной скорости разда-
чи для клиент-серверной и одноранговой архитектур, учитывая предпо-
ложение, что все пиры имеют одинаковую скорость отдачи, равную u.
Здесь мы установили значения F/u = 1 час, us = 10u и dmin >=us. Таким об-
разом, пир может передать полный файл за 1 час, скорость передачи сер-
вера в 10 раз больше, чем у пира, и (для упрощения) по предположению
скорость загрузок у каждого из узлов достаточно высока. Из рис. 2.25
мы видим, что минимальное время раздачи для клиент-серверной ар-
хитектуры возрастает линейно и до бесконечности при возрастании ко-
личества пиров. Однако для одноранговой архитектуры минимальное
время раздачи не только всегда меньше, чем для клиент-серверной, но
его значение не превышает одного часа для любого числа N пиров. Таким
образом, приложения в одноранговой архитектуре могут быть самомас-
штабируемыми. Такая масштабируемость — это прямое следствие того,
что пиры при такой схеме являются одновременно и получателями дан-
ных, и их отправителями.
188
Прикладной уровень
BitTorrent
189
Глава 2
190
Прикладной уровень
192
Прикладной уровень
194
Прикладной уровень
ляет сообщение этому узлу, давая ему команду сохранить пару ключ,
значение. Но каким образом Алиса определит узел, идентификатор ко-
торого является ближайшим к ключу? Если бы она отслеживала все
узлы в системе (их идентификаторы и соответствующие IP-адреса), она
бы могла определить искомый ближайший узел. Но такой подход тре-
бует, чтобы каждый из узлов отслеживал все другие узлы таблицы — что
совсем не подходит для большой системы с миллионами таких узлов.
195
Глава 2
196
Прикладной уровень
Отток пиров
197
Глава 2
198
Прикладной уровень
199
Глава 2
200
Прикладной уровень
201
Глава 2
202
Прикладной уровень
UDPClient.py
serverName = 'hostname'
serverPort = 12000
203
Глава 2
clientSocket.close()
UDPServer.py
serverSocket.bind(('', serverPort))
Данная строка связывает (то есть назначает) порт под номером 12 000
с сокетом сервера. Таким образом, в программе UDPServer строки кода
(написанные разработчиком приложения) явным образом присваивают
номер порта сокету. Связывание порта означает, что теперь, если кто-
то отправляет пакет на порт 12 000 нашего сервера, то этот пакет будет
направлен в данный сокет. Дальше программа UDPServer переходит
в бесконечный цикл while, который позволяет получать и обрабаты-
вать пакеты от клиентов в неограниченном количестве.
serverSocket.sendto(modifiedMessage, clientAddress)
206
Прикладной уровень
207
Глава 2
208
Прикладной уровень
TCPClient.py
209
Глава 2
clientSocket.connect((serverName,serverPort))
Вспомним, что перед тем как клиент и сервер смогут посылать дан-
ные друг другу, используя TCP-сокет, между ними должно быть уста-
новлено TCP-соединение. Строка выше как раз инициирует соединение
между клиентом и сервером. Параметром метода connect() является
адрес серверной части соединения. После исполнения этой строки кода
осуществляется тройное рукопожатие, и между клиентом и сервером
устанавливается TCP-соединение.
clientSocket.send(sentence)
210
Прикладной уровень
modifiedSentence = clientSocket.recv(2048)
clientSocket.close()
TCPServer.py
211
Глава 2
serverSocket=socket(AF_INET,SOCK_STREAM)
serverSocket.bind(('',serverPort))
serverSocket.listen(1)
connectionSocket.close()
212
Прикладной уровень
2.8. Заключение
В этой главе мы изучили теоретические и практические аспек-
ты сетевых приложений. Мы познакомились с распространенной
клиент-серверной архитектурой, используемой многими Интернет-
приложениями, и увидели ее в действии — каким образом она при-
меняется в протоколах HTTP, FTP, SMTP, POP3 и DNS. Эти важные
протоколы прикладного уровня и связанные с ними приложения
(Всемирная паутина, передача файлов, электронная почта и DNS)
мы рассмотрели чуть подробнее. Мы познакомились с одноранговой
архитектурой, популярность которой все больше возрастает, и по-
смотрели, как она используется многими приложениями. Мы изучи-
ли, каким образом можно применять сокеты для построения сетевых
приложений и как с ними работать в транспортных службах с уста-
новлением (TCP) и без установления соединения (UDP). На этом
первый шаг в нашем путешествии по уровневой сетевой архитектуре
завершен!
213
Глава 2
215
Глава 3
216
Транспортный уровень
Национальный
или глобальный
провайдер
Мобильная сеть
Сетевой
Канальный
Физический
Сетевой
Канальный
Физический
Сетевой
Прикладной
Локальные
Канальный
Транспортный и региональные
Домашняя сеть провайдеры Физический
Сетевой
Канальный Сетевой
Физический ме Логи Канальный
жд
у к ческ Сетевой
он ий Физический
еч
ны тран Канальный
ми спо
си р
сте т Физический
ма
м и
Прикладной
Сеть предприятия
Транспортный
Сетевой
Канальный
Физический
217
Глава 3
218
Транспортный уровень
219
Глава 3
* Строго говоря, термин «сегмент» применяется для TCP, где поток данных именно
сегментируется (дробится) для передачи его порциями, а сообщения («пакеты») UDP —
само по себе цельное и завершенное. — Примеч. ред.
220
Транспортный уровень
221
Глава 3
3.2. Мультиплексирование
и демультиплексирование
В этом разделе мы рассмотрим операции мультиплексирования
и демультиплексирования на транспортном уровне, «продолжающие»
соединение между конечными системами до уровня соединения между
процессами. Для того чтобы конкретизировать обсуждение, мы будем
рассматривать службу мультиплексирования и демультиплексирова-
ния на транспортном уровне в контексте Интернета. Тем не менее эта
служба необходима во всех компьютерных сетях.
На принимающем хосте транспортный уровень получает сегменты
от нижестоящего сетевого уровня. Транспортный уровень отвечает за
222
Транспортный уровень
Для начала вспомним из раздела 2.7, что процесс (как часть сетевого
приложения) может иметь один или несколько сокетов: «дверей», через
которые осуществляется обмен данными между процессами в сети. Та-
ким образом, как показано на рис. 3.2, транспортный уровень принима-
ющего хоста на самом деле направляет данные не напрямую к процессу,
а лишь в промежуточный сокет. Поскольку в любой момент времени на
принимающем хосте может быть более одного сокета, каждый из них
имеет уникальный идентификатор. Формат идентификатора, как мы
вскоре увидим, зависит от того, к какому протоколу относится сокет —
UDP или TCP.
Обозначения:
Процесс Сокет
223
Глава 3
224
Транспортный уровень
ми, как протокол HTTP (80 порт) и протокол FTP (21 порт). Список за-
резервированных номеров портов приведен в документе RFC 1700, его
обновления доступны по адресу www.iana.org499. Мы должны присваи-
вать номера портов при разработке новых приложений, вроде простого
примера в разделе 2.7.
32 бита
Прикладные
данные
(сообщение)
Мультиплексирование и демультиплексирование
без установления логического соединения
225
Глава 3
clientSocket.bind(('', 19157))
226
Транспортный уровень
Клиентский процесс
Сокет
Хост А Сервер Б
Мультиплексирование и демультиплексирование
с установлением логического соединения
228
Транспортный уровень
О БЕЗОПАСНОСТИ
Сканирование портов
Мы увидели, что все серверные процессы открывают порт и ожидают
контакта с удаленным клиентом. Некоторые порты зарезервированы
для широко известных приложений (например, Всемирная паутина,
FTP, DNS, и SMTP-сервер); другие обычно используются популярными
приложениями (например, Microsoft 2000 SQL server слушает запросы
на порту 1434). Таким образом, если бы мы определили такой порт, от-
крытый на хосте, то мы могли бы присвоить этот порт определенному
приложению на хосте. Это очень упрощает работу администраторов
вычислительной сети, которые часто интересуются тем, какие сете-
вые приложения запущены на хостах в их сетях. Но злоумышленники,
как правило, также хотят узнать, какие порты открыты на целевом хо-
сте. Если на нем установлено приложение с известной уязвимостью,
то этот хост открыт для атаки. Например, SQL server слушающий порт
1434 стал причиной переполнения буфера, позволяющей удаленно-
му пользователю выполнять произвольный код на уязвимом хосте.
Эта уязвимость эксплуатировалась червем Slammer82.
Несложно определить, какое приложение слушает какие порты. Дей-
ствительно, существует ряд специально предназначенных для этого
общедоступных программ, называемых сканерами портов. Возмож-
но, наиболее распространенная из них — это свободно распростра-
няемое приложение nmap, доступное на сайте nmap.org и включен-
ное в большинство дистрибутивов Linux. При работе с протоколом
TCP программа nmap последовательно сканирует порты, проверяя,
для каких из них доступно TCP-соединение. При работе с протоколом
UDP программа nmap опять же последовательно сканирует порты,
отыскивая UDP-порты, которые отвечают за отправку UDP-сегментов.
В каждом случае программа nmap возвращает список открытых, за-
крытых или недоступных портов. Хост, запустивший программу nmap,
может добавить к сканированию любой целевой хост, расположенный
где-либо в Интернете. Мы вернемся к программе nmap в разделе
3.5.6, когда будем обсуждать управление TCP-соединением.
229
Глава 3
Веб- Веб-
клиент сервер HTTP-процессы,
хост В обслуживающие
Б
каждое из соединений
Демультиплексирование
порт отпра- порт полу- порт отпра- порт полу- на транспортном уровне
вителя: 7532 чателя: 80 вителя: 26145 чателя: 80
IP-адрес от- IP-адрес по- IP-адрес от- IP-адрес по-
правителя: В лучателя: Б правителя: В лучателя: Б
Веб-клиент
хост A
Рис. 3.5. Два клиента, использующие одинаковый порт получателя (80) для
соединения с одним веб-сервером приложений
230
Транспортный уровень
231
Глава 3
234
Транспортный уровень
235
Глава 3