Сетевое программное обеспечение
Конспект лекций
назад

Конспект лекций в формате Microsoft Word

 

СОДЕРЖАНИЕ

Тема 1. Компьютерные сети

1.1 Общие понятия

1.2 Типы сетей

Тема 2 Основы организации локальных и глобальных вычислительных сетей

2.1 Основные понятия

2.2 Топологии сетей

2.3. Методы доступа

2.4 Территориально-распределенные или глобальные сети

Тема 3 Технические средства построения информационных сетей

3.1 Основные типы кабельных и беспроводных сред передачи данных

3.2 Коаксиальные кабели

3.3 Витая пара

3.4 Волоконно-оптоптические кабели

3.5 Аппаратные средства подключения рабочих станций

Тема 4 Протоколы в информационных сетях

4.1 Основные понятия протоколов

4.2 Иерархия протоколов. Модель OSI

Тема 5 Протоколы низкого уровня

5.1 Структура стандартов IEEE 802.x

5.2 Протоколы физического уровня

5.3 Пpотокол BSC упpавления инфоpмационным каналом

5.4 Протокол HDLC управления информационным каналом

5.5 Протокол Ethernet управления информационным каналом. Стандарт IEEE 802.3

Тема 6 Протоколы среднего уровня как средства построения больших сетей

6.1 Протоколы IPX/SPX

6.2 Протокол NetBIOS

6.3 Семейство протоколов TCP/IP

6.4 Протокол UDP (User Data Protocol)

Тема 7 Протоколы уровня приложений – базовые сетевые сервисные cлужбы

7.1 Telnet – протокол удалённого доступа

7.2 FTP – протокол перемещения файлов

7.3 Протокол SMTP – электронная почта

7.4 Протокол HTTP

7.5 TCP/IP на последовательных линиях. Протокол SLIP и PPP

7.6 Протокол DNS

7.7 Протокол RIP – маршрутизации

7.8 NFS – сетевая файловая система

7.9 Программы анализа сети netstat, ping, traceroute

7.10 Протокол ARP

7.11 Протокол ICMP

Тема 8 Программирование межпроцессорных взаимодействий в информационных сетях

8.1 Программирование интерфейса RS-232C

8.2 Программирование протокола BSC

8.3 Программирование протокола IPX

8.4 Программирование протокола NETBIOS

8.5 Программирование протокола TCP/IP

Список литературы

 

Тема 1. Компьютерные сети

 

1.1 Общие понятия.

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

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

 

1.1.1 Сетевые вычислительные услуги.

Различают два главных вида услуг, предоставляемых сетями:

Компьютеризованная межперсональная коммуникация

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

Служба электронной почты имеет следующие виды:

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

Почтовые списки обеспечивают: организацию службы подписки; ведение списка рассылки; автоматическую посылку сообщения по всем адресам списка.

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

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

Услуги доступа к разделяемым ресурсам

В истории создания вычислительных сетей большинство из них (ARPANET, CYCLADES, Академсеть, IASNet и др.) создавались с главной целью – предоставление набора услуг доступа к разделяемым ресурсам. Различают две основные разновидности услуг доступа к разделяемым ресурсам: интерактивные услуг доступа к разделяемым ресурсам и пакетные услуг доступа к разделяемым ресурсам. Рассмотрим интерактивные услуги как более типичные и важные.

Удаленный терминальный доступ (Remote Login). Сеть используется для доступа с терминала или ПЭВМ к удаленной ЭВМ через процедуру включения (login). Сетевая услуга чаще всего используется для удаленного запуска программ (заданий), интерактивного доступа к базам данных, ввода и вывода данных в сетевом режиме.

Передача файла (File Transfer). Услуга доступа к файловой системе удаленной ЭВМ и выполнения различных операций (удалить, переименовать, скопировать, переслать по сети. Часто соответствующая служба или протокол передачи файла называются FTM или FTAM.

Удаленный вызов процедур ( Remote Procedure Call). Возможность вызова функции (библиотечной процедуры) на языке программирования . Выполняется в удаленной ЭВМ без повторного терминального доступа. Чаще всего применяется на локальных или высокоскоростных сетях.

Распределенная файловая система (Distributed File System). Доступ к файлам, размещенным в узлах сети, организуется общей файловой системой вычислительной сети. На каждой узловой ЭВМ доступ к локальным и сетевым файлам поддерживается единообразно.

Блокирование удаленных файлов (Remote File Locking). Услуга позволяет закрыть файлы от совместного доступа или для определенных групп пользователей.

Удаленный доступ к устройствам.( Remote Device Access). Услуга сетевого использования таких устройств как принтеры, магнитные ленты, графопостроители и т.п.

Разделяемая память (Shared Memory). Доступ к оперативной или дисковой памяти на том же логическом уровне, что и возможности доступа к локальной памяти.

Распределенная операционная система (Distributed Operating System). Системная и многофункциональная организация услуг доступа ко всем сетевым ресурсам.

1.1.2 История и тенденции.

 

Процессы развития вычислительных сетей идут последние годы в общем направлении:

 

- сетевые технологии постоянно совершенствуются, производительность и надежность передачи данных быстро возрастают, базовые технологии стандартизируются и сопрягаются;

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

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

 

В результате совместного действия этих тенденций создается новая технологическая галактика – Мир Вычислительных Сетей. В замечательной книге Дж.Квотермана “ The Matrix-Computer Networks and Conferencing Systems Worldwide” утверждается, что этот Мир уже существует в виде некоторой глобальной метасети, называемой Worldnet .

С сожалением и пессимизмом остается добавить, что этот Мир если и существует, то за пределами нашего отечества.

 

История вычислительных сетей ведет свое начало от 60-х годов, когда были созданы первые компьютерные системы с разделяемыми ресурсами (Multics). Первая сеть с коммуникацией пакетов была разработана в Англии в 1968 году в Национальной физической лаборатории.

ARPANET – первая многоузловая сеть с коммуникацией пакетов была разработана в 1968 году и с 1969 года вступила в действие в США. В настоящее время ARPANET преобразована в Internet, которая стала общенациональной вычислительной сетью. В 1983 году промышленная часть ARPANET, принадлежащая министерству обороны США, отделилась в самостоятельную сеть MILNET. В составе Internet действуют две важнейшие сети национального масштаба NSFNET и CSNET.

Aloha – первая вычислительная сеть (Университет Гавайи) с передачей пакетов по радиоканалам. В этой сети были реализованы (1971г.) методы случайного доступа к каналу, получившие затем развитие в локальной сети Ethernet.

В 1974-1976 гг. сотрудниками фирмы XEROX Б.Меткалфом и Д.Боггсом была изобретена сеть Ethernet, протокол которой был в 1985-1988 гг. стандартизирован (IEEE 802,3 и ISO 8802,3). В течении 1974-1982 гг. рядом ведущих компьютерных фирм США были разработаны архитектуры и сетевые технологии , значительно повлиявшие на будущие сетевые стандарты. Фирмой IBM созданы SNA, разнообразные протоколы (SDLC, NIE, APPC ), маркерная кольцевая сеть (стандарты IEEE 80275 и ISO 8802,5). Фирмой DEC в 1975 г. cоздана DECNET – вычислительная сеть для PDP-11.

Будущее вычислительных сетей определяется темпами развития технологий, достижениями в разработке новых протоколов, массовым проникновением персональных компьютеров со встроенными модемами во все сферы деятельности человека. В США уже действуют магистральные каналы Т1 (1,544 Мб/с), разработан стандарт FDDI для оптоволоконных линий (100 Мб/с), ведутся исследования по созданию передатчиков данных для 1 Гб/с и готовится новый стандарт для 1,6 Гб/с.

 

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

В последние годы появились новые интересные сети:

 

NSFNET – Национальная сеть супер ЭВМ США

EARN – Европейская сеть исследовательских организаций

UUCP – Сеть UNIX-машин

FidoNet – Сеть персональных компьютеров, работающих под MS-DOS

История вычислительных сетей в нашем отечестве бедна яркими событиями. Бумажные планы создания сетей ЭВМ национального масштаба утверждались, как это принято у нас, в начале очередного десятилетия (70-е годы, 80-е и 90-е), а затем эти проекты – ОГСПД, АКАДЕМСЕТЬ поглощали энергию людей и денежных масс.

Добровольцы компьютерных сетей в СССР образовали в июне-августе 1990г. первую кооперативную сеть UNIX – машин.

Сеть Relcom создана как общедоступная некоммерческая сеть, входящая в состав Eunet.

Relcom обеспечивала передачу электронной почты внутри СССР и обмен сообщениями с сетями Eunet, Internet, BITNET, MCL-mail, CompuServe. Обеспечен был также доступ к телеконференциям Usenet. Создавались региональные узлы в Москве, Риге, Таллине, Киеве, Новосибирске, Барнауле, Ленинграде и др.городах. В то время в сети Relkom работали ЭВМ примерно 300 организаций. Использовались коммутируемые телефонные линии со скоростью передачи 1,2-1,4-9,6 Кб/с.

1.1.3 Методы коммутации в сетях

Коммутация это образование единого канала связи между абонентами на основе совместно используемых линий связи. Например, для образования единого канала связи между абонентами сети должны быть выполнены соединения по принципу связи между АТС.

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

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

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

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

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

1.1.4 Дуплексный, полудуплексный и симплексный режимы работы

 

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

Дуплексный режим – наиболее универсальный и производительный способ работы канала. Самым простым вариантом организации дуплексного режима является использование двух независимых физических каналов (двух пар проводников или двух световодов) в кабеле, каждый из которых работает в симплексном режиме, то есть передает данные в одном направлении. Именно такая идея лежит в основе реализации дуплексного режима работы во многих сетевых технологиях, например Fast Ethernet или АТМ.

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

1.2 Типы сетей

Вычислительные сети можно классифицировать по различным признакам:

1.2.1 Типы сетей по целевой направленности.

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

Рассмотрим наиболее типичные категории пользователей.

Конструкторы и исследователи вычислительных сетей.

Для первых сетей ARPANET, CYCLADES ( Академсеть в СССР) характерным являлось то, что основными пользователями долгие годы были создатели сети (программисты, проектировщики протоколов, системные операторы и администраторы сети).

Научные работники.

Ассоциация исследователей в таких областях как физика, астрономия, химия и др. используют ВС для обмена результатами исследований, координации проектов и текущего межперсонального общения. Наиболее известны следующие ВС: MFEnet, (Magnetic Fusion Energy), HEPnet (High Energy Physics), EARN (European Association of Rescarch Networks), NSFnet (National Science Fond Network).

Вычислительные центры.

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

Аналогичным образом создаются сетевые кооперации ЭВМ с однородными операционными системами. UUCP-сеть представляет ассоциацию пользователей UNIX- систем. На базе DECNET образованы сети MFEnet, HEPnet, SPAN. Большинство машин FidoNet использует MS-DOS.

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

 

Крупные фирмы (IBM, XEROX, TANDEM, HP и др.) содержат собственные внутрифирменные сети для управления организациями и производственными процессами. Примеры таких сетей - VNET (IBM), XEROX Internet, HP Internet.

 

1.2.2 Типы сетей по распределению сетевых функций по компьютерам

Сеть может быть построена по одной из трех схем:

Каждая из этих схем имеет свои достоинства и недостатки, определяющие их области применения.

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

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

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

Одноранговая сеть

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

Рис. 1.1. Пример одноранговой сети

 

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

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

Перечислим основные преимущества и недостатки одноранговой сети.

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

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

Сеть на основе сервера

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

Рис. 1.2. Пример сети на основе сервера

 

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

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

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

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

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

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

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

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

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

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

Гибридная сеть.

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

 

1.2.3Тип сетей по территориальному распространению.

По территориальной распространенности различают:

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

Если сеть представляет собой объединение компьютеров, или локальных сетей, расположенных на значительном удалении друг от друга (в различных районах города, в различных городах, странах, континентах) при помощи модемов, спутниковых линий и других средств дальней связи, то такие сети мы будем называть территориально-распределенными (WAN) или глобальными.

Локальные сети

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

Локальные сети позволяют отдельным пользователям легко и быстро взаимодействовать друг с другом. Вот лишь некоторые задачи, которые позволяет выполнять ЛС:

Территориально-распределенные или глобальные сети

Территориально-распределенные сети обеспечивают те же преимущества, что и локальные, но при этом позволяют охватить большую территорию. Обычно для этого используется коммутируемая телефонная сеть общего пользования (PSTN, Public Switched Telephone Network) с соединением через модем или линии высокоскоростной цифровой сети с предоставлением комплексных услуг (ISDN, Integrated Services Digital Network). Линии ISDN часто применяются для передачи больших файлов, например содержащих графические изображения или видео. Встраивая в базовые локальные сети функциональность территориально-распределенных сетей, реализуемую с помощью модема или сервера удаленного доступа, можно выгодно использовать технологии внешних коммуникаций, в том числе: передачу и прием сообщений с помощью электронной почты (e-mail); доступ к Internet.

 

 

 

Тема 2 Основы организации локальных и глобальных вычислительных сетей.

2.1 Основные понятия

Накопленный опыт эксплуатации больших вычислительных сетей, таких как ARPANET и TELNET показал, что около 80% всей генерируемой в таких сетях информации используется лишь местным потребителем. Поэтому в середине 80-х годов выделился специальный класс вычислительных сетей – Локальные Вычислительные Сети (ЛВС), оптимально сочетающие в себе простоту и надежность, высокую скорость передачи и большой набор реализуемых функций.

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

Локальные сети позволяют отдельным пользователям легко и быстро взаимодействовать друг с другом. Вот лишь некоторые задачи, которые позволяет выполнять ЛВС:

 

Основные понятия , характеризующие ЛВС

К основным понятиям , характеризующим ЛВС относятся:

Среда передачи. На сегодняшний день выбор среды передачи для ЛВС ограничивается тремя основными типами кабелей – коаксиальный кабель, витая пара, оптоволоконный кабель, а также беспроводными каналами – радиоканал, инфракрасный канал.

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

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

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

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

Топология сети обуславливает ее технические характеристики. В частности, выбор той или иной топологии влияет на:

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

Любая топология сети может диктовать не только тип кабеля, но и способ его прокладки, а также определять метод доступа компьютеров в сеть.

2.2 Топологии сетей

Все сети строятся на основе трех базовых топологий: шина (bus); звезда (star); кольцо (ring). Если компьютеры подключены вдоль одного кабеля (сегмента), топология называется "шина". В том случае, когда компьютеры подключены к сегментам кабеля, исходящим из одной точки (или концентратора), топология называется "звезда". Если кабель, к которому подключены компьютеры, замкнут, то такая топология носит название "кольцо".

Топология типа “шина”

Данная топология относится к наиболее простым и широко распространенным топологиям. В ней используется один сетевой кабель, именуемый магистралью или сегментом, вдоль которого подключены все ПК сети (рис. 2.1).

 

Рис. 2.1. Топология типа “шина”

 

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

Пакет в виде электрических сигналов передается по шине в обоих направлениях всем компьютерам сети.

Однако, информацию принимает только тот адрес, который соответствует адресу получателя, указанному в заголовке пакета. Так как в каждый момент времени в сети может вести передачу только одна ПК, то производительности ЛВС зависит от количества ПК, подключенных к шине. Чем их больше, тем больше ожидающих передачи данных, тем ниже производительности сети. Однако, нельзя указать прямую зависимость пропускной способности сети от количества ПК, так как на нее также влияет:

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

Достоинством топологии типа “шина” является простота создания сети. Недостатками – невысокая надежность и затрудненный поиск неисправности.

Топология типа “звезда”

При топологии “звезда” все компьютеры с помощью сегментов кабеля подключаются к центральному компоненту – концентратору (Hub) (рис. 2.2).

Рис. 2.2. Топология типа “звезда”

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

Концентраторы являются центральным узлом в топологии “звезда”. От его надежности зависит надежность сети.

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

Рис. 2.3. Вариант соединения нескольких “звезд”

Топология типа “кольцо”

При этой топологии сеть замкнута, образуя неразрывное кольцо (рис. 2.4). Поэтому у кабеля просто не может быть свободного конца, к которому надо подключить терминатор. Начав движение в какой-либо точке кольца (ПК1), пакет данных в конце концов попадает в его начало. Из-за такой особенности данные в кольце движутся всегда в одном направлении.

Рис. 2.4. Топология типа “кольцо”

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

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

 

Комбинированная структура ЛВС

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

Рис. 2.5. Древовидная структура ЛВС.

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

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

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

В таблице 2.1 приведены сравнительные характеристики рассмотренных топологий.

Таблица 2.1. Сравнительные характеристики рассмотренных топологий.

Топология

Преимущества

Недостатки

Шина

 

- экономный расход кабеля;

- недорогая и несложная в использовании среда передачи;

- простота и надежность;

-легкая расширяемость.

 

- при значительных объемах трафика уменьшается пропускная способность;

- трудная локализация проблем;

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

 

Кольцо

 

- все КП имеют равный доступ;

- количество пользователей не сказывается на производительности.

 

- выход из строя одной КП выводит из строя всю сеть;

- трудно локализовать проблемы;

- изменение конфигурации сети требует остановки всей сети.

 

Звезда

 

- легко модифицировать сеть, добавляя новые КП;

- централизованный контроль и управление;

- выход из строя КП не влияет на работу сети.

 

Выход из строя центрального концентратора выводит из строя всю сеть.

 

2.3. Методы доступа

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

Наибольшее распространение пр построении ЛВС получили два метода:

Из конкретных реализаций методов доступа наибольшее распространение получили: Ethternet, Arcnet, TokenRing и FDDI. Эти реализации основаны соответственно на стандартах IEEE 802.3, IEEE 802.4, IEEE 802.5.

 

Метод доступа Ethernet

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

Для данного метода используется топология “общая шина”. Данные принимаются всеми станциями. Если не для них, то игнорируют.

Метод доступа Ethernet является методом множественного доступа с прослушиванием несущей и разрешением коллизий (конфликтов). Перед началом передачи определяется, свободен ли канал или занят.

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

 

Метод доступа Token Ring

В сети используется принцип передачи маркера (token). Один из компьютеров создает специальный маркер (сообщение специального вида). Маркер содержит лишь поля стартового разделителя(sdel), управления доступом (AC) и оконечного разделителя (EDEL, всего 3 байта). Если узел получил маркер, он может начать передачу информации, в противном случае он просто передает маркер следующему узлу. Каждая станция может захватить маркер на определенное время, который последовательно передается от одного компьютера к другому. Когда рабочей станции необходимо передать пакет она дожидается свободного маркера, меняет в нем один бит, который преобразует маркер во флаг начала кадра, вносит в кадр информацию, подлежащую пересылке, и посылает его следующей станции по “течению”. Пакет распространяется от адаптера к адаптеру, пока не найдет своего адресата, который установит в нем определенные биты для подтверждения доставки. Далее пакет доходит до отправителя, тот проверяет достоверность и освобождает ЛВС, генерируя новый маркер.

Сеть Token Ring имеет топологию звезды. Все оконечные станции подключаются к общему устройству (MSAU - MultiStation Access Unit), которые объединяются друг с другом, образуя кольцо.

Рис.2.6. Сеть Token Ring

Если станция отключилась, MSAU шунтирует ее, обеспечивая проход пакетов. Стандарт Token Ring использует довольно сложную систему приоритетов, которая позволяет некоторым станциям пользоваться сетью чаще остальных. Кадры Token Ring имеют два поля, которые управляют доступом приоритет и резервирование. Только станции с приоритетом равным или выше, чем приоритет маркера, могут им завладеть.

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

В Тоkеn Ring используются три основных типа пакетов:

Пакет Управление/Данные. С помощью такого пакета выполняется передача данных или команд управления работой сети

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

Пакет Сброса. Посылка такого пакета называет прекращение любых передач.

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

Метод доступа Arcnet

Arсnet (Attached Resource Computer NETWork ) – простая, недорогая, надежная и достаточно гибкая архитектура локальной сети. Разработана корпорацией Datapoint в 1977 году. Используется в ЛВС с топологией “шина” или “звезда”.

Метод управления доступом станций к передающей среде - маркерная шина (Тоken Bus). Этот метод предусматривает следующие правила:

только получив разрешение на передачу (маркер);

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

В Аrcnet определены пять типов пакетов:

Метод доступа FDDI

FDDI – Fiber Distributed Data Interface – оптоволоконный интерфейс распределенных данных – высоконадежная производительная технология передачи данных по оптоволоконному кабелю на расстояния до 100 км. Обычно эта технология используется для объединения нескольких крупных локальных сетей и на ответственных участках локальных сетей.

Первые версии стандарта FDDI были разработаны институтом ANSI в 1986-1988 годах. Технология FDDI разрабатывалась на основе технологии TokenRing, в качестве основных рассматривались задачи повышения пропускной способности до 100 Мбит/с и повышения надежности и отказоустойчивости сети за счет стандартных процедур восстановления после отказов – повреждения кабеля, некорректной работы узлов и сетевого оборудования.

 

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

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

Для адресации используются MAC-адреса, в соответствии со стандартом IEEE 802. Формат кадров близок к формату TokenRing.

Сеть FDDI строится на основе двух оптоволоконных колец – первичного и вторичного. В нормальном режиме работы задействовано только первичное кольцо. Для станций и концентраторов FDDI допустимы два способа подключения: к одному кольцу, или к обоим кольцам FDDI. Соответственно этому устройства называются SAS (Single Attachment Station), DAS (Dual Attachment Station), SAC (Single Attachment Concentrator) DAC (Dual Attachment Concentrator)(рис. 2.7).

Рис.2.7. Структура сети FDDI

Для сохранения работоспособности сети при отключении питания в станциях с двойным подключением их сетевые адаптеры снабжаются оптическими обходными переключателями. В случае отказа (например, обрыва кабеля или отказа узла) первичное кольцо объединяется с вторичным, вновь образуя единое кольцо, как показано на рисунке 2.8.

Рис. 2.8. Варианты реконфигурации сети FDDI

 

В сети FDDI используется логическое кодирование 4B/5B в сочетании с физическим кодированием NRZI. Избыточные символы кода FDDI используются в качестве служебных. В частности во время простоев между портами всегда передаются символы Idle, отсутствие которых позволяет обнаружить обрыв кабеля и начать процедуру восстановления.

Предельное расстояние между узлами 2 км.

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

Максимальное количество узлов в сети – 500.( http://www.compnets.narod.ru/2-6.html)

 

2.4 Территориально-распределенные или глобальные сети

Территориально-распределенные сети или глобальные сети - (Wide Area Network - WAN) обеспечивают те же преимущества, что и локальные, но при этом позволяют охватить большую территорию. Обычно для этого используется каналы связи, позволяющие передавать информацию на большие расстояния:

Глобальные сети обычно создаются крупными телекоммуникационными компаниями для оказания платных услуг абонентам. Такие сети называют публичными или общественными. Существуют также такие понятия, как оператор сети и поставщик услуг сети. Оператор сети (network operator) - это та компания, которая поддерживает нормальную работу сети. Поставщик услуг, часто называемый также провайдером (service provider), - та компания, которая оказывает платные услуги абонентам сети. Типичными абонентами глобальной компьютерной сети являются локальные сети предприятий, расположенные в разных городах и странах, которым нужно обмениваться данными между собой. Услугами глобальных сетей пользуются также и отдельные компьютеры. Крупные компьютеры класса мэйнфреймов обычно обеспечивают доступ к корпоративным данным, в то время как персональные компьютеры используются для доступа к корпоративным данным и публичным данным Internet.

Топология глобальных сетей может быть различна (рис. 2.9).

Рис. 2.9. Пример топологии глобальных сетей.

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

Маршрутизатор (router) – принимает решения о выборе оптимального пути между двумя сетевыми сегментами. Маршрутизаторы обмениваются информацией об изменениях структуры сетей, трафике и их состоянии. Благодаря этому, выбирается оптимальный маршрут следования блока данных в разных сетях от абонентской системы-отправителя к системе-получателю. Маршрутизаторы обеспечивают также соединение административно независимых коммуникационных сетей. Каждый маршрутизатор реализует протоколы физического (1А, 1B), канального (2А, 2B) и сетевого (3A, 3B) уровней, как показано на рис.2.10.

Рис. 2.10. Структура маршрутизатора

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

Недостаток: широковещательные и многоадресные сообщения транслируются по всем направлениям, что может привести к значительному увеличению графика.

Шлюз (gateways) – предназначен для объединения систем, имеющих совершенно различную архитектуру, например ЛВС с протоколом TCP/IP и большой ЭВМ со стандартом SNA или с ЛВС базирующейся на протоколе IPX.

 

Тема 3 Технические средства построения информационных сетей.

3.1 Основные типы кабельных и беспроводных сред передачи данных

В компьютерных сетях применяются кабели, соответствующие принятым стандартам. В настоящее время наиболее употребительными являются американский стандарт EIA/TIA-568A, международный ISO/IEC 11801 и европейский EN50173.

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

Наибольшее значение имеют следующие характеристики кабелей, требования к которым устанавливаются в стандартах:

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

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

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

 

3.2 Коаксиальные кабели

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

На рис. 3.1 приведена конструкция коаксиального кабеля.

Рис. 3.1. Конструкция коаксиального кабеля

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

В практике используется толстый и тонкий коаксиальный кабель. Их характеристики представлены в таблице 3.1.

Таблица 3.1. Характеристики коаксиального кабеля.

Тип

Диаметр

Эффективная длина сегмента

Скорость передачи

Обозначение по стандартуIEEE 802.3

толстый

1 см

500 м

10 Мбит/с

10 base 5

тонкий

0,5 см

185 м

10 Мбит/с

10 base 2

 

В обозначении кабелей по стандарту IEEE 802.3 первые две цифры – скорость передачи в Мбит/с, base обозначает, что кабель используется в сетях с узкополосной передачей (baseband network), последняя цифра – эффективная длина сегмента в сотнях метров, при которой уровень затухания сигнала остается в допустимых пределах. Тонкий подключается к сетевым платам непосредственно через Т-коннектор (рис. 3.2), толстый – через специальное устройство - трансивер (рис. 3.3).

Рис. 3.2. Подключение тонкого коаксиального кабеля

Рис. 3.3. Подключение толстого коаксиального кабеля

Стандарт 10Base-5 описывает “толстый” коаксиальный кабель. Он использует в качестве среды передачи данных коаксиальный кабель с волновым сопротивлением 50 Ом, диаметром центрального медного провода 2, 17 мм и внешним диаметром около 10 мм (“толстый” Ethernet). Такими характеристиками обладают кабели марок RG-8 и RG-11.

Кабель используется как моноканал для всех станций. Сегмент кабеля имеет максимальную длину 500 м (без повторителей) и должен иметь на концах согласующие терминаторы сопротивлением 50 Ом, поглощающие распространяющиеся по кабелю сигналы и препятствующие возникновению отраженных сигналов.

Станция должна подключаться к кабелю при помощи приемопередатчика - трансивера (transmitter + Receiver = transceiver). Трансивер устанавливается непосредственно на кабеле и питается от сетевого адаптера компьютера.

Трансивер соединяется с сетевым адаптером интерфейсным кабелем АUI (Attachment Unit Interface) длиной до 50 м, состоящим из 4 витых пар (адаптер должен иметь разъем AUI).

Допускается подключение к одному сегменту не более 100 трансиверов, причем расстояние между подключениями трансиверов не должно быть меньше 2, 5 м.

Стандарт 10Base-5 определяет возможность использования в сети специального устройства - повторителя (repeator). Повторитель служит для объединения в одну сеть нескольких сегментов кабеля и увеличения тем самым общей длины сети. Повторитель принимает сигналы из одного сегмента кабеля и побитно синхронно повторяет их в другом сегменте, улучшая форму и мощность импульсов, а также синхронизируя импульсы.

Стандарт разрешает использование в сети не более 4 повторителей и, соответственно, не более 5 сегментов кабеля. При максимальной длине сегмента кабеля в 500 м это дает максимальную длину сети l0Base-5 в 2500 м. Только 3 сегмента из 5 могут быть нагруженными, то есть такими, к которым подключаются конечные узлы. Между нагруженными сегментами должны быть ненагруженные сегменты, так что максимальная конфигурация сети представляет собой два нагруженных крайних сегмента, которые соединяются ненагруженными сегментами еще с одним центральным нагруженным сегментом.

Правило применения повторителей в сети Ethernet l0Base-5 носит название “правило 5-4-З”, то есть 5 сегментов, 4 повторителя, 3 нагруженных сегмента. Ограниченное число повторителей объясняется дополнительными задержками распространения сигнала, которые они вносят.

Стандарт 10Base-2 использует в качестве передающей среды коаксиальный кабель с диаметром центрального медного провода 0,89 мм и внешним диаметром около 5 мм (“тонкий” Ethernet). Кабель имеет волновое сопротивление 50 Ом. Такими характеристиками обладают кабели марок RG - 58/U, RG - 58 A/U, RG - 58 C/U

Максимальная длина сегмента без повторителей составляет 185 м, сегмент должен иметь на концах согласующие терминаторы 50 Ом. Данный стандарт является наиболее дешевым решением для построения небольших сетей с числом компьютеров до 5-10.

Станции подключаются к кабелю с помощью высокочастотного BNC Т-коннектора, который представляет собой тройник, один отвод которого соединяется с сетевым адаптером, а два других - с двумя концами разрыва кабеля. Максимальное количество станций, подключаемых к одному сегменту, – 30. Минимальное расстояние между станциями – 1м.

Стандарт 10Base-2 предусматривает использование повторителей, применение которых также должно соответствовать “правилу 5 - 4 - 3”. В этом случае сеть будет иметь максимальную длину в 5х185 = 925 м.

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

 

Общим недостатком стандартов 10Base-5 и 10Base-2 является отсутствие оперативной информации о состоянии моноканала. Повреждение кабеля обнаруживается сразу же (сеть перестает работать), но для поиска отказавшего отрезка кабеля необходим специальный прибор - кабельный тестер.

 

3.3 Витая пара

Кабель типа используется в двух вариантах: незащищенная витая пара UTP и фольгированная витая пара FTP

Медный неэкранированный кабель UTP наряду с тонким коаксиальным кабелем является наиболее употребительным в современных локальных сетях. В стандартах EIA/TIA описаны пять категорий данного типа кабеля. Кабели первых двух категорий были описаны в ранних стандартах, но в последней редакции признаны устаревшими.

 

Кабели категории 3 имеют рабочий диапазон до 16 МГц и предназначены для передачи данных и голоса Шаг скрутки установлен 3 витка на 1 фут. В настоящее время этот кабель используется для передачи голоса и данных, в том числе в сетях Ethernet со скоростью передачи 10 Мбит/с.

Кабели категории 4 являются некоторым улучшением категории 3 и имеют рабочий диапазон 20 МГц.

Кабели категории 5 – наиболее распространенный в настоящее время вид кабелей типа витая пара, ориентированный на высокоскоростные протоколы и имеющий рабочий диапазон 100 МГц.

Кабели категорий 6 и 7 имеют рабочий диапазон 200 и 600 МГц и лучшие характеристики затухания и помехозащищенности, но используются редко из-за своей дороговизны.

Волновое сопротивление кабелей витой пары составляет 100 Ом (стандарт ISO допускает также сопротивление 120 Ом). Все кабели выпускаются в 4-парном исполнении, каждая из пар имеет свой цвет. Для соединения кабелей с оборудованием используются вилки и розетки RJ-45.

Защищенная витая пара STP

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

Экранированные кабели Type 1 стандарта IBM имеют волновое сопротивление 150 ОМ, поэтому для работы с ними нужно соответствующее оборудование. Данные кабели поддерживаются некоторыми сетевыми технологиями (Fast Ethernet, TokenRing и др.) наряду с кабелями UTP.

Стандарт 10Base-T использует в качестве среды неэкранированную витую пару (Unshielded Twisted Pair, UTP). Конечные узлы соединяются с концентратором, находящимся в центральном узле физической топологии “звезда”, с помощью двух витых пар (объединенных в едином кабеле) Одна витая пара требуется для передачи данных от станции к повторителю (выход Тх сетевого адаптера), а другая - для передачи данных от повторителя к станции (вход Rх сетевого адаптера). На рис. показан пример концентратора. Концентратор (hub) принимает сигналы от одного из конечных узлов и синхронно передает их на все свои остальные порты, кроме того, с которого поступили сигналы.

Рис. 3.4. Схема концентратора

Концентратор осуществляет функции повторителя сигналов на всех отрезках витых пар, подключенных к его портам, так что образуется единая среда передачи данных - логический моноканал (логическая общая шина). Он обнаруживает коллизию в сегменте в случае одновременной передачи сигналов по нескольким своим Rх-входам и посылает jam-последовательность на все свои Тх-выходы. Стандарт определяет битовую скорость передачи данных 10 Мбит/с и максимальное расстояние отрезка витой пары между двумя непосредственно связанными узлами (станциями и концентраторами) не более 100 м при наличии витой пары качества не ниже категории 3.

Концентраторы 10Base-T можно соединять друг с другом с помощью тех же портов, которые предназначены для подключения конечных узлов специальными (кроссовыми) кабелями, обеспечивающими перекрестное соединение входов и выходов.

Для обеспечения синхронизации станций при реализации процедур доступа CSMA/CD и надежного распознавания станциями коллизий в стандарте определено, что число концентраторов между любыми двумя станциями сети не должно превышать 4.

Это правило носит название “правила 4-х хабов” и оно заменяет “правило 5-4-3”, применяемое к коаксиальным сетям. При создании сети 10Base-T с большим числом станций концентраторы можно соединять друг с другом иерархическим способом.

Общее количество станций в сети 10Base-T не должно превышать общего предела в 1024.

Максимальная длина сети в 2500 м здесь понимается как максимальное расстояние между любыми двумя конечными узлами сети (часто применяется также термин “максимальный диаметр сети”). Так как между любыми двумя узлами сети не должно быть больше 4-х повторителей, то максимальный диаметр сети 10Base - T составляет 5 * 100 = 500 м.

Для витой пары широко применяют модульные разъемы (Modular Jack), широко известные под названием RJ-45: розетки (Outlet, Jack) и вилки (Plug), показанные на рисунке 3.5.

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

Рис. 3.5. Разъем RJ-45

 

При монтаже структурированной кабельной системы для передачи данных следует использовать раскладку EIA/TIA-568A (сокращенно T568A) или EIA/TIA-568B (сокращенно T568B). Раскладка T568B известна и под именем AT&T258A или WECO. Обе эти раскладки приведены в таблице 3.2, а общий вид кабеля на рисунке:

Таблица 3.2.

             

1

бело-зеленый

3 (Tip)

 

1

бело-оранжевый

2 (Tip)

2

зеленый

3 (Ring)

 

2

оранжевый

2 (Ring)

3

бело-оранжевый

2 (Tip)

 

3

бело-зеленый

3 (Tip)

4

синий

1 (Ring)

 

4

синий

1 (Ring)

5

бело-синий

1 (Tip)

 

5

бело-синий

1 (Tip)

6

оранжевый

2 (Ring)

 

6

зеленый

3 (Ring)

7

бело-коричневый

4 (Tip)

 

7

бело-коричневый

4 (Tip)

8

коричневый

4 (Ring)

 

8

коричневый

4 (Ring)

 

Рис. 3.6 Общий вид кабеля UTP

 

3.4 Волоконно-оптоптические кабели

Волоконно-оптические кабели(ВОК) состоят из центрального проводника света (волокна), окруженного другим проводником – оболочкой (рисунок 3.7). Оболочка обладает меньшим показателем преломления, чем сердцевина, поэтому излучение не выходит за пределы волокна.

Рис. 3.7. Структура оптоволокна

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

Каждое стеклянное оптоволокно передает сигналы только в одном направлении, поэтому кабель состоит из двух волокон с отдельными коннекторами (рисунок 3.8). Жесткость обеспечивает покрытие из пластика, а прочность – волокна кевлара.

Различают одномодовое волокно (дорогое, очень тонкого диаметра, с полосой пропускания сотни гигагерц); многомодовое волокно (с более широким сердечником и меньшей полосой пропускания 500-800 МГц).

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

В качестве источников света в ВОК используют светодиоды и полупроводниковые лазеры. Для передачи информации используется свет с диной волны 1150 нм (лазеры), 1300 нм и 850 нм.

Для присоединения ВОК к оборудованию используются разъемы MIC, ST, и SC.

Стандарт 10Base-F в качестве среды передачи данных использует оптическое волокно. Оптоволоконные стандарты в качестве основного типа кабеля рекомендуют достаточно дешевое многомодовое оптическое волокно.

Функционально сеть Ethernet на оптическом кабеле состоит из тех же элементов, что и сеть стандарта 10Base-T – сетевых адаптеров, концентратора и отрезков кабеля, соединяющих адаптер с портом повторителя. Как и в случае витой пары, для соединения адаптера с повторителем используются два оптоволокна – одно соединяет выход Тх адаптера с входом Rх концентратора, а другое – вход Rx адаптера с выходом Тх концентратора.

Стандарт FOIRL (Fiber Optic Inter-Repeater Link) представляет собой первый стандарт комитета 802.3 для использования оптоволокна в сетях Ethernet. Он гарантирует длину оптоволоконной связи между повторителями до 1 км при общей длине сети не более 2500 м. Максимальное число повторителей между любыми узлами сети – 4. Максимального диаметра в 2500 м здесь достичь можно, хотя максимальные отрезки кабеля между всеми 4 повторителями, а также между повторителями и конечными узлами недопустимы – иначе получится сеть длиной 5000 м.

 

3.5 Аппаратные средства подключения рабочих станций

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

При использовании разделяемой среды передачи данных рост объема передаваемых данных и увеличение числа компьютеров приводит к увеличению задержек доступа к сети. Во-первых, пропускная способность сети делится на все подключенные к сети компьютеры, поэтому доля, приходящаяся на один компьютер уменьшается. Во-вторых (и это главное), с увеличением загруженности сети увеличивается время, затрачиваемое сетью на организацию доступа к среде. Например, при методе доступа CSMA/CD возрастает вероятность коллизий, и время, затрачиваемое сетью на их восстановление, поэтому полезная пропускная способность уменьшается.

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

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

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

Принцип работы мостов

Мосты и коммутаторы могут работать по одному из двух алгоритмов: по алгоритму прозрачного моста и моста с маршрутизацией от источника (source routing). Мосты с маршрутизацией от источника имеют собственный MAC-адрес, и передача кадров происходит через несколько мостов в соответствии с маршрутом, указанным отправителем. Такие мосты применяются в сетях TokenRing и FDDI.

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

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

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

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

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

Мост постоянно следит за адресами источника буферизуемых кадров, чтобы быть в состоянии автоматически приспосабливаться к изменениям, происходящим в сети.

Кадры с широковещательными МАС-адресами передаются мостом на все его порты, как и кадры с неизвестным адресом назначения. Поэтому для сети на основе коммутатора иногда применяется термин домен широковещательного трафика

На рисунке 3.9 показана типичная структура моста.

Рис. 3.9. Структура моста

Принцип работы коммутаторов

Технология коммутации сегментов Ethernet по алгоритму прозрачного моста была впервые предложена фирмой Kalpana в 1990 году. Структурная схема коммутатора EtherSwitch, предложенного фирмой Kalpana, представлена на рисунке 3.10.

Рис. 3.10. Структурная схема коммутатора.

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

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

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

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

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

 

Тема 4 Протоколы в информационных сетях

4.1 Основные понятия протоколов

В общем случае задача сетевого программного обеспечения состоит в обслуживании процессов обмена между машинами сети. Для обеспечения различного рода связи между происходящими в сети процессами, необходимо установить определённые правила, руководящие взаимодействиями и гарантирующие их упорядоченный ход. Множество таких правил называется – протоколами. На протоколы возложено руководство происходящими в сети процессами, их взаимодействие между собой и упорядоченный ход. Сетевое программное обеспечение реализует принятые в сетях протоколы.

Протоколы регламентируют:

4.2 Иерархия протоколов. Модель OSI

С целью стандартизации сетей и для помощи производителям в стандартизации и интегрировании производимого сетевого программного обеспечения, Международная организация по стандартизации (ISO, International Standart Organization) в 1984 году определила программную модель пересылки сообщений между компьютерами. Эта модель получила название опорной модели взаимодействия открытых систем - Open Systems Interconnection (OSI) reference model [1,2,5]. В модели OSI определены семь уровней программного обеспечения, как показано на рис.4.1.

Рис.4.1. Семиуровневая модель OSI

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

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

Физический уровень предназначен непосредственно для передачи потока данных. Определяет характеристики оборудования, преобразующие передаваемые данные в физический сигнал, передающийся по кабелю. На этом уровне определяются уровни напряжения и конкретные контакты разъема.Осуществляет передачу электрических или оптических сигналов в кабель или в радиоэфир и, соответственно, их приём и преобразование в биты данных в соответствии с методами кодирования цифровых сигналов. Другими словами, осуществляет интерфейс между сетевым носителем и сетевым устройством.На этом уровне работают концентраторы (хабы), повторители (ретрансляторы) сигнала и медиаконверторы.Функции физического уровня реализуются на всех устройствах, подключенных к сети. Со стороны компьютера функции физического уровня выполняются сетевым адаптером или последовательным портом. К физическому уровню относятся физические, электрические и механические интерфейсы между двумя системами. Физический уровень определяет такие свойства среды сети передачи данных как оптоволокно, витая пара, коаксиальный кабель, спутниковый канал передач данных и т.п. Стандартными типами сетевых интерфейсов, относящимися к физическому уровню, являются: V.35, RS-232C, RS-485, RJ-11, RJ-45, разъемы AUI и BNC.Примерами протоколов могут быть: USB, EIA RS-232, EIA-422, EIA-423, RS-449, RS-485, Ethernet (включая 10BASE-T, 10BASE2, 10BASE5, 100BASE-TX, 100BASE-FX, 100BASE-T, 1000BASE-T, 1000BASE-SX и другие), 802.11Wi-Fi, DSL, Firewire.

 

Канальный уровень предназначен для обеспечения взаимодействия сетей на физическом уровне и контроля над ошибками, которые могут возникнуть. Полученные с физического уровня данные он упаковывает во фреймы, проверяет на целостность, если нужно исправляет ошибки (посылает повторный запрос поврежденного кадра) и отправляет на сетевой уровень. Канальный уровень может взаимодействовать с одним или несколькими физическими уровнями, контролируя и управляя этим взаимодействием. Спецификация IEEE 802 разделяет этот уровень на 2 подуровня – MAC (Media Access Control) регулирует доступ к разделяемой физической среде, LLC (Logical Link Control) обеспечивает обслуживание сетевого уровня. На этом уровне работают коммутаторы, мосты.К функциям протокола относятся:- управление процедурами установления и прекращения связи;- упаковка передаваемой информации в кадры перед ее передачей и разупаковка информации при приеме;- генерация и чтение управляющих кадров;- обеспечение прозрачности информационного канала;- прием и передача подтверждений;- повторная передача кадров потерянных или с ошибками.Примерами являются протоколы ВSC, HDLС.Протоколы: BSC, ARCnet, ATM, Ethernet, Fiber Distributed Data Interface (FDDI), Frame Relay, High-Level Data Link Control (HDLC), IEEE 802.2 (provides LLC functions to IEEE 802 MAC layers), IEEE 802.11 wireless LAN, Point-to-Point Protocol (PPP), Serial Line Internet Protocol (SLIP) (obsolete), StarLan, Token ring, x.25.

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

 

Сетевой уровень управляет соединениями через сети и делает прозрачными для протоколов верхнего уровня детали самой сети. Этот уровень сетевой модели OSI предназначен для определения пути передачи данных. Отвечает за трансляцию логических адресов и имён в физические, определение кратчайших маршрутов, коммутацию и маршрутизацию, отслеживание неполадок и заторов в сети. На этом уровне работает такое сетевое устройство, как маршрутизатор. Сетевой уровень обеспечивает:

Пример: IP/IPv4/IPv6 (Internet Protocol), IPX (Internetwork Packet Exchange, протокол межсетевого обмена), X.25 (частично этот протокол реализован на уровне 2), ICMP (Internet Control Message Protocol), RIP (Routing Information Protocol).

 

Транспортный уровень гарантирует, что получатель получит данные точно в таком виде, в каком они были отправлены. Разделяет сообщения на пакеты на передающем конце и осуществляет сборку на приемном. Обеспечивает согласование сетевых уровней различных несовместимых между собой сетей через специальные шлюзы. Примером могут служить протоколы TCP, UDP, SPX.Существует множество классов протоколов транспортного уровня, начиная от протоколов, предоставляющих только основные транспортные функции (например, функции передачи данных без подтверждения приема), и заканчивая протоколами, которые гарантируют доставку в пункт назначения нескольких пакетов данных в надлежащей последовательности, мультиплексируют несколько потоков данных, обеспечивают механизм управления потоками данных и гарантируют достоверность принятых данных.Мультиплексирование (multiplexing) данных означает, что транспортный уровень способен одновременно обрабатывать несколько потоков данных (потоки могут поступать и от различных приложений) между двумя системами. Механизм управления потоком данных – это механизм, позволяющий регулировать количество данных, передаваемых от одной системы к другой. Протоколы транспортного уровня часто имеют функцию контроля доставки данных, заставляя принимающую данные систему отправлять подтверждения передающей стороне о приеме данных.

 

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

 

Уровень представлений определяет форматы данных, алфавиты и коды, представление специальных и графических символов, описывает шифрование данных, их сжатие и кодовое преобразование. Этот уровень отвечает за преобразование протоколов и кодирование/декодирование данных. Запросы приложений, полученные с уровня приложений, он преобразует в формат для передачи по сети, а полученные из сети данные преобразует в формат, понятный приложениям. На этом уровне может осуществляться сжатие/распаковка или кодирование/декодирование данных, а также перенаправление запросов другому сетевому ресурсу, если они не могут быть обработаны локально.Для примера пусть одна сеть использует для представления данных расширенный двоичный код обмена информацией EBCDIC(это может быть мэйнфрейм компании IBM), а другая – американский стандартный код обмена информацией ASCII (его используют большинство других производителей компьютеров). Если этим двум системам необходимо обменяться информацией, то нужен уровень представлений, который выполнит преобразование и осуществит перевод между двумя различными форматами.Функция шифрования данных применяется в тех случаях, когда необходимо защитить передаваемую информацию от приема несанкционированными получателями. На этом уровне существуют и другие подпрограммы, которые сжимают тексты и преобразовывают графические изображения в битовые потоки, так что они могут передаваться по сети.Стандарты уровня представлений также определяют способы представления графических изображений. Для этих целей может использоваться формат PICT– формат изображений, применяемый для передачи графики QuickDraw между программами для компьютеров Macintosh и PowerPC. Другим форматом представлений является тэгированный формат файлов изображений TIFF, который обычно используется для растровых изображений с высоким разрешением. Следующим стандартом уровня представлений, который может использоваться для графических изображений, является стандарт, разработанный Объединенной экспертной группой по фотографии (Joint Photographic Expert Group); в повседневном пользовании этот стандарт называют просто JPEG.Существует группа стандартов уровня представлений, которая определяет представление звука и кинофрагментов. Сюда входят:

 

Уровень приложений обслуживает задачи пользователя и прикладное ПО по передаче данных через сеть и доступу к сетевым ресурсам. Это верхний уровень модели. Он обеспечивает взаимодействие сети и пользователя. Уровень разрешает приложениям пользователя иметь доступ к сетевым службам, таким как обработчик запросов к базам данных, доступ к файлам, пересылке электронной почты. Также отвечает за передачу служебной информации, предоставляет приложениям информацию об ошибках и формирует запросы к уровню представления. Пример: HTTP, POP3, SMTP, FTP, DNS, MODBUS

 

Тема 5 Протоколы низкого уровня

5.1 Структура стандартов IEEE 802.x

В 1980 году в институте IEEE был организован комитет 802 по стандартизации локальных сетей, в результате работы которого было принято семейство стандартов IEEE 802.х, которые содержат рекомендации по проектированию нижних уровней локальных сетей. Позже результаты работы этого комитета легли в основу комплекса международных стандартов ISO 8802 - 1... 5. Эти стандарты были созданы на основе очень распространенных фирменных стандартов сетей Ethernet, Arcnet и Token Ring.Стандарты семейства IEEE 802.x охватывают только два нижних уровня семи - уровневой модели OSI – физический и канальный. Это связано с тем, что именно эти уровни в наибольшей степени отражают специфику локальных сетей. Старшие же уровни, начиная с сетевого , в значительной степени имеют общие черты как для локальных, так и для глобальных сетей.Специфика ЛВС нашла свое отражение в разделении канального уровня на два подуровня, которые часто называют также уровнями:

Уровень MAC обеспечивается адресация узлов и использование общей среды передачи данных, которая поочередно предоставляется в распоряжение той или иной станции сети. На уровне LLC обеспечивается управление передачей данных.В современных локальных сетях получили распространение несколько протоколов уровня MAC, которые являются частью стандартов Ethernet, Fast Ethernet, Gigabit Ethernet, Token Ring, FDDI. Но независимо от вида технологии на уровне MAC всегда используется один и тот же способ адресации.Уровень LLC отвечает за передачу кадров между узлами с различной степенью надежности, обнаружения ошибок и др. Уровень LLC реализует также функцию интерфейса с прилегающим к нему сетевым уровнем.

Структура стандартов IEEE 802.x приведена на рисунке 5.1.

Рис. 5.1. Структура стандартов IEEE 802.X

Стандарт 802.1 определяет общие положение по технологиям локальных сетей, 802.2 – общий для всех стандарт на протокол LLC, остальные описывают специфические технологии доступа к среде.

Сегодня комитет 802 включает следующие подкомитеты:

802.1 - Internetworking - объединение сетей;
802.2 - Logical Link Control, LLC - управление логической передачей данных;
802.3 - Ethernet с методом доступа CSMA/CD, 802.3u –Fast Ethernet.
802.4 - Token Bus LAN - локальные сети с методом доступа Token Bus;
802.5 - Token Ring LAN - локальные сети с методом доступа Token Ring;
802.6 - Metropolitan Area Network, MAN - сети мегаполисов;
802.7 - Broadband Technical Advisory Group – техническая консультационная группа по широкополосной передаче;
802.8 - Fiber Optic Technical Advisory Group - техническая консультационная группа по волоконно - оптическим сетям;
802.9 - Integrated Voice and data Networks - интегрированные сети передачи голоса и данных;
802.10 - Network Security - сетевая безопасность;
802.11 - Wireless Networks - беспроводныесети;
802.12 - Demand Priority Access LAN, l00VG - AnyLAN - локальные сети с методом доступа по требованию с приоритетами.

 

5.2 Протоколы физического уровня

5.2.1 Интерфейсы RS-232С

Интерфейсы RS-232С, RS-422 и RS-485 разработаны Ассоциацией электронной промышленности (EIA - Electronics Industries Association) и Ассоциацией промышленности средств связи (TIA - Telecommunications Industry Associastion). EIA традиционно маркировала все свои стандарты префиксом "RS" (Рекомендованный стандарт).

Широко используемый последовательный интерфейс синхронной и асинхронной передачи данных, определяемый стандартом EIA RS-232C и рекомендациями V.24 CCITT, изначально создавался для связи компьютера с терминалом. В настоящее время используется в самых различных применениях.

Интерфейс RS-232C соединяет два устройства. Линия передачи первого устройства соединяется с линией приема второго и наоборот (полный дуплекс) Для управления соединенными устройствами используется программное подтверждение (введение в поток передаваемых данных соответствующих управляющих символов). Возможна организация аппаратного подтверждения путем организации дополнительных RS-232 линий для обеспечения функций определения статуса и управления.

Стандарт

EIA RS-232C, CCITT V.24

Скорость передачи

115 Кбит/с (максимум)

Расстояние передачи

15 м (максимум)

Характер сигнала

несимметричный по напряжению

Количество драйверов

1

Количество приемников

1

Схема соединения

полный дуплекс, от точки к точке

В компьютере интерфейс RS-232C реализован в двух исполнениях – 9-ти контактном и 25 – контактном (рис.5.2а и рис.5.2б, соответственно).


Рис. 5.2. Варианты реализации разъемов RS-232С.

Таблица 5.1.

Наименование

Направление

Описание

Контакт
(25-контактный разъем)

Контакт
(9-контактный разъем)

DCD

IN

Carrie Detect (Определение несущей)

8

1

RXD

IN

Receive Data (Принимаемые данные)

3

2

TXD

OUT

Transmit Data (Передаваемые данные)

2

3

DTR

OUT

Data Terminal Ready (Готовность терминала)

20

4

GND

-

System Ground (Корпус системы)

7

5

DSR

IN

Data Set Ready (Готовность данных)

6

6

RTS

OUT

Request to Send (Запрос на отправку)

4

7

CTS

IN

Clear to Send (Готовность приема)

5

8

RI

IN

Ring Indicator (Индикатор)

22

9

Интерфейс RS-232C предназначен для подключения к компьютеру стандартных внешних устройств (принтера, сканера, модема, мыши и др.), а также для связи компьютеров между собой. Основными преимуществами использования RS-232C по сравнению с Centronics являются возможность передачи на значительно большие расстояния и гораздо более простой соединительный кабель. В то же время работать с ним несколько сложнее. Данные в RS-232C передаются в последовательном коде побайтно. Каждый байт обрамляется стартовым и стоповыми битами. Данные могут передаваться как в одну, так и в другую сторону (дуплексный режим).

Назначения сигналов следующие:

FG – защитное заземление (экран).

TxD – данные, передаваемые компьютером в последовательном коде (логика отрицательная).

RxD – данные, принимаемые компьютером в последовательном коде (логика отрицательная).

RTS – сигнал запроса передачи. Активен во все время передачи.

CTS – сигнал сброса (очистки) для передачи. Активен во все время передачи. Говорит о готовности приемника.

DSR – готовность данных. Используется для задания режима модема.

SG – сигнальное заземление, нулевой провод.

DCD – обнаружение несущей данных (детектирование принимаемого сигнала).

DTR – готовность выходных данных.

RI – индикатор вызова. Говорит о приеме модемом сигнала вызова по телефонной сети.

Наиболее часто используются трех- или четырехпроводная связь (для двунаправленной передачи). Схема соединения для четырехпроводной линии связи показана на рисунке 5.2.

Рис.5.3. Схема 4-проводной линии связи для RS-232C

Для двухпроводной линии связи в случае только передачи из компьютера во внешнее устройство используются сигналы SG и TxD. Все 10 сигналов интерфейса задействуются только при соединении компьютера с модемом.Формат передаваемых данных показан на рисунке 5.4. Собственно данные (5, 6, 7 или 8 бит) сопровождаются стартовым битом, битом четности и одним или двумя стоповыми битами. Получив стартовый бит, приемник выбирает из линии биты данных через определенные интервалы времени. Очень важно, чтобы тактовые частоты приемника и передатчика были одинаковыми (допустимое расхождение - не более 10%). Скорость передачи по RS-232C может выбираться из ряда: 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 бит/с.Все сигналы RS-232C передаются специально выбранными уровнями, обеспечивающими высокую помехоустойчивость связи (рис.5.5.). Отметим, что данные передаются в инверсном коде (логической единице соответствует низкий уровень, логическому нулю - высокий уровень).

Для подключения произвольного УС к компьютеру через RS-232C обычно используют трех- или четырехпроводную линию связи (см. рис. 5.3), но можно задействовать и другие сигналы интерфейса.

Рис.5.4. Формат данных RS-232C

Рис.5.5. Уровни сигналов RS-232C на передающем и принимающем концах линии связи.

 

5.2.2 Интерфейсы RS-422 и RS-485

Стандарты RS-485 и RS-422 имеют много общего, и поэтому их часто путают. Таблица 5.2 сравнивает их. RS-485, определяющий двунаправленную полудуплексную передачу данных, является единственным стандартом EIA/TIA, допускающим множественные приемники и драйверы в шинных конфигурациях. EIA/TIA-422, с другой стороны, определяет единственный однонаправленный драйвер с множественными приемниками. Элементы RS-485 обратно совместимы и взаимозаменяемы со своими двойниками из RS-422, однако драйверы RS-422 не должны использоваться в системах на основе RS-485, поскольку они не могут отказаться от управления шиной.

Таблица 5.2. Стандарты RS-485 и RS-422

RS-422

RS-485

Режим работы

Дифференциальный

Дифференциальный

Допустимое число Tx и Rx

1 Tx, 10 Rx

32 Tx, 32 Rx

Максимальная длина кабеля

1200 м

1200 м

Максимальная скорость передачи данных

10 Мбит/с

10 Мбит/с

Минимальный выходной диапазон драйвера

± 2 В

± 1.5 В

Максимальный выходной диапазон драйвера

± 5 В

± 5 В

Максимальный ток короткого замыкания драйвера

150 мА

250 мА

Сопротивление нагрузки Tx

100 Ом

54 Ом

Чувствительность по входу Rx

± 200 мВ

± 200 мВ

Максимальное входное сопротивление Rx

4 кОм

12 кОм

Диапазон напряжений входного сигнала Rx

± 7 В

от -7 В до +12 В

Уровень логической единицы Rx

> 200 мВ

> 200 мВ

Уровень логического нуля Rx

< 200 мВ

< 200 мВ

Защита от электростатических разрядов

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

5.2.3 Управление передачей

Управление передачей в интерфейсах RS-232C, RS-485 и RS-422 выполняется по одинаковым принципам и алгоритмам. Поэтому остановимся на рассмотрении управления обменом интерфейса RS-232C. Обмен по RS-232C осуществляется с помощью обращений к специально выделенным для этого портам COM1 (адреса 3F8h...3FFh, прерывание IRQ4), COM2 (адреса 2F8h...2FFh, прерывание IRQ3), COM3 (адреса 3F8h...3EFh, прерывание IRQ10), COM4 (адреса 2E8h...2EFh, прерывание IRQ11).

Каждый COM-порт (асинхронный адаптер в ЭВМ), реализующий RS-232С, управляется 10-ю внутренними регистрами. Обращение к регистрам производится по их адресам, называемыми портами ввода/вывода.

Регистры данных и скорости позволяют изменять скорость передачи данных в диапазоне от 110 бод до 115200 бод. С помощью управляющего регистра устанавливаются скорость передачи данных, контроль четности и длина передаваемых символов (5, 6, 7 и 8 бит). Старт передачи одиночного символа в канал связи и момент приема по линии связи входного символа определяется по изменению содержимого регистра состояния линий.

5.3 Пpотокол BSC упpавления инфоpмационным каналом

Родоначальниками большинства канальных протоколов в различных сетях стали байт-ориентированный протокол BSC и бит-ориентированный протокол HDLC. Особенно популярны разновидности HDLC. К таким протоколам можно отнести канальные протоколы XМodem для модемной связи, протоколы IEEE 802.Х, протокол LAPB для сетей Х.25 и др.

Протокол управления информационным каналом – BSC. Управляющие символы, формат кадра, пpоцедуpа управления, метод байтстаффинга.

Байт-ориентированный протокол BSC (Binary Synchronous Communication), разработан фирмой IBM в середине 60-х годов. Протокол BSC – кодозависимый протокол, то есть использует для управления обменом набор управляющих символов. Каждый переданный символ анализируется на приемной стороне, чтобы определить, является ли он управляющим символом или относится к массиву данных.Управляющие символы, применяемые в BSC, представлены кодом ASCII. Приведем основные из управляющих символов и их код в HEX-коде:

SVN(код 16h) – синхронизирующий символSOH(код 01h) – начало заголовка пакетаSTX(код 02h) – начало текстаETX(код 034) – конец текстаETB(код 17h) – конец передачи блока (заголовка)ENQ(код 05h) – запросACK(код 06h) – подтверждениеNAK(15h) – отрицательная квитанция (переспрос)EOT(04h) – конец сеанса связи

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

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

Так как при синхронной передаче нет стоповых и стартовых битов, отделяющих байты друг от друга, синхронизация достигается за счет того, что передатчик добавляет два или более управляющих символа, называемых символами SYN, перед каждым блоком символов. В коде ASCII символ SYN имеет двоичное значение 0010110, это несимметричное относительно начала символа значение позволяет легко разграничивать отдельные символы SYN при их последовательном приеме. Символы SYN выполняют две функции: во-первых, они обеспечивают приемнику побитную синхронизацию, во-вторых, как только битовая синхронизация достигается, они позволяют приемнику начать распознавание границ символов SYN. После того как приемник начал отделять один символ от другого, можно задавать границы начала кадра с помощью другого специального символа. Обычно в символьных протоколах для этих целей используется символ STX (Start of TeXt, ASCII 0000010). Другой символ отмечает окончание кадра – ЕТХ (End of TeXt, ASCII 0000011).

Режимы прозрачности

Способ выделения начала и конца кадра по специальным символам работает корректно только в том случае, если внутри кадра нет символов коды которых соответствуют кодам управляющих символов, например, STX и ЕТХ. Появление внутри кадра символа ETX может привести к ложному определению конца кадра. Например, при передаче с компьютера на компьютер программы, данные внутри кадра могут быть любые. Для устранения подобных ложных определений протокол BSC может работать в двух режимах - непрозрачном, в котором некоторые специальные символы внутри кадра запрещались, и прозрачном, в котором разрешалась передачи внутри кадра любых символов, в том числе и ЕТХ. Прозрачность достигалась за счет того, что перед управляющими символами всегда вставляется символ DLE (Data Link Escape). Такая процедура называется байтстаффингом (stuffing – заполнять). Символ DLE должен был предварять служебный символ. В случае если в поле данных кадра встречался символ с кодом DLE , то передатчик удваивал символ DLE, то есть порождал последовательность DLE DLE. Приемник, встретив подряд два символа DLE DLE, всегда удалял первый, но оставшийся DLE уже не рассматривал как начало управляющей последовательности. То есть, если в передаваемых данных встречалась последовательность DLE ЕТХ, она переделывалась передатчиком в DLE DLE ЕТХ, а на приемной стороне после исключения одного DLE ЕТХ оставшиеся символы DLE ЕТХ считались просто пользовательскими данными.

Запрос на обмен осуществляется посылкой последовательности DLE SOH. Получив положительную квитанцию DLE ACK, передающая сторона начинает передачу кадров. Сначала передается управляющий кадр, имеющий формат, показанный на рис.5.6а, затем после приема положительной квитанции DLE ACK передается кадр данных (рис.5.6б).

:
а)

б)
Рис.5.6. Форматы кадров BSC

Если данные передаются группой кадров, каждый из них завершается последовательностью DLE ЕТB, а последний последовательностью DLE ЕТХ. Байты BCC1 и BCC2 являются байтами контрольной суммы. Для завершения сеанса связи передается последовательность DLE EOT.

 

5.4 Протокол HDLC управления информационным каналом

Большой опыт, полученный при эксплуатации информационных каналов, использующих протокол BSC, позволили IBM разработать новый, более совершенный протокол, названный SDLC. На его основе Международной организацией стандартизации – ISO был создан и утвержден протокол HDLC.

В отличие от байториентированного протокола BSC протоколы SDLC и HDLC являются бит-ориентированными, т.е. осуществляют работу не с байтами, а с битами. Это позволяет уменьшить объем управляющей информации, передаваемой по информационному каналу. Благодаря чему повышается эффективность его использования.

5.4.1 Режим работы. Программа управления информационным каналом двух машин может выполнять “первичные” (управляющие) и “вторичные” (управляемые) функции. Информация от управляющих называется командами, а от управляемых – ответами. Существуют три типа станций HDLC:

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

5.4.2 Обмен в HDLC

Типы кадров. Протокол HDLC предусматривает использование трех типов кадров, определяющих три фазы взаимодействия ЭВМ в сети. Это – ненумерованные (U), супервизорные (S) и информационные (I) кадры.

Ненумерованный кадр (U-кадр), предназначен для выполнения функций фазы установления и прекращения связи, а также функции тестирования, сброса и идентификации станции и т.д. Конкретный тип команды и ответа зависит от класса процедуры HDLC.

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

Информационный кадр (I - кадр) используется в фазе передачи данных между двумя станциями.

Формат кадра HDLC состоит из трех частей (рис.5.7):

Флаг

Адрес

Управляющее поле

Информационное поле

CRC

Флаг

Рис.5.7. Формат кадра HDLC

Каждый кадр начинается и заканчивается 8-ми битовым управляющим символом – флагом, отделяющим кадры друг от друга в непрерывном потоке информации, проходящей через информационный канал. Флаг представлен кодом “01111110”. Станции, подключенные к каналу, постоянно контролируют двоичную последовательность флага. Флаги могут постоянно передаваться по каналу между кадрами HDLC. При этом один и тот же флаг может закрывающем для одного кадра и открывающем для другого.

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

Адресное поле определяет первичную или вторичную станции, участвующие в передаче конкретного кадра. Каждой станции присваивается уникальный адрес.

Управляющее поле задает тип команды или ответа, а так же определяет порядковые номера передаваемых и принимаемых кадров. Формат и содержание управляющего поля (рис.5.8) определяют тип кадра ( U-кадр, S-кадр и I-кадр).

Тип

кадра

Разряды

1

2

3

4

5

6

7

8

I-формат

0

N(S)

P/F

N(R)

S-формат

1

0

S-коды

P/F

N(R)

U-формат

1

1

U-коды

P/F

U-коды

Рис.5.8. Формат кадра и управляющего поля HDLC

В формате управляющего поля использованы обозначения:

Разряды 1 и 2 управляющего байта служат для определения типа кадра. Разряды 3, 4 в S-кадре и разряды 3, 4, 6, 7, 8 в U-кадре служат для кодирования команд/ответов. Разряд 5 – бит P/F или бит опроса/окончания. Этот разряд принимается во внимание только тогда, когда он установлен в 1. Бит P/F называется битом P, когда он используется первичной станцией, и битом F, когда он используется вторичной станцией. Он используется первичной и вторичной станциями для выполнения следующих функций:

По информационному каналу передаются два встречных потока информационных потока. Для четкого управления этими потоками и безошибочной идентификации кадров, в каждой машине устанавливаются по два счетчика – N(S) и N(R). Один из них (N(S)) подсчитывает переданные информационные кадры, а другой (N(R)) – принятые. Счетчики выдают циклическое значение от 0 до 7.С расширенным полем управления под счетчики отводятся отдельные байты, и они считают от 0 до 127. Непосредственно перед отправкой файла в него записывается значение N(S)– номер передаваемого и значение N(R) – номера ожидаемого кадра. Если процедура передачи кадров перешла без ошибок, то номер передаваемого кадра первой машиной должен совпадать со счетчика принятых кадров во второй машине, т.е. должно быть равенство N(S)1=N(R)2.

Если это условие нарушено, то принятый кадр выбрасывается, а машина пересылает требование повторных данных.

Список основных команд и ответов, используемых в HDLC, приведен в таблице 5.3.

Таблица 5.3.

Тип

кадра

Команда

Ответ

U -кадр

SNRM – установить связь в нормальном режимеSNRME – Тоже самое с расширенным поле управления.SARM – установить связь в асинхронном режиме.SARME – с расширенным полем управления.DISC – прекратить связь

UA- подтверждение, (да, связь установлена)

CMDR- отказ от установления связи.

S-кадр

RR – готов к приемуRNR – - не готов к приемуREJ – отказ от кадра

SREJ – выборочный отказ от кадра

RR – готов к приемуRNR – - не готов к приемуREJ – отказ от кадра

SREJ – выборочный отказ от кадра

REJ – отказ от кадров начиная с N(R).

SREJ – отказ от кадра с номером N(R).

Концевик кадра состоит из двух байтного кода проверки – CRC и байта флага. Поле CRC (контрольная последовательность кадра) используется для обнаружения ошибок передачи между двумя станциями. Передающая станция осуществляет вычисления над потоком данных пользователя, и результат этого вычисления включается в кадр в качестве поля CRC. В свою очередь, принимающая станция производит аналогичные вычисления и сравнивает полученный результат с полем CRC. Если имеет место совпадение, велика вероятность того, что передача произошла без ошибок. В случае несовпадения, возможно, имела место ошибка передачи, и принимающая станция посылает отрицательное подтверждение, означающее, что необходимо повторить передачу кадра. Вычисление CRC называется циклическим контролем по избыточности и использует некоторый производящий полином в соответствии с рекомендацией МККТТ V.41. Поле CRC вычисляется как дополнение до 1 суммы по модулю 2 двух слагаемых:

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

Этот метод позволяет обнаруживать всевозможные кортежи ошибок длиной не более 16 разрядов, вызываемые одиночной ошибкой, а также 99,9984% всевозможных более длинных кортежей ошибок.

Процедура управления обменом состоит из 3-х фаз: установление связи, поддержке передачи и прекращения связи.В первой фазе посылается U-кадр с одной из команд: SNRM, SARM, SNRME, SARME и ожидает от вторичной машины ответ UA.Во второй фазе производится передача информационных кадров с номерами N(S) и N(R).В третьей фазе посылается команда DISC, а вторичная машина посылает ответ UA.

 

5.5 Протокол Ethernet управления информационным каналом. Стандарт IEEE 802.3

5.5.1 Стандарты протокола Ethernet

В 1980 году фирмы DEC, Intel и Xerox совместно разработали и опубликовали стандарт Ethernet версии II для сети, построенной на основе коаксиального кабеля, который стал последней версией фирменного стандарта Ethernet. Поэтому фирменную версию стандарта Ethernet называют стандартом Ethernet DIX или Ethernet II.На основе стандарта Ethernet DIX был разработан стандарт IEEE 802.3, который во многом совпадает со своим предшественником, но некоторые различия имеются. В частности, в стандарте IEEE 802.3 различаются уровни MAC и LLC. В оригинальном Ethernet оба эти уровня объединены в единый канальный уровеньВ зависимости от типа физической среды стандарт IEEE 802.3 имеет различные модификации - l0Base-5, l0Base-2, l0Base-T, l0Base-FL, l0Base-FB.В 1995 году был принят стандарт Fast Ethernet, который во многом не является самостоятельным стандартом, о чем говорит и тот факт, что его описание просто является дополнительным разделом к основному стандарту 802, 3 – разделом 802.3u. Аналогично, принятый в 1998 году стандарт Gigabit Ethernet описан в разделе 802.3z основного документа.Для передачи двоичной информации по кабелю для всех вариантов физического уровня технологии Ethernet, обеспечивающих пропускную способность 10 Мбит/с, используется манчестерский код.

Все виды стандартов Ethernet (в том числе Fast Ethernet и Gigabit Ethernet) основаны на одном и том же методе использования разделяемой среды передачи данных – методе CSMA/CD. Этот метод применяется исключительно в сетях с логической общей шиной (к которым относятся и радиосети, породившие этот метод).

Метод доступа CSMA/CD – множественный доступ с проверкой несущей и обнаружением коллизий. Этот метод предполагает для передающей станции выполнения следующего алгоритма:

    1. Если среда свободна, станция сразу же начинает передачу или ожидает в течение фиксированного интервал времени T. Интервал T обычно берется равным максимальному времени распространения сигнала из конца в конец;
    2. Если среда занята, станция продолжает прослушивание до тех пор, пока среда не освободится, затем переходит к шагу 1;
    3. Если в момент начала передачи станция обнаруживает, что другая станция тоже начала передачу, она задерживает передачу на случайный интервал времени. По окончании задержки станция возвращается к шагу 1
    4. После окончания передачи кадра станция обязана выдержать технологическую паузу (Inter Packet Gap) в 9.6 мкс. Эта пауза, называемая также межкадровым интервалом, нужна для приведения сетевых адаптеров в исходное состояние, а также для предотвращения монопольного захвата среды одной станцией.

Кадры, передаваемые станцией, поступают на все узлы локальной сети, но только тот, кому они адресованы, принимает эти кадры и посылает подтверждение.

5.5.2 Форматы кадров технологии Ethernet

Формат базового кадра Ethernet показан на рисунке 5.9.

Преамбула (SFD)

Адрес назначения (DA)

Адрес источника (SA)

Тип

Данные

(LLC)

CRC

8 байт

6 байт

6 байт

2 байта

46-1500 байт

4 байта

Рис.5.9. Формат кадра Ethernet

Поля кадра Ethernet имеют следующие характеристики.

Преамбула. Размер 8 байт. Используется для синхронизации кадра. Преамбула всегда содержит код 10101010 c чередованием единиц и нулей в первых 7-ми байтах и код 10101011 в последнем байте.

Адрес назначения (DA, destination address). Размер 6 байт. Содержит MAC-адрес станции узла ЛВС, которому предназначено сообщение. Если старший 7-ой бит в первом байте равен 0 , то первые три байта задают адрес группы, а следующие 3 байта задают локальный адрес в группе. Если же старший 7-ой бит, равен 1, то кадр адресуется всем машинам какой-либо группе. Если все биты первого байта адреса, равны 1, то кадр адресуется всем машинам всех групп и называется широковещательным адресом (broadcast).

Адрес источника(SA, source address). Размер 6 байт. Указывает MAC-адрес станции, которая посылает кадр.

Тип. Размер 2 байта. Идентифицирует тип протокола более высокого уровня. Это позволяет, множеству протоколов высокого уровня разделят ЛВС без того, чтобы вникать в содержимое пакетов друг друга. Приведем значения в шестнадцатеричной системе этого поля для некоторых распространенных сетевых протоколов: 0x0800 для IP, 0x0806 для ARP, 0x809B для AppleTalk, 0x0600 для XNS, и 0x8137 для IPX/SPX.

Данные. Это поле может иметь длину от 46 до 1500 байт и содержит данные, составляющие сообщение.

CRC – контрольная последовательность размером в 4 байта. Содержит остаток избыточной циклической суммы (cyclic redundancy checksum), вычислительный с помощью полиномов типа CRC-32. Если не учитывать преамбулу, то видно, что сообщение Ethernet имеет длину от 64 до 1518 байт. Минимальная длина данных равна 46 байт.

 

5.5.3 Стандарт IEEE 802.3. Стандарт IEEE 802.3 был разработан на основе кадра Ethernet, изменив ряд его характеристик. Стандарт IEEE 802.3 во многом совпадает со своим предшественником, но некоторые различия все же имеются. В частности, в стандарте IEEE 802.3 различаются уровни MAC и LLC. В оригинальном Ethernet оба эти уровня объединены в единый канальный уровеньСогласно стандарту IEEE 802, кадр технологии Ethernet – это кадр, формируемый уровнем MAC, в который должен вкладываться кадр уровня LLC. Формат пакета стандарта IEEE 802.3 показан на рисунке 5.10:

 

Преамбула

Признак начала кадра

SFD

Адрес назначения (DA)

Адрес источника (SA)

Длина

L

Данные

LLC Data

Набивка

Pad

CRC

7 байт

1 байт

6 байт

6 байт

2 байта

0-1500 байт

7 байт

4 байта

Рис. 5.10. Формат пакета стандарта IEEE 802.3

Отметим разницу между принятым кадром в стандарте IEEE 802.3 и оригинальным Ethernet.В отличие от оригинального Ethernet в стандарте IEEE 802.3 выделен байт признака начала кадра с кодом 10101011.

Поле Тип заменено на поле Длина. Для кадра IEEE 802.3 в этом поле содержится выраженный в байтах размер следующего поля - поля данных (LLC Data). Если эта цифра приводит к общей длине кадра меньше 64 байт, то за полем LLC Data добавляется поле Pad. Для протокола более высокого уровня не возникает путаницы с определением типа кадра, так как для кадра IEEE 802.3 значение этого поля не может быть больше 1500 (0x05DC).

Данные (LLC Data): поле данных, которое обрабатывается подуровнем LLC.

Набивка(Pad) – в это поле вставляются пустые символы для доведения длины пакета до минимально допустимой величины.Длина пакета Ethernet и IEEE 802.3 находится в диапазоне от 64 до 1518 байт. Однако в стандарте IEEE 802.3 имеется возможность передачи данных длиной менее 46 байт, т.к. на канальном уровне пакет автоматически дополняется до нужного размера.

 

Тема 6 Протоколы среднего уровня как средства построения больших сетей

До сих пор рассмотренные протоколы работали на самом низком уровне ЛВС. Так протоколы Ethernet, Token Ring и FDDI имеют дело с передачей сообщений (пакетов) между компьютерами и ничего не знают о файл-серверах и перенаправлении файлов. Эти протоколы не включают никаких средств для обеспечения последовательности приёма переданных данных, а также средств для идентификации прикладных программ, нуждающихся в обмене данными. Этим занимаются протоколы среднего уровня. К протоколам среднего уровня относятся:

IPX, IP – протоколы сетевого уровня,

SPX, TCP – протоколы транспортного уровня,

NetBIOS – протокол транспортного уровня.

Протоколы среднего уровня NetBIOS, IPX/SPX и TCP/IP при классификации по модели OSI более всего соответствуют транспортному уровню с некоторыми характеристиками других уровней (таких, как сеансовый уровень). Эти протоколы позволяют компьютерам в ЛВС легко обмениваться данными друг с другом.

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

Независимо от внутренней конструкции каждого конкретного протокола, все они имеют определённые функции и свойства:

  1. Инициализация связи. Каждый протокол имеет средства для идентификации рабочей станции по имени, номеру или по обоим этим атрибутам. Эта схема идентификации доступна как уровню, где осуществляется перенаправление файлов, так и прикладной программе. Обмен информацией между определёнными узлами активизируется после идентификации узла-адресата (обычно файлового сервера) рабочей станцией, инициирующей диалог. Инициирующая станция также устанавливает один из двух типов диалога: датаграмму, в которой пакеты адресуются и передаются без гарантии и подтверждения получения, и сеанс, в котором устанавливается связь с определённой станцией и гарантируется доставка сообщений.
  2. Отправка и получение данных. Каждый протокол представляет средства для отправки и получения сообщений рабочим станциям адресата и источника. Протокол накладывает определённые ограничения на длину сообщений, кроме того он предоставляет участникам диалога сеансного типа средства для определения статуса диалога. Например, рабочая станция может быть неумышленно выключена во время диалога из-за того, что кто-то неумышленно выдернул шнур питания. Тогда остальные участники диалога могут выяснить, что возникла ошибка в сети.
  3. Завершение обмена. Протокол предоставляет средства для вежливого завершения диалога.

Ниже приводится рассмотрение протоколов IPX, SPX, TCP/IP и NetBIOS. Данные циркулирующие в ЛВС, фактически поступают от прикладных программ или от программного обеспечения для перенаправления файлов, которые переносят запросы DOS на файловый сервер и обратно.

 

Датаграммы и сеансы

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

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

 

6.1 Протоколы IPX/SPX

Фирма Novell в сетевой ОС NetWare применяет протокол IPX для обмена датаграммами и протокол SPX для обмена в сеансах.

Протоколы NetWare

В сетевой ОС NetWare (фирмы Novell) применяется протокол IPX для обмена датаграммами и протокол SPX для обмена в сеансах.

Уровень сеансов связи реализован как надстройка над транспортным уровнем, реализующим датаграммную передачу данных. Соответствие протоколов OSI и NetWare показано на рисунке 6.1.

Модель OSI

Протоколы NetWare

Прикладной уровень

NetWare applications

Uses applications

Уровень представления

NetWare Core Protocol

(NCP)

 

Сеансовый уровень

Транспортный протокол

Exchange

(SPX)

Sequenced Packet

Сетевой уровень

Internet PacketExchange

(IPX)

 

Канальный уровень

Open

Link

Interface

Ethernetdevicedriver and

hardware

Token Ringdevicedriver and

hardware

ARCnetdevicedriver and

hardware

Физический уровень

Рис.6.1. Соответствие протоколов OSI и NetWare

Протокол IPX

Протокол IPX (International Packet Exchange – Межсетевой обмен пакетами) применяется модулями перенаправления файлов в ОС NetWare. Протокол IPX является упрощённым вариантом протокола XNS (Xerox Network Standard), разработанного фирмой Xerox и поддерживает только обмен датаграммами (его иногда называют безсеансным). Он соответствует сетевому уровню по модели OSI и выполняет функции адресации, маршрутизации и переключения в процессе передачи пакетов сообщений. Протокол IPX является более быстродействующим, чем протокол SPX для поддержки сеансов. Несмотря на отсутствие гарантий доставки сообщений, по данным фирмы Novell, в 95 процентах случаев сообщения доставляются безошибочно.

Именно протокол IPX (а не SPX) используется модулями перенаправления файлов в ОС NetWare при обмене служебными сообщениями с файловым сервером. Этот метод оказывается надёжным потому что каждый такой запрос от рабочей станции требует ответного сообщения со стороны сервера. Таким образом, модули перенаправления файлов подразумевают, что реакция сервера на служебный запрос (например, записать файл) последует только от после соответствующего ответного подтверждения от сервера.

Протокол IPX имеется и во всех версиях NetWare, в отличие от SPX.

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

Заголовокпакета IPX

(30 байт)

2 байта

Checksum – контрольная сумма

2 байта

Length – общая длина пакета

1 байт

Transport Control – счётчик пройденных мостов

1 байт

Packet Type – тип пакета

4 байта

Dest Network – номер сети получателя пакета

6 байт

Dest Node – адрес станции-получателя

2 байта

Dest Socket - сокет программы получателя

4 байта

Source Network – номер сети отправителя пакета

6 байт

Source Node – адрес станции отправителя

2 байта

Source Socket – сокет программы отправителя

Данные

0…546байт

Data – передаваемые данные

Рис.6.2. Формат пакета IPX

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

Поле “Data” может иметь длину от 0 до 546 байт. Если длина поля “Data” равна нулю, пакет состоит из одного заголовка. Такой пакет может использоваться программой, например, для подтверждения приёма пакета с данными.

 

Протокол SPX

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

Протокол SPX также гарантирует, что сообщения будут передаваться в правильной последовательности (в случае одновременной передачи нескольких пакетов). Протокол SPX работает на транспортном уровне по модели OSI.

В ОС NetWare протокол IPX используется для обмена пакетами, при обслуживании файлов, а протокол SPX используется для доступа к внутренним функциям управления и диагностики сети.

Протокол SPX находится над IPX и использует IPX для обмена пакетами сообщений.

 

Формат пакета SPX

Пакет, передаваемый при помощи протокола SPX, имеет более длинный заголовок. Дополнительно к 30 байтам стандартного заголовка пакета IPX добавляется ещё 12 байт (рис.6.3).

Заголовокпакета SPX

(12 байт)

1 байт

Coon Control – управление пакетом данных

1 байт

Data Stream Type – тип данных в пакете

2 байта

Source Coon ID – идентификатор канала отправителя

2 байта

Dest Coon ID – идентификатор канала получателя

2 байта

Seg Number – счётчик переданных пакетов

2 байта

Ack Number – номер следующего пакета

2 байта

Alloc Number – количество буферов для приёма

Рис.6.3. Формат пакета SPX

Поле Coon Control – набор битовых флагов

01-08 – зарезервировано;

10h – End of Message – признак, сигнализирующий об окончании передачи (формируется программой);

20h – Attention – передаётся из программы в программу, игнорируется SPX;

40h – Acknowledgement Required – формируется SPX;

80h – System Packet – для пакетов, формируемых SPX не для программ.

 

Поле Data Stream Type – набор битовых флагов, используемый для классификации данных:00h-FDh – может использоваться программой произвольным образом;FEh – End of Connection – формирует SPX по команде из программы;

FFh – End of Connection Acknowledgement – Это значение отмечает пакет, подтверждающий завершение связи.

 

 

6.2 Протокол NetBIOS

Протокол NetBIOS (Network Basic Input/Output System – базовая сетевая система ввода/вывода), разработан IBM в 1984г. (IBM PC LAN) – LAN Manager. Это протокол работает на трёх уровнях семиуровневой модели OSI: сетевом уровне, транспортном уровне и на уровне каналов связи.

Протокол NetBIOS поддерживается в сетях IBM (IBM PC LAN), Novell NetWare, Microsoft Windows for Workgroups, UNIX и других сетях. К сожалению, нет единого стандарта на протокол NetBIOS, поэтому в сетевом программном обеспечении разных фирм используются разные интерфейсы для вызова команд NetBIOS.

Наибольший интерфейс представляет применение NetBIOS в сетях Novell NetWare и Microsoft Windows for Workgroups.

 

NetBIOS является интерфейсом сеансового уровня для LAN Manager (LAN Manager – это сетевая ОС фирмы Microsoft), то есть представляет уровень управления сеансами. В качестве транспортных средств NetBIOS использует транспортные протоколы NetBEUI, TCP/IP или IPX/SPX. Причём родным для LAN Manager (т.е. ОС Microsoft Windows) является NetBEUI – расширенный интерфейс пользователя для сетевой базовой системы ввода-вывода фирмы Microsoft (NetBIOS Extended Uses Interface).

Рис.6.4. Соответствие протоколов OSI и NetWare

Эти транспортные сетевые средства “сидят” под сеансовым уровнем NetBIOS по отношению к модели OSI.

Программное обеспечение NetBIOS выполняет сетевые функции ввода-вывода в виде команд через интерфейс прикладного программирования (API).

Протокол NetBIOS (Network Basic Input/Output System – базовая сетевая система ввода/вывода), разработан IBM в 1984г. (IBM PC LAN) – LAN Manager. Это протокол работает на трёх уровнях семиуровневой модели OSI: сетевом уровне, транспортном уровне и на уровне каналов связи.

Протокол NetBIOS поддерживается в сетях IBM (IBM PC LAN), Novell NetWare, Microsoft Windows for Workgroups, UNIX и других сетях. К сожалению, нет единого стандарта на протокол NetBIOS, поэтому в сетевом программном обеспечении разных фирм используются разные интерфейсы для вызова команд NetBIOS.

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

  1. Поддержка имён. Каждая из рабочих станций в ЛВС имеет одно или несколько имён. Эти имена хранятся NetBIOS в таблице, в первом столбце которой записывается уникальное и неизменное имя сетевого адаптера. Дополнительные имена пользователей (например, BARRY) могут быть добавлены в таблицу для удобства идентификации каждой рабочей станции. Пользовательские имена могут быть уникальными или, в специальных случаях, относится к группе пользователей.
  2. Поддержка сеанса. NetBIOS осуществляет управление процессами установки связи, обмена и окончания связи между любыми двумя узлами (рабочими станциями) в ЛВС. Это происходит следующим образом. Сначала одна станция начинает прослушивать сеть в ожидании вызова. Другая станция её вызывает. Устанавливается сеанс, в течении которого оба компьютера на равных основаниях и принимают сообщения. Закончив, обе станции извещают друг друга об этом и закрывают сеанс.
  3. Поддержка датаграмм. Сообщения могут передаваться для какого-то имени, группе имён или всем именам ЛВС. Диалога между двумя машинами при этом не устанавливается и приём сообщений при этом это не гарантируется.
  4. Статус адаптера/сеанса. С помощью NetBIOS прикладная программа имеет возможность получить о локальном сетевом адаптере, о других адаптерах в сети и обо всех текущих сеансах в ЛВС.

Фирма IBM поставляла NetBIOS как отдельный программный продукт, реализованный в виде резидентной программы NETBEUI.COM.

Наибольший интерфейс представляет применение NetBIOS в сетях Novell NetWare и Microsoft Windows for Workgroups.

 

Адресация станций и программ

Как вы помните, для идентификации рабочей станции протоколы IPX/SPX используют номер сети, адрес станции и сети сокет. Адрес станции определяется на аппаратном уровне и представляет собой число длиной 6 байт. Номер сети занимает 4 байта. Сокеты выделяются динамически драйвером протокола IPX или могут быть получены в Novell.

Протокол NetBIOS использует другой механизм адресации станции и программ. Для адресации станции используются имена размером 16 байт. Каждая станция имеет одно постоянное имя (permanent name), которое образуется из аппаратного адреса добавлением к нему слева десяти нулевых байт. Кроме постоянного имени протокол NetBIOS позволяет добавлять (и удалять) обычные имена и групповые имена.

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

 

Работа с протоколом NetBIOS

Протокол NetBIOS предоставляет программам интерфейс для передачи данных на уровне датаграмм и на уровне каналов связи. Для вызова NetBIOS программа должна создать в памяти управляющий блок, который называется NCB (Network Control Block – сетевой управляющий блок). Адрес заполненного блока NCB передаётся прерыванию

  1. Проверка наличия
  2. Заполнение NCB
  3. Вызов для выполнения команд

 

6.3 Семейство протоколов TCP/IP

Протокол TCP/IP (Transmission Control Protocol / Internet Protocol) сходен с NetBIOS, IPX и SPX в различных отношениях. Протокол TCP/IP разрабатывался Министерством Обороны США для глобальной (а не локальной) сети ARPANET, предназначенной для связи территориально разнесённых организаций, работавший в рамках ARPA (Advanced Research Project Agency – агентство по передовым исследовательским проектам). Протокол TCP/IP является набором протоколов, а не сетевой ОС. Часть этого набора IP обеспечивает обмен датаграммами между узлами сети (подобно IPX). Протокол TCP (подобно NetBIOS) обеспечивает связь между двумя узлами с гарантированной доставкой сообщений. На базе этого протокола построен ряд стандартных утилит: для передачи файлов (FTP), для дистанционного запуска программ (TELNET) и для обмена электронной почтой (SMTP).

Термин “TCP/IP” охватывает целое семейство протоколов, прикладные программы и даже саму сеть. TCP/IP – это технология множественного взаимодействия, технология “internet”. В состав семейства входят протоколы UDP, ARP, TELNET, FTP и многие другие. Эти протоколы были разработаны для обеспечения требований глобальной сети Internet.

Логическая структура сетевого программного обеспечения, реализующего протоколы семейства TCP/IP в каждом узле сети Internet, показана на рисунке 6.5.


Рис.6.5. Архитектура TCP/IP

Переданные данные имеют следующие названия:

Кадр – блок данных, переданных сетевым адаптером.

Пакет – блок данных между драйвером и модулем IP.

TCP-сегмент – блок данных между IP и модулем TCP.

Датаграмма – блок данных между TCP и UDP.

Прикладное сообщение – блок данных находится на уровне прикладных процессов.При разработке протоколов TCP приняты четыре уровня:

Отображение архитектуры TCP/IP на модель OSI показано на рисунке 6.6.

 

TCP/IP

OSI

Уровень приложений

Уровень приложений

Уровень представлений

Уровень сеанса

(TCP)

Транспортный уровень

Транспортный уровень

(IP) Уровень Internet

Сетевой уровень

Уровень сетевого интерфейса

Уровень канала данных

Физический уровень

Рис. 6.6. Соответствие архитектуры TCP/IP и модели OSI

 

Протокол IP

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

В рамках модели OSI протокол IP занимает третий уровень – сетевой и выполняет три основные функции: адресацию, фрагментацию и маршрутизацию данных.

Данные, формат которых понятен протоколу IP, носят название датаграммы (пакет). Датаграмма состоит из заголовка, содержащего необходимую управляющую информацию для модуля IP, и данных, которые передаются от протоколов верхних уровней и формат которых известен IP. Формат IP-датаграммы (пакета) показан на рисунке 6.7:

Заголовок

IP-датаграмма

Заголовок

UDP и TCP

Прикладные

данные

Рис.6.7. Формат IP-датаграммы

Протокол IP обрабатывает каждую датаграмму как самостоятельный объект, независящий от других передаваемых датаграмм.Маршрутизация производится на основе адреса, расположенного в заголовке IP-датаграммы.Фрагментация необходима, так как путь датаграммы может проходить через сети с различной топологией (например, Ethernet – 1500, FDDI – 4700 байт и др.).Заголовок IP-датаграммы имеют формат, показанный на рисунке 6.8.

Рис.6.8. Заголовок IP-датаграммы

Приведем описание полей заголовка.

Version – определяет версию протокола.

IHL (Internet header length) – длина заголовка в 32 байтных словах, при минимальной длине заголовка = 5

Type of Service – характеристики обработки датаграммы

Total Length – общий размер датаграммы ≤ 65535 байт.

Identification – уникальное значение фрагмента датаграммы

Flags:

Fragment Offset – положение фрагмента в объединённой датаграмме. На приёме объединяются датаграммы с одинаковыми четырьмя полями: Identification, Source Address, Destination Address и Protocol.

TTL (Time to Live) – время жизни датаграммы, если это поле = 0, то датаграмма уничтожается. При каждом проходе шлюза TTL= TTL-1. Смысл – исключить засорения сети “засорившимися” датаграммами.

Protocol – определяет номер верхнего уровня, которому предназначена датаграмма:1 Internet Control Message Protocol, ICMP;2 Internet Group Management Protocol, IGMP;4 Инкапсуляция IP в IP;6 Transmission Control Protocol, TCP;17 Uses Datagram Protocol, UDP;

 

Source Address – адреса сетевого уровня или IP-адреса

Destination Address – адреса сетевого уровня или IP-адреса

Option – различные опции протокола

Padding – служит для выравнивания до границы 32-битного слова.

 

IP- адрес

Каждый IP-адрес можно представить состоящим из двух частей: адреса сети и адреса хоста.Существуют пять возможных форматов – классов адресов (рисунок 6.9). Класс адреса определяется значением его первого байта:

Рис. 6.9. Классы IP-адресов.

В настоящие время наиболее используемые сети класса C. Сетей такого класса может быть 2097150, а число хостов не более 254. Адреса IP принято записывать в виде четырёх десятичных чисел, разделённых точкой (например: 193.221.33.117).

Маска IP- адреса

Для более эффективного использования адресного пространства введено понятие подсетей. IP-адрес хоста делится на две составляющие:

Размер подсети определяется маской – 4-х байтным словом, маскирующим адрес единицами (в двойной форме).

Чтобы получить адрес сети, зная IP-адрес и маску подсети, необходимо применить к ним операцию поразрядной конъюнкции (логическое И). Например, рассмотрим:

IP-адрес: 11000001 11011101 00100001 01110101 (193.221.33.117)
Маска подсети: 11111111 11111111 11111111 11110000 (255.255.255.000)

Получим
Адрес сети: 11000001 11011101 00100001 00000000 (193.221.33.0)

В такой сети 255 адресов машин. И, как правило, они видят друг друга в сети. Кроме того, если все машины располагаются на разных территориях или относятся к разным учереждениям, то возникает сложность и с маршрутизацией. Такую сеть удобно разбить на несколько подстей. Установим маску 255.255.255.224. Последний байт имеет двоичную кодировку 11100000. Количество единиц равное трем указывает, что сеть разбита на 23=8 подсетей. Последующее число нулей определит число машин в каждой подсети равное 25=32.

IP-адрес: 11000001 11011101 00100001 01110101 (193.221.33.117)
Маска подсети: 11111111 11111111 11111111 1110000 (255.255.255.240)

Наша машина будет находиться в подсети с адресом:11000001 11011101 00100001 01110000 (193.221.33.112) и соответственно, адрес шлюза для нее 193.221.33.113

Маску подсети записывают вместе с IP-адресом в формате “IP-адрес/количество единичных бит в маске”. Число после слэша означает количество единичных разрядов в маске подсети.

Рассмотрим пример записи диапазона IP-адресов в виде 10.96.0.0/11. В этом случае маска подсети будет иметь двоичный вид 11111111 11100000 00000000 00000000, или то же самое в десятичном виде: 255.224.0.0. 11 разрядов IP-адреса отводятся под номер сети, а остальные 32 – 11 = 21 разряд полного адреса — под локальный адрес в этой сети. Итого, 10.96.0.0/11 означает диапазон адресов от 10.96.0.1 до 10.127.255.254.

Выделены несколько групп адресов для специальных нужд: 0.0.0.0 – данный адрес предназначен для передачи пакетов самому себе;127.0.0.0/8 – сеть обратная петля (loopback). Эта сеть предназначена для тестирования сетевых приложений. Адрес 127.0.0.1 используется для адресации к самому себе. Пакеты, отправляемые на адреса из этой сети не уходят в реальную сеть, а принимаются в на этих же машинах224.0.0.0/4 – групповые адреса.

10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 – адреса приватных сетей. Такие адреса не имеют права встречаться в публичном Интернет. Подобные адреса можно назначать для множества локальных сетей, так как шлюз в публичную сеть их не выпустит. Пользователи сетей с такими адресами осуществляют доступ к ресурсам сети через прокси или внутри протокольные шлюзы.

Протокол транспортного уровня TCP

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

TCP-канал представляет собой двунаправленный поток данных в виде пакетов различной длины. Сегмент состоит из заголовка и данных (рисунок 6.10).


Рис.6.10. Формат заголовка TCP – сегмента

В заголовке TCP поля имеют следующие значения и функции:

Offset – указывает начало данных сегмента. Min значение = 5.

Sequence Number – указывает положение каждого сегмента в потоке, то есть порядковый номер первого байта сегмента в потоке.

Acknowledgement Number – ответ о количестве полученных последовательностей соответствует номеру первого ожидаемого байта сегмента в потоке.

Flags – URG, ACK, PSH, RST, SYN, FIN

Window – указывает передающему количество сегментов, которые адресат готов принять до приёма подтверждения.

Urgent Pointer – указатель положения экстренных данных внутри данных.

Options – поле переменной длины, содержит различные опции, например, максимальный размер сегмента MMS.

Padding –добавляет нулями массив до кратности 32-х разрядов.

 

Состояние TCP-сеанса.

Взаимодействие в TCP производится в 3 фазы (рис.6.8):

  1. Начальная фаза – “тройное рукопожатие” (three-way handshake). Клиент посылает бит – SYN=1. Сервер установил логический канал и посылает биты SYN и ACK. Клиент посылает ACK подтверждение получения разрешения.
  2. Фаза передачи. Обе стороны начинают передавать, номер TCP-сегментов с флагом ACK, подтверждающим получение ответа от сервера. Если нет подтверждения после определённого времени, то TCP – сегменты повторяются начиная с последнего подтверждённого.
  3. Фаза завершения – любая из сторон передаёт TCP-сегмент с сигналом FIN. После получения подтверждения связь прерывается.

Каждый передаваемый сегмент хранит в заголовке номер первого байта данных в заданной пропорции. Например, если размер пакета равен 200 байт, то номера первых байтов будут – 1, 201, 401 и т.д. Порядковый номер передаваемого первого байта и номер подтверждения играют ключевую роль в обеспечении надёжности доставки. Протокол TCP – является протоколом с позитивным подтверждением и повторной передачей (Positive Acknowledgment and Retransmission, PAR).

Если данные доставлены без ошибок, получатель подтверждает это флагом ACK. Если отправитель не получает подтверждение в течении некоторого времени, он повторно передаёт данные. В любом случае отсутствует негативное подтверждение NAK

Рис.6.11. Фазы взаимодействия в TCP

 

Стратегия реализации TCP

Получатель может анонсировать размер окна, то есть количество передаваемых сегментов без получения подтверждения. Это называется режим опережения. По сути, величина Window – это размер свободного пространства в буфере приёма.Режим опережения из-за резкого возрастания пакетов в сети приводит к заторам. Отправитель определяет наличие затора, по:

Алгоритм, направленный на исправление подобной ситуации, получил название медленный старт. Идея алгоритма заключается в том, что величина окна (Window) возрастет в течение времени. величина окна (Window) сначала устанавливается длине 1 сегмента, затем 2-м длинам, затем 4-м длинам.

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


Рис.6.12. Режим медленного старта

 

6.4 Протокол UDP (User Data Protocol)

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

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

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

0

16 31

Source Port

Destination Port

Length

Checksum

Прикладные данные

Рис. 6.13. Заголовок UDP

Source Port – порт источника. Указание порта источника является необязательным, и это поле может быть заполнено нулями.Length – длина датаграммы ≥ 8.Checksum – заполняется, если протокол верхнего уровня требует этого, иначе заполняется нулями.UDP заголовок предваряется IP- псевдо заголовком, содержащим IP-адрес источника и получателя и поле Protocol (рисунок 6.14).

Protocol

IP

Source Address

Destination Address

UDP

Length

 

Рис. 6.14. Формат UDP заголовка.

В качестве примеров протокола уровня приложений, которые используют в качестве транспорта протокол UDP, можно привести:

 

Уровни адресации в сетях ЭВМ

Каждый уровень протоколов имеет собственную систему адресации.

  1. На уровне сетевого интерфейса (уровень физическом и уровне канала по модели OSI) используется физический адрес интерфейса 48 битный (6 байт) зашитый в память сетевой платы в адрес протокола уровня Internet используется специальный протокол адреса ARP (address resolution protocol)
  2. Уровень Internet (или сетевой уровень OSI) в качестве адресов использует IP-адреса
  3. Протоколы транспортного уровня используют адреса называемый портами. Номер порта служит для определения процесса, которому адресные данные.

Другими словами для передачи сообщения от источника к получателю требуется 6 адресов по 3 с каждой стороны (физический адрес, IP-адрес и номер порта). В сетевом ПО существует множество стандартных прикладных сервисных программ. Для них выделены специальные номера так называемые (Well-known) хорошо известные номера портов.В таблице 6.1 приведён краткий перечень соответствия ряда программ и номеров портов:

Таблица 6.1.

Network services

echo

7/UDP

 

Echo

7/TCP

 

Systat

11/TCP

 

Netstat

15/TCP

 

ftp

21/TCP

 

telnet

23/TCP

 

smtp

25/TCP

mail

time

37/TCP

timeserver

time

37/UDP

timeserver

name

42/UDP

nameserver

whois

43/TCP

 

domain

53/UDP

 

domain

53/TCP

 

hostname

101/TCP

80/

 

Работу модулей TCP/IP можно сравнить со сборочным конвейером: каждый участок выполняет определенную для него задачу, полагаясь на выполненную работу на предыдущем этапе. Например, сообщение, сформированное на прикладном уровне, проходит через нижние уровни наполняясь соответствующей служебной информацией (рисунок 6.15).

Рис. 6.15. Обработка данных в соответствии с протоколами TCP/IP

 

Именованные каналы связи

Канал связи (pipe) – это поток данных между двумя программами. Одна из программ открывает канал и записывает в него данные, другая программа открывает канал для чтения из него данных. Это выглядит слишком просто, но и в самом деле не слишком сложно. Именованным каналом называется файл, имя которого имеет специальный формат: \PIPE\путь\имя.расширениеСистема OS/2 представляет ряд функций для открытия, использования и закрытия поименованных каналов связи. Прикладная программа, открывающая канал (называется сервером – не путайте с файловым сервером), начинает сеанс обмена данными, прикладная программа (клиент) присоединяется к ней. Прикладная программа, по усмотрению программиста, может трактовать именованный канал связи просто как потоки данных.

 

Тема 7 Протоколы уровня приложений – базовые сетевые сервисные cлужбы

Покажем структуры сетевого программного обеспечения в произвольном компьютере сети

Рис.7.1. Примерная структура сетевого ПО

Сокращения, используемые в структуре программного обеспечения на рисунке 7.1 следующие:

HTTP – Hyper Text Transfer Protocol;
Telnet – Network Terminal Protocol – обеспечивает удалённый доступ через сеть;
FTP – File Transfer Protocol – используется для доставки файлов;
SMTP – Simple Mail Transfer Protocol – обеспечивает E-mail;
DNS – Domain Name Service – установление соответствия IP-адресов с именами сетевых устройств;
RIP – Routing Information Protocol – маршрутизатор – центральный элемент работы TCP/IP – сети;
NFS – Network File System – протокол позволяет распределять файлы по различным хостам сети.
HTTP, Telnet, FTP, SMTP – всегда используются пользователями, а о например RIP он даже не подозревает его существования. Это для администратора. Лежат на UDP, в отличие от FTP …
EGP – Exterior Gateway Protocol – другой протокол маршрутизации непосредственно использует IP
ARP – Address Resolution Protocol (IP → Ethernet-адрес)

Часть прикладных программ, таких как FTP или Telnet могут быть использованы, если ПОЛЬЗОВАТЕЛЬ знает адреса и характеристики сети.

Другие протоколы вроде RIP выполняются даже когда ПОЛЬЗОВАТЕЛЬ не подозревает об их существовании. Эти программы управляются только системным администратором.По рисунку видим сложность и иерархию протоколов в обычной рабочей машине сети. Конечно, не все из показанных протоколов находятся в машине.Такие протоколы как FTP, HTTP непосредственно связаны с транспортным протоколом TCP, а протоколы RIP и DNS с UDP. Рассмотрим последовательно базовые средства необходимые для работы в сети.

 

7.1 Telnet – протокол удалённого доступ.а

Используется для удалённого подключения в другие компьютеры сети Internet. Обеспечивает доступ к множеству открытых серверов. Он позволяет, после установки связи, пользоваться всеми средствами, которые удалённый компьютер представляет своим локальным терминалам, так, словно удаленный терминал является локальным терминалом этого компьютера.Формат команды установления связи:>telnet имя_удалённого_компьютера [IP-адрес]Например, выполним удаленное подключение к серверу nsc.ru:>telnet nsc.ru Trying …Connect to nsc.ruLogin: alexPassword:Last login: Mon April 14 14:54:35 from cyber_nt.neic.su>Прикладная программа состоит из двух взаимодействующих между собой компонентов: программы-клиента, которая выполняется на компьютере, запрашивающем обслуживание, и программы-сервера, которая выполняется на компьютере, предоставляющем эту услугу.Сеть реализующая средства протоколов TCP и UDP, является средой, через которую эти программные модули взаимодействуют между собой.Программа-клиент выполнит следующие действия после набора команд telnet:

Программа-сервер соответственно выполнит следующие функции:

Сервер TELNET использует порт номер 23. Клиент TELNET может получать услуги от сервера, если установит соединение с TCP-портом 23 на егомашине.Основные команды, выполняемые при помощи программы telnet, являются команды программной оболочки, например:Cd имя – перейти в директорию с именем;Dir – отобразить содержимое текущей директории;Run имя – запустить в работу исполнительный файл;Exit – выход.Так как с помощью команды telnet вы становитесь пользователем удалённого хоста, то может использовать все стандартные команды ОС установленные на этой машине. Например, если это UNIX, то может использовать ls, pwd и др.Можно использовать программу telnet в роли другого клиента. В случае установления соединения через другой порт. Этот метод используется для отладки. Например, можно зайти в собственную машину, как внешний клиент в обслуживание программы почты через порт 110 (110 – порт почтовой службы):telnet cyber_nt 110.В этой точке можно ввести команды почтовой службы и посмотреть, работает ли она нормально. Выход из программы telnet осуществляется командой quit.

 

7.2 FTP – протокол перемещения файлов

Протокол FTP (file transfer protocol) предназначен главным образом для приёма файла или группы файлов из удаленного компьютера и для передачи файла или группы файлов в удалённый компьютер. Сервер FTP использует порт номер 21. Клиент FTP может получать услуги от сервера, если установит соединение с TCP-портом 21 на его машине.Если оба компьютера используют язык протокола FTP, то не имеет значения, в каких ОС они работают.Формат установления соединения: >ftp имя_удалённого_компьютера [IP-адрес]Например, выполним следующее:>ftp ftp.nsu.ruСуществует два вида доступа в удаленной машине:

Реализация FTP процедур состоит из выполнения команд FTP и передачи данных. Данные занимают в среднем 40% всего сетевого трафика, в то время как команды только 4%.FTP позволяет переслать данные в файлах, либо как двоичную информацию, либо как ASCII (то есть текст). FTP так же позволяет вести поиск файла на удалённой машине, то есть переходить из директории в директорию и просматривать содержимое этих директорий, файлов.FTP позволяет пересылать как отдельные файлы так и группы файлов.Рассмотрим основные команды, используемые в FTP:

Таблица 7.1.

ASCII

включает режим ASCII для пересылки двоичных файлов (used for text)

Binary

включает двоичный режим для пересылки двоичных файлов

Cd (имя каталога)

осуществляет переход в другой каталог

Close

завершает сеанс работы с программой ftp на удалённом компьютере

Delete

удаляет в удалённой системе указанный файл

Dir [файл]

выдаёт список файлов каталога, если параметр файла присутствует, то выводятся все имена файлов, соответствующие данной спецификации

Hash

даёт программе ftp указание выводить на экран символ # при передачи очередного блока данных

Help команда

выводит на экран краткую информацию о команде

Lcd

осуществляет переход в другой каталог на локальном компьютере

Ls [файл] [выход]

аналог dir – выводит список файлов

Mget список файлов

команда приёма группы файлов

Mput список файлов

команда передачи группы файлов

Get имя_файла

прим одного файла

Put имя_файла

передача одного файла

Open имя_компьютера

установление соединения с указанным компьютером

Pwd

выводит на экран имя текущего каталога в удалённом компьютере

!

переход в shell локального компьютера (с выходом по команде exit)

В большинстве реализаций ftp имеет 70-80 команд, естественно, что приведённый список является сокращённым.

Все команды ftp является UNIX-подобными, следовательно, если даже вы вошли в ftp-сервер в DOS, то всё равно выполняете по правилам UNIX, то есть путь прописываете ftp>cd h:public/ibm/ms_dos, а не h:public\ibn\ms.dos. Иначе это будет ошибка.

Основная последовательность действий:

> ftp
ftp > open ftp.nsu.ru
login: anonymos
password:
connected to ftp.nsu.ru
user logged in
ftp> ls | more; вывод списка с постраничным отображением
drivers
sound
ftp > cd drivers
200 CWD command successful
ftp > ls S3*
250 port command successful
S3508.exe
S3517.exe
S3525.exe
ftp > binary
200 type set to I
ftp > hash
marked is enable
ftp > get S3508.exe
####…#
transfer comlete
ftp > quit [bye]
221 Goodbye.

 

7.3 Протокол SMTP – электронная почта

Протокол SMTP (simple mail transfer protocol) реализует службу электронной почты(e-mail). Утилита предназначена для передачи сообщений в почтовую службу удалённого компьютера.Имеет механизм промежуточного хранения почты и механизм повышения надёжности доставки. Протокол SMTP допускает использование различных транспортных служб. Он может работать даже в сетях, не использующих протоколы семейства TCP/IP. Протокол SMTP обеспечивает как группированные сообщения в адрес одного получателя, так и размножение нескольких копий сообщений для передачи в разные адреса. Над модулем SMTP располагается почтовая служба конкретных вычислительных систем.

E-mail даёт возможность проводить телеконференции и дискуссии. Для этого используются установленные на некоторых узловых рабочих машинах mail-рефлекторы. На такую машину посылаются сообщения с просьбой подписать вас на указанный reflector (дискуссию, конференцию и т.д.). Если подписка осуществляется, абонент начинает получать копии сообщений, которые туда посылают участники обсуждения. Рефлектор почты работает просто: при получении электронных писем он рассылает их копии всем подписчикам.

Пересылать по e-mail можно не только текстовые файлы, но и двоичные. Обычно двоичные файлы кодируются программой UUENCODE. Декодируются UUDECODE.Форматы адреса различны для разных сетей:

здесь a – номер зоны (например: 2 – Европа), b – номер региона (например: Россия -50), c –номер сети в регионе (например: 20 – Москва), d – номер узла сети, e – номер точки пользователя;

Программа mail используемая в Internet совместима с Unix.Основные команды программы mail показаны в таблице 7.2:

Таблица 7.2.

1

чтение почты

> mailno mail for alex…> mail“var/spool/mail/alex”: 5 messages fo alex

1 peter@bitni fri Nov 8 16:02 “file:” Peter File

2

посылка почты

> mail имя (список имён) адресата

а)

текст

> mail john@nsu.ru Subject: about conferenceText messages…

.

б)

файл

> mail alex@ngs.ru <file1

Единственная точка в строке является признаком окончания текста письма. Для того что бы вставить какой-либо файл в текст отправляемого сообщения используется команда ~r имя_файла.

На базе SMTP построены такие почтовые службы как: простой Pine, MS Exchange, Internet mail, Pegasus, Outlook Express.

 

7.4 Протокол HTTP

HTTP (от англ. HyperText Transfer Protocol — “протокол передачи гипертекста”) – сетевой протокол прикладного уровня для передачи файлов. В стеке TCP/IP для HTTP зарезервированы порты 80 и 8080 транспортных протоколов TCP и UDP (на практике используется только первый).

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

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

Для правильного отображения HTTP позволяет клиенту узнать язык и кодировку веб-страницы и/или запросить версию страницы в нужном языке/кодировке, используя обозначения из стандарта MIME.

HTTP был предложен в марте 1990 года Тимом Бернерсом-Ли, работавшим тогда в CERN, как механизм для доступа к документам в Интернете и облегчения навигации посредством использования гипертекста. Самая ранняя версия протокола HTTP/0.9 была впервые опубликована в январе 1992 г. (хотя реализация датируется 1990 годом). Спецификация протокола привела к упорядочению правил взаимодействия между клиентами и серверами HTTP, а также чёткому разделению функций между этими двумя компонентами. Были задокументированы основные синтаксические и семантические положения.

Все HTTP- транзакции имеют общий формат. Запрос клиента и ответ сервера состоят из трёх частей:

Клиент инициирует транзакцию следующим образом:

  1. устанавливает связь с сервером по назначенному номеру порта (по умолчанию - 80). Затем отсылает запрос документа – указав HTTP-команду, называемую методом, адрес документа и версия http:

Таблица 7.3.

GET

/index.html

HTTP/1.0

0

метод

Документ

версия

Код состояния

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

Например:
User-Agent: Mozilka/2.02 Gold (WinNT I)
Accept: image/gif, image/jpeg, image/pjpeg, */*
Завершается заголовок пустой строкой

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

HTTP/1.0 200 OKВерсия код ОК

2. заголовок, содержащий данные о самом сервере и затребованном документе.
Date: Fri, 20 Sep 2007 08:17:58
Server: NCSA/1.5.2
Last-modified: Mon, 17 Jun 2007 21:53:08
Content-type: text/html
Content-length: 2482

3. если запрос успешен, то посылает клиенту данные.

 

Методы в протоколе HTTP

Метод – это HTTP-команда, с которой начинается первая строка запроса клиента. Метод сообщает серверу о цели запроса. Для HTTP определены три основных метода: GET, HEAD, POST.
GET – используется для запроса документов с целью визуализации.
HEAD – запрашивает только информацию заголовка о файле или ресурсе. Сервер отвечает только строкой состояния и заголовком.
POST – позволяет посылать на сервер данные о запросе клиента. Эти данные могут быть использованы во многих приложениях как входные данные.
Например, клиент посылает данные о дне рождения:
POST /cgi-bin/birthday.pl HTTP/1.0
USER-Agent: Morila/2.02. Gold (WinNT; I)
Accept: image/gif, image/jpeg, image/pjpeg, */*

Host: www.ora.com

Content-type: applicationContent-length: 20
Mouth = august & date = 24

При рассмотрении протокола Telnet мы в качестве примера тестировали программные службы компьтера. Проверим действие метода GET в протоколе HTTP. Для этого подключимся протоколом telnet к службе HTTP через порт 80:

telnet nsc.ru 80 // порт 80
connect to nsc.ru
GET /index.html HTTP/1.0 0
<пустая строка>

Получаем текст из удалённого www-сервера. Если текст превышает размер экрана, то мы увидим только его последнюю часть.

Чтобы увидеть начало ОТВЕТА пошлём запрос с ошибкой вместо /index.html напишем просто index.html. Сервер пришлет ОТВЕТ с сообщением об ошибке.

 

7.5 TCP/IP на последовательных линиях. Протокол SLIP и PPP.

Мы ранее рассматривали вхождение в сети через локальный интерфейс Ethernet. Рассмотрим использование в сети телефонной линии. Существует соответственное программное обеспечение.

Компьютер подключается к телефонной линии через модем или другое аналогичное устройство.

В качестве стандартных программ управляющих передачей через телефонные линии использует два протокола SLIP и PPP.

 

7.5.1. SLIP-протокол

SLIP (Serial Line IP) –.протокол последовательной передачи данных. Протокол SLIP позволяет компьютеру использовать IP в осуществлении связи в сети через телефонные линии и модемы, а также непосредственно через интерфейс RS-232.

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

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

Протокол SLIP очень простой. Он не организует проверки правильности передачи, не умеет управлять параметрами соединения и т.д., что сильно ограничивает его применимость.

 

7.5.2 Протокол PPP

Учитывая недостатки SLIP, был разработан протокол PPP – the point-to-point protocol. Этот протокол разработан группой IETF (Internet Engineering Task Force) как часть стека TCP/IP для передачи кадров информации по последовательным глобальным каналам. Протокол PPP стал фактическим стандартом для глобальных линий связи при соединении удаленных клиентов с серверами и для образования соединений между маршрутизаторами в корпоративной сети. Протокол PPP разрабатывался с целью передачи данных для широкого круга сетевых протоколов. Протокол PPP более надёжный протокол, чем SLIP, но и более трудоёмкий в исполнении.

При разработке протокола PPP за основу был взят формат кадров HDLC и дополнен собственными полями. Поля протокола PPP вложены в поле данных кадра HDLC. Позже были разработаны стандарты, использующие вложение кадра PPP в кадры frame relay и других протоколов глобальных сетей.

PPP протокол является 3-х-уровневым протоколом, включающим в себя:

Data link layer protocol – уровень пересылки данных использует простую модификацию версии HDLC – протокола (High-level Data Link Control). HDLC – это международный стандарт для надёжной передачи данных через синхронную, последовательную линию связи, т.е. протокол PPP может гарантировать надёжную доставку сообщений, через различные типы последовательных линий.

Link Control Protocol – протокол управления связью. Производит управляющую информацию для последовательной линии. Он используется для установления соединения, конфигурирования параметров соединения, проверки качества соединения, и для закрытия соединения.

Network Control Protocol – протокол управления сетью – производит конфигурацию и управляющую информацию для протоколов сетевого уровня. Основное отличие РРР от других протоколов канального уровня состоит в том, что он добивается согласованной работы различных устройств с помощью переговорной процедуры, во время которой передаются различные параметры, такие как качество линии, протокол аутентификации и инкапсулируемые протоколы сетевого уровня.

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

Переговорное принятие параметров соединения. В корпоративной сети конечные системы часто отличаются размерами буферов для временного хранения пакетов, ограничениями на размер пакета, списком поддерживаемых протоколов сетевого уровня. Физическая линия, связывающая конечные устройства, может варьироваться от низкоскоростной аналоговой линии до высокоскоростной цифровой линии с различными уровнями качества обслуживания. Чтобы справиться со всеми возможными ситуациями, в протоколе РРР имеется набор стандартных установок, действующих по умолчанию и учитывающих все стандартные конфигурации. При установлении соединения два взаимодействующих устройства для нахождения взаимопонимания пытаются сначала использовать эти установки. Каждый конечный узел описывает свои возможности и требования. Затем на основании этой информации принимаются параметры соединения, устраивающие обе стороны, в которые входят форматы инкапсуляции данных, размеры пакетов, качество линии и процедура аутентификации. Протокол, в соответствии с которым принимаются параметры соединения, называется протоколом управления связью (Link Control Protocol, LCP). Протокол, который позволяет конечным узлам договориться о том, какие сетевые протоколы будут передаваться в установленном соединении, называется протоколом управления сетевым уровнем (Network Control Protocol, NCP). Внутри одного РРР - соединения могут передаваться потоки данных различных сетевых протоколов. Одним из важных параметров РРР - соединения является режим аутентификации. Для целей аутентификации РРР предлагает по умолчанию протокол РАР (Password Authentication Protocol), передающий пароль по линии связи в открытом виде, или протокол CHAP (Challenge Handshake Authentication Protocol), не передающий пароль по линии связи и поэтому обеспечивающий большую безопасность сети. Пользователям также разрешается добавлять и новые алгоритмы аутентификации. Дисциплина выбора алгоритмов компрессии заголовка и данных аналогична.

 

7.6 Протокол DNS

7.6.1 Описание протокола DNS

В первые годы Internet имел небольшое число узлов. До 1980 года в сети ARPANET входило несколько сотен компьютеров. Соответствие между их именами и IP-адресами хранились в текстовом файле hosts.txt, но он хранился на компьютере Информационного центра сети в Стэнфордском исследовательском институте г. Мейло-Парк в Калифорнии (SRI-NIC – Stanford Research Institute’s Network Inform Center).

Другие компьютеры подключенные к сети ARPANET, по мере необходимости копировали этот файл с компьютера SRI-NIC. Обновление происходило один два раза в неделю. С ростом числа машин стали возникать проблемы:

Эти и другие проблемы заставили руководство ARPANET искать механизм замены файла hosts.txt. В результате была создана доменная система имён – DNS.

DNS – это метод назначения имён путём передачи сетевым группам ответственности за их подмножество имён.

Каждый уровень этой системы называется доменом. Домены в именах отделяются друг от друга точками.

Пример: admin.isp.nsc.ru. или cyber.neic.nsk.ru.

Первым в имени стоит название рабочей машины – реального компьютера с IP-адресом.

Затем в имени стоит имя группы (например: neic –имя института, либо имя группы, которая поддерживает множество имён машин).

Группа входит в более крупное объединение (например: nsc – Сибирское отделение, nsk – г.Новосибирск).

Объединение является частью национальной сети (например: ru, su – Россия, de – Германия, pl – Польша и т.д.).

Для США наименование страны опускается, там самыми крупными объединениями является сети образовательных (.edu), коммерческих (.com), государственных (.gov), военных (.mil), других (.org) и сетевых (.net) ресурсов.

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

DNS – представляет собой иерархическую распределённую систему управления базой данных, основанная на архитектуре “клиент-сервер”. Назначение базы данных DNS – преобразование имён компьютеров в IP-адреса. Клиенты DNS называются определителями, а серверы – серверами имён.

Информация об этих серверах должна хранится на DNS-серверах зоны более высокого уровня, включающей домен этой зоны.

Серверы имён разделяются на основной и резервный.

Основной сервер имён получает данные для зоны из локальных файлов. Модификация зоны – добавление (удаление) доменов или узлов – выполняется на уровне основного сервера.

Резервные серверы имён получают данные о зонах от основного сервера. Передача информации о зоне называется передачей зоны.Сервер определяется как основной и резервный на уровне зоны. Поэтому каждый сервер может быть как основным так и резервным. При запросе какого-либо адреса локальный компьютер передаёт запрос местному серверу имён, DNS-серверу, отвечающему за страну. Тот передаёт ниже и так далее пока какой-либо местный DNS-сервер не определит, что имя находится в его базе. Обратно отсылается IP-адрес машины адресата.Этот IP-адрес доставляется тому локальному компьютеру, которы пытался отправить сообщение.Полученный IP-адрес ставится в IP-заголовок отправляемого сообщения и оно отсылается.DNS-сервер имеет два файла, содержащих базу имён:

Файл прямой зоны – named.hosts используется для преобразования имён машин в IP-адреса.Строка того файла содержит имя мащины и ее IP-адрес:admin.isp.nsc.ru IN A 194.226.178.182Файл обратной зоны named.rev (*.rev) преобразует IP-адрес в имя машины. Строка файла обратной зоны содержит IP-адрес машины и ее имя:194.226.178.182 IN PTR admin.isp.nsc.ru

 

7.7 Протокол RIP – маршрутизации

Протокол маршрутной информации. RIP (routing information protocol) – относится к широко известному классу протоколов маршрутизации, основанных на алгоритме Беллмана-Форда. Этот протокол базируется на так называемых алгоритмах векторных расстояний.

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

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

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

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

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

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

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

длина равняется= (длина пути, сообщённая соседом A) + (длина пути до соседа A).

 

Рассмотрим принцип формирования таблиц маршрутов. Пусть дана сеть, показанная на рисунке 7.7.

Рис.7.7. Пример структуры сети

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

Маршрутизатор A.

Путь до

Через

Длина

B

B

1

C

C

1

D

B

3

T

C

6

Маршрутизатор B.

Путь до

Через

Длина

C

C

1

D

D

1

A

A

1

T

D

5

Маршрутизатор C.

Путь до

через

Длина

D

D

10

A

A

1

B

B

1

T

D

12

Рис.7.8. Таблицы маршрутов

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

Так после первой итерации обменов маршрутизатор А получит данные от маршрутизатора В и скорректирует метрику до сети D. Маршрутизатор С получит данные от маршрутизатора D и скорректирует метрику до сети T.

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

Алгоритм Беллмана-Форда предусматривает диагностику обрыва линии. Если сосед соседу долго не отвечает, линии назначается метрика равная бесконечности – ∞.

Протокол RIP имеет следующие недостатки:

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

В настоящее время введён протокол маршрутизации нового поколения OSPF (open shortest path first).

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

Составление таблиц маршрутизации может выполняться алгоритмом Беллмана-Форда. А механизм сбора и использования маршрутной информации отличается от RIP.

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

Если возникает изменение, то осуществляется рассылка информации методом лавинной маршрутизации.

 


7.8 NFS – сетевая файловая система

NFS – позволяет директориям и файлам быть распределёнными по сети.Исходно NFS была разработана фирмой SON Microsystem. В настоящее время используется во всех UNIX – подобных ОС и в других не UNIX – подобных.Через NFS пользователи и программы получают доступ к файлам, размещённым на удалённых компьютерах.NFS имеет следующие достоинства:

Существует две стороны NFS – одна сторона – клиент и другая – сервер.Клиент NFS – это система, которая использует удалённые директории так, как, если они были частью их собственной локальной файловой системы.Сервер NFS – это системы, которая делает директории доступными для использования.Присоединение удалённой директории к локальной файловой системе (функции клиента) называется примонтированием (mounting) директории.Предоставление директории для удалённого доступа (сервер - функции) называется экспортированием (exporting) директории.Часто ОС загружает в одной машине и сервер – функции, и клиент – функции.Процессы (daemons), необходимые для запуска NFS, загружаются в момент загрузки компьютера в boot-файле.

 

7.8.1 Монтирование файловой системы

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

После монтирования файловая система может быть адресована по имени точки монтирования.#mount –r oberon: / / USR / local.

#mount –t NFS oberon: / / USR / local

 

7.8.2 Блокирование доступа к файлу

NFS разрешает (в соответствии с архитектурой UNIX) нескольким процессам одновременный доступ к файлу для чтения и записи.

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

Для блокирования заданного диапазона байтов файла или записи файла служит системный вызов fcntl() и библиотечная функция lockf() для блокировки всего файла на запись для чтения.

Пример:


struct flock lock;

// заполним структуру lock для блокирования всего файла на запись
lock.l_type = F_RDLCK
// заблокируем файл для записи
fcntl (fd, SETLKW, & lock);
// запишем данные в файл
write (fd, record, sizeof (record));
//снимем блокирование
lock l_type = F_UNLCK;
fcntl (fd, SETLKW, & lock)

 

7.9 Программы анализа сети netstat, ping, traceroute

7.9.1 Команда netstat

Команда netstat выдаёт различную информацию о состоянии сети. Она используется во всех системах (UNIX, OS/2, WinNT, Win95) и используется для:

Утилита netstat позволяет отслеживать процесс соединения с удалёнными системами, отображать статистику протокола по данному соединению. Позволяет получать IP-адреса для систем, соединение с которыми было осуществлено по доменным именам. Ниже приводится синтаксис для вызова утилиты:

Интервал. Можно указать интервал в секундах обновления выдаваемой netstat информации. Для того чтобы приостановить вывод информации на экран, введите с клавиатуры Ctrl+C . Если не указать значение интервала, то утилита выведет требуемую информацию только один раз.

Для определения адреса IP удалённого компьютера запустите утилиту с опцией –n. Ниже приведён пример использования утилиты netstat без указания опций для отображения списка узлов, с которыми создано соединение.

C:\WINDOWS>netstatActive Connection (Активное соединение)
Proto, Local Address, Foreign Address, State
TCP, tower: 1283,
ftp.microsoft.corn:ftp, Established
Proto – имя протокола, используемого в соединении.
Foreign Address – IP-адрес и номер порта для удалённого компьютера.
Local Address – адрес IP локального компьютера, а также номер порта, используемый данным соединением.
Stat – состояние соединения TCP/IP.
Established – установлено.
C:\WINDOWS> netstat –n
Proto Local Address Foreign Address State
TCP 194.226.178.27:1283 198.105.232.1:21 Established

Ping отправляет удалённому компьютеру. По умолчанию размер пакета составляет 64 байта, максимально допустимое значение составляет 8192.

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

Программа netstat без аргументов выдаёт информацию о состоянии активных портов TCP и UDP.Аргументы:

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

Команда netstat –r –n 3 – выдаёт таблицу маршрутизации ядра с интервалом 3 секунды. Например, в результате netstat –r –n на машине 194.226.178.27:

Таблица 7.4.

Route Table

Active Routes:

Networks Address

Netmask

Gateway Address

Interface

Metric

0.0.0.0

0.0.0.0

194.226.178.18

194.226.178.27

1

127.0.0.0

255.0.0.0

127.0.0.1

127.0.0.1

1

194.226.178.27

255.255.255.255

127.0.0.1

127.0.0.1

1

Default

0.0.0.0

Nsc-gw.isp.nsc

194.226.176.27

1

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

Команда netstat –s выдаёт содержимое счётчиков, разбросанных по сетевым программам. В выходной информации есть разделы, относящиеся к различным протоколам: IP, ICMP, TCP и UDP. Например, выделить статистическую информацию о конкретном протоколе. Вы можете с помощью опции –s –p <имя протокола>.

Например, netstat –s –p.

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

IP Statistics
Packets Received = 1138
Received Header Errors = 514
Received Address Errors = 0
Datagram Forwarded = 59
Received Packet Delivers = 624


ICMP Static received

Received Sent
Message 24 12
Errors 0 0
Destination Unreachable 0 0
Time Exceeded 0 0

 

7.9.2 Трассировка или отслеживание IP пакетов

Трассировка производится с помощью команды traceroute, разработанной для системы UNIX. В Windows эта команда включена под именем tracert.

Команда traceroute позволяет выявлять последовательность шлюзов, через которую проходит IP - пакет на пути к пункту назначения. Синтаксис команды:

Traceroute <имя машины>; для UNIX.
Tracert <имя машины>; для Windows.

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

C:\> tracert www.msu.ru
Tracing route to
www.msu.ru [193.232.112.3]
1 1ms 1ms 1ms Oberon.isp.nsc.ru […]
2 2ms 7ms 3ms nsc-gw.itam.nsc.ru […]
3 8ms 3ms 4ms Novosibirsk-NSC-INP.use.ru […]

6 510ms 288ms 391ms M9-F0-2.Moscow.RU.Radio-MSU.NET […]

10 575ms 680ms 1114ms www.msu.ru
[193.232.112.3]

 

7.9.3 Ping – диагностика соединений

Ping представляет собой ещё одну диагностическую утилиту, проверяющую возможность соединения с одним или несколькими удалёнными хост-компьютерами. Ping работает как радиолокатор, посылая пакеты данных удалённому хост-компьютеру, который возвращает их назад. Если пакет за определённое время не возвращается назад, то либо хост-компьютер недоступен, либо что-то случилось с соединением. Ping является, пожалуй, наиболее полезной диагностической утилитой TCP/IP, позволяющей выяснить, исправно ли соединение с удалённой системой.

Ping передаёт пакеты протокола ICMP (internet control message protocol – протокол управления сообщениями Internet) на удалённый хост-компьютер, а затем ожидает прихода ответных пакетов данных. Версия утилиты Ping, включённая в состав Windows 95 по умолчанию ждёт одну секунду ответного пакета данных, после чего отображает информацию по каждому пакету данных. По умолчанию Ping отправляет четыре пакета данных, но при работе с утилитой можно указать произвольное число пакетов, или отправлять пакеты непрерывно до тех пор пока вы не завершите выполнение команды. Ниже приводится пример использования утилиты:

Pinging 198.87.118.1 with 32 bytes of data
(Системе 198.87.118.1 отправлено 32 байта данных) Reply from,
198.87.118.1:, bytes=32, time=224ms, TTL=14 Reply from,
198.87.118.1:, bytes=32, time=213ms, TTL=14 Reply from,
198.87.118.1:, bytes=32, time=198ms, TTL==14 Reply from,
198.87.118.1:, bytes-32, time=224ms, TTL=14
достаточно добавить имя удалённого хост-компьютера и его адрес IP в файл hosts на локальном компьютере.

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

Ниже приводится синтаксис утилиты ping:
Ping [-t] [-a] [-n count] [-1 size] [-f] [-I TTL] [-v TOS]

Опции утилиты описаны ниже:

7.10 Протокол ARP

Протокол ARP (Address Resolution Protocol) – адресный протокол используется для отображения IP-адресов в Ethernet-адреса. Отображение выполняется только для отправляемых IP-пакетов,так как только в момент отправки создаются заголовки IP и Ethernet.

7.10.1 ARP-таблица для преобразования адресов

Преобразование адресов выполняется путем поиска в таблице. Эта таблица, называемая ARP-таблицей, хранится в памяти и содержит строки для каждого узла сети. В двух столбцах содержатся IP- и Ethernet-адреса.Если требуется преобразовать IP-адрес в Ethernet-адрес, то ищется записьс соответствующим IP-адресом. Ниже приведен пример(таблица 7.5) упрощенной ARP-таблицы.

Таблица7.5.

IP-адрес

Ethernet-адрес

223.1.2.1

08:00:39:00:2F:C3

223.1.2.3

08:00:10:99:AC:54

Принято, чтобы все байты 4-байтного IP-адреса записывать десятичными числами, разделенными точками. При записи 6-байтного Ethernet-адреса каждый байт указывается в 16-ричной системе и отделяется двоеточием. ARP-таблица необходима потому, что IP-адреса и Ethernet-адреса выбираются независимо, и нет какого-либо алгоритма для преобразования одного в другой. IP-адрес выбирает менеджер сети с учетом положения машины в сети Internet. Если машину перемещают в другую часть сети Internet, то ее IP-адрес должен быть изменен. Ethernet-адрес выбирает производитель сетевого интерфейсного оборудования из выделенного для него по лицензииадресного пространства. Когда у машины заменяется плата сетевого адаптера, то меняется и ее Ethernet-адрес

 

7.10.2 Порядок преобразования адресов

В ходе обычной работы сетевая программа, такая как TELNET, отправляет прикладное сообщение, пользуясь транспортными услугами TCP. МодульTCP посылает соответствующее транспортное сообщение через модуль IP. Врезультате составляется IP-пакет, который должен быть передан драйверу Ethernet. IP-адрес места назначения известен прикладной программе, модулю TCP и модулю IP. Необходимо на его основе найти Ethernet-адрес места назначения. Для определения искомого Ethernet-адреса используетсяARP-таблица.

ARP-таблица заполняется автоматически модулем ARP, по мере необходимости. Когда с помощью существующей ARP-таблицы не удается преобразовать IP-адрес, то происходит следующее:

  1. По сети передается широковещательный ARP-запрос.
  2. Исходящий IP-пакет ставится в очередь.

Каждый сетевой адаптер принимает широковещательные передачи. Вседрайверы Ethernet проверяют поле типа в принятом Ethernet-кадре и передают ARP-пакеты модулю ARP. ARP-запрос обязывает принимающую машину, если ее IP-адрес совпадает с указанным адресом, передать ответ с Ethernet-адресом. Пакет ARP-запроса выглядит примерно так:

IP-адрес отправителя

223.1.2.1

Ethernet-адрес отправителя

08:00:39:00:2F:C3

Искомый IP-адрес

223.1.2.2

Искомый Ethernet-адрес

<пусто>

Табл.7.6. Пример ARP-запроса

Каждый модуль ARP проверяет поле искомого IP-адреса в полученном ARP-пакете и, если адрес совпадает с его собственным IP-адресом, то посылает ответ прямо по Ethernet-адресу отправителя запроса.

Пакет с ARP-ответом выглядит примерно так:

IP-адрес отправителя

223.1.2.2

Ethernet-адрес отправителя

08:00:28:00:38:A9

Искомый IP-адрес

223.1.2.1

Искомый Ethernet-адрес

08:00:39:00:2F:C3

Табл.7.7. Пример ARP-ответа

Этот ответ получает машина, сделавшая ARP-запрос. Драйвер этой машины проверяет поле типа в Ethernet-кадре и передает ARP-пакет модулю ARP. Модуль ARP анализирует ARP-пакет и добавляет запись в свою ARP-таблицу. Обновленная таблица выглядит следующим образом:

Табл.7.8. ARP-таблица после обработки ответа

IP-адрес

Ethernet-адрес

223.1.2.1

08:00:39:00:2F:C3

223.1.2.2

08:00:28:00:38:A9

223.1.2.3

08:00:10:99:AC:54

223.1.2.4

08:00:10:99:AC:54

 

 

7.11 Протокол ICMP

Протокол ICMP (Internet Control Message Protocol) – протокол управления сообщениями Internet.Является составной часть протокола IP. Используется, например, для передачи сообщений об ошибках отправителю датаграммы, а также передаются сообщения о возникновении условий и ситуаций, которые требуют к себе особого внимания. ICMP-сообщения обрабатываются IP-уровнем или более высокими уровнями (TCP или UDP)..

ICMP-сообщения передаются внутри IP датаграмм, как показано на рисунке 7.8.

Рис. 7.8.

 

7.11.1 Инкапсуляция ICMP сообщений в IP датаграммы

На рисунке 7.9 показан формат ICMP сообщения. Первые 4 байта одинаковы для всех сообщений, однако остальные отличаются в зависимости от типа сообщения.

Существует 15 различных значений для поля типа (type), которые указывают на конкретныей тип ICMP сообщения. Для некоторых ICMP сообщений используются различные значения в поле кода (code), подобным образом осуществляется дальнейшее подразделение ICMP сообщений. Поле контрольной суммы (checksum) охватывает ICMP сообщения целиком.

Рисунок 7.9. ICMP сообщение

 

7.11.2 Типы сообщений ICMP

В таблице 7.9 приведены некоторые возможные типы ICMP сообщений, как они определяются полями типа и кода. Последние две колонки в таблице указывают, является ли ICMP сообщение запросом (query) или сообщением об ошибке (error). Подобное разделение необходимо, потому что сообщения об ошибках ICMP иногда обрабатываются специальным образом. Например, ICMP сообщение об ошибке никогда не генерируется в ответ на ICMP сообщение об ошибке. (Если не придерживаться этого правила, то ошибка будет генерироваться на ошибку до бесконечности.) Сообщение об ошибке ICMP никогда не генерируется в ответ на:

  1. ICMP сообщение об ошибке. (ICMP сообщение об ошибке, однако, может быть сгенерировано в ответ на ICMP запрос.)
  2. Датаграмму, направляющуюся на широковещательный IP адрес или групповой адрес IP.
  3. Датаграмму, которая посылается широковещательным запросом на канальном уровне.
  4. Фрагмент, который не является первым.
  5. Датаграмму, адрес источника которой не указывает на конкретный хост. Это означает, что адрес источника не может быть нулевым, loopback адресом, широковещательным или групповым адресом.

Таблица 7.9.

тип

код

Описание

запрос

ошибка

0

0

эхо-отклик (отклик-Ping)

 

3

 

назначение недоступно:

 

 

 

0

сеть недоступна - network unreachable

 

 

1

хост недоступен - host unreachable

 

 

2

протокол недоступен - protocol unreachable

 

 

3

порт недоступен - port unreachable

 

 

4

необходима фрагментация, однако установлен бит ⌠не

фрагментировать - fragmentation needed but don't-fragment bit set

 

 

5

не работает маршрутизация от источника - source route failed

 

 

6

неизвестна сеть назначения - destination network unknown

 

 

7.11.3 ICMP запрос и отклик маски адреса

ICMP запрос маски адреса используется бездисковыми системами, чтобы получить маску подсети во время загрузки. Система посылает широковещательный ICMP запрос. На рисунке 7.10 показан формат ICMP запроса и отклика маски адреса.

Рисунок 7.10. ICMP запрос и отклик маски адреса

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

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

Существуют специальные форматы сообщений, необходимые для корректировки маршрутов пакетов в сети (использование этих форматов называется “перенаправление маршрута”)Различные команды операционной системы также используют ICMP-протокол. Например, ping, traceroute, различные сканы портов и т.д.

 

 

Тема 8 Программирование межпроцессорных взаимодействий в информационных сетях

8.1 Программирование интерфейса RS-232C

Интерфейс RS-232C - порт последовательной передачи данных. Последовательная передача данных означает, что данные передаются с использованием единственной линии. Скорость передачи измеряется в бодах, где бод - это количество передаваемых битов в секунду. Для приема и передачи данных по последовательной линии компьютер IBM PC оснащен четырьмя портами последовательной передачи. Их называют еще асинхронными портами RS-232C или COM портами. Каждому порту соответствует свой асинхронный адаптер - COM1... COM4. Полный стандарт RS-232C включает 25 линий, но на практике используется только часть из них. Соответственно, компьютер оснащен 2-мя типами разъемов – 25 контактный и 9 контактный (таблица 8.1):

Таблица 8.1

№ контакта

Назначение контакта

Вход или

выход

1

Детектор входного сигнала (DCD)

вход

2

Принимаемые данные (RD)

вход

3

Передаваемые данные (TD)

выход

4

Готовность выходных данных (DTR)

выход

5

Сигнальное заземление (SG)

-

6

Готовность данных (DSR)

вход

7

Запрос для передачи (RTS)

выход

8

Сброс для передачи (CTS)

вход

9

Индикатор вызова (RI)

вход

Передача данных между компьютерами организовывается либо непосредственным соединением COM-портов физической линией, либо с использованием телефонных линий связи. В последнем случае к порту подключается специальное устройство, называемое модемом (аббревиатура из слов МОдулятор-ДЕМодулятор). Модулятор на передающей стороне преобразует цифровой сигнал в виде последовательности двоичных битов в аналоговый частотно-модулированый сигнал, где логической единице соответствует передача в линию одной частоты, а логическому нулю - другой. Аналоговые сигналы передаются по телефонному проводу или преобразуются в радиосигнал с помощью радиомодема. На приемной стороне демодулятор преобразует аналоговый сигнал в цифровой код, который передается на вход RS-232C.

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

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

Рис 8.1. Формат передаваемого кадра

 

8.1.1 Описание регистров интерфейса RS-232C

Каждый из 4-х асинхронных портов имеет одинаковую группу регистров, доступ к которым осуществляется через соответствующие порты. Базовые адреса и диапазоны занимаемых адресов показаны в таблице 8.2.

Таблица 8.2

Базовый адрес

Диапазон адресов

COM1

3F8h

3F8h – 3FFh

COM2

2F8h

2F8h – 2FFh

COM3

3E8h

3E8h – 3EFh

COM4

2E8h

2E8h – 2EFh

Асинхронные адаптеры могут вырабатывать следующие прерывания:

COM1 и COM3 - IRQ4 (соответствует INT 0Ch)
COM2 и COM4 - IRQ3 (соответствует INT 0Bh).

Каждый асинхронный адаптер управляется 10-ю внутренними регистрами. Обращение к регистрам производится по их адресам, называемыми портами ввода/вывода. Для COM1 регистры имеют следующие адреса портов:

3F8h (OUT, бит 7 = 0 в 3FBh) Регистр данных передатчика
3F8h (IN, бит 7 = 0 в 3FBh) Регистр данных приемника
3F8h (OUT, бит 7 = 1 в 3FBh) Делитель скорости обмена - младший байт
3F9h (IN, бит 7 = 1 в 3FBh) Делитель скорости обмена - старший байт
3F9h (OUT, бит 7 = 0 в 3FBh) Регистр разрешения прерывания
3FAh (IN) Регистр идентификации прерывания
3FBh (OUT) Регистр управления линии
3FCh (OUT) Регистр управления модемом
3FDh (IN) Регистр статуса линии
3FEh (IN) Регистр статуса модема

Порт 3F8h. Регистры данных и скорости

В зависимости от состояния старшего бита в управляющем регистре (порт 3FBh), назначение порта 3F8h может меняться. Если этот бит равен 0, порт используется для передачи данных. Если этот бит равен 1, порт используется для вывода значения младшего байта делителя частоты тактового генератора управления обменом. Изменяя содержимое делителя, можно изменять скорость передачи данных (таблица 8.3).

Таблица 8.3

Делитель

Скорость передачи

в бодах

Делитель

Скорость передачи

в бодах

1040(600h)
768 (300h)
384(180h)
192(0C0h)
96 (60h)
48 (30h)

110
150
300
600
1200
2400

24(18h)
12(0Ch)
6(06h)
3(03h)
2(02h)
1(01h)

48009600192003840057200

115200

 

Порт 3F9h. Регистр управления прерываниями.

Регистр используется либо для управления прерываниями от асинхронного адаптера, либо ( в случае, если старший бит порта 3FBh был установлен в “1”) для вывода значения старшего байта делителя частоты тактового генератора. В режиме регистра управления прерыванием порт имеет следующий формат (таблица 8.4):

Таблица 8.4.

№ битов

Назначение

7 – 4

Не используются

3

1 - разр. прер. при изменении входных

управл. линий на разъеме RS-232

2

1 - разр. прер. при обнаружении "BREAK"

1

1 - разр. прер. по готовности вывода

0

1 - разр. прер. по готовности ввода

 

Порт 3FAh. Регистр идентификации прерывания.

Содержимое регистра (таблица 8.5) определяет причину прерывания:

Таблица 8.5.

№ битов

Назначение

7 – 3

Не используются

2 – 1

00 - Прерывание при ошибке приема.01 - -/- при приеме байта из линии10 - -/- при готовности к выводу. Сбрасывается после вывода очередного байта в 3F8h

11 - -/- по изменению состояния модема.

0

Должен быть равным 0

 

Порт 3FBh. Управляющий регистр.

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

Таблица 8.6.

№ битов

Назначение

7

Бит доступа к регистру скорости

6

Установка прерывания

5

Фиксация четности

4-3

Длина слова в битах: 00 - 5 бит; 10 - 7 бит

01 - 6 бит; 11 - 8 бит

2

К-во стоповых бит: 0 - 1 бит

1 - 2 бита

1-0

Четность: х0 - контроль не используется 01 - контроль на нечетность

10 - контроль на четность

 

Порт 3FDh. Регистр состояния линий.

Регистр состояния линий определяет состояние приемо/передатчика и причину ошибок, которые могут произойти в процессе выполнения передачи или приема (таблица 8.7):

Таблица 8.7.

№ битов

Назначение

7

1 - Тайм-аут. Устройство не связано с компьютером.

6

1 - Регистр сдвига пуст

5

1 - Готовность вывода (регистр передатчика пуст)

4

1 - Длинная строка нулей

3

1 - Ошибка синхронизации

2

1 - Ошибка четности

1

1 - Ошибка переполнения

0

1 - Данные получены

 

8.1.2 Функции BIOS (INT 14h) поддержки асинхронного порта.

Для поддержки асинхронного порта в BIOS встроен ряд функций (INT 14h):

Инициализация асинхронного порта в BIOS.
AH = 00h:
DX = номер порта: 0 - COM1, 1 - COM2:
AL = параметры инициализации. Биты регистра AL имеют следующие назначения (таблица 8.8):

Таблица 8.8.

№ битов

Назначение

7-5

 

Скорость передачи данных в бодах:
000-110 100 - 1200
001-150 101-2400
010 - 300 110 - 4800
011 - 600 111 - 9600

 

4-3

Четность:
х0 - контроль не используется
01 - контроль на нечетность
10 - контроль на четность

2

К-во стоповых бит:
0 - 1 бит
1 - 2 бита

1-0

Длина слова в битах:
00 - 5 бит; 10 - 7 бит
01 - 6 бит; 11 - 8 бит

 

Передача в линию связи

Передача в линию связи осуществляется с помощью функции
AH = 01h - функция передачи;
DX = номер порта: 0 - COM1, 1 - COM2:
AL = передаваемый байт.
Возвращается в AH состояние порта. Если бит 7 = 1, то ошибка.
Прием из линии связи
Прием из линии связи осуществляется с помощью функции
AH = 02h - функция приема;
DX = номер порта: 0 - COM1, 1 - COM2:
На выходе:
AL = принятый байт.
AH = состояние порта. Если бит 7 = 1, то ошибка.
Чтение состояние порта
Состояние порта асинхронного адаптера можно прочитать с помощью функции
AH = 03h - функция чтения состояния;
DX = номер порта: 0 - COM1, 1 - COM2:
На выходе:
AL = состояние модема;
AH = состояние порта.

 

8.1.3 Описание процедур программирования асинхронного адаптера

Инициализация асинхронного адаптера

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

 

Передача данных

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

Признаком того, что регистр передатчика свободен, является установленный в "1" бит 5 регистра состояния линии с адресом baseadr + 5 (3FDh).

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

 

Прием данных

Аналогично передаче данных, перед вводом символа из регистра данных (адрес baseadr), необходимо убедиться в том, что бит 0 регистра состояния линии (адрес baseadr+5(0x3fd)) установлен в 1. Это означает, что символ принят из линии и находится в буферном регистре приемника.Для приема данных может быть использована следующая функция:

8.1.4 Пример программы передачи данных

 

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

Задание: Отладьте приведенную программу. Проведите эксперимент по пересылке данных на одной ЭВМ. Сделайте заглушку на COM-порт. Для этого провод одним концом подсоедините к передающему контакту разъема, а с другим к принимающему как показано на рисунке 8.2.

Рис.8.2.

8.1.5 Использование прерываний в программах управления асинхронного адаптера

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

Для установки возможности выполнять прерывания необходимо установить режим разрешения прерываний от COM-порта. Для этого требуется записать “0” в соответствующий бит регистра контроллера прерывания. Для IRQ3 (COM1)это 3-ий бит, а для IRQ4(COM2) - 4-ый. Доступ к регистру контроллера прерываний осуществляется через порт 0x21:

/* *** функция инициализации контролера прерывания *** */
void init_ctrl() {
int_save = inp(0x21);
outp(0x21,int_save & 0x0e7); 0x0e7=11100111

Кроме того, при инициализации COM-порта необходимо:
- установить в “1” биты регистра управления прерываниями (baseaddr+1) по вводу или выводу в соответствии с тем, какие прерывания мы желаем обрабатывать;
- установить в регистре управления модемом разрешение на прерывание от адаптера;
- установить биты сигналов DTR и RTS

/* *** функция инициализация COM-порта *** */
. . . . . . .
// уст. рег-р управления прерыванием по вводу и по выводу
char imask = 0x03; // 0x3 = 0000.0011
outp(0x3f9, imask;

// уст. в рег-ре управления модема бит разрешения прерывания outp(0x3fc, 0x0b);
//0xb = 0000.1011

Программа-обработчик прерывания устанавливается путем помещения в таблицу векторов прерываний адреса программы с помощью функции - setvect(): setvect (0x0C, handler);

Старый обработчик прерывания можно извлечь из таблицы векторов прерываний и сохранить: Old_hendler=getvect (0x0C);

Когда произойдет прерывание, программа-обработчик должна проанализировать причину прерывания, прочитав содержимое регистра идентификации прерывания с адресом baseadr+2(0x3fa).В конце программы-обработчика аппаратного прерывания необходимо поставить последовательность команд:

//завершение аппаратного прерывания
outp (0x20, 0x20);

В противном случае возможно "зависание" программы. Так как одновременно может произойти несколько прерываний. В этом случае бит “0” регистра идентификации прерываний будет установлен в “1”. Если такая ситуация имеет место, перед завершением обработки прерывания надо снова прочитать регистр идентификации прерываний и обработать следующее прерывание. Так следует поступать до тех пор, пока бит “0” регистра идентификации прерываний не станет равным единице.Структура программы-обработчика выглядит следующим образом:

Задание.
1.Изучить и провести отладку приведенной ниже программы вывода в линию связи символов, принятых с клавиатуры и приема их из линии связи с отображением на экране (прием в режиме прерывания, передача по опросу регистра состояния).
Окончание работы программы по нажатию клавиши Esc.
Проведите эксперимент по пересылке данных на одной ЭВМ и на двух ЭВМ, соединенных кабелем.
2. Написать программу пересылки между двумя ЭВМ текста, набранного на клавиатуре.
3. Написать программу пересылки между двумя ЭВМ текстового файла.

 

8.2 Программирование протокола BSC

Цель работы: Изучение функций протокола физического канала BSC. Организация передачи данных по физическому каналу с использованием протокола BSC

8.2.1 Описание протокола канального уровня – BSC

Протокол BSC предназначен для управления полудуплексным каналом связи. В качестве символов управления каналом передачи данных, определенных для BSC, применяются специальные коды ASCII(таблица 8.9):

Таблица 8.9.

Символ

Код

Назначение

SYN

20

символ синхронизации

SOH

01

начало заголовка

STX

02

начало текста

ETX

03

конец текста

ETB

04

конец блока данных

ENQ

05

символ запроса

ACK0

06

четное подтверждение

ACK1

34

нечетное подтверждение

NAK

25

отрицательная квитанция

DLE

16

специальный управляющий символ

Для выделения в потоке управляющих символов используется процедура байтстаффинга, когда перед управляющим символом в линию связи выводится специальный управляющий символ DLE. Если в потоке выводимых данных появляется код соответствующий DLE, то перед ним в линию также выводится символ DLE. На приемной стороне после приема символа DLE ожидается поступление управляющего символа, либо символа DLE. В первом случае выполняется функция обработки управляющих символов, в другом - повторно принятый символ DLE игнорируется. Каждый передаваемый информационный блок обрамляется служебными символами (рис.8.3). Информация выводится двумя блоками – блок заголовка и блок данных. Блок данных может быть разбит на несколько пакетов. Блок заголовка предваряется символами DLE-SOH, а каждый пакет данных символами DLE-STX. Все промежуточные пакеты завершаются символами DLE-ETB, а последний пакет символами DLE-ETX.

Рис.8.3. Форматы пакетов: a) заголовка; b) данных

 

Процедура передачи сообщения (рис.8.4) состоит из 4-х этапов:
установки связи в режиме handshake
передачи заголовка
передачи данных
завершения связи

Рис.8.4. Процедура передачи сообщения

Подтверждение выполнения каждого этапа производится последовательно чередующимися символами четного (ACK0) и нечетного (ACK1) подтверждения. Не подтверждение – символом NAK.Установка связи заключается в посылке символа запроса – ENQ и получения положительного подтверждения ACK0.Завершение связи производится посылкой символа EOT получением подтверждения – ACK0 или ACK1.

Рассмотрим пример программы пересылки пакета заголовка. Текстом заголовка в примере будет - "Hello!". Старт передачи по нажатию клавиши F1(код 59), а выход из программы по ESC (код 27).

Приведенный фрагмент программы описывает реализацию передачи заголовка пакета.

Задание. Дописать программу передачи данных пакета и завершение связи. Отладить ее и провести эксперимент по пересылке текста.

 

8.3 Программирование протокола IPX

Цель работы: Изучение организации передачи данных между компьютерами в локальной сети с использованием протоколов IPX. Программирование обменов.

 

8.3.1 Описание протокола IPX

Протокол IPX (Internetwork Packet Exchange - Межсетевой Обмен Пакетов) принадлежит к классу так называемых датаграммных протоколов транспортного уровня. Передача сообщений датаграммами осуществляется без подтверждения. Датаграмма состоит из заголовка и собственно блока данных. В заголовке указывается адрес назначения и свой собственный. Поэтому датаграмма может существовать автономно, продвигаясь по сети.

В протоколе IPX сетевой адрес состоит из трех полей. Первое поле (4 байта) содержит номер сети. Он задается при генерации файлового сервера или межсетевого моста. Если в локальной сети сервер (мост) выключен или отсутствует, то в этом поле должны стоять нули. Следующее поле( 6 байт) содержит адрес сетевой платы станции. В платах Ethernet этот адрес, как правило, прожигается на заводе. Последнее поле (2 байта) содержит номер сокета (англ. Socket - гнездо, розетка). Оно используется для задания адреса процесса внутри узла. Сетевой адрес описан в виде структуры IPXAddress в файле IPX.H:

typedef struct
{
unsigned char netadd[4]; // "Старший-младший"
unsigned char nodeadd[6]; // "Старший-младший"
unsigned short socket; // "Старший-младший"

} IPXADDRESS;

"Старший-младший" определяет порядок следования байтов. Нормальный порядок следования байт "младший-старший", поэтому при работе с этими полями нужно быть особенно внимательным и для извлечения информации из них необходимо использовать функции типа IntSwap() или revresword().

Взаимодействие прикладной программы с IPX.COM происходит через блок обработки события(Event Control Block), сокращенно "ECB". Он представляет непрерывный участок памяти длиной 48 байтов. Структура блока определена в файле IPX.H как struct ECB и состоит из следующих полей:

typedef struct
{
void far *linkaddress;
void (far *esraddress)();
unsigned char inuse;
unsigned char cc;
unsigned short socket; /* старший-младший */
unsigned char workspace[16];
unsigned char immedaddr[6]; /* старший-младший */
unsigned short fragcount;
void far *fragaddr1;
unsigned short fragsize1;
void far *fragaddr2;
unsigned short fragsize2;} IPXECB;

IPX записывает в поле inuse - inUseFlag (флаг использования) текущее состояние события. Прикладная программа может задействовать это поле для определения факта завершения события.

Поле cc - completionCode (код завершения) содержит код завершения для события, который обозначает, был ли пакет отправлен успешно, или пакет имеет неправильный формат и т.п.

Поле socket - socketNumber (номер гнезда) определяет отправляющий или получающий сокет, к которому подстыковывается данный ECB.

Поля IPXWorkspace (рабочая область IPX) и driverWorkspace (рабочая область драйвера) используются для внутренних целей протоколом и драйвером сетевой платы. Эти поля нельзя изменять.

Поле immedaddr - immediateAddress (непосредственный адрес) содержит адрес узла, которому отправляется пакет, или узла, от которого он получается. Если пакет не получен от узла и не отправлен узлу в местной сети, то этим адресом будет адрес межсетевого моста в местной сети.

Для заполнения этого поля можно использовать функцию IPXGetLocalTarget.

Поле fragcount - fragmentCount обозначает количество буферов (не менее двух), из которых будет построен исходящий (отправляемый) пакет, или на которые будет разбит принимаемый пакет. Прикладная программа дает список дескрипторов фрагментов в конце блока ECB, с буфером адреса и размера, обозначенным посредством поля fragmentCount. Первый фрагмент обязательно в начале должен содержать место под протокольный заголовок пакета (struct IPXHeader или struct SPXHeader). Суммарная длина двух фрагментов не должна превышать 576 байтов.

Заголовок пакета IPX - IPXHeader определен в файле IPX.H и состоит из следующих полей:

typedef struct
{
unsigned short checksum; /* старший-младший */
unsigned short length; /* старший-младший */
unsigned char tc;
unsigned char type;
IPXADDRESS dest;
IPXADDRESS source;
} IPXHEADER;

 

8.3.2 Общая последовательность взаимодействия по протоколу IPX

Список IPX команд:

1. IPXInitialize
2. IPXOpenSocket
3. IPXGetInternetworkAddress
4. IPXGetDataAddress
5. IPXGetLocalTarget
6. IPXSendPacket
7. IPXListenForPacket
8. IPXRelinquishControl
9. IPXGetIntervalMaker
10. IPXCancelEvent
11. IPXDisconnectFromTarget
12. IPXCloseSocket

Все ниже перечисленные функции, за исключением IPXGetDataAddress, являются непосредственно функциями протокола IPX-SPX.

Обращения к ним формируются как вызов функции (*IPXSPX_entry)() с соответствующим кодом :

IPXOpenSocket 0x00
IPXCloseSocket 0x01
IPXGetLocalTarget 0x02
IPXSendPacket 0x03
IPXListenForPacket 0 x04
IPXSheduleEvent 0x05
IPXCancelEvent 0x06
IPXGetIntervalMaker 0x08
IPXGetInternetworkAddress 0x09
IPXRelinquishControl 0x0A
IPXDisconnectFromTarget 0x0B
SPXInitialize 0x10
SPXEstablishConnection 0x11
SPXListenForConnection 0x12
SPXTerminateConnection 0x13
SPXAbortConection 0x14
SPXGetConnectionStatus 0x15
SPXSendSequencedPacket 0x16
SPXListenForSequencedPacket 0x17

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

Данная функция должна быть вызвана до вызова любой функции IPX.Данная функция обращаясь к мультиплексному прерыванию с кодом 0x7A определяет наличие IPX.COM в памяти и получает адрес точки входа в IPX (IPXLocation). IPXInitialize() обязательно должна присутствовать перед первым вызовом любой другой функции. В случае отсутствия IPX.COM в памяти функция возвращает значение (0xF0).

Ее можно использовать следующим образом:

#include <dos.h>
if (ipx_init())
printf(" протокол IPX не загружен\n");

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

int IPXOpenSocket( BYTE socketType, BYTE *socketNum)

Возвращаемые значения:

(0x00) SUCCESSFUL - Успешное выполнение

(0xF0) IPX_NOT_INSTALLED - IPX не установлен

(0xFE) SOCKET_TABLE_FULL - Таблица сокетов заполнена

(0xFF) SOCKET_ALREADY_OPEN Сокет уже открыт

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

Параметр socketNumber содержит номер открываемого сокета. Передача величины 0000h в это поле позволяет IPX открыть доступные гнезда по своему выбору в диапазоне от 0x4000 до 0x5000. Это называется ДИНАМИЧЕСКИМ открытием гнезда.

Oткрываем сокет на котором будем передавать:

if(IPXOpenSocket(0x00, &Socket))
{
printf("Ошибка при открытии сокета\n");
exit(-1);
};

Номер сокета, открытого на станции А должен быть известен прикладной программе на станции Б и наоборот.

По окончании передачи и приема пакетов, прикладные программы на обеих станциях должны закрыть гнезда, вызвав функцию IPXCloseSocket(void). Для отправки пакета используется функция IPXSendPacket. Данная функция инициализирует отправку пакета IPX и имеет формат:

void IPXSendPacket(ECB *eventControlBlock)

Функция IPXSendPacket передает IPX адрес блока ECB для отправки пакета IPX. Эта функция возвращает управление вызывающей прикладной программе, не дожидаясь окончанияпроцесса отправки. С этого момента IPX пытается отправить пакет. Перед тем, как вызвать эту функцию, прикладная программа должна инициализировать следующие поля блока ECB:

- socketNumber
- immediateAddress
- fragmentCount
- fragmentDescriptor

Пример подготовки ECB для передачи пакетов:

memset(TxECB.immeaddr, 0xff, 6); // адрес получателя - всем
TxECB.esraddress=NULL; // п/п обpаботки события - отсутсвует
TxECB.socket = IntSwap(Socket);
TxECB.fragcount = 2;
TxECB.fragaddr1 = &TxHeader;
TxECB.fragsize1 = sizeof(TxHeader);
TxECB.fragaddr2 = TxBuffer;
TxECB.fragsize1 = BUFFER_SIZE;

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

Пример подготовки заголовка для передачи пакетов предназначенных всем станциям данной сети:

TxHeader.type = 4; /* тип пакета */
for(i=0;i<4;i++)
TxHeader.dest.netadd[i]=0x00; /* адpес сети */
for(i=0;i<6;i++)
TxHeader.dest.nodeadd[i]=0xFF; /* адpес компьютеpа */

/* адpес 00 00 00 00 FF FF FF FF FF FF - означает , что пакет пойдет на все компьютеpы сети */
TxHeader.dest.socket=IntSwap(Socket); /* сокет пpиемника */

Для приема пакетов служит функция IPXListenForPacket():
IPXListenForPacket(&RxECB);

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

Сначала IPX устанавливает поле блока ECB inuse – “inUseFlag” как (0xFF), - это означает, что блок ECB отправляет пакет. После попытки отправить пакет, IPX устанавливает поле cc - "completionCode" блока ECB до соответствующей величины и устанавливает поле "inUseFlag" как (0x00), и вызывает подпрограмму ESR (подпрограмму обслуживания события), на которую указывает поле "ESRAddress ".

Ниже приводятся возможные величины для поля cc - "completionCode" блока ECB:

(0x00) SUCCESSFUL Успешное выполнение
(0xFC) REQUEST_CANCELLED Запрос отменен
(0xFD) BAD_PACKET Неправильный пакет (Данный пакет не имеет 30-байтового заголовка пакета в качестве первого фрагмента, или же общая длина пакета превышает 576 байт)
(0xFE) PACKET_NOT_DELIVERABLE Пакет не может быть доставлен
(0xFF) HARDWARE_FAILURE Сбой в аппаратуре

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

while(RxECB.inuse)
{
IPXRelinquishControl();
if(kbhit())
{
getch();
RxECB.cc = 0xfc;
IPXCloseSocket(Socket);
break;

}

}

 

8.3.3 Диагностика сети

Диагностическое сообщение выводится на специальный сокет с номером 0х456.

Структура запроса на диагностику:

struct _REQ {
unsigned char Exclusions;
unsigned char List[80][6];
};
Exclusions - количество станций, от которых не требуется получать ди-агностику. Если без исключения, то поле устанавливается в 0.
List - адреса этих станций.
Принимаемые сообщения в ответ на диагностический запрос состоят из 2-х частей.


Структура первой части:
struct _RESPONSE {
unsigned char MajorVersion;
unsigned char MajorVersion;
unsigned SPXDiagnosticSocket;
unsigned char ComponentCount;
};

ComponentCount - количество компонентов программного и аппаратного обеспечения. Далее идут структуры, описывающие отдельные компоненты. Они могут быть простые, состоящие из одного байта со значением 0,1,2,3 или 4

0 - драйвер IPX/SPX
1 - драйвер программного обеспечения моста
2 - драйвер сетевой оболочки рабочей станции
3 - сетевая оболочка
4 - сетевая оболочка в виде VAP-процессаили сложными, состоящими из фиксированной части и переменной структуры.

Структура фиксированной части:

struct _EXTENDED_COMPONENT {
unsigned char ComponentID;
unsigned char NumberOfLocalNetworks; };

Значения ComponentID:
5 - внешний мост
6 - файл-сервер с внутренним мостом
7 - невыделенный файл-сервер

Для описания сетей используется массив структур ( размерностью NumberOfLocalNetworks):

struct _NETWORKD_COMPONENT {
unsigned char NetworkType;
unsigned char NetworkAddress[4];
unsigned char NodeAddress[6]; };

NetworkType имеет следующие значения:
0 - сеть, к которой подключен сетевой адаптер
1 - сеть с виртуальным сетевым адаптером
2 - переназначенная удаленная линия

Программа создает 20 блоков ECB для приема пакетов конфигурации и ставитих на прием. Ниже приведен фрагмент примера начала программы.

 

8.3.4. Пример программы обмена данными

Рассмотрим пример программирования обмена данными. Необходимые программы для данного примера:

TEST.C
IPX.OBJ
IPX.H
TEST.C - базовая программа.

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

IPX.ASM - вспомогательная программа, содержащая системные вызовы функций IPX.
IPX.OBJ - объектный код программы IPX.ASM
IPX.H - включаемый файл, содержащий основные структуры, используемые в программировании обмена данными на базе IPX.

Рассмотрим пример передачи данных из буфера sbuffer[] и прием в буфер rbuffer[80].

 

Задание 1.

Изучите базовую программу TEST.C и программу системных вызовов TEST.ASM. Составьте проект test.prj, содержащий файлы TEST.C и IPX.OBJ. Откомпилируйте проект, получите загрузочный модуль и запустите его на выполнение. Разберите результат выполнения программы.

Введите в программу процедуру заполнения выходного буфера текстовой информацией (можно использовать функцию strcpy(char buf, string)) и процедуру вывода содержимого буфера ввода на экран (можно использовать функцию printf("%s",char buf)).

Задание 2.

Выполните пересылки данных между двумя удаленными компьютерами. Необходимо написать комплекс "сервер-клиент". Установить для каждой программы свой номер сокета в диапазоне 4000-6000. Программа-сервер узнает сетевой адрес программы-клиента при получении сообщения по содержимому заголовка приема. Программа клиент инициирует установление связи с программой сервер на удаленном компьютере посылая пакет данных определенной структуры (выбрать по своему усмотрению). Вывод запроса проводить в широковещательном режиме на сокет программы-сервера. Инициализировать передачу запроса по нажатию функциональной клавиши F1. Программа-сервер после обнаружения запроса отсылает подтверждение в виде пакета данных в установленной форме. Вывод ответа проводить на конкретный сетевой адрес клиента, прочитанного в заголовке принятого запроса. После получения ответа от программы-сервера программа-клиент выводит сообщение программе-сервер по его конкретному адресу, прочитанному в заголовке принятого подтверждения на запрос. Завершение связи по нажатию служебной клавиши ESC. При этом формируется и передается пакет данных в установленной вами форме.

 

8.4 Программирование протокола NETBIOS

Цель работы: Изучение элементов передачи данных между компьютерами в локальной сети с использованием протоколов NETBIOS. Программирование обменов.

8.4.1 Описание протокола NETBIOS

Протокол NETBIOS (Network Basic Input/Output System - базовая сетевая система ввода/вывода), разработан IBM. Этот протокол работает на трех уровнях семиуровневой модели OSI: сетевом уровне, транспортном уровне и на уровне каналов связи. Уровень каналов связи обеспечивает механизм обмена сообщениями между программами, работающими на станциях в рамках канала связи или сессии. Протокол NETBIOS может обеспечить интерфейс более высокого уровня, чем протоколы IPX и SPX. Рассмотрим основные возможности NETBIOS, связанные с передачей данных между рабочими станциями в пределах одного логического сегмента сети.

 

8.4.2 Адресация станций и программ

Протокол NETBIOS для адресации станции использует имена размером 16 байт. Каждая станция имеет одно постоянное имя (permanent name), которое образуется из аппаратного адреса добавлением к нему слева десяти нулевых байт. Кроме постоянного имени протокол NETBIOS позволяет добавлять (и удалять) обычные имена и групповые имена.

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

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

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

Метод адресации протокола NETBIOS позволяет адресовать данные не только одной станции (как в IPX и SPX) или всем станциям сразу (как в IPX), но и группам станций, имеющим одинаковое групповое имя. Это может быть удобно, если в сети работают несколько групп пользователей, которые интенсивно обмениваются данными между собой.

В NETBIOS нет необходимости устанавливать сокет для идентификации программного обеспечения. Вместо этого достаточно создать уникальное групповое имя и использовать его для работы по схеме клиент-сервер.

 

8.4.3 Работа с протоколом NETBIOS

Протокол NETBIOS предоставляет программам интерфейс для передачи данных на уровне датаграмм и на уровне каналов связи. Для выполнения функций NETBIOS программа должна создать в памяти управляющий блок, который называется NCB (Network Control Block - сетевой управляющий блок). Адрес заполненного блока NCB передается прерыванию INT 5Сh, в рамках которого и реализован интерфейс протокола NETBIOS. Есть также альтернативный интерфейс, реализованный в рамках прерывания INT 2Ah, который поддерживается эмулятором NETBIOS, разработанным фирмой Novell, а также операционной системой Windows for Workgroups.

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

Рассмотрим последовательно основные операции работы с протоколом NETBIOS.

Проверка присутствия NETBIOS

Первое, что должна сделать программа, желающая воспользоваться протоколом NETBIOS - проверить наличие в системе интерфейса NETBIOS.Ниже приведена программа, которая определяет, установлен ли драйвер NETBIOS. С помощью функции getvect() программа получает указатель на обработчик прерывания INT 5Сh. Это прерывание используется для вызова NETBIOS. Если сегментная компонента адреса равна нулю или F000h, обработчик прерывания не установлен или установлена заглушка, расположенная в BIOS. В этом случае программа считает, что NETBIOS отсутствует. Процедура проверки наличия NETBIOS показана ниже:

void interrupt ( int5C)(...); /* Объявить программу обработки прерывания int5C*/

void Init_NetBIOS()
{
int5C = getvect(0x5c);
if ((FP_SEG(int5C) == 0x0000) || (FP_SEG(int5C) == 0xF000))
{
printf("NETBIOS not installed.\n");
exit(1);
}

else printf("NETBIOS is installed.\n");

}

Формат блока NCB и его инициализация

Приведем формат блока NCB:

extern struct _NCB {
unsigned char Cmd;
unsigned char CCode;
unsigned char LocalSessionNumber;
unsigned char NetworkNameNumber;
void far *Buffer;
unsigned Size;
char CallName[16];
char OurName[16];
unsigned char ReceiveTimeout;
unsigned char SendTimeout;
void interrupt (*PostRoutine)(void);
unsigned char AdapterNumber;
unsigned char FinalCCode;
unsigned char Reserved[14]; };

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

Поле CCode содержит код ошибки, возвращаемый NETBIOS до выполнения команды. Если, например, программа затребовала выполнение неправильной команды или задала для команды неправильные параметры, NETBIOS не будет выполнять такую команду и установит в поле CCode соответствующий код ошибки.

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

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

Поле Buffer представляет собой дальний указатель в формате [сегмент:смещение] на буфер, который должен содержать данные перед выполнением передачи или на буфер, который будет использован для приема данных.

Поле Size размер буфера, используемого для приема или передачи данных.

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

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

Поля ReceiveTimeout и SendTimeout содержат интервал времени (измеряемый в 1/2 с), в течение которого ожидается завершение соответственно команд приема и передачи.

Поле PostRoutine - указатель на программу, которая получает управление после завершения команды. Эта программа (POST-программа) аналогична программе ESR протоколов IPX/SPX и вызывается только в том случае, если в поле PostRoutine был указан адрес программы. Если же это поле заполнить нулями, то никакая программа вызываться не будет.

Поле AdapterNumber используется, если в станции установлено несколько сетевых адаптеров (в сетях Ethernet этого обычно не бывает). В этом поле указывается номер адаптера, для которого предназначена команда. Первый адаптер имеет номер 0, второй - 1.

Поле FinalCCode содержит во время выполнения команды значение 0xFF. После завершения выполнения команды в это поле записывается код ошибки, который относится к выполнению команды в целом (в отличие от кода в поле CCode). Если ваша программа не задала адрес для программы в поле PostRoutine, она должна опрашивать в цикле содержимое этого поля, ожидая, пока в нем не появится значение, отличное от 0xFF.

Поле Reserved зарезервировано для использования протоколом NETBIOS, ваша программа не должна изменять его содержимое.

Перед началом работы программ по передаче данных желательно обнулить содержимое блока NCB:

void InitNCB( )
{
memset( &c_ncb, 0, sizeof(c_ncb) );
neterr = 0;
}

Вызов команд протокола NETBIOS

Интерфейс протокола NETBIOS реализован в рамках прерывания INT 5Ch или INT 2Ah и очень прост.

Для вызова команд протокола NETBIOS необходимо подготовить блок NCB, загрузить его дальний адрес в регистры ES:BX и вызвать прерывание INT 5Ch обычными средствами вызова программных прерываний, такими, как функция int86x().

Приведем пример программы вызова функции, составленной на языке Си и предназначенной для выполнения команд NETBIOS:

void NetBios(void){
sregs.es = FP_SEG(&r_ncb);
regs.x.bx = FP_OFF(&r_ncb);
int86x(0x5c, &regs, &regs, &sregs);}

Здесь сегментный адрес расположения в памяти управляющего блока NCB с именем r_ncb заносится в сегментный регистр ES, а смещение внутри сегмента заносится в регистр BX. Затем вызывается прерывание 0x5C.

 

8.4.4 Команды NETBIOS

Перед выполнением команды ее код должен быть записан в поле Cmd блока NCB. Каждая команда NETBIOS реализована в двух вариантах - с ожиданием и без ожидания. В случае с ожиданием после вызова NETBIOS программа вновь получит управление только после завершения выполнения команды.

Список команд можно разделить на следующие группы:

Команды для работы с именами

Создать имя

NB_WAddName 0x30

NB_AddName 0xb0

Создать групповое имя

MB_WAddGroupName 0х36

NB_AddGroupName 0xb6

Удалить имя

NB_WDeleteName 0x31

NB_DeleteName 0xb1

Команды для передачи датаграмм.

NB_WSendDatagram 0x20

NB_SendDatagram 0xa0

NB_WSendBroadcastDatagram 0х22

NB_SendBroadcastDatagram 0xa2

Команды для приема датаграмм

NB_WReceiveDatagram 0x21

NB_ReceiveDatagram 0xa1

MB_WReceiveBroadcastDatagram 0х23

NB_ReceiveBroadcastDatagram 0xa3

Команды для работы с каналами

NB_WCall 0х10

NB_Call 0х90

NB_WListen 0х11

NB_Listen 0х91

NB_WHangUp 0х12

NB_HangUp 0х92

Команды для передачи данных по каналу

NB_WSend 0х14

NB_Send 0х94

NB_WSendNoAck 0х71

NB_SendNoAck Oxf1

NB_WChainSend 0х17

NB_ChainSend 0х97

NB_WChainSendNoAck 0х72

NB_ChainSendNoAck Oxf2

Команды для приема данных по каналу

NB_WReceive 0х15

NB_Receive 0х95

NB_WReceiveAny 0х16

NB_ReceiveAny 0х96

Другие команды

NB_WResetAdapter 0х32 NB_WCancel 0х35 NB_WSessionStatus 0х34 NB_SessionStatus Oxb4

 

 

8.4.5 Функции для NETBIOS

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

Функция добавления имя

void WAddName(char *name) {

char buf[16];

// Проверяем длину имени

if(strlen(name) > 15)

{ errno = 0xff; return; }

strcpy(buf, name);

// При необходимости дополняем имя пробелами

while (strlen(buf) < 15) strcat(buf, " ");

// Вызываем NETBIOS

ncb.Cmd = NB_WAddName;

strcpy(ncb.OurName, buf);

NetBios();

errno = ncb.FinalCCode;

}

Функция удаления имени

void WDeleteName(char *name) {

char buf[16];

// Проверяем длину имени if(strlen(name) > 15) {

errno = 0xff;

return; }

strcpy(buf, name);

//При необходимости дополняем имя пробелами

while (strlen(buf) < 15) strcat(buf, " ");

strcpy(ncb.OurName, buf);

// Вызываем.NETBIOS

ncb.Cmd = NB_WDeleteName;

NetBios();

errno = ncb.FinalCCode;

}

 

Функция установки имени вызываемого партнера

void SetCallName(char *name) {

char buf[16];

if(strlen(name) > 15) {

errno = 0xff;

return;

}

strcpy(buf, name);

while (strlen(buf) < 15) strcat(buf, " ");

strcpy(ncb.CallName, buf);}

 

Функция передачи датаграммы

void WSendDatagram( char *SendBuffer, unsigned BufferSize)

{

c_ncb.Buffer=SendBuffer;

c_ncb.Size=BufferSize;

c_ncb.Cmd = NB_WSendDatagram;

NetBios();

neterr = c_ncb.FinalCCode;

if (neterr == 0x00) printf("Send - O'k.\n");

else printf("Send - Errors.\n");}

 

Функция приема датаграммы

void WReadDatagram( char *ReadBuffer, unsigned BufferSize)

{

r_ncb.Buffer=ReadBuffer;

r_ncb.Size=BufferSize;

r_ncb.Cmd =NB_WReceiveDatagram;

NetBios();

neterr = r_ncb.FinalCCode;

if (neterr == 0x00) printf("Recive - O'k.\n");

else printf("Recive - Errors.\n");

}

 

Отдельно выделим функции, используемые при передаче по каналу.

 

Функция создания канала на передающей стороне

void WCall(char *name)

{

char buf2[16];

c_ncb.Cmd = NB_WCall;

if (strlen(name) > 15) {neterr = 0xff; return;} // Проверяем длину имени

strcpy(buf2, name);

while (strlen(buf2) < 15) strcat(buf2, " ");

// При необходимости дополняем имя пробелами

strcpy(c_ncb.OurName, OurName);

SetCallName("MARKOV");

c_ncb.ReceiveTimeout=100;

c_ncb.SendTimeout=100;

c_ncb.PostRoutine=0;

c_ncb.AdapterNumber=0;

NetBios(); // Вызываем NETBIOS

neterr = c_ncb.FinalCCode;

NetworkChannelNumber=c_ncb.LocalSessionNumber;

if (neterr == 0x00) printf("Create channel - O'k.\n");

else printf("Create channel - Errors.\n");

}

 

Функция создания канала на приемной стороне

void Listen(void)

{

c_ncb.Cmd = NB_WListen;

SetCallName("ORLOV");

c_ncb.ReceiveTimeout=30;

c_ncb.SendTimeout=30;

NetBios(); // Вызываем NETBIOS

neterr = c_ncb.FinalCCode;

NetworkChannelNumber=c_ncb.LocalSessionNumber;

if (neterr == 0x0) printf("Create channel - O'k.\n");

else printf("Create channel - Errors.\n");

 

}

 

Функция закрытия канала

void WHangUp(void)

{

r_ncb.Cmd=NB_WHangUp;

r_ncb.LocalSessionNumber=NetworkChannelNumber;

NetBios(); // Вызываем NETBIOS

neterr = r_ncb.FinalCCode;

if (neterr == 0x00) printf("Delete channel - O'k.\n");

else printf("Delete channel - Errors.\n");

}

 

Функция передачи данных по каналу

void WSend ( char *SendBuffer, unsigned BufferSize)

{

c_ncb.LocalSessionNumber=NetworkChannelNumber;

c_ncb.Buffer=SendBuffer;

c_ncb.Size=BufferSize;

c_ncb.Cmd = NB_WSend;

NetBios();

neterr = c_ncb.FinalCCode;

if (neterr == 0x00) printf("Send in channel - O'k.\n");

else printf("Send in channel - Errors.\n");

}

 

Функция приема данных из канала

void WRead ( char *ReadBuffer, unsigned BufferSize)

{

r_ncb.LocalSessionNumber=NetworkChannelNumber;

r_ncb.Buffer=ReadBuffer;

r_ncb.Size=BufferSize;

r_ncb.Cmd = NB_WReceive; // Получение датаграмм с ожиданием

NetBios();

}

 

8.4.6 Программирование пересылки данных

Прием и передача датаграм

При передаче датаграмм на обычное имя используется команда WSendDatagram(), а для передачи на групповое имя – команда WsendBroadcastDatagram(). Команды предназначены для передачи блока данных размером от 1 до 512 байт в виде датаграммы (без подтверждения). Перед вызовом NETBIOS необходимо заполнить следующие поля NCB:

Ncb.Cmd – номер команды,

Ncb.NetworkNameNumber – код имени станции,

Ncb.CallName[16] – имя принимающей станции,

Ncb.OurName[16] – имя своей станции,

Ncb.Buffer – адрес буфера с данными,

Ncb.Size – размер буфера.

На приемной стороне для выполнения команды приема на обычное имя используется команда WReceiveDatagram(), а для приема на групповое имя – WReseiveBroadcastDatagram(). Перед вызовом NETBIOS необходимо заполнить следующие поля NCB:

Ncb.Cmd – номер команды,Ncb.NetworkNameNumber – код имени станции,

Ncb.OurName[16] – имя своей станции,

Ncb.Buffer – адрес буфера для приема данных,

Ncb.Size – размер буфера.

Создадим на языке Си программу для передачи датаграммы с именем send_Netbios() и программу для приема датаграммы с именем receive_Netbios(). Все основные константы, такие как коды команд, структура блока NCD и другие, введем в include-файл netbios.h.

Приведем содержимое файла netbios.h:

//===============================
//Файл ntnbios.h
#include <dos.h>
#include <string.h>
#include <stdio.h>
#include <mem.h>
// Команды NETBIOS
//Здесь приведен перечень команд и их коды в виде:
#define NB_WAddName 0x30
#define NB_AddName 0xb0

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

#define NB_SessionStatus Oxb4

extern unsigned neterr;

// Стандартный блок NCB а формате NETBIOS

extern struct _NCB {
unsigned char Cmd;
unsigned char CCode;
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .

unsigned char Reserved[14];
};
//===============================

Приведем содержимое файла send_Netbios(). В этой программе имя передающей станции Client, а принимающей Server. Данные для передачи вводятся с клавиатуры в буфер zu[], размером в 256 байт.

//============================================

// файл send_Netbios()

#include <stdio.h>

#include <stdlib.h>

#include <dos.h>

#include <process.h>

#include <conio.h>

#include <mem.h>

#include <string.h>

#include "netbios.h"

struct SREGS sregs;

union REGS regs;

unsigned neterr;

void interrupt ( *int5C)(...);

_NCB c_ncb;

char sbuf[512];

/* Переменные для хранится имени клиента и номера этого имени */

char OurName[16];

unsigned NetworkNameNumber;

int i;

char zu[256]; // буфер формируемых данных

/* Здесь описываются все необходимые функции NETBIOS*/

void Init_NetBIOS(){

. . . . . . . . . . . . . . . . . . . .

}

void NetBios(void){

. . . . . . . . . . . . . . . . . . . .

}

void InitNCB( ){

. . . . . . . . . . . . . . . . . . . .

}

void WAddName(char *name){

. . . . . . . . . . . . . . . . . . . .

}

void WDelName( char *name){

. . . . . . . . . . . . . . . . . . . .

}

// Установка имени вызываемого партнера

void SetCallName(char *name){

. . . . . . . . . . . . . . . . . . . .

}

void WSendDatagram( char *SendBuffer, unsigned BufferSize){

. . . . . . . . . . . . . . . . . . . .

}

void main()

{

clrscr();

printf("\n\nPrint Text: ");

scanf("%s20",zu);

for(i=0;i<20;i++)

{sbuf[i]=zu[i];}

Init_NetBIOS();

InitNCB();

WAddName("Client");

SetCallName("Server");

delay(1000);

WSendDatagram(sbuf,sizeof(sbuf));

getch();

WDelName("Client");}

Программа receive_Netbios() составляется аналогично. В этой программе устанавливается имя принимающей станции Server.

//============================================

// файл receive_Netbios()

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

void WReadDatagram( char *ReadBuffer, unsigned BufferSize){

. . . . . . . . . . . . . . . . . . . .

}

// === основная программа ===

void main(){

clrscr();

Init_NetBIOS();

InitNCB();

WResetAdapter();

WAddName("Server");

WReadDatagram (rbuf,sizeof(rbuf));

printf("Wait message\n Press any key for EXIT\n");

while(!kbhit()) {

if(!r_ncb.FinalCCode) {

printf("Packet Received:\n");

printf("%s", rbuf);

WDelName("Server"); break;

}

}

getch();

WDelName("Server");

}

 

Прием и передача по каналу

Для приема и передачи по каналу вначале необходимо создать канал на передающей стороне с помощью команды NB_WСall и на приемной стороне с помощью команды NB_Wlisten. Перед вызовом NETBIOS для выполнения этих команд необходимо заполнить следующие поля NCB:

Ncb.Cmd – номер команды,

Ncb.CallName[16] – имя принимающей станции,

Ncb.OurName[16] – имя своей станции,

Ncb.ReceiveTimeout – время ожидания приема в ½ секундах,

Ncb.SendTimeout – время ожидания передачи в ½ секундах.

В результате получим номер установленного канала LocalSessionNumber. На приемной стороне можно указать в качестве имени символ “*”, что позволит установить канал с любой вызывающей станцией.

При передаче по каналу используется команда NB_WSend. Команды предназначены для передачи блока данных размером от 1 до 65535 байт. Перед вызовом NETBIOS для выполнения этой команды необходимо заполнить следующие поля NCB:

Ncb.Cmd – номер команды,

Ncb.LocalSessionNumber – номер созданного канала,

Ncb.Buffer – адрес буфера с данными,

Ncb.Size – размер буфера.

На приемной стороне для выполнения приема используется команда NB_Wreceive. Для выполнения этой команды перед вызовом NETBIOS необходимо заполнить те же поля NCB, что и при передаче.

 

Задание.

Создайте файлы send_Netbios.cpp, receive_Netbios.cpp и netbios.h. Произведите отладку этих программ. Запустите поочередно программу приема и программу передачи на одной ЭВМ в разных окнах. Проделайте то же самое на двух разных машинах локальной сети.

 

8.5 Программирование протокола TCP/IP

Цель работы: Изучение элементов передачи данных между компьютерами в локальной сети с использованием протоколов TCP/IP. Программирование обменов.

8.5.1 Описание протокола TCP/IP

Межпроцессорные взаимодействия в сетях TCP/IP реализуются по системе “клиент-сервер”. Как правило, клиент отправляет сообщение серверу, который после получения сообщения определяет по служебной информации адрес клиента. Сервер может отправить сообщение к клиенту по определенному адресу.

Процессы в сетях TCP/IP адресуются с помощью коммуникационных доменов – сокетов. Согласно схеме адресации TCP/IP, коммуникационный узел однозначно идентифицируется двумя значениями: адресом хоста (IP-адрес) и адресом процесса (адрес порта). Эта адресация отражается в структуре сокета sockaddr:

Struct sockaddr_in {

short sin_family; домен AF_INET u_short sin_port; номер порта

struct in_addr sin_addr; IP-адрес

char sin_zero[8];

};

Создание и инициализация сокета

После инициализации интерфейса Windows Sockets приложение должно создать один или несколько сокетов, которые будут использованы для передачи данных. Сокет создается с помощью функции socket, имеющей следующий прототип:SOCKETsocket(int af, int type, int protocol);

Параметр af определяет формат адреса. Для этого параметра следует указывать значение AF_INET, что соответствует формату адреса, принятому в InterNet. Параметры type и рrоtосоl определяют соответственно тип сокета и протокол, который будет использован для данного сокета, можно указывать сокеты следующих двух типов:

Тип сокета

Описание

SOCK_STREAM

Сокет будет использован для передачи данных через канал связи с использование протокола TCP

SOCK_DGRAM

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

Что же касается параметра protocol, то для него следует указать нулевое значение. В случае успеха функция socket возвращает дескриптор (тип SOCKET), который следует использовать для выполнения всех операций над данным сокетом.Ниже приведен фрагмент кода, в котором создается сокет для передачиданных с использование протокола TCP

srv_socket = socket(AF_INET, SOCK_STREAM, 0);

if (srv_socket == INVALID_SOCKET){

MessageBox(NULL, "Ошибка создания сокета", "Error", MB_OK);

return;

}

Удаление сокета

Для освобождения ресурсов приложение должно закрывать сокеты, которые ему больше не нужны, вызывая функцию closesocket:

int

closesocket(SOCKET sock);

Параметры сокета

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

struct sockaddr{

u_short sa_family;

char sa_data[14];}

;typedef struct sockaddr SOCKADDR;

typedef struct sockaddr *PSOCKADDR;

typedef struct sockaddr FAR *LPSOCKADDR;

Для работы с адресами в формате InterNet используется другой вариантэтой структуры, в котором детализируется формат поля sa_data

struct sockaddr_in{

short sin_family;

u_short sin_port;

struct in_addr sin_addr;

char sin_zero[8];} ;

typedef struct sockaddr_in SOCKADDR_IN;

typedef struct sockaddr_in *PSOCKADDR_IN;

typedef struct sockaddr_in FAR *LPSOCKADDR_IN;

Поле sin_family определяет тип адреса. Следует записать в это поле значение AF_INET, которое соответствует типу адреса, принятому в InterNet (структура srv_address имеет тип SOCKADDR_IN) srv_address.sin_family = AF_INET;

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

Перед передачей данных клиент должен установить соединение с сервером. Эта схема приведена на рис.8.5.

В соответствии с этой схемой сервер производит связывание с портом с помощью функции bind() и сообщает о возможности приема запросов с помощью функции listen(). При получении запроса он с помощью функции accept() создает новый сокет, который и обслуживает обмен данными между клиентом и сервером. Для обработки поступающих запросов сервер порождает отдельный процесс на каждый поступивший запрос. Дочерний процесс принимает сообщения от клиента с помощью функции recv() и передает их с помощью функции send().

Клиент после создания сокета посылает запрос на соединение с помощью функции connect(), указывая адрес сервера (IP-адрес и номер порта). После установление соединения (“тройное рукопожатие”) клиент передает сообщение с помощью функции send() и принимает с помощью функции recv().

Рис.8.5. Схема установления связи и передачи данных

Утилита bind необходима для привязки адреса к сокету. То есть после подготовки структуры SOCKADDR (записи в нее параметров сокета - в частности, адреса) следует привязку адреса к сокету при помощи функции bind:

int

bind(SOCKET sock, const struct sockaddr FAR *addr, int namelen);

Параметр sock содержит дескриптор созданного ранее функцией socket сокета, в поле addr следует записать указатель на подготовленную структуру SOCKADDR, в поле namelen - размер этой структуры. В случае ошибки функция bind возвращает значение SOCKET_ERROR

Пример вызова функции bind показан ниже:

if (bind(srv_socket, (LPSOCKADDR) &srv_address,

sizeof(srv_address)) == SOCKET_ERROR)

{

closesocket(srv_socket);

MessageBox(NULL, "Ошибка функции Bind", "Error", MB_OK);

return;

}

При создании канала связи со стороны сервера прежде всего следует переключить сокет в режим приема для выполнения ожидания соединения с клиентом при помощи функции listen

int

listen(SOCKET sock, int backlog);

Ниже приведен пример вызова функции listen

if (listen(srv_socket, 1) == SOCKET_ERROR)

{closesocket(srv_socket);

MessageBox(NULL, "Ошибка функции Listen", "Error", MB_OK);

return;}

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

Функция accept имеет следующий прототип

SOCKET

accept(SOCKET sock, struct sockaddr FAR *addr, int FAR *addrlen);

С целью получения адреса IP используется функция gethostbyname.

Передача и прием данных

После создания канала связи можно начинать передачу данных. Для передачи данных посредством протокола гарантированной доставки TCP можно воспользоваться функциями send и recv, входящими в программный интерфейс Windows Sockets.

Функция передачи данных send имеет 4 параметра - дескриптор сокета sock, на котором выполняется передача, адрес буфера buf, содержащего передаваемое сообщение, размер этого буфера bufsize и флаги flags

int send(SOCKET sock, const char FAR *buf, int bufsize, int flags);

Параметры предназначенной для приема данных функции recv аналогичны параметрам функции send

int

recv(SOCKET sock, char FAR *buf, int bufsize, int flags);

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

 

8.5.2 Программирование передачи данных

Приведем пример программы talk.cpp, реализующей диалог между ЭВМ в локальной сети. Машины сети адресуются с помощью IP-адреса. Можно использовать программу на одной машине, запустив программу в разных окнах. В этом случае можно использовать в качестве IP-адреса локальный адрес 127.0.0.1.

Для компиляции программы выполним следующие команды:

set path=С:\bc5\bin%path%

bcc32 <talk.cpp>

При успешном получении исполняемого файла talk.exe, запустим его с указанием IP-адреса ЭВМ, с которой будем обмениваться данными

 

Задание.

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

 

Список литературы

  1. Нанс Б. Компьютерные сети. Пер. с англ. -М.: БИНОМ, 1996. -395 c.
  2. ОлиферВ.Г., Олифер Н.А. Компьютерные сети : Санкт-Петербург: Питер, 2002г., -668 с.
  3. Якубайтис Э.А. Архитектура вычислительных сетей : -М: Статистика, 1980г., 280с.
  4. Фролов А.В., Фролов Г.В. Локальные сети персональных компьютеров : -М: Диалог-МИФИ, 1995г., 160с.
  5. Фролов А.В., Фролов Г.В.. Глобальные сети компьютеров (практическое введение в InterNet, E-Mail, FTP, WWW и HTML, программирование для Windows Socket). Библиотека системного программиста, т.23. -М.: Диалог-МИФИ, 1996. -288 c
  6. Барфилд Э., Уолтерс Б. Программирование “клиент-сервер” в локальных вычислительных сетях: -М.: Филинъ, 1997г.,422с.
  7. Graig Hunt TCP/IP Network Administration: , -New York, 1996, 460p.
  8. Робачевский А. Операционная система UNIX: BHV-Санкт Петербург, 2004., -516 с.

 

наверх


назад