Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Общая информация о протоколах



СОДЕРЖАНИЕ

ПРЕДИСЛОВИЕ __________________________________________4

Лабораторная работа №1

Анализ структуры локальной сети ФПМИ___________________5

Лабораторная работа №2

Технология клиент-сервер. Эхо-повтор______________________15

Лабораторная работа №3

Создание приложения интерактивной переписки_____________23

Лабораторная работа №4

Создание Web-сервера____________________________________27

Лабораторная работа № 5

Анализ структуры кадра/фрейма Ethernet___________________39

Лабораторная работа № 6

Утилиты мониторинга сети___________________47

Лабораторная работа № 7

Анализ стандартов IEEE 802.11___________________________52

СПИСОК ЛИТЕРАТУРЫ ________________________________70

ПРИЛОЖЕНИЕ А ________________________________________71

Пример кода эхо-сервера_________________________________74

Пример кода клиента службы эхо-повтора_________________75

ПРИЛОЖЕНИЕ Б ________________________________________77

Пример кода эхо-сервера_________________________________81

Пример кода клиента службы эхо-повтора_________________82


ПРЕДИСЛОВИЕ

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

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

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

Все лабораторные работы имеют одинаковую структуру, состоящую из трех частей. В первой части приводятся методические указания к лабораторной работе, содержащие необходимые теоретические сведения. Во второй – содержится задание. Методические указания должны облегчить понимание материала студентами, поскольку материал представлен в краткой и понятной форме. Третья часть каждой лабораторной работы содержит контрольные вопросы, ответы на которые позволят студентам выделять ее ключевые моменты и тем самым закрепить полученные знания и практические навыки. В конце методических указаний приведены список литературы и приложение, содержащее рисунки и примеры реализации некоторых программ, написанные на языках C++ и Python.

В заключение хотелось бы выразить благодарность студентам факультета Прикладной математики и информатики Кононовой А.В. и Остроухову М.О.(гр. ПМ-11) за помощь при подготовке методических указаний и участие в разработке программного обеспечения.


Лабораторная работа №1

Анализ структуры локальной сети ФПМИ

Цель работы

Подготовить личную страничку бригады для размещения на ней отчетов по лабораторным работам. Выполнить анализ структуры локальной сети факультета ФПМИ и стека протоколов INTERNET`а.

Методические указания

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

Компьютеры, подключенные к сети, маршрутизаторы и другие «компоненты» Интернета используют протоколы, осуществляющие управление приемом и передачей информации внутри Интернета. Наиболее важными протоколами в глобальной сети являются TCP (Transmission Control Protocol — протокол управления передачей) и IP (Internet Protocol — Интернет-протокол). Стек основных протоколов, использующихся в Интернете, известен под названием TCP/IP.

С точки зрения технологий и развития существование Интернета обеспечивается созданием, проверкой и внедрением Интернет-стандартов. Эти стандарты вырабатываются проблемной группой разработок для Интернета (Internet Engineering Task Force, IETF). Документы, создаваемые IETF, носят название RFC (Requests For Comments — обращения за разъяснениями). Изначально подобные документы предназначались для разрешения архитектурных проблем, возникавших в сетях-предшественницах Интернета. Со временем ситуация сложилась так, что, формально не обладая статусом стандарта, документы RFC стали стандартами де-факто. В настоящее время эти документы составляются весьма точно и детально, описывая такие протоколы, как TCP, IP, HTTP (для web) и SMTP (для электронной почты). Существует более 3000 различных документов RFC.

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

Общая информация о протоколах

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

Совокупность протоколов всех уровней коммуникационной модели называется стеком протоколов.

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

Стек протоколов Интернета

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

Уровень Единица измерения
Прикладной Сообщение
Транспортный Сегмент
Сетевой Дейтаграмма/Пакет
Канальный Кадр
Физический Поток битов

Поддержка протоколов может быть аппаратной, программной или смешанной. Протоколы прикладного уровня, такие как HTTP и SMTP, а также протоколы транспортного уровня практически всегда поддерживаются программно. Напротив, протоколы физического и канального уровней, тесно связанные со средой передачи данных, поддерживаются аппаратно сетевой интерфейсной картой. Сетевой уровень, находящийся в центре коммуникационной модели, может поддерживаться как аппаратно, так и программно. Далее даны характеристики каждого из пяти уровней коммуникационной модели Интернета.

Прикладной уровень, как следует из его названия, предназначен для поддержки сетевых приложений. Имеется множество протоколов прикладного уровня, из которых наиболее важными являются HTTP (для путешествий по web-страницам), SМТР (для электронной почты) и FTP (для обмена файлами).

Главная функция транспортного уровня заключается в передаче сообщений прикладного уровня между клиентом и сервером. В Интернете существуют два транспортных протокола: TCP и UDP. Протокол TCP обеспечивает передачу с установлением логического соединения, то есть надежную передачу с контролем переполнения. Протокол UDP обеспечивает передачу сообщений без установления логического соединения, то есть ненадежный вид связи, где допускаются искажения и потери данных.

Сетевой уровень обеспечивает передачу дейтаграмм между двумя хостами и базируется на двух основных протоколах. Первый протокол определяет поля дейтаграммы и интерпретацию их содержимого маршрутизаторами и оконечными системами. Этот протокол является единственным протоколом сетевого уровня в Интернете и имеет название IP. Вторым протоколом является один из многочисленных протоколов маршрутизации, предназначенных для определения путей дейтаграмм от отправителя до адресата. Число протоколов маршрутизации огромно. Несмотря на функциональные различия между протоколом IP и протоколами маршрутизации, а также на широкое разнообразие последних, их обычно объединяют под общим именем IP, подчеркивая этим их связующую роль в организации глобальной Сети.

Протокол транспортного уровня (TCP или UDP) передает сегмент и адрес назначения протоколу IP сетевого уровня подобно тому, как вы опускаете письмо в почтовый ящик, а протокол IP сетевого уровня доставляет сегмент конечному хосту и передает его обратно транспортному уровню.

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

Канальный уровень использует специальный протокол, ориентированный на используемую линию связи. Иногда протоколы канального уровня обеспечивают надежную передачу между узлами. Обратите внимание на различие надежной передачи на транспортном и канальном уровнях: протокол TCP обеспечивает надежность на всем пути следования сообщения, а протокол канального уровня — лишь между парой узлов. К протоколам канального уровня относятся Ethernet и РРР; иногда аналогичные функции несут технологии асинхронной передачи данных (ATM) и ретрансляции кадров. Поскольку путь от отправителя до адресата обычно состоит из цепочки разнородных линий связи, передача дейтаграммы может осуществляться различными канальными протоколами.

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

Сетевое оборудование

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

Выделяют следующие виды сетевого оборудования.

Сетевые карты – это контроллеры, подключаемые в слоты расширения материнской платы компьютера, предназначенные для передачи сигналов в сеть и приема сигналов из сети.

Терминаторы - это резисторы номиналом 50 Ом, которые производят затухание сигнала на концах сегмента сети.

Концентраторы (Hub) – это центральные устройства кабельной системы или сети физической топологии " звезда", которые при получении пакета на один из своих портов пересылает его на все остальные. В результате получается сеть с логической структурой общей шины. Различают концентраторы активные и пассивные. Активные концентраторы усиливают полученные сигналы и передают их. Пассивные концентраторы пропускают через себя сигнал, не усиливая и не восстанавливая его.

Повторители (Repeater)- устройства сети, усиливает и заново формирует форму входящего аналогового сигнала сети на расстояние другого сегмента. Повторитель действует на электрическом уровне для соединения двух сегментов. Повторители ничего распознают сетевые адреса и поэтому не могут использоваться для уменьшения трафика.

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

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

Маршрутизаторы (Router)- стандартные устройства сети, работающие на сетевом уровне и позволяющее переадресовывать и маршрутизировать пакеты из одной сети в другую, а также фильтровать широковещательные сообщения.

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

Шлюзы (Gateway) - программно-аппаратные комплексы, соединяющие разнородные сети или сетевые устройства. Шлюзы позволяет решать проблемы различия протоколов или систем адресации. Они действует на сеансовом, представительском и прикладном уровнях модели OSI.

Мультиплексоры – это устройства центрального офиса, которое поддерживают несколько сотен цифровых абонентских линий. Мультиплексоры посылают и получают абонентские данные по телефонным линиям, концентрируя весь трафик в одном высокоскоростном канале для передачи в Internet или в сеть компании.

Межсетевые экраны (firewall, брандмауэры) - это сетевые устройства, реализующие контроль за поступающей в локальную сеть и выходящей из нее информацией и обеспечивающие защиту локальной сети посредством фильтрации информации.

Физическая среда передачи

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

Медная витая пара является самым дешевым и наиболее популярным видом кабелей. На протяжении более чем 100 лет витая пара активно используется в телефонных сетях. Можно смело утверждать, что более 99% всех кабелей, соединяющих абонентов с телефонными коммутаторами, являются медными витыми парами. Многие могли видеть эти кабели у себя дома или на работе. Витая пара состоит из двух изолированных медных проводов толщиной 1 мм, заключенных в спиральную оболочку. Внутри оболочки провода переплетены друг с другом, чтобы снизить уровень электрических помех, возникающих между парой проводников. Обычно перед помещением пар внутрь кабеля их снабжают дополнительными защитными экранами.

Неэкранированная витая пара (Unshielded Twisted Pair, UTP), как правило, используется в офисных локальных сетях, расположенных в одном здании. Скорость передачи данных в такой среде варьируется от 10 Мбит/с до 1 Гбит/с и определяется толщиной провода и расстоянием между обменивающимися сторонами. В локальных сетях используется два типа неэкранированных витых пар: витая пара категории 3 и витая пара категории 5. Первая относится к голосовым линиям связи и характерна для офисов. Как правило, в офисах прокладывают две независимые витые пары, из которых одна используется для телефонной связи, а другая — для дополнительных телефонных соединений и локальной сети. В частности, в широко распространенной технологии Ethernet 10 Мбит/с применяют неэкранированную витую пару категории 3. Витая пара категории 5 имеет большее число витков на дюйм, а также снабжена тефлоновой изоляцией, что позволяет обеспечить более высокие скорости передачи данных. В последние годы получила распространение технология Ethernet 100 Мбит/с, в которой используется витая пара категории 5.

Коаксиальный кабель, как и витая пара, состоит из двух медных проводников, однако эти проводники, в отличие от витой пары, расположены не параллельно, а концентрически (коаксиально). С применением особых видов изоляции и экранирования коаксиальный кабель позволяет добиться более высоких скоростей передачи данных, чем витая пара. Коаксиальные кабели делятся на два вида: с немодулируемой передачей и с модулируемой передачей.

Коаксиальный кабель с немодулируемой передачей имеет сопротивление 50 Ом и толщину около 1 см; к его несомненным физическим достоинствам можно отнести легкость и гибкость. Этот тип кабеля часто применяется в локальных сетях наряду с неэкранированной витой парой. Термин «с немодулируемой передачей» означает, что битовый поток поступает в кабель без частотной модуляции. Хотя коаксиальный кабель может применяться в технологии Ethernet 10 Мбит/с, почти для всех новых реализаций Ethernet характерна неэкранированная витая пара.

Коаксиальный кабель с модулируемой передачей обладает сопротивлением 75 Ом и имеет большие толщину, вес и меньшую гибкость по сравнению с кабелем с немодулируемой передачей. Часто кабель с модулируемой передачей используют в системах кабельного телевидения. Оба вида кабеля (с немодулируемой и с модулируемой передачей) относятся к классу разделяемых проводных сред передачи данных. Другими словами, информация, передаваемая или принимаемая одной системой, принимается всеми системами, подключенными к кабелю.

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

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

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

Задание к лабораторной работе

1. Создать личную страничку (на бригаду) на сервере fpm2 для размещения отчетов о выполненных лабораторных работах. Рекомендуется личную страничку оформить в следующем виде:

Информация о бригаде (Личная страница бригады №… группы ПМ…)
Состав бригады Учеба Разное

Ф.И.О. СИТ Новости

Ф.И.О. ПСЗИ ……

…… …….

Версия № … от ДД.ММ. ГГ

2. Выполнить анализ структуры локальной сети факультета по следующим пунктам:

§ какие сетевые устройства используются в сети;

§ какие линии связи используются в локальной сети факультета;

§ схема соединения ПКi с сервером fpm2;

§ структура сетевого программного обеспечения на каждом узле схемы соединения ПКi с сервером fpm2;

§ IP и MAC-адреса ПКi и сервера fpm2.

3. Выполнить анализ директории CD в каталоге DNL.

4. Ответить на контрольные вопросы к лабораторной работе.

Контрольные вопросы

1. Дайте определения сетевого протокола. Зачем он нужен?

2. Какой стек протоколов используется в сети Internet?

3. В чем преимущества и недостатки многоуровневой организации системы?

4. Назовите виды единиц обмена информацией разных уровней в архитектуре протоколов.

5. Перечислите уровни стека протоколов Internet и назовите их основные функции.

6. Перечислите известные вам виды сетевого оборудования и объясните, для чего они используются.

7. Перечислите виды физических сред передачи данных и их особенности.

8. В чем состоит принцип взаимодействия прикладной программы с системным программным обеспечением?


Лабораторная работа №2

Технология клиент-сервер. Эхо-повтор.

Цель работы

Изучить основные принципы разработки клиент-серверных приложений на примере простейшей однопользовательской программы.

Методические указания

Модель, которая предусматривает, что прикладная программа должна пассивно ждать, пока другое приложение не инициирует связь, широко применяется в распределенных вычислениях и носит название – взаимодействие по принципу клиент/сервер.

Приложение, которое активно инициирует контакт, называется клиентом, а приложение, которое пассивно ожидает контакта, называется сервером.

Хотя и существуют небольшие различия, большинство реализаций средств взаимодействия клиент/сервер характеризуется общими особенностями.

Клиентская программа:

Ø Представляет собой произвольную прикладную программу, которая становится клиентом на время, когда ей требуется удаленный доступ, но выполняет также другие локальные действия;

Ø Вызывается непосредственно пользователем и действует на протяжении только одного сеанса;

Ø Функционирует локально на персональном компьютере пользователя;

Ø Активно инициирует контакт с сервером;

Ø Может обращаться по мере необходимости к нескольким службам, но в определенный момент времени активно контактирует только с одним удаленным сервером;

Ø Не требует специальных аппаратных средств или сложной операционной системы.

Серверная программа:

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

Ø Вызывается автоматически во время начальной загрузки системы и продолжает работать, проводя один сеанс взаимодействия за другим;

Ø Выполняется на компьютере, предоставленном в общее пользование;

Ø Пассивно ожидает поступления запросов на установление соединения от удаленных клиентов;

Ø Принимает запросы от клиентов, но предоставляет единственную службу;

Ø Требует применения мощных аппаратных средств и сложной операционной системы.

В процессе обмена данными между большинством приложений Internet выполняется одна и та же последовательность операций.

Ø В начале запускается на выполнение серверное приложение и ожидает запроса на установление соединения от клиента.

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

Ø Клиент и сервер обмениваются сообщениями.

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

Общая схема взаимодействия клиента и сервера приведена на рис. 2.1.

Взаимодействие клиента и сервера на транспортном уровне может происходить с использованием различных протоколов. Наиболее распространенными протоколами являются TCP и UDP. Приведем некоторые различия в схеме взаимодействия клиентской и серверной программ при использовании этих протоколов.

Протокол TCP является протоколом, поддерживающим надежную передачу потока данных с предварительным установлением связи между источником информации и ее получателем. На базе протокола TCP реализованы такие протоколы уровня приложений, как Telneat, FTP, HTTP. Протокол характеризуется следующими особенностями:

Ø Перед фактической передачей данных необходимо установление связи, т.е. запрос на начало сеанса передачи данных источником и подтверждение получателем.

Ø После обмена данными сеанс передачи должен быть явно завершен.

Ø Доставка информации является надежной, не допускающей дублирования или нарушения очередности получения данных.

Ø Возможность управления потоком данных для избежания переполнения и затора.

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

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

Протокол UDP используют такие протоколы уровня приложений, как протокол взаимодействия с сервером доменных имен DNS, протокол удаленного копирования Trivial FTP, удаленный вызов процедур RPC.

Благодаря минимальной функциональности протокола UDP, передача данных с его использованием вносит гораздо меньшие накладные расходы по сравнению с протоколом TCP.

Задание к лабораторной работе

Написать простейшее приложение клиент-сервер с одним сервером и одним клиентом используя API-интерфейс высокого уровня. Пример интерфейса приведен в приложении.

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


Варианты заданий

1. Клиент пересылает серверу данные(строки текста). Сервер возвращает клиенту полученные данные, включив в конец каждого предложения количество символов в нем.

2. Клиент пересылает серверу данные(строки текста). Сервер изменяет порядок следования букв в полученном тексте на обратный и отправляет текст в таком виде клиенту.

3. Клиент пересылает серверу данные(строки текста). Сервер в полученном тексте в конец каждого предложения вставляет свой IP-адрес и номер порта и возвращает в таком виде данные клиенту.

4. Клиент пересылает серверу данные(строки текста). Сервер создает файл с уникальным именем, записывает в него полученные от клиента данные и в качестве результата обработки данных отправляет клиенту имя созданного файла. После получения ответа с сервера клиент распечатывает на экран содержимое указанного сервером файла.

5. Клиент пересылает серверу данные(строку и имя директории). Сервер находит все файлы в заданной директории, содержащие указанную строку и высылает их имена клиенту.

6. Клиент пересылает серверу имя некоторого файла. Сервер находит файл с указанным именем и пересылает его содержимое клиенту, либо сообщает клиенту, что файл с данным именем не найден.

7. Клиент пересылает серверу данные (имя директории). Сервер возвращает список файлов и поддиректорий данной директории(рекурсивно).

Контрольные вопросы

1. Что представляет собой модель клиент-сервер?

2. Приведите общие особенности клиентских программ.

3. Приведите общие особенности серверных программ.

4. Приведите общую схему клиент-серверного взаимодействия.

5. В чем отличие взаимодействия клиента с сервером при использовании различных протоколов транспортного уровня, таких как TCP и UDP? В чем преимущества и недостатки каждого из протоколов?

6. Что такое сокет? Какие виды сокетов вам известны?

7. Опишите основные методы работы с сокетами.

8. Приведите схему взаимодействия клиента с сервером при использовании механизма сокетов.


Лабораторная работа №3

Создание приложения интерактивной переписки.

Цель работы

Изучить основные принципы разработки многопользовательских приложений, построенных на основе технологии клиент-сервер с использованием протокола TCP/IP.

Методические указания

В лабораторной работе №2 было реализовано простейшее взаимодействие, в котором участвовали один клиент и один сервер. В данной лабораторной работе предлагается модифицировать программы таким образом, чтобы сервер мог осуществлять взаимодействие с несколькими клиентами сразу.

Потоки управления

Т.к. сервер должен работать одновременно с каждым клиентом, рекомендуется использовать либо неблокирующие сокеты (читать в цикле данные из каждого сокета по-очереди), либо для каждого клиента запускать отдельный параллельный поток thread операционной системы, который бы занимался обменом сообщениями с клиентом. Необходимые для работы с потоками функции содержатся в модулях thread и threading.

Потоки управления образуются и живут в рамках одного процесса. В однопоточном приложении есть только один поток управления: при запуске программы он последовательно исполняет встреченные в программе операторы. В любой момент времени интерпретатор Python знает, какую команду исполнить, а после исполнения команды – куда передать управление. Эта ниточка непрерывна все время исполнения программы и обрывается только по завершении программы.

Представим теперь, что в некоторой точке ниточка раздваивается и каждый поток пошел своим путем, возможно, еще несколько раз раздваиваясь по пути. (При этом один из потоков всегда остается главным, и его завершение означает завершение всей программы.) В каждый момент времени интерпретатор знает, какую команду какой поток должен выполнить, и уделяет внимание каждому потоку. Однако такое незначительное усложнение исполнения программы приводит к тому, что нам необходимы механизмы для согласования деятельности потоков. Например, нельзя допускать, чтобы потоки одновременно изменяли один и тот же объект. На помощь приходят специальные объекты, называемые семафорами. Семафоры позволяют исключать исполнение одного и того же участка кода несколькими потоками одновременно. Самый простой двоичный семафор – замок(lock) или mutex. Чтобы поток мог продолжить исполнение кода, он должен сначала овладеть замком. После этого он выполняет некоторый участок кода и снимает замок, чтобы другой поток (возможно, уже сделавший запрос на данный замок) мог его получить и пройти дальше к выполнению охраняемого замком участка программы.


Класс threading.Thread позволяет назначить действия, которые должны выполняться в отдельном потоке, и имеет следующий конструктор:

threading.Thread(group, target, name, args=(), kwargs={}) -> object

где group – группа потоков, target – функция, метод или другой объект, позволяющий вызов, именно он вызывается при запуске потока, name – имя потока, args и kwargs – соответственно позиционные и именованные аргументы для вызова потока.

Приведем некоторые методы объектов класса threading.Thread. Метод start() запускает поток.(Метод не имеет параметров и ничего не возвращает.) Метод run() используется для вызова в отдельном потоке. Получает свое значение из параметра target конструктора класса. При вызове используются args и kwargs, заданные в конструкторе. Метод join([time]) ожидает завершения потока. Поток, который вызывает этот метод приостанавливается. Значение time задает время ожидания, после которого приостановленный поток продолжает свою работу. Метод getName() возвращает имя потока, метод setName(name) устанавливает имя потока. Метод isAlive() возвращает значение `истина`, если поток работает.

Класс threading.Lock – простейший замок, который имеет два состояния (он может быть либо открыт, либо заперт). Объект Lock имеет два основных метода acquire() ( с помощью этого метода поток делает запрос на запирание замка) и release() (для снятия замка). Метод locked() возвращает статус замка: 0 – свободен, 1 – занят.

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


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-05-03; Просмотров: 1935; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.091 с.)
Главная | Случайная страница | Обратная связь