Professional Documents
Culture Documents
АрхЕОМтаОКМ Л13 - 2021
АрхЕОМтаОКМ Л13 - 2021
поширювати додатки
Мережеві додатки
Найбільш поширеними технологіями реалізації
мережевих додатків є:
client-server
peer-to-peer (P2P)
Клієнт-серверна архітектура
server:
постійно функціонуючий хост
постійна IP-адреса
використовує дата центри для масштабування
client/server clients:
взаємодіє із сервером
зв’язок може перериватися
може мати динамічну IP-адресу
клієнти не повинні безпосередньо взаємодіяти один з одним
P2P architecture
сервер не повинен бути постійно увімкненим !
взаємодіють довільні кінцеві системи peer-peer
peer’s запитують сервіси у інших peers та надають послуги
в обмін на постуги інших peers
самомасштабованість - нові peer’s
надають нові можливості для сервісу,
а також нові вимоги до надання ними
послуг
Peer’s з'єднуються періодично і можуть змінювати свої IP-
адреси
Процес мережевої
комунікації
Процес: програма працює
clients, servers
в межах хоста Клієнтський процес:
процес, що ініціює комунікацію
в межах одного хоста два процеса взаємодіють між
собою використовуючи inter-process communication (в Серверний процес: процес,
що очикує на комунікацію
залежності від ОС)
процеси, що виконуються на різних хостах,
взаємодіють між собою за допомогою обміну
повідомленнями ❖ Зауважте: додатки, що побудовані
за P2P архітектурою, повинні мати
два процеси одночасно –
клієнтський та серверний
Основи програмування у мережах
Термінал
Десктоп
«Тонкий» клієнт
Цей термін визначає клієнта, обчислювальних
ресурсів якого достатньо лише для запуску
необхідного мережного додатку через web-інтерфейс.
Користувацький інтерфейс такого додатка
формується засобами статичного HTML (виконання
JavaScript не передбачається), вся прикладна логіка
виконується на сервері.
«Тонкий» клієнт
Для роботи тонкого клієнта достатньо лише
забезпечити можливість запуску web-браузера, у
вікні якого й здійснюються всі дії.
З цієї причини web-браузер досить часто
називають "універсальним клієнтом".
«Товстий» клієнт
Це робоча станція або персональний комп'ютер, що
працюють під управлінням власної операційної
системи та мають необхідний набір програмного
забезпечення.
До мережних серверів «товсті» клієнти звертаються
в основному за додатковими послугами (наприклад,
доступ до web-серверу або корпоративній базі
даних).
«Товстий» клієнт
Так само під «товстим» клієнтом мається на
увазі й клієнтський мережний додаток, який
запущено під управлінням локальної ОС. Такий
додаток сполучає компонент подання даних
(графічний користувацький інтерфейс ОС) і
прикладний компонент (обчислювальні
потужності клієнтського комп'ютера).
Rich-клієнт
Rich-клієнт – це свого роду компроміс між
«товстим» і «тонким» клієнтами. Як і «тонкий»
клієнт, «rich»-клієнт також представляє графічний
інтерфейс, який описано засобами XML, що й
включає деяку функціональність товстих клієнтів
(наприклад інтерфейс drag-and-drop, вкладки,
множинні вікна, випадюче меню тощо)
Rich-клієнт
Прикладна логіка «rich»-клієнта також
реалізована на сервері. Дані відправляються в
стандартному форматі обміну, на основі того ж
XML (протоколи SOAP, XML-RPC) і
інтерпретуються клієнтом.
Rich-клієнт
Деякі основні протоколи «rich»-клієнтів:
XAML (extensible Application Markup Language) — розробка Microsoft,
використовується в додатках на платформі .NET;
XUL (XML User Interface Language) — стандарт, розроблений у рамках
проекту Mozilla, використовується, наприклад, у поштовому клієнтові
Mozilla Thunderbird або браузері Mozilla Firefox;
Flex — мультимедійна технологія на основі XML, розробка
Macromedia/Adobe.
Моделі архітектури
Що розуміють під архітектурами та навіщо вони
необхідні?
Які архітектури найбільш поширені?
Якими характеристиками наділені ті чи інші
архітектури розподілених систем?
Яка сфера застосування тих чи інших моделей?
Моделі архітектури
Описують:
Фізичне розташування компонентов між вузлами мережі
Взаємодію між компонентами
Формальний опис різних параметрів та властивостей системи
Моделі взаємодії, обробки помилок, безпеки, …
Моделі архітектури
Моделі не описують реальні функції окремих компонент, а вказують
на:
розташування (розміщення по вузлах)
шаблони розподілення даних і задач з їх обробки
взаємодію компонент
ролі компонент
шаблони взаємодії
Моделі архітектури
Модель побудови архітектури мережевого
додатку залежить від багатьох факторів –
апаратного забезпечення, продуктивності вузлів,
надійності мережевого з’єднання, але у першу
чергу – від мережевої операційної системи
Проблема 10k з’єднань
⚫ Це коли обладнання дозволяє, а софт, через свою
архітектури, не може підтримувати понад 10 тисяч
одночасних з'єднань
⚫ Вперше привенуло увагу - 1999 рік Dan Kegel з
приводу сервісу поширення ПЗ через cdrom.com
⚫ Причина: недоліки ОС того часу (кожен з
паралельних потоків вимагав для стеку 2Мб
пам'яті, тобто для 10k потоків необхідно 20Гб
пам’яті, крім того - ОС - 32х-бітна)
23
Проблема 10k з’єднань
⚫ Альтернативи потокам:
⚫ Використання неблокуючіх сокетов та функції poll (це
upgrade для функції select) для визначення чи прийшли дані
від будь-кого з 10k клієнтів
⚫ Використання асинхронного вводу-виведення тобто
обробників подій для сигналів про появу запитів від клієнтів
⚫ Сервери: Nginx, Node.js, Lighttpd, Tornado(python),
Yaws(Erlang), …
⚫ Бібліотеки/фреймворки: libevents, Netty (Java), Twisted
(python), ReactPHP, Celluloid (ruby), Erlang
Проблема 10k з’єднань: сьогодення
У сучасному 64-бітному ядрі Linux проблеми 10k
потоків немає: пам'яті багато і пам'ять під стек
виділяється динамічно
Безліч підходів, альтернативних потоків
А 10M одночасно підключених клієнтів - слабо?
25
4-х рівнева модель Інтернет
Application Application
Transport Transport
Network Network
Link Link
З’єднання на прикладному рівні
App-servers
OS
S
host
IPs, MACs
App
A OS
host
IPA, MACA
ПРОБЛЕМИ
Надійність взаємодії досягається завдяки наявності узгоджених станів
на кінцях з'єднання
як встановити з'єднання (утворення узгодженої стану)?
Викликаємий відповідає: A B
Syn
SYN + sequence number
(з’єднання у зворотньому напрямку)
ACK для SYN ініціатора
Syn + Ac k
Ініціатор відповідає
АСК на SYN викликаємого
Ac k
• Також підтримується одночасне відкриття
oДва SYN передаються один одному
oКожна зі сторін надсилає АСК іншій стороні
ТСР: розподіл за портами
A B
Фіксований номер Фіксований номер
ТСР порта = 80 ТСР порта = 23
IP IP DA = B
IP SA = A
Dest port =
IP DA = B
IP SA = A
Proto = Data 80 Src port Proto =
TCP = 123456 TCP
Унікальний ID для ТСР з’єднання
IP Data IPv4 Hdr
104-біта
IP DA
Source Port IP SA унікальний ID
TCP Data
Destination Port
Protoco ID = “TCP” (на весь Internet)
l
A В
Syn +ISNA
1. Хост А збільшує номер source port для кожного нового з’єднання
2. TCP обирає ISN для запобігання перетину з попереднім Syn + Ack +ISNB
з’єднанням з таки самим ID
Ack
Connection Setup
3-way handshake
Стани транспортного з’єднання
A B
IPs, MACs
App
IPA, MACA
Сокети для програмістів
Прикладний
Представлення Прикладний
Сеансовий
Транспортний Транспортний
Мережевий Мережевий
Канальний Мережевих
Фізичний інтерфейсів
WebSocket
Причина появи – зміна парадигми HTTP з моделі «запит-
відповідь» на встановлення та підтримку довготривалих
з'єднань клієнтів та серверів з передачею лише корисних
даних (без заголовків). Підтримує технологію Server Push
⚫ Використовуються:
42
WebSocket
<script>
ws = new WebSocket("ws://site.com/demo");
ws.onopen = function() { alert("Connection opened...") };
ws.onclose = function() { alert("Connection closed...") };
ws.onmessage = function(evt) { $("#msg").append("<p>"+evt.data+"</p>");
};
</script>
43
WebSocket
GET /demo HTTP/1.1
Upgrade: WebSocket
Connection: Upgrade сервер
Host: site.com
Origin: http://site.com HTTP/1.1 101 Web Socket Protocol Handshake
Upgrade: WebSocket
браузер Connection: Upgrade
WebSocket-Origin: http://site.com
WebSocket-Location: ws://site.com/demo
44
Сокети TCP
Сокети TCP є важливим поняттям у програмуванні. З їхньою допомогою
розробник може створювати свої прикладні протоколи, відмінні від HTTP
і FTP.
Сокет TCP використовує протокол TCP, наслідуючи всі властивості цього
протоколу. Для створення TCP-сокету необхідна наступна інформація:
IP-адреса локальної машини;
Номер порту TCP, який використовує додаток на локальній машині;
IP-адреса машини, з якою встановлюється зв'язок;
Номер порту TCP, на який відкликається додаток, який очікує на
встановлення зв'язку.
Властивості сокетів ТСР
• Використовує принцип з'єднань
• Гарантує доставлення та черговість
• Автоматично розбиває інформацію на пакети
• Слідкує за тим, щоб дані не пересилались
занадто часто (контроль потоку даних)
• Легко використовувати – так само, як і
процедуру запису/читання з файлу
Властивості сокетів UDP
• Не використовує принципу з'єднань — доведеться
реалізовувати це вручну
• Не гарантує доставку та порядок доставки пакетів - вони можуть
дійти в довільному порядку, з дублікатами, або взагалі не дійти!
• Потрібно вручну розбивати дані на пакети та надсилати їх
• Потрібно стежити за тим, щоб не пересилати дані надто
інтенсивно
• Якщо пакет загубиться, потрібно якось це відстежити, і у разі
потреби надіслати його знов
Сокети Берклі
• Сокети вперше з'явилися в ОС Berkeley UNIX 4.2
BSD (1983)
• Сокети – де-факто стандарт інтерфейсів для
транспортної системи
• Різні варіанти сокетів реалізовані в різних ОС та
мовах програмування
Сокети Берклі
Сокет в Unix – це файл спеціального типу
В Unix всі пристрої представляються за допомогою файлів
Операції читання і запису в файл сокета передають дані мережею
Відправник записує дані у файл сокету
Одержувач читає дані з файлу сокету
Передача даних мережею прихована від програміста
Операції над сокетами Берклі
Операція Призначення
Socket Створити новий сокет
Bind Зв’язати сокет з IP-адресою та портом
Listen Оголосити про бажання отримувати з’єднання
Connect Встановити з’єднання
Accept Прийняти запит на встановлення з’єднання
Send Відправить дані мережею
Receive Отримати дані з мережеі
Close Закрити з’єднання
Мережевий порядок байт
Під час передачі цілої числової інформації від машини, має один
порядок байт, до машини з іншим порядком байт ми можемо
неправильно витлумачити прийняту інформацію. Щоб цього не
сталося, було введено поняття мережевого порядку байт, тобто.
порядку байт, у якому має подаватися ціла числова інформація у
процесі передачі у мережі.
Мережевим порядком байт вважається big-endian byte order.
Число Послідовність байт в
пам’яті
little-endian 0xAABBCCDD DD CC BB AA
big-endian 0xAABBCCDD AA BB CC DD
Клієнт та сервер
Які сторони приймають участь в роботі сокетів Беркли:
Сервер
Клієнт
Сервер – працює (прослуховує) відому IP-адресу та порт і
пасивно чекає на отримання запитів на з'єднання
Клієнт – активно встановлює з'єднання з сервером на визначеній
IP-адресі та порту
Інтерфейс транспортного рівня. Сокети.
Команди:
SOCKET – створити новий (порожній) сокет
55
Web Application
Це програма, яку розроблено на основі архітектури «клієнт-сервер», та яка
використовує Web-браузер в якості своєї клієнтської програми та надає
послугу шляхом з'єднання з серверами через Інтернет (або інтранет).
Web додаток надає зміст, що динамічно сформований на основі:
параметрів запитів,
XML
Web XML Web
Service Service
“Building Block
Client Services”
Переваги web-додатків
Локально
– Всі компоненти розташовані на локальному
комп'ютері
●
– Не обов’язково у вигляді однієї програми
В мережі
– Компоненти розподілені між декількома вузлами
Клієнт-серверна архітектура
У такому випадку всі даних сервер зберігає в своїй оперативній пам'яті. Ось тільки якщо сервер впаде, або
просто перезавантажиться - вся інформація буде втрачена. Все, що було в пам'яті, стирається при виключенні
системи.
Клієнт-серверна архітектура
Клієнт - це програма, з якою працює користувач. Він навіть не уявляє собі, чи у нього на комп'ютері програма
цілком, або десь за нею ховаються сервер з базою, а то і цілий RAID. Він працює в браузері або з desktop-додатком.
І все, що йому потрібно знати - це «куди тут тикати».
Сервер - комп'ютер, на якому зберігається сам додаток. Весь код, вся логіка, всі додаткові матеріали і довідники.
Іноді кажуть «сервер додатків» та «сервер БД». Це нормально, адже фактично сервер - це просто машина,
комп'ютер. А базу і сервер додатків зазвичай зберігають на різних машинах заради безпеки. У такому випадку,
якщо кажуть «сервер додатків» - то мова йде про другий елемент в ланці схеми.
Персистентність
Якщо раптом пропаде мережа, то база «зависне», машина з базою перезавантажиться, або трапиться щось інше,
наші зміни не пропадуть. Ця властивість має назву персистентність. Досягається вона за рахунок транзакцій, які
відкочуються назад, коли щось йде не так.
Плюси архітектури
1. Потужний сервер дешевше за 100+ потужних клієнтських машин -
якщо ми хочемо, щоб програма не гальмувала, нам потрібна хороша
машина. Вона у вас буде одна. Або кілька - якщо навантаження значне
- але явно менша за кількість клієнтів.
2. Немає дублювання коду - основний код зберігається на сервері, клієнт
відповідає тільки за «намалювати гарненько» і звичайнісенькі
перевірки на полях «тут число, тут рядок не довший за 100 символів».
3. Персональні дані в безпеці - звичайний користувач не бачить зайвого.
Він не знає ваше ключове слово, паспортні дані та кількість грошей на
рахунку.
Мінуси архітектури
Якщо впав сервер або відвалилася
база, тобто зіпсувалося перша ланка -
все, все в ступорі, всі відпочивають.
Сотні, тисячі, та хоч мільйони клієнтів
якщо є - ніхто не може працювати. Всі
операціоністки сумно дивляться на
вікно «Вибачте, щось пішло не так» і
розводять руками перед клієнтом.
Кластерна архітектура
Кластерна архітектура: балансування
Перед серверами ставлять балансувальник, і клієнт шле запит туди. Скільки б серверів не поставили в
кластер, клієнтам це не цікаво. У них є один URL - адреса балансувальника.
Така схема використовується для високонавантажених додатків - коли запитів надходить так багато, що
один сервер з ними просто не справляється.
Високонавантажені системи
Перспективи розвитку програмування
Хмара переможе закон Мура
Головна задача програмістів - знайти розумні
способи еластичного розгортання достатніх
обчислювальних потужностей для кожної
проблеми користувача – отримання рішення
повинно бути достатньо швидким, а користувач
не скучив
Перспективи розвитку програмування
Безпека IoT буде постійно підвищуватися
Головна задача програмістів - надати
користувачам максимальну гнучкість в
програмуванні кінцевих пристроїв. Але це також
дає вірусобудівникам більше можливостей, ніж
будь-коли раніше
Перспективи розвитку програмування
Відеоконтент буде домінувати в Інтернет
Коли комітет стандартів HTML почав вставляти
теги відео в сам HTML, вони, мабуть, не мали
грандіозних планів переробки розваг - вони,
напевно, тільки хотіли виключити глюки з плагінів.
Але основні теги відео відповідають командам
JavaScript, що робить їх, по суті, програмованими.
Перспективи розвитку програмування
Консолі продовжуть витісняти комп'ютери
Ігри прекрасні, і графіка вражає. Вони мають
чудові відеокарти та відносно стабільні програмні
платформи, щоб ми могли розслабитися та мріяти
про те, щоб постріляти поганих хлопців або
пограти у футбол
Перспективи розвитку програмування
Обробка даних буде ще більш актуальною
На теперішній час більшість прогнозів були
драматично неправильними. Збір, аналіз, кодування
та аналіз даних залишатимуться однією з
найважливіших завдань для програмістів. Особи, які
приймають рішення, потребують цифр, а
програмістам і надалі буде поставлено завдання
забезпечити подання даних таким чином, щоб його
було легше зрозуміти.
Перспективи розвитку програмування
Machine learning стане обов’язковою функцією
Зараз програмістам і вченим необхідно розробити
значну кількість власного коду для виконання
складного аналізу. Незабаром такі мови, як R, і деякі
найуспішніші інструменти бізнес-аналітики,
перестануть бути особливими та почнуть бути
звичайною функцією в більшості програмних пакетів.
Перспективи розвитку програмування
Дизайн інтерфейсу буде більш складним,
оскільки ПК будуть продовжувати зникати
Кожного дня залишається все менше підстав для
використання комп'ютерів. Серед користувачів
смартфонів, консолей та планшетів єдиними
людьми, які все ще, здається, чіпляються за
комп'ютери, є офісні працівники та студенти.
Перспективи розвитку програмування
Кінець відкритості
Консолі щільно закриті. Ніхто не потрапляє на цей
ринок без вкладення капіталу. Магазини додатків
відкриті трохи більше, але вони обмежують те, що
ми можемо зробити. Ми втрачаємо здатність
ділитися кодом, оскільки ми втрачаємо здатність
збирати та запускати код. Відкритий код вмирає.
Мережеві операційні системи
Визначення
Мережева операційна система – це комплекс
програмних модулів, призначений для
підвищення ефективності апаратних ресурсів
комп'ютера шляхом раціонального управління
ресурсами та розподілу ресурсів між множиною
процесів, що виконуються у мережі.
Класичні архітектури:
● Централізована архітектура;
● Архітектура "файл-сервер";
● Дворівнева архітектура "клієнт-сервер";
● Багаторівнева архітектура "клієнт-сервер";
● Архітектура розподілених систем;
● Архітектура Веб-додатків;
● Сервіс-орієнтована архітектура.
Підходи до побудови мережевих операційних систем
Вбудовані
мережеві
Мережеві служби глибоко інтегровані в операційну Мережева ОС служби
Мережева
оболонка
Мережеві
Мережева ОС служби –
окремі
Мережеві служби розробляються та поставляються у додатки
вигляді окремих програмних модулів (NDS для різних
ОС)
ОС з перемиканням ядра
Мікроядерна архітектура ОС
Множинні прикладні середовища
Серверна віртуалізація
Malware
Riskware Viruses
Adware Worms
Suspicious packers
Malicious tools
Класичні віруси
Класичні віруси - програми, що розповсюджують свої копії по ресурсах локального
комп'ютера з метою подальшого запуску свого коду за будь-яких дій користувача
та подальшого впровадження в інші ресурси комп'ютера.
➢ спосіб зараження.
Класифікація вірусів
За середовищем існування
Файлові віруси
Завантажувальні віруси
Макро-віруси
Скриптові віруси
Класифікація вірусів
За способом зараження
Перезаписувані (overwriting)
Паразитичні (parasitic)
Заражують об’єктні модулі (OBJ)
Віруси-компаньони (companion)
⚫ TCP-сканування:
⚫ послідовне встановлення мережного з'єднання за
певним портом з перебором IP-адрес
Приклади додатків
ICMP-запрос
ICMP-ответ
Сканування портів
⚫ Определение функционирующих сетевых служб:
⚫ TCP-21- ftp
⚫ TCP- 23- telnet
⚫ TCP- 25- smtp
⚫ TCP- 80- http
⚫ TCP- 110- pop3
⚫ TCP- 135- RPC
⚫ TCP- 139- NetBIOS
⚫ TCP- 445- RPC, DFS
Приклади додатків
Приклади додатків
Реалізація атак
DeepWEB
Поверхностный WEB
Также известен как «Видимый WEB»
который использует такие поисковые
системы, как Google
Глубинный WEB
Также известен как «невидимый WEB»
который не использует стандартные
поисковые механизмы и плохо
подвергается исследованию
Структура Internet
Структура Internet
Структура Internet
Структура Internet
Структура Internet
ВИСНОВКИ
Компютерні мережі – це інструмент організації
інформаційного обігу
Компютерні мережі – це складова технологічної
революції
Компютерні мережі – це інструментарій для керування
Компютерні мережі – це засіб масового управління
Компютерні мережі – це зброя масового знищення