UNIX: разработка сетевых приложений
UNIX: разработка сетевых приложений читать книгу онлайн
Новое издание книги, посвященной созданию веб-серверов, клиент-серверных приложений или любого другого сетевого программного обеспечения в операционной системе UNIX, — классическое руководство по сетевым программным интерфейсам, в частности сокетам. Оно основано на трудах Уильяма Стивенса и полностью переработано и обновлено двумя ведущими экспертами по сетевому программированию. В книгу включено описание ключевых современных стандартов, реализаций и методов, она содержит большое количество иллюстрирующих примеров и может использоваться как учебник по программированию в сетях, так и в качестве справочника для опытных программистов.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
-Т параметр SO_REUSEPORT
-U n войти в срочный режим, прежде чем записать число n (только для отправителя)
-V использовать writev() вместо write(): включает -k
-W игнорировать ошибки записи для клиента приема
-X n параметр TCP_MAXSEG (устанавливает MSS)
-Y параметр SO_DONTROUTE
-Z MSG_PEEK
-2 параметр IP_ONESBCAST (255.255.255.255) для широковещательной передачи
В.4. Небольшие тестовые программы
Другим полезным методом отладки, которым автор пользовался при написании книги, является создание небольших тестовых программ, позволяющих увидеть, как работает одно конкретное свойство в тщательно выстроенной тестовой ситуации. При написании небольших тестовых программ полезно иметь набор библиотечных функций-оберток и некоторых простых функций вывода сообщений об ошибках, наподобие тех, что использовались на протяжении всей книги. Такой подход уменьшает размер создаваемого кода и в то же время обеспечивает требуемую проверку ошибок.
В.5. Программа tcpdump
Бесценным средством отладки в сетевом программировании является такая программа, как
tcpdump
% <b>tcpdump '(udp and port daytime) or icmp'</b>
выводит только UDP-дейтаграммы с номером порта отправителя или получателя, равным 13 (сервер времени и даты), или ICMP-пакеты. Следующая команда:
% <b>tcpdump 'tcp and port 80 and tcp[13:1] & 2 != 0'</b>
выводит только TCP-сегменты с номером порта отправителя или получателя, равным 80 (сервер HTTP), у которых установлен флаг SYN. Флаг SYN имеет значение 2 в 13-м байте от начала TCP-заголовка. Следующая команда:
% <b>tcpdump 'tcp and tcp[0:2] > 7000 and tcp[0:2] <= 7005'</b>
выводит только те TCP-сегменты, у которых номер порта отправителя лежит в интервале от 7001 до 7005. Номер порта отправителя занимает 2 байта в самом начале TCP-заголовка (нулевое смещение).
В приложении А книги [111] более подробно описано действие данной программы.
Эта программа доступна по адресу http://www.tcpdump.org/ и работает под множеством реализаций Unix. Она написана Ван Якобсоном (Van Jacobson), Крэгом Лересом (Craig Leres) и Стивеном МакКаном (Steven McCanne) из LBL, и в настоящее время сопровождается командой tcpdump.org.
Некоторые поставщики предлагают свои программы, обладающие теми же возможностями. Например, в Solaris 2.x есть программа snoop. Но программа tcpdump функционирует под множеством версий Unix, а возможность использования одного и того же средства в неоднородном окружении является большим преимуществом.
В.6. Программа netstat
В тексте книги много раз использовалась программа
netstat
■ Она выводит статус точек доступа сети. Это было показано в разделе 5.6, когда мы прослеживали статус нашей точки доступа при запуске клиента и сервера.
■ Она показывает, к какой группе принадлежит каждый из интерфейсов узла. Обычно для этой цели используется флаг
-ia
-g
■ С параметром
-s
■ При использовании параметра
-r
-i
netstat
Программа
netstat
В.7. Программа lsof
Название
lsof
tcpdump
Одним из общих способов применения программы
lsof
netstat
solaris % <b>lsof -i TCP:daytime</b>
COMMAND PID USER FD TYPE DEVICE SIZE/OFF INODE NAME
inetd 222 root 15u inet 0xf5a801f8 0t0 TCP *:daytime
В выводе приводятся следующие данные: команда (данный сервис обеспечивается сервером
inetd
Еще один из традиционных случаев применения данной программы имеет место, когда мы запускаем сервер, который связывает свой заранее известный порт и получает ошибку, указывающую, что адрес уже используется. Тогда мы запускаем программу
lsof
Поскольку программа
lsof
Программа находится по адресу ftp://vic.cc.purdue.edu/pub/tools/unix/lsof. Она написана Виком Абелем (Vic Abell).
Некоторые поставщики предлагают свои программы с похожими возможностями. Например, в BSD/OS предлагается программа fstat. Однако программа lsof работает под множеством версий Unix, а использование одного инструмента в неоднородном окружении вместо подбора различных средств для каждой среды является большим преимуществом.
Приложение Г
Различные исходные коды
Г.1. Заголовочный файл unp.h
Почти каждая программа в этой книге начинается с подключения заголовочного файла
unp.h
MAXLINE
readline