Разработка программ клиент-серверного взаимодействия на основе различных сетевых протоколов
Изучение протоколов Echo, Time, DayTime, WhoIs, Finger, RLogin, Telnet. Разработка программ клиент-серверного взаимодействия. Обработка команд запросов и ответов протоколов. Использование функций Windows API и других библиотек для работы с сокетами.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 28.04.2015 |
Размер файла | 22,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Лабораторная работа № 9
Разработка программ клиент-серверного взаимодействия на основе различных сетевых протоколов
Цель работы
Изучить протоколы Echo, Time, DayTime, WhoIs, Finger, RLogin, Telnet. Приобрести практические навыки разработки клиент-серверных приложений.
Постановка задачи
1. Изучить методические указания к лабораторной работе, материалы лекций и рекомендуемую литературу.
2. Разработать приложение клиент-сервер согласно варианту.
Краткие теоретические сведения
1. Протокол Echo.
RFC 862 гласит:
Этот документ создает стандарт для сообщества ARPA Internet. Предполагается, что хосты сети ARPA Internet, использующие протокол Echo адаптируют свои реализации протокола в соответствии с этим стандартом.
Эхо-сервис весьма полезен для отладки и выполнения измерений. Этот сервис просто возвращает отправителю любые данные, полученные от него.
Службы Echo на базе протокола TCP.
Один из вариантов эхо-сервиса определен как основанный на организации соединений приложение ТСР. Эхо-сервер прослушивает соединения ТСР на порту 7. После организации соединения все полученные через это соединение данные возвращаются отправителю. Процесс возврата полученных данных отправителю продолжается до тех пор, пока инициатор соединения не разорвет это соединение.
Службы Echo на базе протокола UDP.
Другой вариант эхо-сервиса не использует прямых соединений и основан на передаче дейтаграмм UDP. Эхо-сервер прослушивает порт 7 (UDP) и возвращает отправителю все принятые через этот порт дейтаграммы.
2. Протокол Time.
Данный протокол предназначен для синхронизации времени. В сети работают time-серверы, у которых можно запросить точное время. Следует заметить, что в настоящее время для синхронизации времени в глобальных сетях используется более сложный протокол - NTP - Network Time Protocol. В ответ на запрос клиента, сервер возвращает время в секундах (32х битное двоичное число), прошедшее с 00:00:00 1 января 1900 года.
Этот протокол может использовать в качестве транспортной службы как UDP-протокол, так и TCP-протокол. Стандартный порт протокола - 37.
Если в качестве транспортной службы используется TCP, взаимодействие осуществляется так:
SERVER: прослушивает 37 порт, ожидая соединений
CLIENT: запрашивает соединение с портом 37 сервера
SERVER: посылает время в виде двоичного 32х битного числа
CLIENT: получает время
SERVER: закрывает соединение
CLIENT: закрывает соединение
Если сервер по каким-либо причинам не может определить время на своей стороне, он отказывается от соединения, не посылая ничего.
Если в качестве транспортной службы используется UDP, взаимодействие осуществляется так:
SERVER: прослушивает 37 порт, ожидая соединений
CLIENT: посылает серверу пустой UDP-пакет, номер порта = 37
SERVER: получает пустой UDP-пакет
SERVER: посылает UDP-пакет, содержащий время в виде двоичного 32х битного числа
CLIENT: получает UDP -пакет, содержащий время
Если сервер по каким-либо причинам не может определить время на своей стороне, он отбрасывает полученный пустой UDP-пакет и не посылает ничего в ответ.
3. Протокол DayTime.
Протокол DayTime определен в документе RFC867. Протокол может использовать в качестве транспортного протокола UDP и TCP. В случае использования UDP сервер занимает 13-й порт и ожидает поступления датаграмм. После получения датаграммы он отправляет по обратному адресу пакет, содержащий текущие дату и время в виде текстовой строки. Дополнительно, сервер выводит информацию о поступившем запросе на стандартный вывод. В случае использования TCP, как и в UDP, сервер занимает порт 13 и ожидает поступления запросов на установление соединения. После установления соединения, сервер отправляет клиенту строку, содержащую дату и время, и закрывает соединение.
4. Протокол WhoIs.
Протокол Whois это информационный сервис. Несмотря на то, что любой узел может предоставить Whois сервис, наиболее широко используется InterNIC, rs.internic.net. Этот сервер содержит информацию обо всех зарегистрированных DNS доменах и о большинстве системных администраторов, которые ответственны за системы, подключенные к Internet. (Еще один подобный сервер nic.ddn.mil содержит информацию о сети MILNET.) К сожалению, не всегда предоставляется полная информация. RFC 954 [Harrenstein, Stahl, and Feinler 1985] документирует сервис Whois.
С точки зрения протокола, сервер Whois работает с заранее известным портом TCP 43. Он принимает от клиента запрос на соединение, после чего клиент отправляет на сервер запрос длиной в 1 строку. Сервер выдает информацию и закрывает соединение. Запросы и отклики передаются в формате NVT ASCII. Он практически идентичен серверу Finger, за исключением того, что запросы и отклики содержат разную информацию.
Широко используемый Unix клиент - программа whois, однако можно использовать Telnet и ввести команды самостоятельно. Сначала отправляется запрос, содержащий знак вопроса, на что возвращается более подробная информация о поддерживаемых запросах клиента.
5. Протокол Finger.
Протокол Finger возвращает информацию об одном или нескольких пользователях на указанном хосте. Это приложение обычно используется, для того чтобы посмотреть, находится ли конкретный пользователь в настоящее время в системе, или чтобы получить имя какого-либо пользователя, чтобы послать ему почту. RFC 1288 [Zimmerman 1991] описывает этот протокол.
Многие узлы не запускают Finger сервер по двум причинам. Во-первых, ошибки в программировании в ранних версиях сервера были одной из точек входа "червяка" в Internet в 1988 году. Во-вторых, протокол Finger может предоставить подробную информацию о пользователях (имя входа в систему, телефонные номера, время последнего входа и так далее), а эту информацию большинство администраторов считают частной. Раздел 3 RFC 1288 детально описывает аспекты секретности, соответствующие сервису Finger.
Сервер Finger использует заранее известный порт 79. Клиент осуществляет активное открытие на этот порт и отправляет запрос длиной в 1 строку. Сервер обрабатывает запрос, посылает назад вывод и закрывает соединение. Запрос и отклик в формате NVT ASCII, почти так же как мы видели в случае FTP и SMTP.
Обычно большинство пользователей Unix получают доступ к серверу Finger с использованием клиента finger, однако можно воспользоваться Telnet клиентом. Если запрос клиента состоит из пустой строки (которая в NVT ASCII передается как CR, за которой следует LF), это воспринимается как запрос на информацию о всех текущих пользователях.
6. Протокол RLogin.
Rlogin появился в 4.2BSD и был предназначен для захода удаленным терминалом между Unix хостами. Поэтому Rlogin проще, чем Telnet, так как он не требует определения параметров, которые для одной и той же операционной системы известны заранее и для клиента, и для сервера. Через несколько лет Rlogin был перенесен на не-Unix системы.
RFC 1282 [Kantor 1991] содержит спецификацию протокола Rlogin. Однако, как и в случае с RFC посвященным RIP (Routing Information Protocol), он был написан после того, как Rlogin уже использовался в течении нескольких лет.
Rlogin использует одно TCP соединение между клиентом и сервером. После того как TCP соединение установлено, между клиентом и сервером осуществляется следующая последовательность действий.
Клиент отправляет серверу четыре строки: нулевой байт, имя пользователя на хосте клиента, заканчивающееся нулевым байтом, имя пользователя на хосте сервера, заканчивающееся нулевым байтом, тип терминала пользователя, за которым следует слэш, затем следует скорость терминала, и все это заканчивается нулевым байтом. Необходимо отправить именно два имени пользователя, потому что пользователи не обязаны иметь одинаковые имена на разных хостах.
Тип терминала передается от клиента к серверу, потому что эта информация необходима для большинства полноэкранных приложений. Скорость терминала передается, потому что некоторые приложения работают по-разному в зависимости от скорости.
Сервер отвечает нулевым байтом.
У сервера есть опция, с помощью которой он просит ввести пароль. Это осуществляется как обычный обмен данными по Rlogin соединению - специальные протоколы не применяются. Сервер отправляет клиенту строку (которую клиент отображает на терминале), чаще всего эта строка выглядит как «Password:». Если клиент не вводит пароль в течение определенного времени (обычно 60 секунд), сервер закрывает соединение. Все что вводится в ответ на приглашение сервера ввести пароль, передается в виде открытого текста. Символы введенного пароля посылаются так, как они есть. Каждый, кто может прочитать пакеты в сети, может прочитать любой пароль.
Сервер обычно отправляет запрос клиенту, спрашивая размер окна терминала.
Клиент посылает за один раз серверу 1 байт, каждый байт сервер отражает эхо-откликом. Функционально все довольно просто: то, что вводит пользователь, отправляется на сервер, а то, что сервер отправляет клиенту, отображается на терминале.
7. Telnet.
Telnet был разработан, для того чтобы работать между хостами работающими под управлениием любых операционных систем, а также с любыми терминалами. Его спецификация, приведенная в RFC 854 [Postel and Reynolds 1983a], определяет терминал, который может являться наиболее общим, и который называется виртуальным сетевым терминалом (NVT - network virtual terminal). NVT это воображаемое устройство, находящееся на обоих концах соединения, у клиента и сервера, с помощью которого устанавливается соответствие между их реальными терминалами. Таким образом, операционная система клиента должна определять соответствие между тем типом терминала, за которым работает пользователь, с NVT. В свою очередь, сервер должен устанавливать соответствие между NVT и теми типами терминалов, которые он (сервер) поддерживает.
NVT - это символьное устройство с клавиатурой и принтером. Данные, введенные пользователем с клавиатуры, отправляются серверу, а данные, полученные от сервера, поступают на принтер. По умолчанию клиент отражает эхом на принтер все, что ввел пользователь, однако, ниже мы увидим что, существуют опции, которые позволяют изменить подобное поведение. протокол серверный запрос сокет
Варианты заданий
Все программы выполняются на любом языке программирования, возможно использование как функций Windows API, так и любых других библиотек для работы с сокетами.
Написать программу, реализующую следующие функции клиента и сервера одного из протоколов:
Вариант 1: Протокол Echo.
Вариант 2: Протокол Time.
Вариант 3: Протокол DayTime.
Вариант 4: Протокол WhoIs.
Вариант 5: Протокол Finger.
Вариант 6: Протокол RLogin.
Вариант 7: Протокол Telnet.
Программа должна производить полную обработку команд запросов и ответов каждого из протоколов. Ввиду сложности вариантов 6 и 7 допускается обработка только основного подмножества команд.
Сдача всех программ должна сопровождаться демонстрацией работы не только написанного самостоятельно клиента с сервером, но и демонстрации возможности взаимодействия написанного клиента (сервера) с сервером (клиентом) стороннего производителя (это необходимо для того, что бы проверить что протокол, реализованный самостоятельно, совместим со стандартом).
Литература
1. Паркер Т., Сиян К. TCP/IP. Для профессионалов.: Пер. с англ. - СПб.: Питер, 2003. 864 с.: ил.
2. Протоколы: HTTP, FTP, RPC, SMTP, POP3, IMAP4, SNMP, IPX/SPX - Книга. [Электрон, ресурс] / Исходники.RU. Режим доступа: http://ishodniki.ru/list/?show=protocols
3. Сетевые протоколы и технологии. [Электрон, ресурс] / OS Zone. Режим доступа: http://www.oszone.net/display.php?id=83
4. Request for comment. [Электрон, ресурс] / Режим доступа: http://www.rfc-editor.org/rfc/
a. RFC 854 - Telnet
b. RFC 862 - Echo
c. RFC 867 - DayTime
d. RFC 868 - Time
e. RFC 954 - WhoIs
f. RFC 1282 - RLogin
g. RFC 1288 - Finger
5. Кумар В., Кровчик Э и др. .NET. Сетевое программирование / Пер. с англ. -М.: «Лори», 2007.
Размещено на Allbest.ru
...Подобные документы
Изучение истории достижений корпорации Oracle. Разработка клиент-серверного приложения на языке Delphi XE, реализующего возможность управления персоналом на предприятии. Основные структуры данных. Создание инструкции работы с приложением "Отдел кадров".
дипломная работа [974,7 K], добавлен 08.06.2013Сетевое программное обеспечение: общее понятие, содержание, функции. Этапы развития теории компьютерных сетей. Проектирование в среде программирования Borland Builder C++ клиент серверного приложения с использованием сокетов, листинг данной программы.
курсовая работа [191,5 K], добавлен 07.01.2015Разработка системы, базирующейся на протоколе LIMone, для обмена мгновенными сообщениями и пересылки файлов в процессе деловой переписки. Реализация системы в виде клиент-серверного приложения. Расчет экономических показателей программного продукта.
дипломная работа [4,7 M], добавлен 22.08.2016Характеристика разновидностей программной реализации чатов. Разработка программы клиент-серверного чата с возможность общения в локальной сети нескольких человек одновременно. Протокол взаимодействия клиента и сервера. Порядок работы с программой.
курсовая работа [530,7 K], добавлен 25.04.2015Электронная почта (E-Mail) и ее основные компоненты: информационный ресурс, почтовый сервер, клиент и протоколы их взаимодействия. Сравнительная характеристика протоколов SMTP, POP3 и IMAP4. Телеконференции, файловые архивы FTP, Telnet, World Wide Web.
контрольная работа [152,9 K], добавлен 19.01.2011Стеки протоколов общемировой сетевой базе. Формат кадра сообщения NetBIOS. Использование в сети стеков коммуникационных протоколов: IPX/SPX, TCP/IP, OSI и DECnet. Дистанционное управление освещением. Особенности использования коммуникационных протоколов.
презентация [3,1 M], добавлен 21.02.2015TCP/IP-установка протоколов, используемых для связи компьютерных сетей и маршрутизации движения информации между большим количеством различных компьютеров. "TCP" означает "Протокол контроля передачи". "IP" означает "Протокол межсетевого взаимодействия".
контрольная работа [23,4 K], добавлен 04.10.2008Схема информационных потоков с учетом серверов. Выбор топологии и метода доступа корпоративной сети. Выбор коммутаторов, IP-телефонов и видеофонов, рабочих станций, вспомогательного серверного ПО, сетевых протоколов. Моделирование системы в GPSS.
курсовая работа [2,7 M], добавлен 24.05.2013Описания сетевых протоколов прикладного уровня, позволяющих производить удалённое управление операционной системой. Основные характеристики протокола CMIP. Изучение особенностей Telnet, сетевого протокола для реализации текстового интерфейса по сети.
реферат [47,0 K], добавлен 24.01.2014Характеристика модели клиент-сервер как технологии взаимодействия в информационной сети. Разработка и описание алгоритмов работы приложений на платформе Win32 в среде Microsoft Visual Studio, использующих для межпроцессного взаимодействия сокеты.
курсовая работа [544,6 K], добавлен 02.06.2014Угрозы безопасности баз данных. Политика информационной безопасности предприятия в области использования сетевых ресурсов. Разработка и введение в эксплуатацию защищенного клиент-серверного приложения. Средства аутентификации объектов базы данных.
дипломная работа [4,6 M], добавлен 21.02.2013Разработка первой программы для отправки электронной почты по сети. Развитие протоколов передачи данных. Роль Джона Постела в разработке и стандартизации сетевых протоколов. Способы подключения к Интернету. Настройка СТРИМ. Доступ через сотовую связь.
презентация [410,8 K], добавлен 30.04.2014Разработка клиент-серверного приложения, позволяющего взаимодействовать друг с другом с использованием доступа к базам данных. Проектирование связи сервера с базой данных с помощью технологии ODBC. Разработка интерфейса программы, ее тестирование.
курсовая работа [352,0 K], добавлен 24.08.2016Выделение основных сущностей проектируемой системы, описание их взаимосвязи. Построение базы данных и приложений: разработка таблиц и связей между ними, локальных представлений данных, форм, запросов, меню. Инструкция для работы пользователя с программой.
курсовая работа [380,9 K], добавлен 06.04.2015Многоуровневые архитектуры клиент–сервер. Диаграммы классов, реализующих уровни презентации, бизнес–логики и базы данных приложения. Словесное описание процесса выполнения транзакций. Создание, изменение и удаление хранимых процедур, их выполнение.
курсовая работа [3,4 M], добавлен 23.03.2013Понятие "Интернет" и его роль в современном мире. Понятие протоколов сетевого взаимодействия. Схема потока данных сквозь стек протоколов от приложения-клиента на одном компьютере к приложению-серверу на другом. Основные элементы технологии WWW.
презентация [248,0 K], добавлен 19.09.2016Разработка API взаимодействия клиентских приложений с сервером СУБД через Pipe под Windows. Устройство и характеристики СУБД SQLite. Методы WinAPI для передачи данных. Реализация взаимодействия через PIPE. Результат работы серверного приложения.
курсовая работа [596,3 K], добавлен 09.05.2014Разработка клиент-серверного приложения на основе TCP\IP соединения. Организация работы удаленного генератора псевдослучайных последовательностей. Описание основных функциональных модулей. Интерфейс пользователя, сетевое взаимодействие и алгоритм.
курсовая работа [223,6 K], добавлен 18.10.2013Характеристика подходов к построению CRM-систем. Разработка клиент-серверного приложения, которое предоставляет возможность управления взаимоотношениями с клиентами на платформе ASP.NET Web Froms. Проработка некоторых аспектов безопасности CRM-систем.
курсовая работа [686,2 K], добавлен 24.04.2015Разработка компьютерной сети. Спецификация и расчет себестоимости спроектированной сети. Выбор инструментальных средств для реализации разрабатываемого клиент-серверного приложения. Описание логической структуры программного продукта, основные алгоритмы.
курсовая работа [942,1 K], добавлен 19.03.2012