Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Эффективное программирование TCP/IP

Покупка
Артикул: 616177.01.99
Программирование TCP/IP может показаться очень простым, но это заблуждение. Многие программисты сталкиваются с тем, что написанное ими сетевое приложение недостаточно надежно. Особое внимание в данной книге уделено тонким вопросам функционирования семейства протоколов и способам работы с ними. Здесь изложены подтвержденные практикой советы, технические приемы и эвристические правила программирования TCP/IP для достижения максимальной производительности; показано, как избежать многих типичных ошибок. Основные идеи и концепции иллюстрируются многочисленными примерами. Книга значительно ускорит процесс обучения программированию и позволит вам быстро достичь уровня профессионала.
Cнейдер, Й. Снейдер, Й. Эффективное программирование TCP/IP / Йон Снейдер; пер. с англ. А.А. Слинкина. - Москва : ДМК Пресс. - 320 с. - (Для программистов). - ISBN 978-5-94074-670-6. - Текст : электронный. - URL: https://znanium.com/catalog/product/409174 (дата обращения: 28.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Эффективное программирование TCP/IP

Йон Снейдер

Effective TCP/IP
Programming
44 Tips
to Improve Your
Network Programs

Jon C. Snader

Boston • San Francisco • New York • Toronto • Montreal

London • Munich • Paris • Madrid
Capetown • Sidney • Tokyo • Singapore • Mexico City

Эффективное

программирование

TCP/IP

Йон Снейдер

Москва

Серия «Для программистов»

ББК 32.973.202018.2

С53

Cнейдер Й.

С53 Эффективное программирование TCP/IP: Пер. с англ. – М.: ДМК Пресс.

– 320 с.: ил. (Серия «Для программистов»).

ISBN 97859407470Программирование TCP/IP может показаться очень простым, но это

заблуждение. Многие программисты сталкиваются с тем, что написанное
ими сетевое приложение недостаточно надежно. Особое внимание в данной
книге уделено тонким вопросам функционирования семейства протоколов
и способам работы с ними. Здесь изложены подтвержденные практикой
советы, технические приемы и эвристические правила программирования
TCP/IP для достижения максимальной производительности; показано, как
избежать многих типичных ошибок. Основные идеи и концепции иллюстрируются многочисленными примерами.

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

ББК 32.973.202018.2

Публикуется по согласованию с издательством, выпустившим оригинал: ADDISONWESLEY LONGMAN, a Pearson Education Company.

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

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

Материал, изложенный в данной книге, многократно проверен. Но, поскольку вероятность

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

ISBN 0201615894 (англ.)
Translation copyright – by DMK Press
(Effective TCP/IP Programming:
44 Tips to Improve Your Network Programs,
First Edition by Jon Snader,
Copyright © All Rights Reserved)

ДМК Пресс

6 
6 

ISBN 978594074706 
6 
                 (рус.)        Перевод на русский язык, оформление.
©

Содержание

Предисловие ................................................................................... 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

Эффективное программирование TCP/IP

Совет 5. О том, почему интерфейс сокетов
лучше интерфейса XTI/TLI ................................................... 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. О важности аккуратного размыкания
TCPсоединений ............................................................. 137
Вызов shutdown ............................................................................... 137
Аккуратное размыкание соединений .................................................. 139
Резюме .......................................................................................... 144
Совет 17. О запуске приложения через inetd ................................... 144
TCPсерверы .................................................................................. 145
UDPсерверы .................................................................................. 149
Резюме .......................................................................................... 154
Совет 18. О назначении серверу номера порта
с помощью tcpmux .......................................................... 154
Резюме .....................................................................................................163
Совет 19. Об использовании двух TCPсоединений ........................ 163
Архитектура с одним соединением .................................................... 164
Архитектура с двумя соединениями ................................................... 165
Резюме .......................................................................................... 170
Совет 20. О том, как сделать приложение
событийноуправляемым (1) ........................................... 170
Резюме .......................................................................................... 179
Совет 21. О том, как сделать приложение
событийноуправляемым (2) ........................................... 179
Резюме .......................................................................................... 187
Совет 22. О том, что не надо прерывать состояние TIMEWAIT
для закрытия соединения ................................................ 187
Что это такое ................................................................................... 188
Зачем нужно состояние TIMEWAIT ..................................................... 189
Принудительная отмена состояния TIMEWAIT ..................................... 190
Резюме .......................................................................................... 192
Совет 23. Об установке опции SO_REUSEADDR .............................. 192
Резюме .......................................................................................... 197

Эффективное программирование TCP/IP

Совет 24. О написании одного большого блока
вместо нескольких маленьких ......................................... 197
Отключение алгоритма Нейгла .......................................................... 200
Запись со сбором ............................................................................ 201
Резюме .......................................................................................... 204
Совет 25. Об организации таймаута для вызова connect ............... 204
Использование вызова alarm ............................................................. 205
Использование select ............................................................................... 207
Резюме .......................................................................................... 210
Совет 26. О вреде копирования данных .......................................... 210
Буферы в разделяемой памяти .......................................................... 212
Система буферов в разделяемой памяти ............................................ 213
Реализация в UNIX ........................................................................... 216
Реализация в Windows ...................................................................... 220
Резюме .......................................................................................... 224
Совет 27. Об обнулении структуры sockaddr_in ............................... 225
Совет 28. О важности порядка байтов ............................................. 225
Резюме .......................................................................................... 228
Совет 29. О том, что не стоит «зашивать» IPадреса
и номера портов в код ..................................................... 229
Резюме .......................................................................................... 234
Совет 30. О подсоединенном UDPсокете ...................................... 234
Резюме .......................................................................................... 238
Совет 31. О том, что C – не единственный
язык программирования ................................................. 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. О работе с программой lsof ............................................. 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

Эффективное программирование TCP/IP

Функция daemon .............................................................................. 304
Функция signal ..........................................................................................305
Приложение 2 ............................................................................... 307
Вспомогательный код для Windows ............................................. 307
Заголовочный файл skel.h ................................................................. 307
Функции совместимости с Windows ............................................ 307
Литература ..................................................................................... 310
Предметный указатель ........................................................... 314