Книги автора: UNIX: разработка сетевых приложенийUNIX Network Programming
UNIX: взаимодействие процессовUNIX Network Programming. Volume 2 Second Edition. Interprocess Communications
/ Книги автора: UNIX: разработка сетевых приложенийUNIX Network Programming
UNIX: взаимодействие процессовUNIX Network Programming. Volume 2 Second Edition. Interprocess Communications
/ Книги автора: UNIX: разработка сетевых приложенийUNIX Network Programming
UNIX: взаимодействие процессовUNIX Network Programming. Volume 2 Second Edition. Interprocess Communications
/ Книга: UNIX: разработка сетевых приложений
Оглавление книги
- Вступительное слово
- Предисловие
- Часть 1 Введение. TCP/IP
- Глава 1 Введение в сетевое программирование
- 1.1. Введение
- 1.2. Простой клиент времени и даты
- 1.3. Независимость от протокола
- 1.4. Обработка ошибок: функции-обертки
- 1.5. Простой сервер времени и даты
- 1.6. Таблица соответствия примеров технологии клиент-сервер
- 1.7. Модель OSI
- 1.8. История сетевого обеспечения BSD
- 1.9. Сети и узлы, используемые в примерах
- 1.10. Стандарты Unix
- 1.11. 64-разрядные архитектуры
- 1.12. Резюме
- Упражнения
- Глава 2 Транспортный уровень: TCP, UDP и SCRIPT
- 2.1. Введение
- 2.2. Обзор протоколов TCP/IP
- 2.3. UDP: протокол пользовательских дейтаграмм
- 2.4. TCP: протокол контроля передачи
- 2.5. SCRIPT: протокол управления передачей потоков
- 2.6. Установление и завершение соединения TCP
- Трехэтапное рукопожатие
- Параметры TCP
- Завершение соединения TCP
- Диаграмма состояний TCP
- Обмен пакетами
- 2.7. Состояние TIME_WAIT
- 2.8. Установление и завершение ассоциации SCRIPT
- Четырехэтапное рукопожатие
- Завершение ассоциации
- Диаграмма состояний SCRIPT
- Обмен пакетами
- Параметры SCRIPT
- 2.9. Номера портов
- 2.10. Номера портов TCP и параллельные серверы
- 2.11. Размеры буфера и ограничения
- 2.12. Стандартные службы Интернета
- 2.13. Использование протоколов типичными приложениями Интернета
- 2.14. Резюме
- Упражнения
- Часть 2 Элементарные сокеты
- Глава 3 Введение в сокеты
- 3.1. Введение
- 3.2. Структуры адреса сокетов
- Структура адреса сокета IPv4
- Универсальная структура адреса сокета
- Структура адреса сокета IPv6
- Новая универсальная структура адреса сокета
- Сравнение структур адреса сокетов
- 3.3. Аргументы типа «значение-результат»
- 3.4. Функции определения порядка байтов
- 3.5. Функции управления байтами
- 3.6. Функции inet_aton, inet_addr и inet_ntoa
- 3.7. Функции inet_pton и inet_ntop
- 3.8. Функция sock_ntop и связанные с ней функции
- 3.9. Функции readn, writen и readline
- 3.10. Резюме
- Упражнения
- Глава 4 Элементарные сокеты TCP
- 4.1. Введение
- 4.2. Функция socket
- 4.3. Функция connect
- 4.4. Функция bind
- 4.5. Функция listen
- 4.6. Функция accept
- 4.7. Функции fork и exec
- 4.8. Параллельные серверы
- 4.9. Функция close
- 4.10. Функции getsockname и getpeername
- 4.11. Резюме
- Упражнения
- Глава 5 Пример TCP-соединения клиент-сервер
- 5.1. Введение
- 5.2. Эхо-сервер TCP: функция main
- 5.3. Эхо-сервер TCP: функция str_echo
- 5.4. Эхо-клиент TCP: функция main
- 5.5. Эхо-клиент TCP: функция str_cli
- 5.6. Нормальный запуск
- 5.7. Нормальное завершение
- 5.8. Обработка сигналов POSIX
- 5.9. Обработка сигнала SIGCHLD
- 5.10. Функции wait и waitpid
- 5.11. Прерывание соединения перед завершением функции accept
- 5.12. Завершение процесса сервера
- 5.13. Сигнал SIGPIPE
- 5.14. Сбой на узле сервера
- 5.15. Сбой и перезагрузка на узле сервера
- 5.16. Выключение узла сервера
- 5.17. Итоговый пример TCP
- 5.18. Формат данных
- Пример: передача текстовых строк между клиентом и сервером
- Пример: передача двоичных структур между клиентом и сервером
- 5.19. Резюме
- Упражнения
- Глава 6 Мультиплексирование ввода-вывода: функции select и poll
- 6.1. Введение
- 6.2. Модели ввода-вывода
- Модель блокируемого ввода-вывода
- Модель неблокируемого ввода-вывода
- Модель мультиплексирования ввода-вывода
- Модель ввода-вывода, управляемого сигналом
- Модель асинхронного ввода-вывода
- Сравнение моделей ввода-вывода
- Сравнение синхронного и асинхронного ввода-вывода
- 6.3. Функция select
- При каких условиях дескриптор становится готовым?
- Максимальное число дескрипторов для функции select
- 6.4. Функция str_cli (продолжение)
- 6.5. Пакетный ввод
- 6.6. Функция shutdown
- 6.7. Функция str_cli (еще раз)
- 6.8. Эхо-сервер TCP (продолжение)
- 6.9. Функция pselect
- 6.10. Функция poll
- 6.11. Эхо-сервер TCP (еще раз)
- 6.12. Резюме
- Упражнения
- Глава 7 Параметры сокетов
- 7.1. Введение
- 7.2. Функции getsockopt и setsockopt
- 7.3. Проверка наличия параметра и получение значения по умолчанию
- 7.4. Состояния сокетов
- 7.5. Общие параметры сокетов
- Параметр сокета SO_BROADCAST
- Параметр сокета SO_DEBUG
- Параметр сокета SO_DONTROUTE
- Параметр сокета SO_ERROR
- Параметр сокета SO_KEEPALIVE
- Параметр сокета SO_LINGER
- Параметр сокета SO_OOBINLINE
- Параметры сокета SO_RCVBUF и SO_SNDBUF
- Параметры сокета SO_RCVLOWAT и SO_SNDLOWAT
- Параметры сокета SO_RCVTIMEO и SO_SNDTIMEO
- Параметры сокета SO_REUSEADDR и SO_REUSEPORT
- Параметр сокета SO_TYPE
- Параметр сокета SO_USELOOPBACK
- 7.6. Параметры сокетов IPv4
- Параметр сокета IP_HRDINCL
- Параметр сокета IP_OPTIONS
- Параметр сокета IP_RECVDSTADDR
- Параметр сокета IP_RECVIF
- Параметр сокета IP_TOS
- Параметр сокета IP_TTL
- 7.7. Параметр сокета ICMPv6
- 7.8. Параметры сокетов IPv6
- Параметр сокета IPV6_CHECKSUM
- Параметр сокета IPV6_DONTFRAG
- Параметр сокета IPV6_NEXTHOP
- Параметр сокета IPV6_PATHMTU
- Параметр сокета IPV6_RECVDSTOPTS
- Параметр сокета IPV6_RECVHOPLIMIT
- Параметр сокета IPV6_RECVHOPOPTS
- Параметр сокета IPV6_RECVPATHMTU
- Параметр сокета IPV6_RECVPKTINFO
- Параметр сокета IPV6_RECVRTHDR
- Параметр сокета IPV6_RECVTCLASS
- Параметр сокета IPV6_UNICAST_HOPS
- Параметр сокета IPV6_USE_MIN_MTU
- Параметр сокета IPV6_V6ONLY
- Параметры сокета IPV6_XXX
- 7.9. Параметры сокетов TCP
- 7.10. Параметры сокетов SCTP
- Параметр сокета SCTP_ADAPTION_LAYER
- Параметр сокета SCTP_ASSOCINFO
- Параметр сокета SCTP_AUTOCLOSE
- Параметр сокета SCTP_DEFAULT_SEND_PARAM
- Параметр сокета SCTP_DISАВLE_FRAGМENTS
- Параметр сокета SCTP_EVENTS
- Параметр сокета SCTP_GET_PEER_ADDR_INFO
- Параметр сокета SCTP_I_WANT_MAPPED_V4_ADDR
- Параметр сокета SCTP_INITMSG
- Параметр сокета SCTP_MAXBURST
- Параметр сокета SCTP_MAXSEG
- Параметр сокета SCTP_NODELAY
- Параметр сокета SCTP_PEER_ADDR_PARAMS
- Параметр сокета SCTP_PRIMARY_ADDR
- Параметр сокета SCTP_RTOINFO
- Параметр сокета SCTP_SET_PEER_PRIMARY_ADDR
- Параметр сокета SCTP_STATUS
- 7.11. Функция fcntl
- 7.12. Резюме
- Упражнения
- Глава 8 Основные сведения о сокетах UDP
- 8.1. Введение
- 8.2. Функции recvfrom и sendto
- 8.3. Эхо-сервер UDP: функция main
- 8.4. Эхо-сервер UDP: функция dg_echo
- 8.5. Эхо-клиент UDP: функция main
- 8.6. Эхо-клиент UDP: функция dg_cli
- 8.7. Потерянные дейтаграммы
- 8.8. Проверка полученного ответа
- 8.9. Запуск клиента без запуска сервера
- 8.10. Итоговый пример клиент-сервера UDP
- 8.11. Функция connect для UDP
- 8.12. Функция dg_cli (продолжение)
- 8.13. Отсутствие управления потоком в UDP
- 8.14. Определение исходящего интерфейса для UDP
- 8.15. Эхо-сервер TCP и UDP, использующий функцию select
- 8.16. Резюме
- Упражнения
- Глава 9 Основы сокетов SCTP
- 9.1. Введение
- 9.2. Модели интерфейса
- 9.3. Функция sctp_bindx
- 9.4. Функция sctp_connectx
- 9.5. Функция sctp_getpaddrs
- 9.6. Функция sctp_freepaddrs
- 9.7. Функция sctp_getladdrs
- 9.8. Функция sctp_freeladdrs
- 9.9. Функция sctp_sendmsg
- 9.10. Функция sctp_recvmsg
- 9.11. Функция sctp_opt_info
- 9.12. Функция sctp_peeloff
- 9.13. Функция shutdown
- 9.14. Уведомления
- 9.15. Резюме
- Упражнения
- Глава 10 Пример SCTP-соединения клиент-сервер
- 10.1. Введение
- 10.2. Потоковый эхо-сервер SCTP типа «один-ко-многим»: функция main
- 10.3. Потоковый эхо-клиент SCTP типа «один-ко-многим»: функция main
- 10.4. Потоковый эхо-клиент SCTP: функция str_cli
- 10.5. Блокирование очереди
- 10.6. Управление количеством потоков
- 10.7. Управление завершением соединения
- 10.8. Резюме
- Упражнения
- Глава 11 Преобразования имен и адресов
- 11.1. Введение
- 11.2. Система доменных имен
- 11.3. Функция gethostbyname
- 11.4 Функция gethostbyaddr
- 11.5. Функции getservbyname и getservbyport
- 11.6. Функция getaddrinfo
- 11.7. Функция gai_strerror
- 11.8. Функция freeaddrinfo
- 11.9. Функция getaddrinfo: IPv6
- 11.10. Функция getaddrinfo: примеры
- 11.11. Функция host_serv
- 11.12. Функция tcp_connect
- 11.13. Функция tcp_listen
- 11.14. Функция udp_client
- 11.15. Функция udp_connect
- 11.16. Функция udp_server
- 11.17. Функция getnameinfo
- 11.18. Функции, допускающие повторное вхождение
- 11.19. Функции gethostbyname_r и gethostbyaddr_r
- 11.20. Устаревшие функции поиска адресов IPv6
- 11.21. Другая информация о сетях
- 11.22. Резюме
- Упражнения
- Часть 3 Дополнительные возможности сокетов
- Глава 12 Совместимость IPv4 и IPv6
- 12.1. Введение
- 12.2. Клиент IPv4, сервер IPv6
- 12.3. Клиент IPv6, сервер IPv4
- 12.4. Макроопределения проверки адреса IPv6
- 12.5. Переносимость исходного кода
- 12.6. Резюме
- Упражнения
- Глава 13 Процессы-демоны и суперсервер inetd
- 13.1. Введение
- 13.2. Демон syslogd
- 13.3. Функция syslog
- 13.4. Функция daemon_init
- 13.5. Демон inetd
- 13.6. Функция daemon_inetd
- 13.7. Резюме
- Упражнения
- Глава 14 Дополнительные функции ввода-вывода
- 14.1. Введение
- 14.2. Тайм-ауты сокета
- Тайм-аут для функции connect (сигнал SIGALRM)
- Тайм-аут для функции recvfrom (сигнал SIGALRM)
- Тайм-аут для функции recvfrom (функция select)
- Тайм-аут для функции recvfrom (параметр сокета SO_RCVTIMEO)
- 14.3. Функции recv и send
- 14.4. Функции readv и writev
- 14.5. Функции recvmsg и sendmsg
- 14.6. Вспомогательные данные
- 14.7. Сколько данных находится в очереди?
- 14.8. Сокеты и стандартный ввод-вывод
- 14.9. Расширенный опрос
- 14.10. Резюме
- Упражнения
- Глава 15 Доменные протоколы Unix
- 15.1. Введение
- 15.2. Структура адреса доменного сокета Unix
- 15.3. Функция socketpair
- 15.4. Функции сокетов
- 15.5. Клиент и сервер потокового доменного протокола Unix
- 15.6. Клиент и сервер дейтаграммного доменного протокола Unix
- 15.7. Передача дескрипторов
- 15.8. Получение информации об отправителе
- 15.9. Резюме
- Упражнения
- Глава 16 Неблокируемый ввод-вывод
- 16.1. Введение
- 16.2. Неблокируемые чтение и запись: функция str_cli (продолжение)
- 16.3. Неблокируемая функция connect
- 16.4. Неблокируемая функция connect: клиент времени и даты
- 16.5. Неблокируемая функция connect: веб-клиент
- 16.6. Неблокируемая функция accept
- 16.7. Резюме
- Упражнения
- Глава 17 Операции функции ioctl
- 17.1. Введение
- 17.2. Функция ioctl
- 17.3. Операции с сокетами
- 17.4. Операции с файлами
- 17.5. Конфигурация интерфейса
- 17.6. Функция get_ifi_info
- 17.7. Операции с интерфейсами
- 17.8. Операции с кэшем ARP
- 17.9. Операции с таблицей маршрутизации
- 17.10. Резюме
- Упражнения
- Глава 18 Маршрутизирующие сокеты
- 18.1. Введение
- 18.2. Структура адреса сокета канального уровня
- 18.3. Чтение и запись
- 18.4. Операции функции sysctl
- 18.5. Функция get_ifi_info (повтор)
- 18.6. Функции имени и индекса интерфейса
- 18.7. Резюме
- Упражнения
- Глава 19 Сокеты управления ключами
- 19.1. Введение
- 19.2. Чтение и запись
- 19.3. Дамп базы соглашений о безопасности
- 19.4. Создание статического соглашения о безопасности
- 19.5. Динамическое управление SA
- 19.6. Резюме
- Упражнения
- Глава 20 Широковещательная передача
- 20.1. Введение
- 20.2. Широковещательные адреса
- 20.3. Направленная и широковещательная передачи
- 20.4. Функция dg_cli при использовании широковещательной передачи
- 20.5. Ситуация гонок
- Блокирование и разблокирование сигнала с помощью функции pselect
- Использование функций sigsetjmp и siglongjmp
- Применение IPC в обработчике сигнала функции
- 20.6. Резюме
- Упражнения
- Глава 21 Многоадресная передача
- 21.1. Введение
- 21.2. Адрес многоадресной передачи
- Адреса IPv4 класса D
- Адреса многоадресной передачи IPv6
- Область действия адресов многоадресной передачи
- Сеансы многоадресной передачи
- 21.3. Сравнение многоадресной и широковещательной передачи в локальной сети
- 21.4. Многоадресная передача в глобальной сети
- 21.5. Многоадресная передача от отправителя
- 21.6. Параметры сокетов многоадресной передачи
- 21.7. Функция mcast_join и родственные функции
- 21.8 Функция dg_cli, использующая многоадресную передачу
- 21.9. Получение анонсов сеансов многоадресной передачи
- 21.10. Отправка и получение
- 21.11. SNTP: простой синхронизирующий сетевой протокол
- 21.12. Резюме
- Упражнения
- Глава 22 Дополнительные сведения о сокетах udp
- 22.1. Введение
- 22.2. Получение флагов, IP-адреса получателя и индекса интерфейса
- 22.3. Обрезанные дейтаграммы
- 22.4. Когда UDP оказывается предпочтительнее TCP
- 22.5. Добавление надежности приложению UDP
- 22.6. Связывание с адресами интерфейсов
- 22.7. Параллельные серверы UDP
- 22.8. Информация о пакетах IPv6
- Исходящий и входящий интерфейсы
- Адрес отправителя и адрес получателя IPv6
- Задание и получение предельного количества транзитных узлов
- Задание адреса следующего транзитного узла
- Задание и получение класса трафика
- 22.9. Управление транспортной MTU IPv6
- Отправка с минимальной MTU
- Получение сообщений об изменении транспортной MTU
- Определение текущей транспортной MTU
- Отключение фрагментации
- 22.10. Резюме
- Упражнения
- Глава 23 Дополнительные сведения о сокетах SCTP
- 23.1. Введение
- 23.2. Сервер типа «один-ко-многим» с автоматическим закрытием
- 23.3. Частичная доставка
- 23.4. Уведомления
- 23.5. Неупорядоченные данные
- 23.6. Связывание с подмножеством адресов
- 23.7. Получение адресов
- 23.8. Определение идентификатора ассоциации по IP-адресу
- 23.9. Проверка соединения и ошибки доступа
- 23.10. Выделение ассоциации
- 23.11. Управление таймерами
- 23.12. Когда SCTP оказывается предпочтительнее TCP
- 23.13. Резюме
- Упражнения
- Глава 24 Внеполосные данные
- 24.1. Введение
- 24.2. Внеполосные данные протокола TCP
- 24.3. Функция sockatmark
- Пример: особенности отметки внеполосных данных
- Пример: дополнительные свойства внеполосных данных
- Пример: единственность отметки внеполосных данных в TCP
- 24.4. Резюме по теме внеполосных данных TCP
- 24.5. Резюме
- Упражнения
- Глава 25 Управляемый сигналом ввод-вывод
- 25.1. Введение
- 25.2. Управляемый сигналом ввод-вывод для сокетов
- 25.3. Эхо-сервер UDP с использованием сигнала SIGIO
- 25.4. Резюме
- Упражнения
- Глава 26 Программные потоки
- 26.1. Введение
- 26.2. Основные функции для работы с потоками: создание и завершение потоков
- Функция pthread_create
- Функция pthread_join
- Функция pthread_self
- Функция pthread_detach
- Функция pthread_exit
- 26.3. Использование потоков в функции str_cli
- 26.4. Использование потоков в эхо-сервере TCP
- 26.5. Собственные данные потоков
- 26.6. Веб-клиент и одновременное соединение (продолжение)
- 26.7. Взаимные исключения
- 26.8. Условные переменные
- 26.9. Веб-клиент и одновременный доступ
- 26.10. Резюме
- Упражнения
- Глава 27 Параметры IP
- 27.1. Введение
- 27.2. Параметры IPv4
- 27.3. Параметры маршрута от отправителя IPv4
- 27.4. Заголовки расширения IPv6
- 27.5. Параметры транзитных узлов и параметры получателя IPv6
- 27.6. Заголовок маршрутизации IPv6
- 27.7. «Закрепленные» параметры IPv6
- 27.8. История развития интерфейса IPv6
- 27.9. Резюме
- Упражнения
- Глава 28 Символьные сокеты
- 28.1. Введение
- 28.2. Создание символьных сокетов
- 28.3. Вывод на символьном сокете
- 28.4. Ввод через символьный сокет
- 28.5. Программа ping
- 28.6. Программа traceroute
- 28.7. Демон сообщений ICMP
- 28.8. Резюме
- Упражнения
- Глава 29 Доступ к канальному уровню
- 29.1. Введение
- 29.2. BPF: пакетный фильтр BSD
- 29.3. DLPI: интерфейс поставщика канального уровня
- 29.4. Linux: SOCK_PACKET и PF_PACKET
- 29.5. Libcap: библиотека для захвата пакетов
- 29.6. Libnet: библиотека создания и отправки пакетов
- 29.7. Анализ поля контрольной суммы UDP
- 29.8. Резюме
- Упражнения
- Глава 30 Альтернативное устройство клиента и сервера
- 30.1. Введение
- 30.2. Альтернативы для клиента TCP
- 30.3. Тестовый клиент TCP
- 30.4. Последовательный сервер TCP
- 30.5. Параллельный сервер TCP: один дочерний процесс для каждого клиента
- 30.6. Сервер TCP с предварительным порождением процессов без блокировки для вызова accept
- Реализация 4.4BSD
- Эффект наличия слишком большого количества дочерних процессов
- Распределение клиентских соединений между дочерними процессами
- Коллизии при вызове функции select
- 30.7. Сервер TCP с предварительным порождением процессов и защитой вызова accept блокировкой файла
- Эффект наличия слишком большого количества дочерних процессов
- Распределение клиентских соединений между дочерними процессами
- 30.8. Сервер TCP с предварительным порождением процессов и защитой вызова accept при помощи взаимного исключения
- 30.9. Сервер TCP с предварительным порождением процессов: передача дескриптора
- 30.10. Параллельный сервер TCP: один поток для каждого клиента
- 30.11. Сервер TCP с предварительным порождением потоков, каждый из которых вызывает accept
- 30.12. Сервер с предварительным порождением потоков: основной поток вызывает функцию accept
- 30.13. Резюме
- Упражнения
- Глава 31 Потоки (STREAMS)
- Приложения
- Приложение А Протоколы IPv4, IPv6, ICMPv4 и ICMFV6
- А.1. Введение
- А.2. Заголовок IPv4
- А.3. Заголовок IPv6
- А.4. Адресация IPv4
- Адреса подсетей
- Адрес закольцовки
- Неопределенный адрес
- Частные адреса
- Многоинтерфейсность и псевдонимы адресов
- А.5. Адресация IPv6
- Объединяемые глобальные индивидуальные адреса
- Тестовые адреса 6bone
- Адреса IPv4, преобразованные к виду IPv6
- Адреса IPv6, совместимые с IPv4
- Адрес закольцовки
- Неопределенный адрес
- Адрес локальной связи
- Адрес, локальный на уровне сайта
- А.6. ICMPv4 и ICMPv6: протоколы управляющих сообщений в сети Интернет
- Приложение Б Виртуальные сети
- Приложение В Техника отладки
- В.1. Трассировка системных вызовов
- В.2. Стандартные службы Интернета
- В.3. Программа sock
- В.4. Небольшие тестовые программы
- В.5. Программа tcpdump
- В.6. Программа netstat
- В.7. Программа lsof
- Приложение Г Различные исходные коды
- Г.1. Заголовочный файл unp.h
- Г.2. Заголовочный файл config.h
- Г.3. Стандартные функции обработки ошибок
- Приложение Д Решения некоторых упражнений
- Литература
- Сноски из книги
- Содержание книги
- Популярные страницы
Похожие страницы
- ЧАСТЬ 1 ВВЕДЕНИЕ В IPC UNIX
- UNIX: разработка сетевых приложений
- Повышение производительности приложений с помощью хранимых процедур
- Разработка через тестирование и разработка с тестами
- 2.5. Разработка технического задания на проведение детального анализа рынка при работе над инновационным проектом. Основ...
- 12. Лекция: Создание приложений с графическим интерфейсом пользователя.
- Разработка приложений баз данных InterBase на Borland Delphi
- Глава 1 UNIX для начинающих
- Вам очень пригодится «Разработка ценностных предложений», если…
- Глава 5. Разработка и анализ бизнес-планов в системе Project Expert
- 2.2. Практическая разработка фирменного стиля компании 51
- Размещение публикаций в сетевых СМИ