Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Разработка сетевых приложений

Покупка
Артикул: 769624.01.99
Доступ онлайн
120 ₽
В корзину
Изложены основы разработки сетевых приложений, базирующихся на клиент/серверной модели. Даны основные понятия и логические основы компьютерных сетей. Рассмотрены: организация распределенных многопроцессных и многопоточных приложений; средства синхронизации потоков и процессов. Приводятся методы и средства межпроцессного обмена данными (сокеты. удаленный вызов процедур, логические каналы). Показаны примеры построения функциональных расширений WWW-сервера на основе интерфейсов CGI и ISAPI.
Кручинин, В. В. Разработка сетевых приложений : учебное пособие / В. В. Кручинин. - Томск : Томский государственный университет систем управления и радиоэлектроники, 2013. - 120 с. - Текст : электронный. - URL: https://znanium.com/catalog/product/1845904 (дата обращения: 26.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Федеральное агентство по образованию 

 

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ 

УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР) 

 
 

Кафедра промышленной электроники 

 
 

В.В. Кручинин 

 
 
 

 

 

РАЗРАБОТКА СЕТЕВЫХ  

ПРИЛОЖЕНИЙ 

 
 
 

Учебное пособие 

 
 
 
 
 
 
 
 
 
 
 
 
 
 

2013

 
 
 
 
 
 
 
 
 
 
 
 
 
 
Кручинин В.В. 
Разработка сетевых приложений: Учебное пособие. — Томск: 
Томский государственный университет систем управления и радиоэлектроники, 2013. — 120 с. 

 
 
Изложены основы разработки сетевых приложений, базирующихся 

на клиент/серверной модели. Даны основные  понятия и логические основы компьютерных сетей. Рассмотрены:  организация распределенных многопроцессных и многопоточных приложений; средства синхронизации потоков и процессов. Приводятся методы и средства межпроцессного обмена 
данными (сокеты, удаленный вызов процедур, логические каналы) Показаны примеры построения функциональных расширений WWW-сервера  на 
основе интерфейсов CGI и ISAPI. 

 
 
 
 
 
 
 
 
 
 

                                                                                      Кручинин В.В., 2013 

                                                                            ТУСУР, 2013

ОГЛАВЛЕНИЕ 

 

ВВЕДЕНИЕ .......................................................................................... 6 

1 КОМПЬЮТЕРНЫЕ СЕТИ. ОСНОВНЫЕ                                  

ОПРЕДЕЛЕНИЯ............................................................................... 7 
1.1 Структура сети ............................................................................ 7 
1.2 Протоколы ................................................................................... 9 
1.3 Адреса и имена ......................................................................... 11 
1.4 Основные протоколы транспортного уровня UDP и TCP ... 12 
1.5 Основные службы TCP/IP........................................................ 12 
1.6 Порт ............................................................................................ 13 

2 ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ КОМПЬЮТЕРНЫХ  

СЕТЕЙ ............................................................................................. 14 
2.1 Модель клиент/сервер .............................................................. 14 
2.2 Операционные системы ........................................................... 16 
2.3 Серверное программное обеспечение .................................... 17 
2.4 Клиентское программное обеспечение .................................. 20 

3 ПРОГРАММНЫЕ ИНТЕРФЕЙСЫ .............................................. 21 

3.1 Сокеты ........................................................................................ 21 

3.1.1 Основные понятия .............................................................. 21 
3.1.2 Основные функции API сокетов ....................................... 24 
3.1.3 Простейшая реализация модели клиент/сервер              

на основе сокетов ............................................................... 25 

3.1.4 Описание API-winsock2 ..................................................... 27 

3.2 Каналы (Pipes) ........................................................................... 34 

3.2.1 Создание каналов ............................................................... 34 
3.2.2 Создание соединения с помощью именованных           

каналов ................................................................................ 36 

3.2.3 Передача данных по именованному каналу .................... 38 
3.2.4 Простейший пример ........................................................... 38 

3.3 Удаленный вызов процедур (RPC — remote call procedure) .... 40 

3.3.1 RPC для открытых систем ................................................. 40 
3.3.2 RPC для Windows ............................................................... 41 

3.3.2.1 Подготовка сервера к соединению ............................. 43 
3.3.2.2 Обслуживание клиентских вызовов ........................... 46 
3.3.2.3 Соединение клиента с сервером ................................. 46 

3.3.2.4 Создание  дескриптора соединения ............................ 47 
3.3.2.5 Вызов удаленной процедуры ...................................... 48 
3.3.2.6 Нахождение серверной программы ............................ 49 
3.3.2.7 Передача параметров от клиентского приложения 

серверному .................................................................... 49 

3.3.3 Пример создания  сетевого приложения                                                

на основе RPC Windows .................................................... 50 

3.3.3.1 Определение интерфейса ............................................. 51 
3.3.3.2 Генерация  UUID .......................................................... 52 
3.3.3.3 IDL файл ........................................................................ 52 
3.3.3.4 Файл конфигурации ..................................................... 53 
3.3.3.5 Генерация файла заглушки .......................................... 54 
3.3.3.6 Клиентское приложение .............................................. 55 
3.3.3.7 Серверное приложение ................................................ 58 
3.3.3.8 Завершение работы сервера ........................................ 60 

4 МНОГОПОТОЧНЫЕ ПРИЛОЖЕНИЯ ........................................ 62 

4.1 Процессы ................................................................................... 62 
4.2 Потоки (Thread)......................................................................... 66 
4.3 Синхронизация потоков ........................................................... 69 
4.4 Атомарный доступ .................................................................... 70 
4.5 Критические секции ................................................................. 71 
4.6 Синхронизация потоков в системном режиме ...................... 73 

4.6.1 События (Events) ................................................................ 76 
4.6.2 Ожидаемые таймеры .......................................................... 78 
4.6.3 Семафоры ............................................................................ 80 
4.6.4 Мьютексы ............................................................................ 81 

4.7 Пулы потоков ............................................................................ 82 

4.7.1 Очередь асинхронных вызов функций ............................. 83 
4.7.2 Использование порта завершения ввода/вывода ............ 83 
4.7.3 Пример организации пула потоков .................................. 85 

5 ПРОСТЕЙШЕЕ СЕТЕВОЕ  ПРИЛОЖЕНИЕ,                      

ОСНОВАННОЕ НА СОКЕТАХ ................................................... 88 
5.1 Сервер ........................................................................................ 88 
5.2 Клиентское приложение .......................................................... 91 

6 РАЗРАБОТКА СЕТЕВЫХ ПРИЛОЖЕНИЙ                                             

НА ОСНОВЕ WWW-СЕРВЕРА ................................................... 94 
6.1 Обзор технологий ..................................................................... 94 

6.2 Программирование CGI-скриптов .......................................... 97 

6.2.1 Описание интерфейса ........................................................ 97 
6.2.2 Взаимодействие WWW-сервера и CGI-программы ..... 100 
6.2.3 Переменные среды о сервере .......................................... 101 

6.3 Программный интерфейс ISAPI ............................................ 106 
6.4 Фильтры IIS ............................................................................. 112 

ЗАКЛЮЧЕНИЕ ................................................................................ 118 

ЛИТЕРАТУРА ................................................................................. 119 
  

ВВЕДЕНИЕ 

 

Развитие современных  технических устройств  не мыслим 

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

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

Данный курс базируется на курсах «Информатика», «Про
граммирование», «Технологии программирования», «Базы данных», «Компьютерные сети», «Основы вычислительной техники», «Операционные системы», «Введение в интернет» 

Курс имеет следующую структуру: 
1. Основные  понятия и логические основы компьютерных 

сетей. 

2. Организация распределенных многопроцессных и много
поточных приложений.  

3. Средства синхронизации потоков и процессов. 
4. Средства межпроцессоного обмена данными (сокеты, 

удаленный вызов процедур, логические каналы). 

5. Структура и простой пример организации клиент/сервер
ного приложения. 

6. Построение функциональных расширений WWW-сервера  

на основе интерфейсов CGI и ISAPI. 

Для изучения данного курса необходимо знание и наличие 

практических навыков программирования на языке программирования С++ для операционной системы MS Windows. 

 
 

 

1 КОМПЬЮТЕРНЫЕ СЕТИ. ОСНОВНЫЕ                                

ОПРЕДЕЛЕНИЯ 

 
1.1 Структура сети 
 
Компьютерная сеть  это совокупность компьютеров и дру
гих устройств, соединенных  с помощью  средств телекоммуникации с целью эффективной обработки данных и разделения ресурсов [14]. На рис. 1 показаны основные элементы компьютерной сети. 

 

 

Рис. 1 — Структура компьютерной сети 

 
Компьютерная сеть состоит из рабочих станций,  серверов, 

сетевого оборудования, различных устройств (принтер, плоттер, 
и пр.) 

Рабочая станция это, как правило, персональный компьютер 

на котором работает клиент (пользователь компьютерной сети). 

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

Подсеть  — компьютерная сеть, входящая в другую компь
ютерную сеть. 

По назначению выделяют: 
 файл сервер — предназначен для хранения и архивации 

файлов; 

 сервер печати — предназначен для управления одним или 

несколькими принтерами; 

 почтовый сервер — предназначен для хранения и обра
ботки электронной почты; 

 факс сервер предназначен для управления одним или не
сколькими факсами; 

 телефонный сервер обычно обеспечивает связь между те
лефонной сетью и сетью Интернет;  

 прокси сервер — предназначен для обеспечения эффек
тивной работы клиента в сети (например,  в Интернет через прокси-сервер все пользователи некоторой локальной сети могут 
иметь доступ в Интернет используя один IP-адрес); 

 сервер удаленного доступа  обеспечивает доступ к ком
пьютерной  сети через модемные или другие линии связи; 

 сервер приложений  сервер, обеспечивающий выполне
ние специфических программ, необходимых для конкретной 
группы пользователей; 

 игровой сервер  обеспечивает выполнение сетевых игр; 
 веб сервер обеспечивает доступ и манипулирование 

HTML-документами в сети Интернет. 

 сервер баз данных  обеспечивает доступ и манипулиро
вание к базам данных. 

Сетевые устройства: 
 хабы (hub)  предназначены для организации рабочей 

группы; 

 мосты (bridge)   предназначены для соединения  двух 

сегментов сети и локализации трафика в пределах каждого из 
них; 

 переключатели (switch)  предназначены для  соединения 

нескольких сегментов локальной вычислительной сети; 

 маршрутизатор (роутер)   предназначен для объединения 

нескольких сетей различной конфигурации. 

Классификация компьютерных сетей 
 
Компьютерный сети можно классифицировать по ряду при
знаков. :По размеру, охваченной территории выделяют: 

 Локальные сети (LAN, Local Area Network).  
 Территориальные сети (MAN, Metropolitan Area Network).  
 Глобальные вычислительные сети (WAN, Wide Area Net
work).  

По типу сетевой топологии встречаются: 
 Шина.  
 Звезда.  
 Кольцо.  
 Решётка.  
 Смешанной топологии.  
По архитектуре сети распределяют на: 
 одноранговые (peer-to-peer),  все компьютеры в сети оди
наковые; 

 клиент/сервер, когда часть компьютеров являются серве
рами, а другая – клиентами.  

Модель взаимодействия «клиент/сервер» предполагает, что 

сервер находится в пассивном состоянии ожидания запроса клиентов. Клиент находится в активном состоянии, инициирует обращение к серверу на обслуживание. Затем клиент ждет ответа на 
посланный запрос, в то время как последний обрабатывается сервером. 

 
1.2 Протоколы 
 
Протоколом в компьютерных сетях называют набор правил 

для специфического типа связи. 

Для обеспечения обмена данными между узлами сети необ
ходимо выполнить следующие действия: 

1) произвести пакетирование данных; 
2) определить пути пересылки данных; 
3) осуществить физическую пересылку; 
4) регулировать скорости пересылки данных; 

5) обеспечить полную сборку полученных данных, без поте
рянных частей; 

6) осуществить проверку полученных данных на наличие 

дублированных фрагментов; 

7) информировать отправителя о том, сколько было успешно 

передано данных; 

8)  обеспечить пересылку данных в нужное приложение; 
9) произвести обработку ошибок. 
В результате выполнения этих операций программное обес
печение существенно усложняется. Разбивая соответствующие 
действия  по уровням, и записывая их в виде правил, получаем 7 
уровневую модель  взаимосвязи открытых компьютерных сетей 
(OSI): 

 

Уровень
Определение
Протоколы

Физический
Обеспечивает передачу 
информации в виде физических сигналов


ISDN


RS-232

Канальный
Обеспечивает формирование и передачу 
кадров


Ethernet


Token ring


Fibre Channel


HDLC

Сетевой
Обеспечивает управление передачей пакетов 
через промежуточные 
узлы сети


ICMP


IP


IPX

Транспортный 
Обеспечивает управление передачей данными 
между оконечными 
пунктами компьютерной сети 


SPX


TCP


UDP


RTCP

Сеансовый

Презентационный

Прикладной

Обеспечивают  поддержание сеанса связи, 
позволяя приложениям 
взаимодействовать 
между собой длительное время. 


DNS


FTP


Gopher


HTTP


IMAP


IRC


LDAP


NTP


NNTP


POP3


SSH


SMTP


Telnet


SNMP


РРР

 

Интернет — всемирная система добровольно объединённых 

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

1.3 Адреса и имена 
 
Каждый сетевой узел должен иметь имя и адрес. Стратегия 

присваивания адресов и имен позволяет делегировать соответствующие полномочия. Схема имен и адресов  Интернета позволяет: делегировать присвоение имен и адресов; именам отражать 
логическую структуру организации; присваивать адреса, отражающие топологию физической сети.  

Иерархическая структура имен, например,  
  

ie.tusur.ru, состоит в следующем 

 
  ie — кафедра, tusur — организация, ru — Российский домен. 

В протоколе IP используются IP-адреса, которые идентифи
цируют рабочие станции, сервера и маршрутизаторы. IP-адрес  
должен быть уникальным. Соответствие между именем и IPадресом узла сети осуществляется с помощью специальных баз 
данных, хранящих пару имя-адрес. IP-адрес представлен четырмя 
октетами. Например, 191.200.182.101. 

IP протокол — это протокол сетевого уровня, обеспечива
ющий маршрутизацию данных в Интернете. 

Взаимодействия в сети могут быть: 

1) без установки соединения, например, как при отправке 

почтового письма, написал адрес и отправил письмо; 

2) с установкой соединения, как в телефоне, позвонил, по
лучил ответ, сделал запрос, получил ответ и т.д. закрыл соединение. 

Кроме того, передача данных по сети может быть гаранти
рованной или негарантированной. 

 
 
1.4 Основные протоколы транспортного уровня 

UDP и TCP 

 

UDP
TCP

User  Datagram Protocol
Transmission control protocol 

Не устанавливает соединения
Устанавливает соединение

Не гарантирует получение
Гарантирует получение

Посылает сообщение
Устанавливает потокоориентированную  передачу данных 

Простота организации
Сложность организации

Имеет преимущества для широковещательных и многоадресных рассылок 

Хорошо интегрируется в модель 
“клиент-сервер”

 

1.5 Основные службы TCP/IP 
 
Выделяются следующие основные службы TCP/IP: 
1. Пересылка файлов осуществляется на основе протокола 

FTP (File Transfer Protocol). FTP обеспечивает доступ к удаленной 
файловой системе и позволяет переименовывать, удалять и копировать файлы и каталоги. 

2.  Удаленный доступ к компьютеру Telnet. 
3. Электронная почта. Один из самых распространенных 

протоколов  простой протокол пересылки почты SMTP (Simple 
Mail Transfer Protocol). 

4. Всемирная паутина WWW  (World Wide Web). 
5. NFS (Network File System) — сетевая файловая система. 

Обеспечивает доступ клиента к файлу, в таком режиме, если бы 
файл располагался на компьютере клиента. 

6. Новости. Приложения, работающие с новостями для об
служивания локальных досок объявлений BBS (Bulletin Board 
System). 

7. Служба имен DNS-система именования доменов. DNS 

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

8. Для управления сетью служит SMNP — простой протокол 

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

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

 шестнадцатиразрядное целое число; 
 число уникальное на данном компьютере; 
 IP+порт идентифицирует приложение в сети. 
 

Служба
№ порта
Протокол
Комментарий

echo
7
UDP/TCP
Возвращает принятый символ

discard
9
UDP/TCP
Сброс всех входящих данных

daytime
13
UDP/TCP
Возвращает текущее время

chargen
19
UDP/TCP
Генератор символов

ftp
21
TCP
Порт обмена файлами

telnet
23
TCP
Порт для удаленной регистрации 
Telnet

smtp
25
TCP
Электронная почта

daytime
37
UDP/TCP
Текущий день

http
80
TCP
World Wide Web

 

Доступ онлайн
120 ₽
В корзину