Книга: 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-адрес и номер порта клиента, но оставляет саму дейтаграмму для чтения серверу.
- Chapter 5. Kernel Initialization
- Кто такая Елена Ивашенцева?
- 11.2. Цели процесса
- Рис. 214. Имена почтовых серверов.
- Document
- ГЛАВА 3 Внутренняя структура .NET Compact Framework
- Джордж Буль Отец булевой алгебры
- Removable Storage Media
- Работа пользователей с виртуальной машиной
- 6.5. Общие команды меню Windows-программ. Буфер обмена Windows
- Ассортимент
- 6.3 Native Application Builder (NAB)