Программирование TCP/IP может показаться очень простым, но это заблуждение. Многие программисты сталкиваются с тем, что написанное ими сетевое приложение недостаточно надежно. Часто причиной такого положения дел является неосторожное обращение с сетевыми протоколами. Поэтому основное внимание в данной книге уделено тонким вопросам функционирования семейства протоколов и способам работы с ними.
Здесь изложены подтвержденные практикой советы, технические приемы и эвристические правила программирования TCP/IP для достижения максимальной производительности; показано, как избежать многих типичных ошибок. Каркас кода и библиотека функций дают возможность создавать приложения, не думая о низкоуровневых деталях. Основные идеи и концепции иллюстрируются многочисленными примерами. Вы станете лучше понимать внутреннее устройство TCP/IP и получите необходимые практические навыки работы с этим семейством протоколов.
Различайте протоколы, требующие и не требующие установления логического соединения.
Один из фундаментальных вопросов сетевого программирования - это различие между протоколами, требующими установления логического соединения (connection-oriented protocols), и протоколами, не требующими этого (connectionless protocols). Хотя ничего сложного в таком делении нет, но начинающие их часто путают. Частично проблема кроется в выборе слов. Очевидно, что два компьютера должны быть как-то «соединены», если необходимо наладить обмен данными между ними. Тогда что означает «отсутствие логического соединения»?
О наличии и отсутствии логического соединения говорят применительно к протоколам. Иными словами, речь идет о способе передачи данных по физическому носителю, а не о самом физическом носителе. Протоколы, требующие и не требующие логического соединения, могут одновременно разделять общий физический носитель; на практике обычно так и бывает.
Но если это деление не имеет ничего общего с физическим носителем, по которому передаются данные, то что же лежит в его основе? Главное различие в том, что в протоколах, не требующих соединения, каждый пакет передается независимо от остальных. Тогда как протоколы, устанавливающие соединение, поддерживают информацию о состоянии, которая позволяет следить за последовательностью пакетов.
Содержание
Предисловие. 11
Глава 1. Введение.15
Некоторые термины. 15
Путеводитель по книге. 16
Архитектура клиент-сервер. 18
Элементы API сокетов. 20
Резюме. 28
Глава 2. Основы. 29
Совет 1. О необходимости различать протоколы, требующие и не требующие установления логического соединения. 29
Резюме. 35
Совет 2. О том, что такое подсети и CIDR. 35
Классы адресов. 36
Подсети. 40
Ограниченное вещание.43
Вещание на сеть. 44
Вещание на подсеть. 44
Вещание на все подсети. 44
Бесклассовая междоменная маршрутизация - CIDR. 45
Текущее состояние организации подсетей и CIDR. 47
Резюме. 47
Совет 3. О том, что такое частные адреса и NAT. 48
Резюме. 50
Совет 4. О разработке и применении каркасов приложений. 50
Каркас TCP-сервера. 52
Каркас TCP-клиента. 57
Каркас UDP-сервера. 59
Каркас UDP-клиента. 61
Резюме. 63
Совет 5. О том, почему интерфейс сокетов лучше интерфейса. 63
Резюме. 65
Совет 6. О том, что TCP- потоковый протокол. 65
Резюме. 73
Совет 7. О важности правильной оценки производительности TCP. 73
Источники приемник на базе UDP. 75
Источник и приемник на базе TCP. 77
Резюме. 84
Совет 8. О том, что не надо заново изобретать TCP. 84
Резюме. 87
Совет 9. О том, что при всей надежности у TCP есть и недостатки. 87
Что такое надежность. 87
Потенциальные ошибки. 89
Сбой в сети. 90
Отказ приложения. 90
Крах хоста на другом конце соединения. 95
Резюме. 96
Совет 10. О том, что TCP не выполняет опрос соединения. 96
Механизм контролеров. 97
Пульсация. 99
Еще один пример пульсации. 104
Резюме. 110
Совет 11. О некорректном поведении партнера. 111
Проверка завершения работы клиента. 112
Проверка корректности входной информации. 114
Резюме. 118
Совет 12. О работе программы в локальной и глобальной сетях. 118
Недостаточная производительность. 119
Скрытая ошибка. 120
Резюме. 124
Совет 13. О функционировании протоколов. 124
Резюме. 125
Совет 14. О семиуровневой эталонной модели OSI. 126
Модель OSI. 126
Модель TCP/IP. 128
Резюме. 130
Глава 3. Создание эффективных и устойчивых сетевых программ. 131
Совет 15. Об операции записи в TCP. 131
Операция записи с точки зрения приложения. 131
Операция записи с точки зрения TCP. 132
Резюме. 136
Совет 16. О важности аккуратного размыкания ТСР-соединений. 137
Вызов shutdown. 137
Аккуратное размыкание соединений. 139
Резюме. 144
Совет 17. О запуске приложения через inetd. 144
TCP-серверы. 145
UDP-серверы. 149
Резюме. 154
Совет 18. О назначении серверу номера порта с помощью tcpmux. 154
Резюме. 163
Совет 19. Об использовании двух ТСР-соединений. 163
Архитектура с одним соединением. 164
Архитектура с двумя соединениями. 165
Резюме. 170
Совет 20. О том, как сделать приложение событийно-управляемым (1). 170
Резюме. 179
Совет 21.0 том, как сделать приложение событийно-управляемым (2). 179
Резюме. 187
Совет 22. О том, что не надо прерывать состояние TIME-WAIT для закрытия соединения. 187
Что это такое. 188
Зачем нужно состояние TIME-WAIT. 189
Принудительная отмена состояния TIME-WAIT. 190
Резюме. 192
Совет 23. Об установке опции SO_REUSEADDR. 192
Резюме. 197
Совет 24. О написании одного большого блока вместо нескольких маленьких. 197
Отключение алгоритма Нейгла. 200
Запись со сбором. 201
Резюме. 204
Совет 25. Об организации тайм-аута для вызова connect. 204
Использование вызова alarm. 205
Использование select. 207
Резюме. 210
Совет 26. О вреде копирования данных. 210
Буферы в разделяемой памяти. 212
Система буферов в разделяемой памяти. 213
Реализация в UNIX. 216
Реализация в Windows. 220
Резюме. 224
Совет 27. Об обнулении структуры sockaddrjn. 225
Совет 28. О важности порядка байтов. 225
Резюме. 228
Совет 29. О том, что не стоит «зашивать» IP-адреса и номера портов в код. 229
Резюме. 234
Совет 30. О подсоединенном UDP-сокете. 234
Резюме. 238
Совет 31.О том, что С - не единственный язык программирования. 238
Резюме. 243
Совет 32. О значимости размеров буферов. 243
Резюме. 247
Глава 4. Инструменты и ресурсы. 248
Совет 33. Об использовании утилиты ping. 248
Резюме. 251
Совет 34. Об использовании программы tcpdump или аналогичного средства. 251
Как работает tcpdump. 251
Использование tcpdump. 255
Выходная информация, формируемая tcpdump. 256
Резюме. 261
Совет 35. О применении программы traceroute. 261
Как работает traceroute. 262
Программа tracert в системе Windows. 266
Резюме. 267
Совет 36. О преимуществах программы ttcp. 267
Резюме. 271
Совет 37. О работе с программой Isof. 271
Резюме. 273
Совет 38. Об использовании программы netstat. 273
Активные сокеты. 273
Интерфейсы. 275
Маршрутная таблица. 276
Статистика протоколов. 279
Программа netstat в Windows. 281
Резюме. 281
Совет 39. О средствах трассировки системных вызовов. 281
Преждевременное завершение. 282
Низкая производительность ttcp. 286
Резюме. 287
Совет 40. О создании и применении программы для анализа ICMP-сообщений. 287
Чтение ICMP-сообщений. 288
Печать ICMP-сообщений. 289
Резюме. 295
Совет 41. О пользе книг Стивенса. 295
«TCP/IP Illustrated». 295
«UNIX Network Programming». 297
Совет 42. О чтении текстов программ. 297
Резюме. 299
Совет 43. Отом, что надо знать RFC. 299
Тексты RFC. 300
Совет 44. Об участии в конференциях Usenet. 300
Другие ресурсы, относящиеся к конференциям. 301
Приложение 1. 303
Вспомогательный код для UNIX. 303
Заголовочный файл etcp.h. 303
Функция daemon. 304
Функция signal. 305
Приложение 2. 307
Вспомогательный коддля Windows. 307
Заголовочный файл skel.h. 307
Функции совместимости с Windows. 307
Литература. 310
Предметный указатель.
Купить книгу Эффективное программирование TCP-IP, Снейдер Й., 2002 .
По кнопкам выше и ниже «Купить бумажную книгу» и по ссылке «Купить» можно купить эту книгу с доставкой по всей России и похожие книги по самой лучшей цене в бумажном виде на сайтах официальных интернет магазинов Лабиринт, Озон, Буквоед, Читай-город, Литрес, My-shop, Book24, Books.ru.
По кнопке «Купить и скачать электронную книгу» можно купить эту книгу в электронном виде в официальном интернет магазине «ЛитРес», и потом ее скачать на сайте Литреса.
По кнопке «Найти похожие материалы на других сайтах» можно найти похожие материалы на других сайтах.
On the buttons above and below you can buy the book in official online stores Labirint, Ozon and others. Also you can search related and similar materials on other sites.
Хештеги: #учебник по программированию :: #программирование :: #Снейдер
Смотрите также учебники, книги и учебные материалы:
- Delphi 6, Гофман В.Э., Хомоненко А.Д.
- Руководство разработчика Delphi 5, часть 2, Тейксейра Стив, Ксавье Пачеко
- Руководство разработчика Delphi 5, часть 1, Тейксейра Стив, Ксавье Пачеко
- Программирование на языке Java, Картузов А.В.
- Borland C++ Builder 6, Разработка приложений баз данных, Послед Б.С., 2003
- Разработка программного обеспечения, Константайн Л., Локвуд Л., 2004
- Самоучитель C++ Builder, Культин Н.Б., 2004
- Программирование драйверов Windows, Солдатов В.П., 2004