Эффективное программирование TCP/IP
Покупка
Тематика:
Программирование и алгоритмизация
Издательство:
ДМК Пресс
Автор:
Cнейдер Йон
Год издания: 2009
Кол-во страниц: 320
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-94074-670-6
Артикул: 616177.01.99
Программирование TCP/IP может показаться очень простым, но это заблуждение. Многие программисты сталкиваются с тем, что написанное ими сетевое приложение недостаточно надежно. Особое внимание в данной книге уделено тонким вопросам функционирования семейства протоколов и способам работы с ними. Здесь изложены подтвержденные практикой советы, технические приемы и эвристические правила программирования TCP/IP для достижения максимальной производительности; показано, как избежать многих типичных ошибок. Основные идеи и концепции иллюстрируются многочисленными примерами. Книга значительно ускорит процесс обучения программированию и позволит вам быстро достичь уровня профессионала.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Эффективное программирование 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