Книга: UNIX: разработка сетевых приложений
Глава 13
Глава 13
13.1. Все сообщения об ошибках, даже ошибка загрузки, такая как неправильный аргумент командной строки, должны сохраняться в файлах журнала с помощью функции syslog
.
13.2. TCP-версии серверов echo
, discard
и chargen
запускаются как дочерние процессы, после того как демон inetd
вызовет функцию fork
, поскольку эти три сервера работают, пока клиент не прервет соединение. Два других TCP-сервера, time
и daytime
, не требуют использования функции fork
, поскольку эти службы легко реализовать (получить текущую дату, преобразовать ее, записать и закрыть соединение). Эти два сервера обрабатываются непосредственно демоном inetd
. Все пять UDP-служб обрабатываются без использования функции fork
, поскольку каждая из них генерирует единственную дейтаграмму в ответ на клиентскую дейтаграмму, которая запускает эту службу. Эти пять служб обрабатываются напрямую демоном inetd
.
13.3. Это известная атака типа «отказ в обслуживании» [18]. Первая дейтаграмма с порта 7 заставляет сервер chargen
отправить дейтаграмму обратно на порт 7. На эту дейтаграмму приходит эхо-ответ, и серверу chargen
посылается другая дейтаграмма. Происходит зацикливание. Одним из решений, реализованным в системе BSD/OS, является игнорирование дейтаграмм, направленных любому внутреннему серверу, если номер порта отправителя пришедшей дейтаграммы принадлежит одному из внутренних серверов. Другим решением может быть запрещение этих внутренних служб — либо с помощью демона inetd
на каждом узле, либо на маршрутизаторе, связывающем внутреннюю сеть организации с Интернетом.
13.4. IP-адрес и номер порта клиента могут быть получены из структуры адреса сокета, заполняемой функцией accept
.
Причина, по которой демон inetd
не делает этого для UDP-сокета, состоит в том, что чтение дейтаграмм (recvfrom
) осуществляется с помощью функции exec
сервером, а не самим демоном inetd
.
Демон inetd
может считать дейтаграмму с флагом MSG_PEEK
(см. раздел 14.7), только чтобы получить IP-адрес и номер порта клиента, но оставляет саму дейтаграмму для чтения серверу.
- 6.3.2. Процедура сбора качественных данных
- Глава 2 Табличный редактор Microsoft Excel
- «Плиточные» структуры и квазикристаллы
- 16.13 Формат сообщений MIME
- Как уразуметь свою техническую роль и придерживаться ее
- Отправка запроса
- Build a Run-Time Image for an OS Design
- Как отвечать на письма, полученные вашей организацией
- 5.1.1. Создание трехмерной модели радиатора
- Привязка к процессорам
- Клонирование по сетке ("Copy to Grid")
- Программирование для Linux. Профессиональный подход