Предисловие

Глава 1. Введение
Некоторые термины
Путеводитель по книге
Архитектура клиент-сервер
Элементы API сокетов
Резюме

Глава 2. Основы
Совет 1. О необходимости различать протоколы,
требующие и не требующие установления логического
соединения
Резюме
Совет 2. О том, что такое подсети и CIDR
Классы адресов
Подсети
Ограниченное вещание
Вещание на сеть
Вещание на подсеть
Вещание на все подсети
Бесклассовая междоменная маршрутизация - CIDR
Текущее состояние организации подсетей и CIDR
Резюме
Совет 3. О том, что такое частные адреса и NAT
Резюме
Совет 4. О разработке и применении каркасов
приложений
Каркас TCP-сервера
Каркас TCP-клиента
Каркас UDP-сервера
Каркас UDP-клиента
Резюме
Совет 5. О том, почему интерфейс сокетов
лучше интерфейса XTI/TLI
Резюме
Совет 6. О том, что TCP - потоковый протокол
Резюме
Совет 7.0 важности правильной оценки
производительности TCP
Источник и приемник на базе UDP
Источник и приемник на базе TCP
Резюме
Совет 8. О том, что не надо заново изобретать TCP
Резюме
Совет 9. О том, что при всей надежности у TCP есть и
недостатки
Что такое надежность
Потенциальные ошибки
Сбой в сети
Отказ приложения
Крах хоста на другом конце соединения
Резюме
Совет 10. О том, что TCP не выполняет опрос
соединения
Механизм контролеров
Пульсация
Еще один пример пульсации
Резюме
Совет 11. 0 некорректном поведении партнера
Проверка завершения работы клиента
Проверка корректности входной информации
Резюме
Совет 12.0 работе программы в локальной и глобальной
сетях
Скрытая ошибка
Резюме
Совет 13. О функционировании протоколов
Резюме
Совет 14. О семиуровневой эталонной модели 081
Модель OSI
Модель TCP/IP
Резюме

Глава 3. Создание эффективных
и устойчивых сетевых программ
Совет 15. Об операции записи в TCP
Операция записи с точки зрения приложения
Операция записи с точки зрения TCP
Резюме
Совет 16. О важности аккуратного размыкания
TCP-соединений
Вызов shutdown
Аккуратное размыкание соединений
Резюме
Совет 17. О запуске приложения через inetd
TCP-серверы
UDP-серверы
Резюме
Совет 18. О назначении серверу номера порта
с помощью tcpmux
Резюме
Совет 19. Об использовании двух TCP-соединений
Архитектура с одним соединением
Архитектура с двумя соединениями
Резюме
Совет 20. О том, как сделать приложение
событийно-управляемым (1)
Резюме
Совет 21. О том, как сделать приложение
событийно-управляемым (2)
Резюме
Совет 22. О том, что не надо прерывать состояние
TIME-WAIT для закрытия соединения
Что это такое
Зачем нужно состояние TIME-WAIT
Принудительная отмена состояния TIME-WAIT
Резюме
Совет 23. Об установке опции SO_REUSEADDR
Резюме
Совет 24. О написании одного большого блока
вместо нескольких маленьких
Отключение алгоритма Нейгла
Запись со сбором
Резюме
Совет 25. Об организации тайм-аута для вызова
connect Использование вызова alarm
Использование select
Резюме
Совет 26. О вреде копирования данных
Буферы в разделяемой памяти
Система буферов в разделяемой памяти
Реализация в UNIX
Реализация в Windows
Резюме
Совет 27. Об обнулении структуры sockaddr_in
Совет 28. О важности порядка байтов
Резюме
Совет 29. О том, что не стоит "зашивать" IP-адреса
и номера портов в код
Резюме
Совет 30. О подсоединенном UDP-сокете
Резюме
Совет 31. О том, что С - не единственный
язык программирования
Резюме
Совет 32. О значимости размеров буферов
Резюме

Глава 4. Инструменты и ресурсы
Совет 33. Об использовании утилиты ping
Резюме
Совет 34. Об использовании программы tcpdump
или аналогичного средства
Как работает tcpdump
Использование tcpdump
Выходная информация, формируемая tcpdump
Резюме
Совет 35. О применении программы traceroute
Как работает traceroute
Программа tracert в системе Windows
Резюме
Совет 36. О преимуществах программы ttcp
Резюме
Совет 37. О работе с программой Isof
Резюме
Совет 38. Об использовании программы netstat
Активные сокеты
Интерфейсы
Маршрутная таблица
Статистика протоколов
Программа netstat в Windows
Резюме
Совет 39. О средствах трассировки системных вызовов
Преждевременное завершение
Низкая производительность ttcp
Резюме
Совет 40. О создании и применении программы
для анализа ICMP-сообщений
Чтение ICMP-сообщений
Печать ICMP-сообщений
Резюме
Совет 41. О пользе книг Стивенса
"TCP/IP Illustrated"
"UNIX Network Programming"
Совет 42. О чтении текстов программ
Резюме
Совет 43. О том, что надо знать RFC
Тексты RFC
Совет 44. Об участии в конференциях Usenet
Другие ресурсы, относящиеся к конференциям

Приложение 1
Вспомогательный код для UNIX
Заголовочный файл etcp.h
Функция daemon
Функция signal

Приложение 2
Вспомогательный код для Windows Заголовочный файл
skel.h
Функции совместимости с Windows

Литература

Предметный указатель