«Подробное объяснение TCP/IP, том 1: Протокол» представляет собой полное и подробное руководство по протоколу TCP/IP. Описаны отдельные протоколы, принадлежащие каждому уровню, и то, как они работают в разных операционных системах. Автор использовал программу tcpdump Лаборатории Лоуренса Беркли для захвата различных пакетов, передаваемых между различными операционными системами и реализациями TCP/IP. Изучение вывода tcpdump может помочь понять, как работают различные протоколы. Эта книга подойдет в качестве учебника для студентов компьютерных специальностей, изучающих сети, и в качестве справочника для учителей. Также подходит для технических специалистов, изучающих сети.
Оглавление Предисловие переводчика Глава 1 Обзор 1
1.1 Введение 1
1.2 Стратификация 1
1.3 Уровни TCP/IP 4
1.4 Интернет-адреса 5
1.5 Система доменных имен 6
1.6 Упаковка 6
1,7 балла при 8
1.8 Модель клиент-сервер 8
1.9 Порт №9
1.10 Процесс стандартизации 10
1.11 RFC 10
1.12 Стандартный простой сервис 11
1.13 Интернет 12
1.14 Реализация 12
1.15 Интерфейс прикладного программирования 12
1.16 Тестовая сеть 13
1.17 Резюме 13
Глава 2 Канальный уровень 15
2.1 Введение 15
2.2 Инкапсуляция Ethernet и IEEE 802 15
2.3 Упаковка хвоста 17
2.4 SLIP: последовательная линия IP 17
2.5 Сжатый SLIP 18
2.6 PPP: протокол «точка-точка» 18
2.7 Шлейфовый интерфейс 20
2.8 Максимальная единица передачи MTU 21
2.9 Путь MTU 21
2.10 Расчет пропускной способности последовательной линии 21
2.11 Резюме 22
Глава 3 IP: Интернет-протокол 24
3.1 Введение 24
3.2 IP-заголовок 24
3.3 IP-маршрутизация 27
3.4 Адресация подсети 30
3.5 Маска подсети 32
3.6 IP-адреса для особых ситуаций 33
3.7 Пример подсети 33
3.8 команда ifconfig 35
3.9 команда netstat 36
3.10 Будущее IP 36
3.11 Резюме 37
Глава 4 ARP: Протокол разрешения адресов 38
4.1 Введение 38
4.2 Пример 38
4.3 ARP-кэш 40
4.4 Формат группировки ARP 40
4.5 Пример ARP 41
4.5.1 Общий пример 41
4.5.2 ARP-запрос для несуществующего хоста 42
4.5.3 Настройка таймаута кэша ARP 43
4.6 ARP-прокси 43
4.7 Бесплатный ARP 45
4.8 команда арп 45
4.9 Резюме 46
Глава 5 RARP: Протокол разрешения обратного адреса 47
5.1 Введение 47
5.2 Формат группировки RARP 47
5.3 Пример RARP 47
5.4 Проектирование RARP-сервера 48
5.4.1 RARP-сервер как пользовательский процесс 49
5.4.2 Несколько серверов RARP в сети 49
5.5 Резюме 49
Глава 6 ICMP: Протокол управляющих сообщений Интернета 50
6.1 Введение 50
6.2 Типы сообщений ICMP 50
6.3 Запрос и ответ маски адреса ICMP 52
6.4 Запрос метки времени ICMP и ответ 53
6.4.1 Пример 54
6.4.2 Другой подход 55
6.5 ICMP-порт недоступен, ошибка 56
6.6 4.4BSD обработка сообщений ICMP 59
6.7 Резюме 60
Глава 7. Программа Ping 61
7.1 Введение 61
7.2 Программа Ping 61
7.2.1 Выход локальной сети 62
7.2.2 Выход WAN 63
7.2.3 Линия SLIP-связи 64
7.2.4 Коммутируемое соединение SLIP 65
7.3 Опции маршрутизации IP-записей 65
7.3.1 Типичные примеры 66
7.3.2 Вывод исключений 68
7.4 Параметры временной метки IP 69
7.5 Резюме 70
Глава 8. Программа Traceroute 71
8.1 Введение 71
8.2 Работа с программой Traceroute 71
8.3 Выход локальной сети 72
8.4 Выход WAN 75
8.5 Параметры исходной IP-маршрутизации 76
8.5.1 Traceroute для облегченной маршрутизации источника
Пример программы 78
8.5.2 Traceroute для строгой маршрутизации исходного сайта
Пример программы 79
8.5.3 Программа трассировки маршрутизации сайта со свободным исходным кодом
Маршрут туда и обратно 80
8.6 Резюме 81
Глава 9 IP-маршрутизация 83
9.1 Введение 83
9.2 Принципы маршрутизации 84
9.2.1 Простая таблица маршрутизации 84
9.2.2 Инициализация таблицы маршрутизации 86
9.2.3 Более сложные таблицы маршрутизации 87
9.2.4 Нет маршрута к месту назначения 87
9.3 Ошибки ICMP-хоста и недоступности сети 88
9.4 Пересылать или не пересылать 89
9.5 Ошибка перенаправления ICMP 89
9.5.1 Пример 90
9.5.2 Подробнее 91
9.6 Сообщение об обнаружении маршрутизатора ICMP 92
9.6.1 Работа маршрутизатора 93
9.6.2 Работа хоста 93
9.6.3 Реализация 93
9.7 Резюме 94
Глава 10 Протокол динамической маршрутизации 95
10.1 Введение 95
10.2 Динамическая маршрутизация 95
10.3 Демон маршрутизации Unix 96
10.4 RIP: Протокол информации о маршрутизации 96
10.4.1 Формат сообщения 96
10.4.2 Нормальная работа 97
10.4.3 Метрики 98
10.4.4 Вопрос 98
10.4.5 Пример 98
10.4.6 Другой пример 100
10.5 RIP версии 2 102
10.6 OSPF: сначала открыть кратчайший путь 102
10.7 BGP: протокол пограничного шлюза 103
10.8 CIDR: бестиповая междоменная маршрутизация 104
10.9 Резюме 105
Глава 11 UDP: Протокол пользовательских датаграмм 107
11.1 Введение 107
11.2 UDP-заголовок 107
11.3 Контрольная сумма UDP 108
11.3.1 вывод tcpdump 109
11.3.2 Некоторые статистические результаты 109
11.4 Простой пример 110
11.5 Фрагментация IP 111
11.6 Ошибка недоступности ICMP (требуется фрагментация) 113
11.7 Использование Traceroute для определения пути MTU 114
11.8 Обнаружение MTU пути с использованием UDP 116
11.9 Взаимодействие между UDP и ARP 118
11.10 Максимальная длина датаграммы UDP 119
11.11 Ошибка подавления исходной станции ICMP 120
11.12 Проектирование UDP-сервера 122
11.12.1 IP-адрес клиента и номер порта 122
11.12.2 IP-адрес назначения 122
11.12.3 Входная очередь UDP 122
11.12.4 Ограничение локальных IP-адресов 124
11.12.5 Ограничение удаленных IP-адресов 125
11.12.6 Несколько приемников на порт 125
11.13 Резюме 126
Глава 12 Радиовещание и многоадресная передача 128
12.1 Введение 128
12.2 Радиовещание 129
12.2.1 Ограниченное вещание 129
12.2.2 Трансляция в сеть 129
12.2.3 Широковещательная рассылка в подсети 129
12.2.4 Широковещательная рассылка во все подсети 130
12.3 Пример вещания 130
12.4 Многоадресная рассылка 132
12.4.1 Адрес группы многоадресной рассылки 133
12.4.2 Преобразование группового адреса многоадресной рассылки в адрес Ethernet 133
12.4.3 Многоадресная рассылка в сетях FDDI и Token Ring 134
12.5 Резюме 134
Глава 13 IGMP: протокол управления интернет-группами 136
13.1 Введение 136
13.2 Сообщения IGMP 136
13.3 Протокол IGMP 136
13.3.1 Присоединение к многоадресной группе 136
13.3.2 Отчеты и запросы IGMP 137
13.3.3 Детали реализации 137
13.3.4 Поле времени жизни 138
13.3.5 Все группы хостов 138
13.4 Пример 138
13.5 Резюме 141
Глава 14 DNS: система доменных имен 142
14.1 Введение 142
14.2 Основы DNS 142
14.3 Формат сообщения DNS 144
14.3.1 Проблемные части в сообщениях DNS-запросов 146
14.3.2 Часть записи ресурса в ответном сообщении DNS 147
14.4 Простой пример 147
14.5 Запрос указателя 150
14.5.1 Пример 151
14.5.2 Проверка имени хоста 151
14.6 Записи ресурсов 152
14.7 Кэширование 153
14.8 UDP или TCP 156
14.9 Другой пример 156
14.10 Резюме 157
Глава 15 TFTP: простой протокол передачи файлов 159
15.1 Введение 159
15.2 Соглашение 159
15.3 Пример 160
15.4 Безопасность 161
15.5 Резюме 162
Глава 16 BOOTP: протокол начальной загрузки 163
16.1 Введение 163
16.2 Формат пакета BOOTP 163
16.3 Пример 164
16.4 Проектирование BOOTP-сервера 165
16.5 Маршрутизатор прохождения BOOTP 167
16.6 Информация о поставщике 167
16.7 Резюме 168
Глава 17 TCP: Протокол управления передачей 170
17.1 Введение 170
17.2 TCP-сервисы 170
17.3 TCP-заголовок 171
17.4 Резюме 173
Глава 18. Установление и прекращение TCP-соединения 174
18.1 Введение 174
18.2 Установление и завершение соединения 174
18.2.1 вывод tcpdump 174
18.2.2 Временной ряд 175
18.2.3 Заключение договора на подключение 175
18.2.4 Протокол завершения соединения 177
18.2.5 Обычный вывод tcpdump 177
18.3 Таймаут установления соединения 178
18.3.1 Первый тайм-аут 178
18.3.2 Поле типа услуги 179
18.4 Максимальная длина сегмента 179
18,5 TCP полузакрыто 180
18.6 Диаграмма перехода состояний TCP 182
18.6.1 Состояние ожидания 2MSL 183
18.6.2 Концепция тихого времени 186
18.6.3 Статус FIN_WAIT_2 186
18.7 Сброс сегмента 186
18.7.1 Запрос подключения к несуществующему порту 187
18.7.2 Аномальное завершение соединения 187
18.7.3 Обнаружение полуоткрытых соединений 188
18.8 Открытие одновременно 189
18.9 Одновременное закрытие 191
18.10 Опции TCP 191
18.11 Проектирование TCP-сервера 192
18.11.1 Номер порта TCP-сервера 193
18.11.2 Полноценные локальные IP-адреса 194
18.11.3 Ограниченный удаленный IP-адрес 195
18.11.4 Очередь запросов на входящие соединения 195
18.12 Резюме 197
Глава 19 Интерактивный поток данных TCP 200
19.1 Введение 200
19.2 Интерактивный ввод 200
19.3 Подтверждение с учетом задержек 201
19.4 Алгоритм Нэгла 203
19.4.1 Отключение алгоритма Нэгла 204
19.4.2 Пример 205
19.5 Уведомление о размере окна 207
19.6 Резюме 208
Глава 20. Поток фрагментированных данных TCP 209
20.1 Введение 209
20.2 Нормальный поток данных 209
20.3 Раздвижные окна 212
20.4 Размер окна 214
20.5 Логотип PUSH 215
20.6 Медленный старт 216
20.7 Пропускная способность фрагментированных данных 218
20.7.1 Произведение задержки полосы пропускания 220
20.7.2 Перегруженность 220
20.8 Аварийный режим 221
20.9 Резюме 224
Глава 21. Тайм-аут TCP и повторная передача 226
21.1 Введение 226
21.2 Простой пример тайм-аута и повторной передачи 226
21.3 Измерение времени прохождения туда и обратно 227
21.4 Пример RTT времени прохождения туда и обратно 229
21.4.1 Измерение времени прохождения туда и обратно RTT 229
21.4.2 Расчет оценки RTT 231
21.4.3 Медленный старт 233
21.5 Пример перегрузки 233
21.6 Алгоритм предотвращения перегрузок 235
21.7 Алгоритм быстрой повторной передачи и быстрого восстановления 236
21.8 Пример перегрузки (продолжение) 237
21.9 Метрики на маршрут 240
21.10 Ошибки ICMP 240
21.11 Перегруппировка 243
21.12 Резюме 243
Глава 22 Таймер сохранения TCP 245
22.1 Введение 245
22.2 Пример 245
22.3 Синдром запутанного окна 246
22.4 Резюме 250
Глава 23 Таймер поддержания активности TCP 251
23.1 Введение 251
23.2 Описание 252
23.3 Пример поддержания активности 253
23.3.1 Столкновение с другой стороны 253
23.3.2 На другом конце происходит сбой и перезапуск 254
23.3.3 Другой конец недоступен 254
23.4 Резюме 255
Глава 24. Будущее и производительность TCP 256
24.1 Введение 256
24.2 Обнаружение MTU пути 256
24.2.1 Пример 257
24.2.2 Большая или малая группировка 258
24.3 Длинный жиропровод 259
24.4 Возможности расширения окна 262
24.5 Параметры временной метки 263
24.6 PAWS: Серийный номер для предотвращения зацикливания 265
24.7 T/TCP: расширения TCP для транзакций 265
24.8 Производительность TCP 267
24.9 Резюме 268
Глава 25 SNMP: простой протокол сетевого управления 270
25.1 Введение 270
25.2 Соглашение 270
25.3 Структура управленческой информации 272
25.4 Идентификаторы объектов 274
25.5 Введение в информационную базу управления 274
25.6 Идентификация экземпляра 276
25.6.1 Простые переменные 276
25.6.2 Таблица 276
25.6.3 Сортировка по словарю 277
25.7 Несколько простых примеров 277
25.7.1 Простые переменные 278
25.7.2 операция получения следующей 278
25.7.3 Доступ к таблице 279
25.8 Информационная база управления (продолжение) 279
25.8.1 системная группа 279
25.8.2 группа интерфейса 280
25.8.3 в группе 281
25.8.4 IP-группа 282
25.8.5 группа ICMP 285
25.8.6 TCP группа 285
25.9 Еще несколько примеров 288
25.9.1 Интерфейс MTU 288
25.9.2 Таблица маршрутизации 288
25.10 ловушка 290
25.11 ASN.1 и BER 291
25.12 SNMPv2 292
25.13 Резюме 292
Глава 26 Telnet и Rlogin: удаленный вход 293
26.1 Введение 293
26.2 Протокол входа в систему 294
26.2.1 Запуск процесса подачи заявки 295
26.2.2 Управление потоком 295
26.2.3 Клавиша прерывания клиента 296
26.2.4 Изменение размера окна 296
26.2.5 Команды сервер-клиент 296
26.2.6 Команды клиент-сервер 297
26.2.7 escape-символы клиента 298
26.3 Пример входа в систему 298
26.3.1 Исходный протокол клиент-сервер 298
26.3.2 Клавиша прерывания клиента 299
26.4 Протокол Telnet 302
26.4.1 НВТ ASCII 302
26.4.2 Команда Telnet 302
26.4.3 Переговоры по опциям 303
26.4.4 Согласование подопций 304
26.4.5 Полудуплекс, по одному символу, один раз
Одна строка или режим строки 304
26.4.6 Сигналы синхронизации 306
26.4.7 escape-символы клиента 306
26.5 Пример Telnet 306
26.5.1 Односимвольный режим 306
26.5.2 Режим строки 310
26.5.3 По одной строке за раз (квазирядный режим) 312
26.5.4 Линейный режим: клавиша прерывания клиента 313
26.6 Резюме 314
Глава 27 FTP: протокол передачи файлов 316
27.1 Введение 316
27.2 Протокол FTP 316
27.2.1 Представление данных 316
27.2.2 FTP-команды 318
27.2.3 Ответы FTP 319
27.2.4 Управление соединениями 320
27.3 Пример FTP 321
27.3.1 Управление соединениями: временные порты данных 321
27.3.2 Управление соединением: порт данных по умолчанию 323
27.3.3 Передача текстового файла: NVT ASCII
Представление или представление изображения 325
27.3.4 Аварийное прерывание передачи файла:
Сигнал синхронизации Telnet 326
27.3.5 Анонимный FTP 329
27.3.6 Анонимный FTP с неизвестного IP-адреса 330
27.4 Резюме 331
Глава 28 SMTP: простой протокол передачи почты 332
28.1 Введение 332
28.2 Протокол SMTP 332
28.2.1 Простой пример 332
28.2.2 SMTP-команды 334
28.2.3 Конверт, заголовок и тело 335
28.2.4 Агенты ретрансляции 335
28.2.5 НВТ ASCII 337
28.2.6 Интервал повтора 337
28.3 Пример SMTP 337
28.3.1 MX-записи: хост не подключен напрямую к
Интернет 337
28.3.2 Записи MX: сбой хоста 339
28.3.3 Команды VRFY и EXPN 340
28.4 Будущее SMTP 340
28.4.1 Изменения конверта: расширенный SMTP 341
28.4.2 Изменения заголовка: символы, отличные от ASCII 342
28.4.3 Изменения текста: Общая почта Интернета
Расширение 343
28.5 Резюме 346
Глава 29. Сетевые файловые системы 347.
29.1 Введение 347
29.2 Вызов удаленной процедуры Sun 347
29.3 XDR: представление внешних данных 349
29.4 Сопоставление портов 349
29.5 Протокол NFS 351
29.5.1 Дескрипторы файлов 353
29.5.2 Протокол установки 353
29.5.3 Процесс NFS 354
29.5.4 UDP или TCP 355
29.5.5 NFS через TCP 355
29,6 экземпляров NFS 356
29.6.1 Простой пример: чтение файла 356
29.6.2 Простой пример: создание каталога 357
29.6.3 Лица без гражданства 358
29.6.4 Пример: сбой сервера 358
29.6.5 Идемпотентные процессы 360
29.7 Версия 3 NFS 360
29.8 Резюме 361
Глава 30 Другие приложения TCP/IP 363
30.1 Введение 363
30.2 Протокол пальца 363
30.3 Протокол Whois 364
30.4 Арчи, WAIS, Суслик, Вероника
и WWW 366
30.4.1 Арчи 366
30.4.2 ВАИС 366
30.4.3 Суслик 366
30.4.4 Вероника 366
30.4.5 Всемирная паутина WWW 367
30.5 X оконная система 367
30.5.1 Программа Xscope 368
30.5.2 LBX: низкая полоса пропускания X 370
30.6 Резюме 370
Приложение А. Программа tcpdump 371
Приложение Б Компьютерные часы 376
Приложение C носочная программа 378
Решения некоторых упражнений в приложении D 381.
Приложение E. Опции конфигурации 395
Приложение F. Свободно доступный исходный код 406.
Рекомендации 409
Сокращения 420