Книга: UNIX: разработка сетевых приложений

2.12. Стандартные службы Интернета

2.12. Стандартные службы Интернета

В табл. 2.1 перечислены некоторые стандартные службы, предоставляемые большинством реализаций TCP/IP. Заметьте, что все они поддерживают и TCP, и UDP, и номер порта для обоих протоколов один и тот же.

Таблица 2.1. Стандартные службы TCP/IP, предоставляемые в большинстве реализаций

Имя Порт TCP Порт UDP RFC Описание
echo 7 7 862 Сервер возвращает то, что посылает клиент
discard 9 9 863 Сервер игнорирует все данные, присланные клиентом
daytime 13 13 867 Сервер возвращает время и дату в формате, удобном для восприятия человеком
chargen 19 19 864 TCP-сервер посылает непрерывный поток символов, пока соединение не будет разорвано клиентом. UDP-сервер посылает дейтаграмму со случайным количеством символов каждый раз, когда клиент посылает дейтаграмму
time 37 37 868 Сервер возвращает текущее время в виде двоичного 32-разрядного числа. Это число представляет собой количество секунд, прошедших с полуночи 1 января 1900 года (UTC)

Часто эти службы предоставляются демоном inetd на узлах Unix (см. раздел 13.5). Стандартные службы делают возможным простейшее тестирование при помощи стандартного клиента Telnet.

Вот, например, тесты для сервера, определяющего время и дату, и для эхо-сервера.

aix % telnet freebsd daytime
Trying 12.106.32.254...            вывод клиента Telnet
Connected to freebsd.unpbook.com   вывод клиента Telnet
Escape character is '^]'.          вывод клиента Telnet
Mon Jul 28 11:56:22 2003           вывод сервера времени и даты
Connection closed by foreign host. вывод клиента Telnet (сервер закрыл
                                   соединение)
aix % telnet freebsd echo
Trying 12.106.32.254...          вывод клиента Telnet
Connected to freebsd.unpbook.com вывод клиента Telnet
Escape character is '^]'.        вывод клиента Telnet
hello, world                     ввод с клавиатуры
hello, world                     эхо-ответ сервера
^]                 ввод с клавиатуры для обращения к клиенту Telnet
telnet> quit       команда клиенту на завершение соединения
Connection closed. на этот раз соединение завершает клиент

В этих двух примерах мы вводим имя узла и название службы (daytime и echo). Соответствие названий служб и номеров портов (см. табл. 2.1) устанавливается в файле /etc/services (см. раздел 11.5).

Заметьте, что когда мы соединяемся с сервером daytime, сервер выполняет активное закрытие. В случае эхо-сервера активное закрытие выполняет клиент. Вспомним рис. 2.4, где показано, что узел, выполняющий активное закрытие, — это узел, проходящий состояние TIME_WAIT.

В современных системах стандартные службы чаще всего отключены по умолчанию, потому что через них могут быть проведены атаки типа «отказ в обслуживании» и другие, связанные с чрезмерным потреблением ресурсов.

Оглавление книги


Генерация: 1.257. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз