Технологии сетевых коммуникаций. Учебно-методическое пособие
.pdfМинистерство образования и науки Российской Федерации
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
__________________________________________________________________________
А.Б. КОЛКЕР
ТЕХНОЛОГИИ СЕТЕВЫХ КОММУНИКАЦИЙ
Учебно-методическое пособие
НОВОСИБИРСК
2016
УДК 004.724 (075.8) К 605
Рецензенты:
канд. техн. наук А.В. Гунько канд. техн. наук А.В. Гочаков
Работа подготовлена на кафедре автоматики и утверждена Редакционно-издательским советом университета в качестве учебно-методического пособия для студентов, обучающихся по направлению 27.03.04
Колкер А.Б.
К 605 Технологии сетевых коммуникаций: учебно-методическое пособие / А.Б. Колкер. – Новосибирск: Изд-во НГТУ, 2016. – 92 с.
ISBN 978-5-7782-2870-2
Учебно-методическое пособие предназначено для изучения современных технологий обмена различной информацией при помощи компьютерных сетей. Рассматриваются нюансы создания сетевых приложений на языках программирования shell (bash) и Cи. Учебно-методическое пособие снабжено рекомендациями для организации учебного процесса в лаборатории, а также исходными текстами программ, предназначенных для выполнения на компьютере преподавателя. Несмотря на то, что при организации учебного процесса рекомендуется в качестве базовой операционной системы использовать ОС Линукс, термины, факты и примеры, изложенные в данном пособии, соответсвуют фундаментальным основам теории сетей и коммуникаций.
Колкер Алексей Борисович ТЕХНОЛОГИИ СЕТЕВЫХ КОММУНИКАЦИЙ
Учебно-методическое пособие
Редактор Л.Н. Ветчакова
Выпускающий редактор И.П. Брованова Компьютерная верстка С.И. Ткачева
Налоговая льгота – Общероссийский классификатор продукции Издание соответствует коду 95 3000 ОК 005-93 (ОКП)
Подписано в печать 23.03.2016. Формат 60 84 1/16. Бумага офсетная. Тираж 50 экз. Уч.-изд. л. 5,34. Печ. л. 5,75. Изд. № 56. Заказ № 480. Цена договорная
Отпечатано в типографии Новосибирского государственного технического университета
630073, г. Новосибирск, пр. К. Маркса, 20
|
УДК 004.724 (075.8) |
ISBN 978-5-7782-2870-2 |
© Колкер А.Б., 2016 |
|
© Новосибирский государственный |
|
технический университет, 2016 |
Оглавление |
|
Введение.................................................................................................................. |
4 |
ЛАБОРАТОРНАЯ РАБОТА № 1. Основы TCP-IP.............................................. |
5 |
ЛАБОРАТОРНАЯ РАБОТА № 2. Разработка сетевого приложения |
|
с использованием встроенного командного языка shell.................................... |
17 |
ЛАБОРАТОРНАЯ РАБОТА № 3. Защита информации в сетях....................... |
28 |
ЛАБОРАТОРНАЯ РАБОТА № 4. Разработка сетевого приложения |
|
на языке Си............................................................................................................ |
44 |
ЛАБОРАТОРНАЯ РАБОТА № 5. Разработка приложения сетевого сер- |
|
вера на языке Си ................................................................................................... |
58 |
ЛАБОРАТОРНАЯ РАБОТА № 6. Разработка приложения с использо- |
|
ванием распределенной системы обмена сообщениями ZMQ ........................ |
69 |
ЛАБОРАТОРНАЯ РАБОТА № 7. Разработка сетевого мультимедийно- |
|
го приложения....................................................................................................... |
79 |
ЛАБОРАТОРНАЯ РАБОТА № 8. Подведение итогов, итоговая дискус- |
|
сия, семинар .......................................................................................................... |
92 |
ВВЕДЕНИЕ
Настоящее учебно-методическое пособие предназначено для методической поддержки лабораторных работ и приобретения навыков работы с различными технологиями обмена информацией при помощи компьютерных сетей. Учебно-методическое пособие соответствует структуре дидактических единиц учебной программы ФГОС3.3+ дисциплины «Информационные сети и коммуникации» направления 27.03.04 дневной и дистанционной форм обучения. Темы занятий нацелены на получение навыков разработки сетевых приложений на языках программирования. Каждое занятие снабжено вводной теоретической частью, заданиями, вопросами для самоконтроля и рекомендациями для преподавателя, в том числе исходными текстами программного обеспечения, которое потребуется установить на его компьютере. Примеры текстов программ на языке СИ, приведенные в данном пособии, соответствуют стандарту ISO/IEC 9899:1999 – «Стандарт языка программирования СИ», а все задействованные библиотеки являются кроссплатформенными и свободно распространяемыми. Особое внимание уделяется изменениям, которые ожидают пользователей
иразработчиков при массовом внедрении стека протоколов IPv6. Для выполнения лабораторных работ рекомендуется использовать любую популярную версию настольной операционной системы Линукс, например, широко используемые для «десктопных» систем, сборки Ubuntu, к каждой лабораторной работе приводятся требования к пакетам, которые должны быть установлены для ее выполнения. Тем не менее термины, факты, примеры, изложенные в данном пособии, соответствуют фундаментальным основам теории сетей и коммуникаций
иостаются в основном актуальными при использовании любых других версий Линукс и, с точностью до синтаксиса некоторых команд, для других основных операционных систем (обеспечивающих основные термины совместимости POSIX).
ЛАБОРАТОРНАЯ РАБОТА № 1
Основы TCP-IP
Цель работы: ознакомление с основными приемами работы с сетями TCP-IP, настройки интерфейсов, маршрутизации TCP-IP пакетов, работы с сетью в консольном режиме.
1. Краткие теоретические сведения
Лабораторная работа выполняется в среде операционной системы
OS Linux.
Базовые понятия:
-Сервер
-IP-адрес
-Маска адреса
-Маршрутизатор
-Шлюз
-Порт
-Сокет
-Демон
Сервер: узловой компьютер в сети, предоставляющий какие-то ресурсы в совместное использование.
Многоуровневая структура протоколов
Протоколы семейства TCP-IP можно представить в виде модели, состоящей из четырех уровней: прикладного, основного, межсетевого и сетевого.
Уровень сетевого интерфейса
Данный уровень лежит в основании всей модели протоколов семейства TCP-IP. Уровень сетевого интерфейса отвечает за отправку в сеть и прием из сети кадров, которые содержат информацию. Кадры передаются по сети как одно целое. Кадр (frame) – это единица данных, которыми обмениваются компьютеры в сети Ethernet.
5
Межсетевой уровень
Протоколы Интернет инкапсулируют блоки данных в пакеты (дейтаграммы) и обеспечивают необходимую маршрутизацию. К основным Интернет-протоколам относятся:
IP (Internet Protocol) ... предназначен для отправки и маршрутизации пакетов;
ARP (Address Resolution Protocol) ... используется для получения МАС-адресов (аппаратных адресов) сетевых адаптеров;
ICMP (Internet Control Message Protocol) ... предназначен для от-
правки извещений и сообщений об ошибках при передаче пакетов;
IGMP (Internet Group Management Protocol)... используется узла-
ми для сообщения маршрутизаторам, которые поддерживают групповую передачу, о своем участии в группах;
RIP (Route Internet Protocol) и OSPF (Open Shortest Path First) ...
протоколы маршрутизации.
На этом уровне реализуется передача пакетов без установки соединения – дейтаграммным способом. Межсетевой уровень обеспечивает перемещение пакетов по сети с использованием наиболее рационального маршрута (протокол OSPF). Основная функция межсетевого уровня – передача пакетов через составную сеть, поэтому этот уровень также называется уровнем Интернет.
Транспортный (основной) уровень
Данный уровень обеспечивает сеансы связи между компьютерами. Существует два транспортных протокола: TCP (Transmission Control Protocol) и UDP (User Datagram Protocol). Протокол TCP ориентирован на установление соединения, т. е. перед передачей данных компьютеры «договариваются» между собой. Обычно по этому протоколу передаются большие объемы данных или данные, для которых требуется подтверждение их приема. Этот протокол используется большинством сетевых приложений, так как обеспечивает достаточную надежность при передаче данных. Протокол UDP не ориентирован на соединение и не гарантирует доставку пакетов (дейтаграмм). Однако протокол UDP является более быстродействующим по сравнению с TCP. Обычно по этому протоколу передаются небольшие объемы данных. Ответственность за доставку данных несет сетевая программа.
6
Уровень приложений
Данный уровень является вершиной модели TCP-IP. На этом уровне работают практически все распространенные утилиты и служ-
бы: DNS, Telnet,WWW, Gopher, WAIS, SNMP, FTP, TFTP, SMTP, POP, IMAP.
IP-Адрес
За активацию интерфейса в Unix-системах отвечает команда ifconfig. Формат команды можно найти в приложении. Команда ifconfig активирует сетевой интерфейс с указанным адресом и маской. Каждый узел в сети TCP имеет свой уникальный адрес – 32-битное число, которое обычно записывается при помощи четырех октетов через точку, например, 192.168.6.1. Маска – 32-битное число, позволяющее выделять фрагмент из адресного пространства сети.
Выделяют несколько классов сетей: |
|
|
|
А: 0 |
0.0.0.0 - 127.255.255.255 |
0 |
7 битИД сети 24 бит – ИД узла |
В: 10 128.0.0.0 - 191.255.255.255
C: 110 192.0.0.0 - 223.255.255.255
10 |
|
14 битИД сети |
|
|
16 бит – ИД узла |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
110 |
|
21 битИД сети |
|
|
|
8 бит – ИД узла |
|
|
|
|
|
|
|
D: 1110 224.0.0.0 – 239.255.255.255 |
1110 |
|
28 бит – ИД узла |
|
|
|
|
|
|
|
|
Маска подсети позволяет выделять из указанной сети определенный фрагмент, например:
IP 192.168.6.1
Маска 255.255.255.0 -> 11111111 11111111 11111111 00000000
Позволяет получить доступ к 254 компьютерам, адреса которых начинаются с 192.168.6.1 до 192.168.6.254.
IP 192.168.6.1
Маска 255.255.255.252 -> 11111111 11111111 11111111 11111100
выделяет четыре адреса: 192.168.6.0 192.168.6.1
7
192.168.6.2
192.168.6.3
Из них для назначения сетевым интерфейсам может быть использовано лишь два:
192.168.6.1
192.168.6.2
Если весь IP-адрес состоит из нулей (0.0.0.0), то это значит, что он обозначает адрес того узла, который сгенерировал этот пакет.
Адрес 192.168.6.0 будет соответствовать адресу «сети», а 192.168.6.3 будет использован для местного широковещательного сообщения (сообщение будет разослано на все компьютеры подсети, в данном случае на два). Широковещательные запросы очень часто используются, например, для построения ARP-таблиц.
Особое значение имеет IP-адрес 127.0.0.1 – это адрес локального компьютера. Он используется для тестирования сетевых программ и взаимодействия сетевых процессов. При попытке отправить пакет по этому адресу данные не передаются по сети, а возвращаются протоколам верхних уровней как только что принятые. При этом образуется как бы «петля». Этот адрес называется loopback. В IP-сети запрещается использовать IP-адреса, которые начинаются со 127. Любой адрес подсети 127.0.0.0 относится к локальному компьютеру, например: 127.0.0.1, 127.0.0.5, 127.77.0.6.
Существуют также специальные адреса, которые зарезервированы для несвязанных локальных сетей – это сети, которые используют протокол IP, но не подключены к Интернет. Вот эти адреса:
10.0.0.0 (сеть класса А, маска сети 255.0.0.0). 172.16.0.0...172.31.0.0 (16 сетей класса В, маска каждой сети 255.255.0.0).192.168.0.0...
192.168.255.0 (256 сетей класса С, маска каждой сети 255.255.255.0).
Для сопоставления IP-адреса MAC-адресу адаптера служит протокол ARP. Упрощенный механизм его действия следующий: если запрашивается адрес, принадлежащий текущей сети, то на всю сеть рассылается широковещательный запрос «кто имеет адрес IP?». Владелец адреса отвечает собственный МАС-адрес и сохраняется в таблице ARP. Далее пакеты посылаются адресно с указанием конкретного MAC-адреса. Если запрос посылается за пределы домашней сети, то данный запрос пересылается маршрутизатору по умолчанию.
Порт: Номер порта – это номер программы, которая будет обрабатывать переданные данные. Каждой сетевой программе, которая рабо-
8
тает по протоколу TCP-IP, сопоставлен свой номер порта. Например, 80 – это порт WWW-сервера, a 53 – это порт системы доменных имен. Порты с 0 по 1023 зарезервированы за определенными службами или приложениями, с 1023 по 65535 – «пользовательские» порты, их использование не регламентируется.
Сокет: Сокет – во многом аналогичен дескриптору файла и используется для обмена информацией между сетевыми приложениями.
Демон: программа, работающая в фоновом режиме. Как правило, выполняет какие-либо системные функции.
Маршрутизация, маршрут (routing,route) – процесс выбора пути для передачи пакетов. Маршрутизация осуществляется на узле TCPIP в момент отправки пакетов, а затем на IP маршрутизаторе. Настройка таблицы маршрутов в OC LINUX осуществляется коман-
дой route.
Маршрутизатор (router) – устройство, которое перенаправляет пакеты из одной сети в другую.
Маршрут по умолчанию (default router) – маршрутизатор, на ко-
торый направляются все пакеты, адресат которых находится за пределами домашний сети, и в таблице маршрутизации про его местоположение неизвестно.
2. Методические указания
2.1.Пред выполнением любых операций с сетью необходимо активизировать сетевой интерфейс командой ifconfig.
2.2.Для операций с маршрутами и сетевыми интерфейсами необходим пароль администратора. Будьте осторожны, права администратора позволяют неосторожными действиями разрушить систему.
2.3.Все файлы и Shell script необходимо создавать в каталоге /home/user/ГРБР (ГР-номер группы, БР-бригада). Пример shell-скрипта смотрите в приложении.
2.4.Для реализации задачи, выполняемой скриптом, создавайте программный канал между сетевой командой (ping, traceroute, netstat, tcpdump, arp) и командой-фильтром grep, результат направляйте команде - счетчику wc:
ping [адрес] | grep “подстрока” | wc –ключ, или используйте код возврата :f[$?-eq 0]; then…
9
2.5.В качестве строки поиска для команды-фильтра grep указывайте строку, которая гарантированно присутствует в успешном ответе и отсутствует в сообщении об ошибке. Например, для команды ping – такая строка может быть «reply».
2.6.Об успешности выполнения команды можно судить по количеству символов в ответе, который вернет wc: если успешно – результат >0, если нет, то =0.
2.7.Запуская в шелл-скрипте сетевую команду ping, tcpdump, задавайте ключ –c N, где N – желаемое количество обработанных пакетов.
Впротивном случае команда будет выполняться непрерывно.
2.8.Процесс недоступности сетевого адреса (отсутствия сетевого трафика на интерфейсе) можно смоделировать путем отсоединения разъема сетевого кабеля RJ45 от сетевой карты.
2.9.Процесс сетевого обмена с адресом можно инициировать, выполняя ping из другой консоли.
2.10.Успешность некоторых команд можно проверить по их коду
возврата в переменной $?
3. Порядок выполнения работы
3.1.Ознакомиться с командой манипуляции сетевыми интерфейса-
ми ifconfig.
3.2.Активировать сетевой интерфейс с адресом согласно варианту задания.
3.3.Активировать логический интерфейс (ifconfig eth0:1) с адресом согласно варианту задания.
3.4.Изучить команду настройки таблицы маршрутов route, настроить таблицу маршрутов согласно варианту заданий.
3.5.Изучить команду протоколирования потока данных через сетевой интерфейс tcpdump (tcpdump –i интерфейс).
3.6.Изучить команду пакетного локатора ping. Выполнить ping между этими двумя интерфейсами (ping адрес).
3.7.Сохранить в файл dump.rep поток данных через сетевой интерфейс при выполнении команды ping.
3.8.Выполнить ping маршрутизатора по умолчанию, результат сохранить в файле gateping.rep.
3.9.Вывести таблицу ARP. Удалить все записи из таблицы ARP. Выполнить ping маршрутизаторов, соседних компьютеров. Вывести таблицу ARP. Сохранить таблицу ARP в файле arp.rep.
10
