Протокол Finger и информация о пользователях, страница 2

Формат NVT

Формат NVT, заданный в спецификации TELNET, весьма прост. Вы знаете, что наименьшая частица информации, с которой обычно оперируют современные компьютеры, равна одному байту. Для кодирования сетевых данных NVT пользуется стандартной американской кодировкой ASCII (American Standard Code for Information Interchange). Для кодирования данных в стандартном (не расширенном) наборе ASCII на один символ отведено всего 7 битов. Для передачи командных последовательностей NVT использует восьмой (старший) бит.

Вы наверное знаете, что в наборе US-ASCII есть 95 печатных символов и 33 управляющих. К первым относятся цифры, буквы, знаки пунктуации и другие. Некоторые из 33 управляющих широко применяются в устройствах вывода данных, а некоторые – нет. Хорошо известен, например, символ с кодом ASCII 7 или, по-другому, BEL. Его появление в тексте приводит к генерации звукового сигнала. Некоторые из управляющих символов ASCII используются я в NVT. Они перечислены в табл. 1.

Таблица 1. Управляющие ASCII-коды в представлении NVT

Код управляющего символа

Шестнадцатиричное значение

Совершаемое действие

NUL

BEL

BS

НТ

LF

VT

FF

CR

0х00

0х07

0х08

0х09

ОхОА

ОхОВ

ОхОС

OxOD

Не производит никакой операции.

Звуковой (звонок) или визуальный < сигнал.

Сдвиг влево на одну позицию (backspace).

Сдвиг вправо на одну позицию горизонтальной табуляции.

Сдвиг вниз на одну строку (перевод строки, line-feed).

Сдвиг вниз на следующую позицию вертикальной табуляции.

Перемещение на начало следующей страницы (formfeed).

Сдвиг к левой границе текущей строки (возврат каретки, carriage-return) .

Кроме того, в NVT определена стандартная комбинация символов для обозначения конца строки: CRLF (перевод каретки и перевод строки). Как только пользователь нажимает клавишу Enter (или Return), NVT преобразует нажатие в символы CRLF. Определения символов NVT называются также NVT ASCII — они полностью описаны, в спецификации протокола TELNET. NVT ASCII используется многими сетевыми программами.

Примечанием Кроме вышеописанных символов, NVT определяет и некоторые другие. Правда, они очень редко встречаются на практике.

В RFC 854, "Спецификация протокола TELNET», NVT описывается как часть протокола TELNET. NVT обеспечивает стандартный сетевой интерфейс, подобный виртуальному сетевому протоколу, призванный скрыть различия между компьютерами в интерпретации таких символов, как перевод каретки, строки, маркеров конца строки и т. п. Для кодирования цифр, букв и знаков пунктуации NVT использует 7-битную кодировку. Из 33 управляющих символов ASCII используются только восемь (они перечислены в табл. 1). Комбинация CRLF {перевод каретки и перевод строки} используется в качестве маркера конца строки. Набор ASCII, определенный в NVT, часто так и называется: NVT ASCII. Множество программ Интернет пользуются набором NVT ASCII при передаче сетевых данных.

Константы

Так же как и другие программы Winsock API, QFinger включает в себя файл winsock.h. После оператора include следуют операторы, задающие константы:

#include "..\winsock.h"

#define PROG_NAME "Simple Finger Query"

#define HOST_NAME "cerfnet.com" // Может быть любым

// (настоящим) именем

// компьютера

#define WINSOCK_VERSION 0х0101 // Необходим Winsock версии 1.1

#define PF_INET_LENGTH 4        // Длина адреса в протоколах

// Интернет всегда равна // 4 байтам

#define FINGER_QUERY "lonetech" // Настоящее имя

// пользователя или имя для // входа в систему

#define DEFAULT_PROTOCOL 0      // Протокол не задан, поэтому используем

// протокол "по умолчанию"