UNIX: разработка сетевых приложений, стр. 391
11.10. Когда клиент выводит
Trying 206.62.226.35...
gethostname
Connected to bsdi.unpbook.com.
connect
Глава 12
12.1. Далее приведен сокращенный листинг. Обратите внимание, что клиент FTP в системе
freebsd
EPRT
PORT
freebsd % <b>ftp aix-4</b>
Connected to aix-4.unpbook.com.
220 aix FTP server ...
...
230 Guest login ok. access restrictions apply.
ftp> <b>debug</b>
Debugging on (debug=1).
ftp> <b>passive</b>
Passive mode: off; fallback to active mode= off
ftp> <b>dir</b>
---> EPRT |1|192 168.42.1|50484|
500 'EPRT |1|192.168.42.1|50484|' command not understood.
disabling epsv4 for this connection
---> PORT 192.168.42.1.197.52
200 PORT command successful.
---> LIST
150 Opening ASCII mode data connection for /bin/ls
...
freebsd % <b>ftp ftp.kame.net</b>
Trying 2001.200:0:4819:203:47ff:fea5:3085...
Connected to orange.kame.net.
220 orange.kame.net FTP server ...
...
230 Guest login ok. access restrictions apply.
ftp> <b>debug</b>
Debugging on (debug=1).
ftp> <b>passive</b>
Passive mode: off; fallback to active mode: off.
ftp> <b>dir</b>
---> EPRT |2|3ffe:b80:3:9ad1::2|50480|
200 EPRT command successful
---> LIST
150 Opening ASCII mode data connection for '/bin/ls'.
Глава 13
13.1. Все сообщения об ошибках, даже ошибка загрузки, такая как неправильный аргумент командной строки, должны сохраняться в файлах журнала с помощью функции
syslog
13.2. TCP-версии серверов
echo
discard
chargen
inetd
fork
time
daytime
fork
inetd
fork
inetd
13.3. Это известная атака типа «отказ в обслуживании» [18]. Первая дейтаграмма с порта 7 заставляет сервер
chargen
chargen
inetd
13.4. IP-адрес и номер порта клиента могут быть получены из структуры адреса сокета, заполняемой функцией
accept
Причина, по которой демон
inetd
recvfrom
exec
inetd
Демон
inetd
MSG_PEEK
Глава 14
14.1. Если не установлен обработчик, первый вызов функции
signal
SIG_DFL
signal
14.3. Приведем цикл
for
for (;;) {
if ((n = Recv(sockfd, recvline, MAXLINE, MSG_PEEK)) == 0)
break; /* сервер закрыл соединение */
Ioctl(sockfd, FIONREAD, &npend);
printf("%d bytes from PEEK, %d bytes pending\n", n, npend);
n = Read(sockfd, recvline, MAXLINE);
recvline[n] = 0; /* завершающий нуль */
Fputs(recvline, stdout);
}
14.4. Данные продолжают выводиться, поскольку выход из функции
main
main