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

       

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

Глава 1. Введение
Некоторые термины
Путеводитель по книге

Архитектура клиент-сервер
Элементы API сокетов

Резюме
Совет 1. Различайте протоколы, требующие и не требующие установления логического соединения
Совет 2. Выясните, что такое подсети и CIDR



Классы адресов
Подсети
Ограниченное вещание
Вещание на сеть

Вещание на подсеть
Вещание на все подсети
Бесклассовая междоменная маршрутизация- CIDR
Текущее состояние организации подсетей и CIDR
Совет 3. Разберитесь, что такое частные адреса и NAT

Совет 4. Разрабатывайте и применяйте каркасы приложений
Каркас TCP-сервера
Каркас TCP-клиента
Каркас UDP-сервера

Каркас UDP-клиента
Совет 5. Предпочитайте интерфейс сокетов интерфейсу XTI/TLI
Совет 6. Помните, что TCP - потоковый протокол

Совет 7. Не надо недооценивать производительность TCP
Источник и приемник на базе UDP
Совет 8. Не надо заново изобретать TCP

Совет 9. При всей надежности у TCP есть и недостатки
Что такое надежность
Потенциальные ошибки
Сбой в сети
Отказ приложения
Kрax хоста на другом конце соединения

Совет 10. Помните, что TCP не выполняет опрос соединения
Механизм контролеров
Пульсация
Еще один пример пульсации
Совет 11. Будьте готовы к некорректному поведению партнера
Проверка завершения работы клиента

Проверка корректности входной информации
Совет 12. Не думайте, что программа, работающая в локальной сети, будет работать и в глобальной
Недостаточная производительность
Скрытая ошибка
Совет 13. Изучайте работу протоколов
Совет 14. Не воспринимайте слишком серьезно семиуровневую эталонную модель OSI
Модель OSI
Модель TCP/IP

Совет 15. Разберитесь с операцией записи в TCP
Операция записи с точки зрения приложения
Операция записи с точки зрения TCP
Совет 16. Разберитесь с аккуратным размыканием TCP-соединений
Вызов shutdown
Аккуратное размыкание соединений

Совет 17. Подумайте о запуске своего приложения через inetd
TCP-серверы
UDP-серверы

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

Совет 18. Подумайте о том, чтобы
Совет 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. Определите, на что влияют размеры буферов

Совет 33. Используйте утилиту ping
Совет 34. Используйте программу tcpdump или аналогичное средство
Как работает tcpdump

Использование tcpdump
Выходная информация, формируемая tcpdump
Совет 35. Применяйте программу traceroute
Программа tracert в системе Windows
Совет 36. Используйте программу ttcp

Совет 37. Применяйте программу Isof
Совет 38. Используйте программу netstat
Активные сокеты
Интерфейсы
Маршрутная таблица

Статистика протоколов
Программа netstat в Windows
Совет 39. Применяйте средства трассировки системных вызовов
Преждевременное завершение

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


Низкая производительность ttcp
Совет 40. Создание и применение программы для анализа ICMP-сообщений
Чтение ICMP-сообщений
Печать ICMP-сообщений

Совет 41. Читайте книги Стивенса
«TCP/IP illustrated»
«UNIX Network Programming»
Совет 42. Читайте тексты программ
Совет 43. Изучайте RFC
Тексты RFC
Совет 44. Участвуйте в конференциях Usenet

Другие ресурсы, относящиеся к конференциям
Вспомогательный код для UNIX
Вспомогательный код для Windows
Функции совместимости с Windows
Литература