38f1669e5a152f1721cfe87baf399c45.ppt
- Количество слайдов: 91
Многоуровневые сетевые модели
Пример трехуровневой модели Философ, индус: «Кто такой человек? » Переводчик хинди-английский Уровень философов Уровень переводчиков Философ, голландец. Переводчик английский-голландский Почтовый уровень Почтовое отделение в Индии линия связи Почтовое отделение в Голландии 2
Передача сообщения 3
Эталонная модель OSI l l OSI - Open Systems Interconnection Reference Model (эталонная модель взаимодействия открытых систем) Создавалась как единый международный стандарт сетевых технологий. 4
Физический уровень (Physical Layer) l l l Преобразует биты в исходящие сигналы, передает сигналы и, затем, преобразует входящие сигналы в биты. Данные рассматриваются как поток битов. Определяет: l l l характеристики сигналов среду передачи физическую топологию среды передачи механические и физические (электрические, оптические) спецификации среды передачи интерфейсы (разъемы) оборудования 5
Канальный уровень (уровень передачи данных Data Link Layer) l l Передает кадры (frames) - наборы битов - между двумя компьютерами сети, непосредственно связанными между собой Функции канального уровня: l l l взаимодействие со средой передачи данных (протокол MAC) надежная доставка управление потоком Идентификация компьютеров: MAC-адреса Технологии: Ethernet (802. 3), Wi. Fi (802. 11), Token Ring (802. 5), SONET/SDH 6
Сетевой уровень (Network Layer) l l Отвечает за передачу датаграмм между удаленными компьютерами Функции сетевого уровня: l l l адресация компьютеров во всей глобальной сети (IPадреса) выбор маршрута доставки сообщений не обеспечивает надежность доставки (искажения, потери, изменение порядка следования) best-effort delivery Протоколы: IP (Internet Protocol), ARP, RARP, ICMP, DHCP 7
Транспортный уровень (Transport Layer) l Осуществляет надежную доставку данных от отправителя к получателю l Функции транспортного уровня: l l l установление надежного соединения контроль ошибок: искажения пакетов, потери, изменение порядка следования, дублирование контроль потока данных сегментирует и повторно собирает данные в один поток Адресация соединений: (IP 1, IP 2, P 2) Протоколы: TCP, UDP 8
Сеансовый уровень (Session layer) l l Позволяет двум сторонам поддерживать длительное взаимодействие (сеанс) по сети Функции сеансового уровня: l l l установление сеанса поддержка/управление сеансом разрыв сеанса синхронизация передачи данных (можно помещать контрольные точки в поток данных и возвращаться назад к определенной точке) Примеры протоколов: H. 245, SSH 9
Уровень представления (Presentation layer) l Уровень отвечает за l l l преобразование форматов данных кодирование/декодирование Примеры преобразования данных: l l l Форматирование Сжатие Перевод Кодирование Шифрование 10
Прикладной уровень (Application layer) l l Обеспечивает взаимодействие сети и пользователя Протоколы этого уровня определяют совместно используемые сетевые службы, например: l l l WWW Электронная почта Сетевая печать Пересылка файлов через сеть Адресация приложений: номер порта Протоколы: HTTP, SMTP, POP 3, IMAP, FTP 11
Общие замечания относительно OSI ISO l l Избыточность и низкая функциональность верхних уровней Учет в стандартах всех теоретически возможных ситуаций Сложность спецификаций для реализации Очень высокие требования к ресурсам сетевых компьютеров 12
Эталонная модель TCP/IP 13
Транспортный уровень
Функции транспортного уровня l обеспечивает логическое соединение между приложениями l реализует надежную передачу данных l обеспечивает контроль скорости передачи данных l Протоколы: TCP (надежный) и UDP (ненадежный)
Мультиплексирование и демультиплексирование l мультиплексирование - сбор сообщений от сокетов всех приложений и добавление заголовков l демультиплексирование – распределение приходящих данных по сокетам l l для UDP нужный сокет определяется номером порта получателя для TCP – номером порта получателя, IPадресом и номером порта отправителя
Протокол UDP l l UDP (User Datagram Protocol) – выполняет минимум действий, позволяя приложению почти напрямую работать с сетевым уровнем гораздо быстрее TCP l l l не нужно устанавливать соединение возможны потери сегментов осуществляет контроль корректности передаваемых данных (контрольная сумма)
Структура UDP-сегмента Заголовок - всего 8 байт
Недостатки протоколов с ожиданием подтверждений l l l Есть 1 Гб-канал Ростов - Москва Время отправки 1000 байт = 8000 бит: 8000 бит / 1 Гб/с = 8 мкс Время распространения сигнала: 1000 км / 300 000 км/с = 3333 мкс Итого: следующие 1000 байт будут отправлены более чем через 6674 мкс Вывод: 99, 9% времени канал не используется
Конвейеризация пакетов. Протоколы скользящего окна. l l Выход: отправлять пакеты группами без ожидания квитанций – это конвейеризация Два подхода: l l GBN (Go Back N) – возвращение на N пакетов назад SR(Selective Repeat) – выборочное повторение
Формат TCP-сегмента
Порядковые номера и номера подтверждения l l порядковый номер сегмента — номер первого байта этого сегмента номер подтверждения — это порядковый номер следующего ожидаемого байта
Протокол TCP Тройное рукопожатие
Борьба с перегрузкой в TCP
Борьба с перегрузкой в TCP
Интерфейс транспортного уровня. Сокеты. l Socket (гнездо) - структура данных, идентифицирующая сетевое соединение l Команды: l SOCKET – создать новый (пустой) сокет l BIND – сервер связывает свой локальный адрес (порт) с сокетом 26
Интерфейс транспортного уровня. Команды. l LISTEN – сервер выделяет память под очередь подсоединений клиентов и устанавливает сокет в состояние «listening» (TCP) l ACCEPT – сервер ожидает подсоединения клиента или принимает первое подключение из очереди (TCP) CONNECT–клиент запрашивает соединение (TCP) l 27
Интерфейс транспортного уровня. Команды. l SEND / SEND_TO – послать данные (TCP / UDP) l RECEIVE / RECEIVE_FROM – получить данные (TCP / UDP) l DISCONNECT – запросить разъединение (TCP) 28
Реализации l Linux: sys/socket. h l Windows (основана на коде BSD) : winsock 2. h l Кроссплатформенные обертки на C, C++ Обертки в скипровых ЯП l 29
Передача по TCP vs передача по UDP l l l TCP организует «виртуальное» потоковое соединение UDP передает отдельные пакеты На практике наивные программисты думают, что одному вызову send будет соответствовать один вызов recv l l для UDP это верно модуль же TCP «склеивает» и «разделяет» порции данных для удобства и ускорения транспортировки по сети 30
Передача по TCP vs передача по UDP l В случае использования TCP возможны ситуации: l l l отправка несколькими send и получение одним recv отправка одним send и получение всех данных по частям несколькими recv (если размер отправляемых данных > MTU) При вызове recv, если размер параметра «буфер» меньше объема полученных данных, то l l в случае TCP следующие вызовы recv получат оставшиеся данные (часто удобно получать по 1 байту) в случае UDP – не поместившиеся в буфер данные удаляются 31
Сетевой уровень
Основные составляющие l l l Протокол IP – работает на всех компьютерах в цепочке передачи. На каждом решает кому отправить дальше (таблицы маршрутизации) Протоколы маршрутизации – позволяют динамически менять таблицы маршрутизации Иерархическая система адресации (IP-адреса)
IP-адреса l IP-адрес - 4 -байтовое число (32 разряда) l Например, 192. 168. 10. 153 l Он присваивается каждому интерфейсу l Считается, что IP-адрес состоит из двух частей: l l сетевая часть (номер подсети) интерфейсная часть (номер интерфейса узла)
Устаревшее разделение сетей на классы
Бесклассовая адресация Маска адреса
Иерархия IP-адресов
Зарезервированные адреса l 255 – широковещательный l 127. 0. 0. 0 / 8 – петля обратной связи l 10. 0 / 8 и 192. 168. 0. 0 / 16 – частные сети, подсоединенные к Интернету через NAT
Таблица маршрутизации l route print
Домашнее задание
Служебные протоколы. DHCP l l l DHCP - протокол динамического конфигурирования узлов позволяет компьютерам автоматически получать IP-адрес и другие параметры три способа распределения IP-адресов: l l l ручное автоматическое динамическое
Принципы работы DHCP l l Компьютер отправляет широковещательный UDP – пакет: «Кто может назначить мне IP – адрес? » DHCP – серверы сети отправляют в ответ DHCP – предложения Клиент получает список предложений, выбирает нужное и отправляет DHCP – запрос на конкретный сервер От сервера приходит DHCP – подтверждение (в нем указывается IP – адрес, присвоенный клиенту).
Решение проблемы нехватки IP-адресов (NAT)
Маршрутизация l l Маршрутизация (англ. routing) — процесс определения маршрута следования информации в сетях связи Типы маршрутизации: l l l статическая динамическая Алгоритмы маршрутизации: l l дистанционно-векторный алгоритм состояния связей
Иерархическая маршрутизация l l l Вся разбивается сеть на вложенные подсети Внутри каждой автономной подсети используются протоколы внутренней маршрутизации Автономные системы соединяются друг с другом с помощью шлюзов (gateway) Маршрутизация между этими шлюзами - внешняя маршрутизация Все вместе это может быть также автономной подсетью Протоколы: l внутренняя: RIP (Routing Internet Protocol) и OPSF (Open Shortest Path First) l внешняя: BGP (Border Gateway Protocol)
Веб-браузеры – клиенты WWW l l Веб-браузер (Web browser) — это программа для запросов и отображения вебстраниц, и перехода от одной страницы к другой URL (Uniform Resourse Locator) – универсальный адрес ресурса http: //www. math. rsu. ru/index. html протокол имя сервера адрес ресурса на сервере 47
Популярные браузеры Браузер Посетители (ru) Все посетители Internet Explorer 4% 4% Mozilla Firefox 10% 7% Chrome 50% 52% Yandex 11% Opera/Safari 8%/9% 15% Тесты браузеров: HTML 5 test (555 - max): Opera = 489, Chrome = 492, Mozilla = 461, Edge = 460, Safari = 370 48
Другие клиенты l l l Мобильный телефон может получить доступ к ресурсам веб-сервера Другие интеллектуальные устройства или бытовая техника Специальное программное обеспечение может самостоятельно обращаться к вебсерверам для получения обновлений или другой информации 49
Веб-серверы l l Веб-сервер — это программа, принимающая HTTPзапросы от клиентов и выдающий им HTTP-ответы, обычно вместе с HTML-страницей, изображениями, файлами, медиа-потоком или другими данными Дополнительными функциями многих веб-серверов являются: l l l l Virtual hosting поддержка динамически генерируемых страниц, поддержка HTTPS для защищённых соединений с клиентами эффективное разделение ширины канала кэширование аутентификация пользователей, Стандартный порт: 80/TCP (443 - https, 8080) 50
Популярные веб-серверы l l Apache – 43% популярных сайтов Microsoft Internet Information Services (IIS) – 11% nginx — свободный веб-сервер, разработанный Игорем Сысоевым в 2002 году. В текущий момент пользуется большой популярностью на крупных сайтах (yandex. ru) – 28 % lighttpd — свободный веб-сервер, разрабатываемый с расчётом на быстроту и защищённость, а также соответствие стандартам (ya. ru). 51
Установка и настройка Apache l Файл /etc/apache 2/httpd. conf l l l Server. Name localhost Add. Default. Charset windows-1251 Listen 80 Directory. Index index. php index. html Модули /etc/apache 2/mods-available/* Сайты /etc/apache 2/sites-available/* l l
HTTP – Hyper. Text Transfer Protocol Порядок запроса страницы http: //mmcs. sfedu. ru/index. html l Браузер определяет IP-адрес сервера, по известному имени из URL l Устанавливает TCP-соединение с сервером l Отправляет текстовый запрос: GET /index. html HTTP/1. 1 User-Agent: Mozilla/5. 0 (X 11; Ubuntu; Linux x 86_64; rv: 44. 0) Host: mmmc. sfedu. ru Connection: Keep-Alive l Сервер получает запрос и находит требуемый ресурс 53
HTTP – ответ сервера l Сервер формирует ответ, состоящий из заголовка и тела HTTP/1. 1 200 OK Server: Apache/1. 3. 37 (Unix) mod_perl/1. 29 PHP/4. 4. 6 Last-Modified: Tue, 17 Jun 2008 12: 22 GMT Content-Length: 7437 Keep-Alive: timeout=15, max=100 Connection: Keep-Alive Content-Type: text/html
Проблема – передача данных от клиента к серверу l l l протокол HTTP изначально позволял только получать клиенту данные от сервера если добавить возможность отправки данных на веб-сервер, как тогда серверу их обрабатывать? выход: сервер должен запускать программу и передавать ей данные от клиента, а затем отсылать ее результат 55
CGI – Common Gateway Interface l l CGI — стандарт обмена данными между прикладной программой, выполняемой по запросу пользователя, и HTTP-сервером, который данную программу запускает Данные передаются программе l l через переменные окружения на стандартный вход Программа передает данные серверу через стандартный выход. Формат такой же как у HTTP ответа Впервые поддержка CGI была осуществлена на сервере CERN в апреле 1994 года 56
Методы HTTP-запросов l GET- запрашивает содержимое указанного ресурса. В случае наличия у ресурса параметров, они передаются в URI: http: //www. example. net/resource? param 1=value 1¶m 2=value 2 l l POST - передает пользовательские данные (например, из HTML-формы) заданному ресурсу HEAD - запрашивает заголовок указанного ресурса PUT - загружает указанный ресурс на сервер DELETE - удаляет указанный ресурс 57
Метод POST После нажатия на кнопку «отправить» браузер посылает серверу сообщение POST /action. php HTTP/1. 1 Host: test 1. ru User-Agent: Mozilla/5. 0 (Linux) Content-Type: application/x-www-form-urlencoded Content-Length: 18 name=andrey&age=26 58
Передача данных CGI-приложению l GET program. exe? p 1=5&p 2=abc l l l данные передаются серверу в url сервер передает их программе через переменные окружения (QUERY_STRING) POST program. exe l l данные передаются серверу в теле запроса сервер передает их программе через поток стандартного ввода 59
Кодирование и формат отправляемых данных l по умолчанию – application/x-www-form-urlencoded l l l все символы не из первой половины ASCII заменяются их кодами: “a” на “%D 0%B 0” пробелы – на «+» ; «&» – на «%26» multipart/form-data – используется для отправки двоичных данных и данных смешанного типа 60
Кодирование и формат отправляемых данных l application/x-www-form-urlencoded l l Big. Text=Text&pol 1=m multipart/form-data l ------Gt 1 CO 3 w. AR 7 XTbm 1 e. E 7 Lo. A 6 l Content-Disposition: form-data; name="Big. Text" l Text l ------Gt 1 CO 3 w. AR 7 XTbm 1 e. E 7 Lo. A 6 l Content-Disposition: form-data; name="pol 1" l m l ------Gt 1 CO 3 w. AR 7 XTbm 1 e. E 7 Lo. A 6 -- 61
Пример CGI-скрипта (GET) l l l s: =Environment. Get. Environment. Variable('QUERY_ STRING'); writeln(file, 'Переменная окружения QUERY_STRING: ', s); writeln('Content-Type: text/html'); writeln(‘'); writeln('
Пример CGI-скрипта (POST) l l l l l Val(Environment. Get. Environment. Variable('CONTENT_L ENGTH'), n, err); writeln(file, 'Размер: ', n); writeln(file, 'Данные: '); Set. Length(s, n); for i: =0 to n-1 do read(s[i]); for i: =0 to n-1 do write(f, s[i]); writeln('Content-Type: text/html'); writeln('
Недостатки и альтернативы CGI l l вызов программы – «дорогая» операция, особенно если это скрипт, который еще нужно интерпретировать (или откомпилировать) Альтернативные технологии: l l встроенные в веб-сервер модули (mod_php, mod_perl в Apache) Fast CGI 64
Языки программирования CGI -приложений l l l l PHP Perl Microsoft ASP. NET (на сервере IIS) JSP (Java Server Pages) Python Ruby и другие 65
Примеры l Вывод текущего времени (php): Московское время php echo date('H: i', time()); ? > l Вывод таблицы (python): print '
| '+…+' | ' print '
Электронная почта
Четыре основных компонента l l почтовые клиенты пользователей почтовые серверы протокол отправки почты: SMTP протоколы доступа к почтовому ящику: POP 3 или IMAP 68
Клиенты l Функции клиента: l l отправка и получение почты создание, редактирование писем просмотр писем Популярные клиенты: l l Браузер (у серверов с веб-интерфейсом) Microsoft Outlook (входит в MS Office) Mozilla Thunderbird (бесплатная) The Bat (платная) 69
Почтовые серверы l Функции сервера l l l хранение писем пользователей (почтовые ящики) отправка писем почтовому серверу получателя или клиенту пользователя (MTA, MDA, MUA) организация очереди сообщений Используют протокол TCP Стандартные порты: 25 - SMTP, 110 - POP 3, 143 - IMAP 70
Популярные серверы Sendmail (бесплатный, Linux / Windows) l qmail (бесплатный, Linux) l Microsoft Exchange Server (поддерживает Active Directory) l Postfix l MDA: dovecot, procmail и maildrop l 71
Как происходит доставка писем? alisa@mail. ru bob@b. org 72
Протокол SMTP l l используется для транспортировки электронной почты на почтовый сервер работает поверх TCP, стандартный порт сервера 25 посылка почты осуществляется в 3 этапа l приветствие (рукопожатие) l пересылка писем l закрытие сессии команды – обычный ASCII текст 73
Пример SMTP-сессии Server: 220 Mail. Ru ESMTP Client: HELO me. ru Server: 250 mx 24. mail. ru ready to serve Client: MAIL FROM: Server: 250 OK Client: RCPT TO:
На самом деле было так: Server: 220 Mail. Ru ESMTP Client: HELO me. ru Server: 250 mx 24. mail. ru ready to serve Client: MAIL FROM: Server: 250 OK Client: RCPT TO:
Формат сообщения электронной почты From: <адрес отправителя> To: <адрес получателя> Subject: <тема> CC: <список получателей, которым отправится копия> BCC: <список адресов> (это «слепая копия» , то есть получатели не знают, что это письмо отправлено еще кому–то) <Пустая строка> <Текст письма в семибитной кодировке ASCII> 76
Пример From: drug@yandex. ru To: gena@mail. ru Subject: Pozdravlyau! Privet, Gena!!! Pozdravlyau tebya s dnem rojdeniya …. 77
Кодирование сообщений l l MIME (Multipurpose Internet Mail Extension – многоцелевое расширение почты Интернета) — стандарт, описывающий передачу различных типов данных по электронной почте В заголовок сообщения добавляются строки: l l l MIME–Version: 1. 0 Content-Transfer-Encoding: 8 bit Content-Type: text/plain; charset=“Windows-1251” Другие значения поля Content-Type: text/html, image/gif, image/jpeg, multipart/mixed Другие значения поля Content-Transfer-Encoding: 7 bit, 8 bit, binary, base 64, quoted-printable 78
Base 64 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 0123456789+/ Пример: Компьютерные сети! 0 Jr. Qvt. C 80 L/Rj. NGO 0 YLQtd. GA 0 L 3 Ri 9 C 1 INGB 0 LXRgt. C 4 IQ== 79
Дополнения (attachments) From: drug@yandex. ru To: gena@mail. ru Subject: Pozdravlyau! MIME-Version: 1. 0 Content-Type: multipart/mixed; boundary=“-----F 9876678 DDB 9” -----F 9876678 DDB 9 Content-Type: text/plain; charset=Windows-1251 Content-Transfer-Encoding: 8 bit Privet, Gena!!!. . . -----F 9876678 DDB 9 Content-Type: image/jpg; name=“otkritka. jpg” Content-transfer-encoding: base 64 Content-Disposition: attachment; filename=“otkritka. jpg” base 64 encoded data. . . -----F 9876678 DDB 9 80
Доступ к письмам в почтовом ящике l POP 3 - Post Office Protocol; порт сервера 110 l l l IMAP: Internet Mail Access Protocol [RFC 1730]; порт сервера 143 l l авторизация и скачивание сообщений с сервера «толстый почтовый клиент» больше возможностей, более сложный позволяет управлять сообщениями на сервере «тонкий почтовый клиент» HTTP: mail. ru, yandex. ru, gmail. com l «сверхтонкий почтовый клиент» 81
Протокол POP 3 S: +OK C: USER kto_to S: +OK Password required for user kto_to C: PASS 123456 S: +OK C: STAT S: +OK 118 6286336 C: LIST S: +OK 118 messages (6286336 octets) 1 1203 2 534 3 1200432 и т. д. . 82
Протокол POP 3 C: UIDL S: +OK 118 messages (6286336 octets) 1 4323549873 2 5243509832 3 9653582120 и т. д. . C: RETR 115 S: +OK 2259 octets сообщение. C: DELE 115 C: QUIT S: +OK POP 3 server at mail. ru signing off 83
Протокол IMAP l Письма хранятся на сервере, а не на клиенте. Клиент запрашивает только заголовки писем! l Возможен доступ (даже одновременный) к одному и тому же почтовому ящику с разных клиентов l Возможно создание общих папок, к которым могут иметь доступ несколько пользователей l Поддержка поиска на сервере l Поддержка онлайн-работы 84
Доступ к электронной почте через веб-интерфейс l l l Клиент пользователя – веб-браузер Письмо передается веб-серверу по протоколу HTTP, который вызывает CGIприложение, отправляющее письмо адресату Другой вариант: браузер обращается к веб -сокет-серверу, который отправляет почту 85
Спам l Виды: l l l Реклама Антиреклама Нигерийские письма Фишинг Автоматический поиск email-адресов Средства борьбы: фильтрация 86
Сетевое программирование
Обработка запросов одновременно подключенных клиентов l l l l l Вариант 1. Использование потоков while (true) { int *client. Socket = new int[1]; *client. Socket = accept(listen. Socket, NULL); if (*client. Socket < 0) handle. Error("accept failed: "); pthread_t thread. Id; pthread_create(&thread. Id, NULL, process. Client, (void*)client. Socket); } 88
Функция process. Client l l l static pthread_mutex_t cs_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; void *process. Client(void *data. Ptr) { pthread_mutex_lock( &cs_mutex ); cout << ++concurrent. Client. Count << "n"; pthread_mutex_unlock( &cs_mutex ); l int client. Socket = ((int*)data. Ptr)[0]; recv / send … … l l } 89
Обработка запросов одновременно подключенных клиентов l l l l l Вариант 2. Использование неблокирующих сокетов listen. Socket = socket(AF_INET, SOCK_STREAM | SOCK_NONBLOCK, IPPROTO_TCP); vector
Обработка запросов одновременно подключенных клиентов l Вариант 3. Использование событийно ориентированного фреймворка (обертки над poll), например, Node. js l var net = require('net'); var server = net. create. Server(process. Client); server. listen(28563, '0. 0'); function process. Client(client. Socket) { //регистрация обработчика события прихода данных client. Socket. on('data', function (data) { … обработка data client. Socket. write(answer); } Другие примеры: http: //edu. mmcs. sfedu. ru/mod/assign/view. php? id=4837 l l l l l 91


