447a2737edd9aa92220b122a92515c25.ppt
- Количество слайдов: 54
СИСТЕМНОЕ И ПРИКЛАДНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ Лекция 5. Сети ЭВМ. Принципы организации. Протоколы обмена данными.
Принципы организации компьютерных сетей
Назначение • Общие ресурсы • вычислительные мощности • принтеры • хранилища данных (бэкапы) • Общий доступ к информации • организация централизованного хранения • коммуникации пользователей - централизованный (e-mail и т. п. ) - прямой (обмен сообщениями и данными) 3
Виды сетей • По масштабу и географии: • Персональные (PAN – Personal Area Network) - беспроводное окружение ПК • Локальные (LAN) - частные (предприятия, учреждения, квартиры) • Глобальные сети (WAN) - сети провайдеров - виртуальные частные сети (VPN) • Объединения сетей (Internet и др. ) • По каналу связи: • Наземные ( «проводные» ) • Беспроводные (стационарные и мобильные) • Виртуальные (абстрагируются от канала) 4
Технологии передачи данных • Широковещательные сети • пакет рассылается всем машинам в сети • два способа адресации: - целевой машине (по конкретному адресу) - всем – многоадресная передача (multicast, по спец. адресу) • Передача от узла к узлу • прокладывается маршрут по цепочке машин • между каждой парой передача по схеме «один отправитель и один получатель» (unicast) 5
Топология сетей • Одноранговые • равноправные участники • Древовидные • часто: - в «листьях» конечные пользователи и серверы, - в «узлах» маршрутизаторы 6
Вопросы выбора топологии • Назначение сети (эффективность взаимодействия) • распределённые вычисления • запросы к серверу • коммуникации peer-to-peer • Баланс надёжности и цены • связность сети стоит денег • низкая связность = риск разрывов сети • Организация адресного пространства • иерархия сетей и вопросы маршрутизации • NAT 7
Сетевая модель OSI • ISO OSI (Open Systems Interconnection) Reference Model (1995 год) Цель: разделение структуры сети по функциональным уровням/уровням абстракции: • • Сервис – «что делает уровень» Интерфейс – «как обращаться к уровню» Протоколы – внутренняя специфика уровня (как он обеспечивает сервис) 8
Уровни модели OSI 1. Физический (IEEE 802. 15 (Bluetooth), IRDA, EIA RS-232, 802. 11 Wi. Fi, GSM, …) • 2. реальная передача битов по каналу связи Канальный (Ethernet, PPPOE, IEEE 802. 11 WLAN) • • 3. защита данных от ошибок передачи разбиение данных на «кадры» , обработка «кадров подтверждения» Сетевой (IP/IPv 4/IPv 6, IPsec) • • 4. определение маршрутов пересылки трансляция логических адресов в физические (IP->MAC) Транспортный (UDP, TCP, SCTP, RTP) • • 5. обеспечение надёжной передачи данных (порядок, сохранность) чаще всего, взаимодействие point-to-point Сеансовый (H. 245, Net. BIOS, PPTP, PRCP, SMPP) • 6. обеспечивает сеанс связи, обмен информацией и синхронизацию передачи данных Уровень представления • 7. преобразование протоколов, шифрование/дешифрование данных Прикладной (HTTP, SMTP/POP 3/IMAP, FTP, RDP, XMPP, SNMP, …) • уровень взаимодействия пользовательских приложений 9
Стек протоколов TCP/IP 1. Прикладной уровень • HTTP, FTP, DNS, … 2. Транспортный • TCP, UDP, SCTP, … 3. Сетевой • • IP + вспомогательные протоколы 4. Канальный • Ethernet, Wireless Ethernet, … 10
Модель OSI vs. TCP/IP • Теория vs. практика • OSI - Сначала стандарты, потом протоколы - Пришлось дорабатывать модель «под реальность» , вводя подуровни - Реализация провалилась • TCP/IP: модель по существующим протоколам - соответствовала только сетям TCP/IP (напр. , технологию Bluetooth не описывает) - нет чёткого разграничения концепций служб, интерфейсов и протоколов • Связь с установлением соединений и без: • OSI: на сетевом уровне – оба способа, на транспортном – только соединения • TCP/IP: на сетевом уровне – только связь без установления соединения, на транспортном – оба 11
Сетевое оборудование • Пассивное – передача и ретрансляция сигнала • кабель, розетки, разъёмы и патч-панели, концентраторы (хабы) и т. п. • Активное – управление ретрансляцией • коммутатор (свитч) - целевая ретрансляция (Ethernet) • маршрутизатор (роутер) - в т. ч. беспроводная «точка доступа» ) - определяет направление ретрансляции по IPадресу и таблице маршрутизации 12
Сетевые устройства по уровням По уровням: • Прикладной – шлюз приложения • Транспортный – транспортный шлюз • Сетевой – маршрутизатор (роутер) • Канальный – мост, коммутатор • Физический – концентратор, повторитель 13
Коммутация • Концентратор (хаб) • «спайка» проводов в одной точке • широковещательная рассылка кадров по сети • Коммутатор (свитч) • «знает» , где расположены получатели • организует адресную пересылку 14
Маршрутизация Маршрутизаторы: • работают на сетевом уровне • данные передаются пакетно • оперируют таблицей маршрутов: • адрес – направление (порт) • «алгоритм маршрутизации» • прокладка альтернативных маршрутов - из-за разрывов или задержек на основном 15
Алгоритмы маршрутизации • Статическая маршрутизация • маршруты заложены при загрузке и не меняются • Динамическая маршрутизация • маршрутизация по вектору расстояний (до 1979) • маршрутизация с учётом состояния линий - опрос соседних маршрутизаторов, сбор ответов и вычисление метрик расстояния (возраст пакета) и кратчайших путей 16
Network Address Translation NAT – Трансляция сетевого адреса • диапазоны локальных адресов: • 10. 0 – 10. 255/8 (16 777 216 хостов) • 172. 16. 0. 0 – 172. 31. 255/12 (1 048 576 хостов) • 192. 168. 0. 0 – 192. 168. 255/16 (65 536 хостов) 17
Network Address Translation • Работает для TCP/UDP • Для исходящего пакета: • подменяет IP-адрес источника на свой • поле «порт источника» TCP/UPD-пакета подменяется идентификатором абонента - из таблицы NAT-блока • пересчитываются контрольные суммы заголовков • Для входящего: • по номеру порта восстанавливается IP и порт абонента • пакет корректируется, включая контрольные суммы, и пересылается абоненту 18
Стандартизация сетей Источники стандартов: • ITU – Международный союз электросвязи (ITU-T – сектор стандартизации) • «Рекомендации» по аспектам телекоммуникаций (стандарты для факсов, видеоконференций, видео/аудио кодеков, оптоволоконных сетей и т. п. ) • ISO – международная организация по стандартизации • член ITU-T, вырабатывает международные стандарты для всего на свете • IEEE – Институт инженеров электротехники и электроники • стандарты в области электроники и информатики (стандарты локальных сетей, беспроводных и проводных способов связи, USB, POSIX) • IETF – Инженерный совет Интернета (Internet Engineering Task Force) • • Свод RFC (Request For Comments, «рабочие предложения» ), некоторые – в статусе стандарта (Internet Standart) Стандарты сетевых протоколов (сетевого-прикладного уровней) • W 3 C – Консорциум Всемирной паутины • «Рекоммендации» (в статусе стандартов) по технологиям WWW (HTML, CSS, DOM, XML, URI/URL, SOAP, PNG, SVG, …) 19
Сетевые протоколы и работа с ними
TCP/IP • Сетевой уровень: • ARP (Address Resolution Protocol) - выяснение MAC по IP для установления получателя • ICMP (Internet Control Message Protocol) - диагностические и сервисные функции • трассировка маршрутов, пинг, управление скоростью передачи • Транспортный уровень • TCP, UDP (организация передачи) • Прикладной уровень • DNS • DHCP 21
User Datagram Protocol 22
Transmission Control Protocol 23
Winsock • Реализация протоколов TCP/IP в Windows • Чтобы использовать Winsock 2 : • Добавляем зависимость от библиотеки (Ws 2_32. lib) в опциях проекта • Включаем заголовок Winsock 2. h с объявлениями функций • Инициализируем библиотеку - WSAStartup • На выходе из приложения завершаем работу с Winsock DLL - WSACleanup 24
#include <iostream> #include <Winsock 2. h> int main() { WSADATA wsa. Data; int err = WSAStartup(MAKEWORD(2, 2), &wsa. Data); if (err != 0) { // Could not find a usable Winsock DLL return 1; } // Confirm that the Win. Sock DLL supports 2. 2 if (LOBYTE(wsa. Data. w. Version) != 2 || HIBYTE(wsa. Data. w. Version) != 2) { WSACleanup(); return 1; } // The Winsock DLL is acceptable. // TODO: place code here WSACleanup(); } 25
Winsock: основные функции Name Description accept Permits an incoming connection attempt on a socket. bind Associates a local address with a socket. closesocket Closes an existing socket. connect Establishes a connection to a specified socket. getaddrinfo Provides protocol-independent translation from an ANSI host name to an address. getsockopt Retrieves a socket option. ioctlsocket Controls the I/O mode of a socket. listen Places a socket a state where it is listening for an incoming connection. recv Receives data from a connected or bound socket. recvfrom Receives a datagram and stores the source address. select Determines the status of one or more sockets, waiting if necessary, to perform synchronous I/O. send Sends data on a connected socket. sendto Sends data to a specific destination. setsockopt Sets a socket option. shutdown Disables sends or receives on a socket Creates a socket that is bound to a specific service provider. There are the most common functions. Look MSDN Winsock Reference for full list of functions 26
User Datagram Protocol #include <winsock 2. h> int foo() { // Create a socket SOCKET s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); if (s == INVALID_SOCKET) return exit. On. Error(); // Bind on 127. 0. 0. 1: 20000 sockaddr_in address; address. sin_family = AF_INET; address. sin_addr. s_addr = inet_addr("127. 0. 0. 1"); address. sin_port = htons(20000); if (SOCKET_ERROR == bind(s, (SOCKADDR*)&address, sizeof(address)) ) { return exit. On. Error(s); } // … 27
User Datagram Protocol // Receve datagram from "client" sockaddr_in client; int struct_size = sizeof(client); char data[1024]; int received = recvfrom(s, data, sizeof(data), 0, (SOCKADDR*)&client, &struct_size); if ( SOCKET_ERROR == received ) return exit. On. Error(s); // Send datagram to "client" int sent = sendto(s, data, received, 0, sizeof(client)); if ( SOCKET_ERROR == received ) return exit. On. Error(s); (SOCKADDR*)&client, // close socket closesocket(s); cleanup. Sockets(); return 0; } 28
TCP-сервер // Create socket SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (s == INVALID_SOCKET) return exit. On. Error(); // Bind 127. 0. 0. 1: 20000 sockaddr_in address; address. sin_family = AF_INET; address. sin_addr. s_addr = inet_addr("127. 0. 0. 1"); address. sin_port = htons(20000); if ( SOCKET_ERROR == bind(s, (SOCKADDR*)&address, sizeof(address) ) ) { return exit. On. Error(s); } // Start listening if (listen(s, 1) == SOCKET_ERROR) return exit. On. Error(s); 29
TCP-сервер // Accept connection SOCKET accepted = accept(s, 0, 0); if (accepted == INVALID_SOCKET) return exit. On. Error(s); // Receive data from client char data[1024]; int received = recv(accepted, data, sizeof(data), 0); if ( SOCKET_ERROR != received ) { // Send data back to client int sent = send(accepted, data, received, 0); if ( SOCKET_ERROR == sent ) { closesocket(accepted); return exit. On. Error(s); } } // close sockets closesocket(accepted); closesocket(s); 30
TCP-клиент // Create socket SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (s == INVALID_SOCKET) return exit. On. Error(); // Connect to server on 127. 0. 0. 1: 20000 sockaddr_in target; target. sin_family = AF_INET; target. sin_addr. s_addr = inet_addr("127. 0. 0. 1"); target. sin_port = htons(20000); if ( SOCKET_ERROR == connect(s, (SOCKADDR*)&target, sizeof(target)) ) { return exit. On. Error(s); } 31
TCP-клиент char data[128]; memset(data, 1, sizeof(data)); // Send data to server int sent = send(s, data, sizeof(data), 0); if ( SOCKET_ERROR != sent ) { // Receive data from server int received = recv(s, data, sizeof(data), 0); if ( SOCKET_ERROR == received ) return exit. On. Error(s); std: : cout << "bytes received: " << received << std: : endl; } // close socket closesocket(s); cleanup. Sockets(); 32
HTTP • Запрос: GET /wiki/страница HTTP/1. 1 Host: ru. wikipedia. org Accept: text/html Connection: close (пустая строка) 33
HTTP • Ответ сервера: HTTP/1. 1 200 OK Date: Wed, 11 Feb 2009 11: 20: 59 GMT Server: Apache X-Powered-By: PHP/5. 2. 4 -2 ubuntu 5 wm 1 Last-Modified: Wed, 11 Feb 2009 11: 20: 59 GMT Content-Language: ru Content-Type: text/html; charset=utf-8 Content-Length: 1234 Connection: close (пустая строка) (далее следует запрошенная страница в HTML) 34
HTTP: пример из MSDN (C#) using System. Net; public class Web. Request. Get. Example { public static void Main() { Web. Request request = Web. Request. Create( “http: //example. my/page. html” ); // If required by the server, set the credentials. request. Credentials = Credential. Cache. Default. Credentials; 35
HTTP: пример из MSDN (C#) // Get the response. Http. Web. Response response = (Http. Web. Response)request. Get. Response(); // Display the status. Console. Write. Line(response. Status. Description); // Get the stream containing content returned by the server. Stream data. Stream = response. Get. Response. Stream(); // Do something with stream (read, print to file) // … data. Stream. Close(); response. Close(); } } 36
FTP File Transfer Protocol (пример из Википедии) 220 FTP server ready. USER ftp //анонимный пользователь 230 Login successful. PASV 227 Entering Passive Mode (192, 168, 254, 253, 233, 92) //Клиент должен открыть соединение на переданный IP LIST 150 <список файлов> 226 Directory send OK. CWD incoming 250 Directory successfully changed. PASV 227 Entering Passive Mode (192, 168, 254, 253, 207, 56) STOR gyuyfotry. avi 150 Ok to send data. //Клиент передает содержимое файла 226 File receive OK. QUIT 221 Goodbye. 37
FTP: пример для Qt QFtp *ftp = new QFtp(parent); ftp->connect. To. Host("ftp. qt. nokia. com"); ftp->login(); ftp->cd("qt"); ftp->get("INSTALL"); ftp->close(); 38
World Wide Web
Internet • 1969 – первое соединение • 1971 – e-mail и FTP • к 1984 – система доменных имён DNS • 1988 – Internet Relay Chat (IRC) Зарождение World Wide Web: • 1989 – концепция, HTTP, HTML, URI • 1990 – диалап-доступ к Internet • С 1991 WWW доступна в Internet • 1993 – браузер Mosaic • 1995 – W 3 C, WWW доминирует в Internet, 40
Технологии WWW: гипертекст • Как термин – 1963 (Тед Нельсон) • Как прототип – 9. 12. 1968, “The Mother of All Demos”, Дуглас Энгельбарт • 80 е – первые редакторы • 1986 – стандарт SGML (предшествовал HTML и XML) • 1990 – протокол HTTP и язык разметки HTML (Тим Бернерс-Ли) • 2000 – XHTML (Extensible HTML) • повышенные критерии корректности и валидации 41
Технологии WWW: CGI • Common Gateway Interface (Общий интерфейс шлюза) • 1993 - стандарт интерфейса между веб-сервером и внешними программами • при обработке запроса веб-сервер запускает консольную программу, возвращающую html-страницу в stdout • позволяет динамически генерировать контент script-URI = <scheme> ": //" <server-name> ": " <server-port> <scriptpath> <extra-path> "? " <query-string> • Оптимизации и альтернативы: • Fast. CGI (1996) и Simple. CGI (2006) • модули расширения веб-серверов (напр. , mod_php) - запуск стороннего ПО «внутри» сервера 42
Технологии WWW: CSS • Cascading Style Sheets (каскадные таблицы стилей) • Мотив – недостаток HTML: смешение данных и их представления • Принцип наследования - вложенные элементы наследуют стиль «предка» • Принцип каскадирования – правила приоритета при конфликтах: - стиль браузера наименее приоритетен - за ним – пользовательский стиль браузера - выше всех – стиль автора страницы • здесь унаследованный документом стиль стоит «внизу» • над ним – стили подключённых к документу внешних таблиц • выше – стили, заданные селекторами в тегах style • ещё выше – стили тега • самый высокий приоритет – у стилей !important 43
Технологии WWW: DHTML • Dynamic HTML • обобщённое понятие для набора технологий по созданию интерактивных и анимированных веб-сайтов • включает - HTML клиентский скриптовый язык (напр. , Java. Script) язык описания представления (напр. , CSS) DOM (объектная модель документа) 44
Технологии WWW: DOM 1. Document Object Model 1. интерфейс доступа к содержимому HTML/XML 2. Первый стандарт – в 1998, 3. последующие 1. 2000 - DOM level 2: get. Element. By. Id и событийная модель 2. 2004 - DOM level 3: XPath, события клавиатуры, сериализация в XML 45
Технологии WWW: DOM Пример дерева документа Простой пример дерева DOM: |-> Document |-> Element (<html>) |-> Element (<body>) |-> Element (<div>) |-> text node |-> Anchor |-> text node |-> Form |-> Text-box |-> Text Area |-> Radio Button |-> Check Box |-> Select |-> Button 46
Технологии WWW: ECMAScript • ECMA – European Computer Manufacturers Association • ECMAScript – общий стандарт языка, реализуемый различными диалектами • Java. Script, Jscript, Action. Script • Исторически - 2 конкурента: • Java. Script (Netscape Navigator 2. 0) • Jscript (MS IE 3. 0) – совместимый диалект • Затем Netscape передала JS на стандартизацию в ECMA 47
Технологии WWW: AJAX • Asynchronous Java. Script and XML • фоновый обмен данными с сервером • обновление элементов без полного обновления страницы • Принципы • Динамическое обращение к серверу «на лету» - XMLHttp. Request - динамическое создание: • дочерних фреймов • тега <script> • тега <img> • Использование DHTML для изменения содержания страницы • Форматы передачи данных: • текст, HTML, JSON, XML, … 48
Технологии WWW: AJAX 49
Технологии WWW: JSON • Java Script Object Notation • текстовый формат обмена данными (2001 год) – подмножество Java. Script • применение – сериалиазция и передача структур данных по сети • Пример: { "first. Name": "John", "last. Name": "Smith", "age": 25, "address": { "street. Address": "21 2 nd Street", "city": "New York", "state": "NY", "postal. Code": "10021" }, "phone. Number": [ { "type": "home", "number": "212 555 -1234" }, { "type": "fax", "number": "646 555 -4567" } ] } 50
Технологии WWW: j. Query • Мульти-браузерная библиотека на языке Java. Script • цель – упростить написание клиентских скриптов • отделяет поведение от структуры HTML • релиз – январь 2006 • Содержит: • • • перемещение по дереву DOM визуальные эффекты анимация события Ajax манипуляция DOM с помощью CSS-селекторов 51
Технологии WWW: j. Query (пример) <!DOCTYPE html> <head> <script src="jquery. js"></script> <script> $(document). ready(function(){ $("button"). click(function(){ $("p"). hide(); }); </script> </head> <body> <h 2>This is a heading</h 2> <p>This is a paragraph. </p> <p>This is another paragraph. </p> <button>Click me</button> </body> </html> 52
Технологии WWW: Flash • Мультимедийная платформа Adobe Flash • Flash Player в качестве плагина – виртуальная машина для исполнения кода flash-программы • В HTML-документе – тег object/embed для встроенного контента <!DOCTYPE html> <head> <title>Flash</title> </head> <body> <embed src=“path/flash. swf" width="400“ height="300" type="application/x-shockwave-flash“> </body> </html> 53
Ссылки и материалы • Таненбаум Э. , Уэзеролл Д. Компьютерные сети. • Лекции Яндекса по компьютерным сетям: • http: //tech. yandex. ru/education/kit/3/talks/526/ • продолжение: http: //tech. yandex. ru/education/kit/3/talks/527/ • Учебная площадка по веб-технологиям • http: //w 3 schools. com - HTML, CSS, Java. Script, j. Query, XML, ASP. NET, PHP, SQL, etc 54
447a2737edd9aa92220b122a92515c25.ppt