русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Утилита Finger


Дата добавления: 2015-09-15; просмотров: 1668; Нарушение авторских прав


Протокол Finger позволяет получать информацию о пользователях, подключенных к удаленному компьютеру. Более того, Finger позволяет получать общедоступную информацию о конкретном лице, работающем в системе. Для получения конкретной информации о пользователях от удаленного компьютера создается сокет, затем он соединяется с удаленным компьютером, после чего производится обмен данными и возвращается информация о работающих в системе пользователях: это может быть скучная информация о том, кто зарегистрирован под данным пользовательским именем, когда он подключился к сети, время его последнего выхода в сеть; наряду с этим, по желанию самого пользователя, можно получить какие-либо интересные сведения о нем, если он сочтет нужным поместить их в информационный файл на сервере.

Так как для одинаковых целей в различных ОС используются различные символы и все компьютеры (точнее ОС) выполняют похожие операции, то несовместимость управляющих символов может привести к тому, что правильно работающая на одном компьютере сетевая программа выдаст непредсказуемые результаты на другом. К задачам уровня представления относится устранение несовместимости между сетевыми компьютерами. Функции уровня представления, как правило, выполняются протоколами виртуального сетевого терминала. При этом с точки зрения сетевой программы дисплеи и принтеры всех удаленных компьютеров выглядят и управляются одинаково. Стек протоколов TCP/IP не имеет отдельного уровня представления. Основные функции этого и сеансового уровней модели ISO/OSI берет на себя прикладной уровень. Тем не менее в TCP/IP существует протокол виртуального терминала - TELNET.

Основополагающая концепция TELNET - идея сетевого виртуального терминала (NVT). Эта концепция используется не только в TELNET. Многие протоколы, например Finger, также работают по этому принципу. В спецификации TELNET виртуальный терминал описывается, как воображаемое устройство, выполняющее соглашения о работе обыкновенных компьютерных мониторов или терминалов. Концепция NVT является исключительно протоколом работы виртуального терминала.



Все компьютерные системы выполняют сходные действия, выводя информацию на экран. В спецификации виртуального терминала указывается, какими символами необходимо кодировать те или иные действия: перевод каретки, забой, очистку экрана и прочие специальные действия. Определив единый для всех сетевых программ стандарт, NVT тем самым скрыл различия в реализации этих функций в различных сетевых компьютерах.

Перед тем, как отправить данные, и клиент и сервер кодируют их в соответствии с требованиями NVT. Программы-получатели данных декодируют их в соответствии с требованиями собственной ОС. Для кодирования сетевых данных NVT пользуется стандартной американской кодировкой ASCII, используя из 33-х управляющих символов только 8. Протокол Finger имеет официальный номер порта - 79. Номер порта протокола относится к определенной сетевой программе. Для того, чтобы запросить службу Finger у удаленного компьютера, программа должна установить ТСР соединение с его портом под номером 79. Все запросы Finger выполняются в формате NVT ASCII.

Чтобы получить список работающих пользователей, программа передает пустую строку. Чтобы получить информацию о конкретном пользователе, строка-запрос должна содержать имя или идентификатор этого пользователя. Каждая строка-запрос заканчивается маркером конца строки в формате NVT ASCII - комбинацией CRLF. Для установления соединения с удаленным компьютером, первым делом необходимо соединиться с сервером DNS и «попросить» его найти IP-адрес по известному имени, для чего требуются функции gethostbyaddr и gethostbynam, возвращающие информацию о сетевом компьютере. Windows Sockets хранит эту информацию в специальной «Структуре данных об удаленном компьютере».

Перед тем, как создать и соединить сокет, из этой структуры необходимо извлечь IP-адрес компьютера из структуры данных об удаленном компьютере (см. подраздел 2.2.2). После того, как сокет создан и программа получила его дескриптор, он настраивается на адрес удаленного компьютера. Первый шаг на этом пути - получение информации о сетевой службе и БД.

Как только сокету присвоен адрес, он готов к соединению. Соединение происходит при участии функции connect. Аргументами функции connect являются дескриптор и адрес сокета. Для получения дескриптора сокета, вызывается функция socket, с указанием типа сетевого соединения и протокола, а для создания адреса сокета, необходимо заполнить структуру данных, где указываются порт протокола и реально существующий IP-адрес удаленного компьютера в формате адреса Интернет. Чтобы получить номер порта, вызывается функция getservbyname с наименованием сетевой службы Finger, в качестве аргумента, и указывается протокол. В случае, если протокол не указан, принимается протокол по умолчанию.

После того, как соединение установлено, мы можем посылать и принимать данные. Для передачи строки запроса на Finger-сервер, используется функция Send. Сервер протокола Finger ожидает получения запроса в формате NVT ASCII с порта 79.

Как только запрос передан, Finger переходит в режим ожидания, где периодически вызывает функцию recv, чтобы принять данные из сокета. Функция recv возвращает количество считанных из сокета байт.

Если ошибки не было, в буфере формируются результаты ответа сервера, а именно: туда помещается идентификатор пользователя и имя сетевого компьютера, выводимые на панель сообщения Finger в формате username@hostname.

1.3. Утилита Ping

Режим Ping позволяет определить время прохождения датаграммы по сети между двумя удаленными компьютерами. Это необходимо для определения, работает ли в данный момент определенный сетевой компьютер и доступен ли он по сети. По полученному значению времени можно судить о качестве канала связи, так как чем меньше время прохождения тем лучше связь и наоборот. Для получения этой информации режим использует ICMP-сообщение «эхо» запрос и ответ. Особенностью этого протокола является то, что он не использует транспортного уровня.

Для своей работы режим Ping использует не ориентированный на соединение простой сокет. Но прежде чем его создать, как и любая служба Интернет, он определяет IP-адрес удаленного компьютера. После этого мы извлекаем информацию о протоколе обмена ICMP из сетевой базы данных, на основании которой и создается простой сокет. Затем, когда сокет уже создан, заполняем структуру данных, являющуюся точным повторением полей сообщения-запроса «эхо».

Когда все это проделано, включается счетчик «тиков» («тики») и отправляется датаграмма сообщения-запроса. Так как мы используем не ориентированный на соединение сокет, то запрос отправляется при помощи функции sendto.

После отправления сообщения, утилита ожидает прихода «эхо» ответа, который принимается при помощи функции recvfrom.

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

Первым делом определяем длину, чтобы удостовериться, что ICMP-заголовок принят. Затем проверяется тип (принят «эхо» ответ или нет). И, последнее, выясняем принадлежит ли этот пакет нашей программе (по полю идентификатора).

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

1.3. Пример работы с программой-эмулятором сети

Последовательность событий слева направо и сверху вниз



<== предыдущая лекция | следующая лекция ==>
Утилита Lookup | Незаменимые факторы питания


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.