You are on page 1of 131

АРХІТЕКТУРА КОМП’ЮТЕРА ТА

ОРГАНІЗАЦІЯ КОМП’ЮТЕРНИХ МЕРЕЖ


Лекція 13. Програмування в мережевих середовищах
Програми та Процеси
 Програма – це файл.

 Процес або task – це програма на стадіїї її


виконання центральним процесором.

 Одна програма може бути генератором


множини процесів.
Клієнт-серверна архітектура

Сервер – це процес – а не комп’ютер !


Сервер очікує на запит від клієнта.
Клієнт - це процес, що надсилає запити до існуючого серверу та (за звичай) очікує на
відповідь.
Приклади клієнт-серверної взаємодії

 Сервер повертає поточний час.


 Сервер повертає документ.
 Сервер роздруковує файл, що переданий клієнтом.
 Сервер читає або записує на диск.
 Сервер записує транзакцію.
Мета розробки
мережевих додатків application
transport
network
data link
physical

Написання програм, які:


 працюють на різних end-systems
 взаємодіють через мережу
(наприклад, ПЗ web-серверу взаємодіє з браузером)

При написанні програм відсутня необхідність


враховувати особливості архітектурної реалізації мереж:
application
transport
 кореневі пристрої мереж не взаємодіють з ПЗ network
data link application
кінцевих користувачів physical transport
network
data link
 кінцеві пристрої дозволяють швидко розробляти та physical

поширювати додатки
Мережеві додатки
Найбільш поширеними технологіями реалізації
мережевих додатків є:
 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 архітектурою, повинні мати
два процеси одночасно –
клієнтський та серверний
Основи програмування у мережах

Для доступу до тих або інших мережних


сервісів використовуються клієнти, можливості
яких характеризуються поняттям «товщини». Це
поняття визначає конфігурацію устаткування та
програмного забезпечення, що повинні бути в
наявності у клієнта.
THICK & THIN
«Товщина»
● клиента, у загальному випадку,
характеризує його обчислювальну потужність

Термінал

Десктоп
«Тонкий» клієнт
Цей термін визначає клієнта, обчислювальних
ресурсів якого достатньо лише для запуску
необхідного мережного додатку через 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
ПРОБЛЕМИ
Надійність взаємодії досягається завдяки наявності узгоджених станів
на кінцях з'єднання
 як встановити з'єднання (утворення узгодженої стану)?

 як розірвати з'єднання (утворення узгодженої стану, звільнити


порти, черги тощо)?
 як узгоджено і надійно підтримувати номера прийнятих і
відправлених байтів?
 як узгодити швидкості відправника і одержувача?

 як виявляти та управляти перевантаженням?


Установка з'єднання: 3-х кратне рукостискання

Ініціатор надсилає 1-й пакет:


SYN+ sequence number Ініціатор Викликаємий

Викликаємий відповідає: A B
Syn
SYN + sequence number
(з’єднання у зворотньому напрямку)
ACK для SYN ініціатора
Syn + Ac k
Ініціатор відповідає
АСК на SYN викликаємого
Ac k
• Також підтримується одночасне відкриття
oДва SYN передаються один одному
oКожна зі сторін надсилає АСК іншій стороні
ТСР: розподіл за портами
A B
Фіксований номер Фіксований номер
ТСР порта = 80 ТСР порта = 23

Web Mail client Web Mail


client Server Server

TCP Dest port = 80


Data Src port = 123456

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
Стани транспортного з’єднання

Application -client www-server

A B

TCP agent TCP agent

S0 Отриманий, не підтверджено S0 Отримано, не підтверджено

S1 Отримано, підтверджено S1 Отримано, підтверджено


S2 Підтверджено, не передано App

S4 Підтверджено та передано App


UDP: розподіл за портами
A B
UDP port number = 177

Proc ess Process Proc ess Process


1 2 1 2

UDP Dest port = 177


Data Src port =123456

Dest port = 177


IP Data Src port =
123456
Основи програмування у мережах

Приймання та передача даних — це основна та


найбільш проста частина з усього кола задач, якими
займаються мережеві програмісти
Основним методом організацій мережевої взаємодії є
використання сокетів
Якщо ми розробляємо багато-користувальницьку гру,
то нам у першу чергу необхідно вирішити — який тип
сокетів будемо використовувати — TCP, UDP або
обидва?
З’єднання на прикладному рівні
portS - Listen App-servers
OS
Socket = portA, IPA, portS, IPs, TCP/UDP
S
host

IPs, MACs

App

A OS Socket = portA, IPA, portS, IPs, TCP/UDP


host

IPA, MACA
Сокети для програмістів

Сокет (Socket) - це кінцева точка мережевих комунікацій. Він чимось


нагадує «портал», через який існує можливість відправляти байти у
зовнішній світ. Програма просто пише потік даних у сокет - їх
подальша буферизація, відправлення та транспортування
здійснюється стеком протоколів та мережевою апаратурою. Читання
даних із сокету відбувається аналогічним чином.
В програмному додатку сокет ідентифікується дескриптором.
Програма отримує дескриптор від операційної системи під час
створення сокету, а потім передає його сервісам Socket API для
вказівки сокету, над яким необхідно виконати ту чи іншу дію.
Безпечне закриття сокету

Проблеми із закритим сокетом


o Що буде, якщо останній АСК буде втрачено? A В
o Що буде, якщо ту ж саму пару портів будет відразу повторно
використано для нового з’єднання? Syn +ISNA

Рішення: ініціатор розриву встановлює Time Wait Syn + Ack +ISNB


o ініціатор розриву надсилає FIN
o Не закривае сокет протягом 2 MSL (Maximum Segment Ack
Lifetime)

Проблеми на стороні серверу: Connection Setup


3-way handshake
o Робота OS уповільнюється, оскільки багато сокетів у стані
Time Wait
o Вразливість: у стані Time Wait існує можливість послати RST
та перевстановити параметри сокету
Види сокетів
 Синхронні (блокуємі) – захоплюють управління
на час виконання операції.

 Асинхронні (неблокуємі) – повертають


управління терміново, продовжуючи виконання
в фоновому режимі.
Типи сокетів
 Потокові – вимагають попереднього
встановлення з'єднання, забезпечують надійну
ідентифікацію обох сторін та гарантують цілісність
та успішність доставки даних.
 Дейтаграмні – працюють без встановлення
з'єднання і не забезпечують ані ідентифікації
відправника, ані контролю успішності доставки
даних, зате вони значно швидкіші за потокові.
Потоковий сокет
Це сокети із встановленим з'єднанням, що складається
з потоку байтів, який може бути двонаправленим –
тобто через цю кінцеву точку програма може і
передавати, і отримувати дані. Поточний сокет гарантує
виправлення помилок, обробляє доставку і зберігає
послідовність даних. На нього можна покластися в
доставці впорядкованих, недубльованих даних.
Потоки базуються на явних з'єднаннях: сокет А вимагає
з'єднання з сокетом В, а сокет В або погоджується із
запитом на встановлення з'єднання, або відхиляє ero.
Місце в моделях OSI та TCP/IP
Модель OSI Модель TCP/IP

Прикладний
Представлення Прикладний
Сеансовий
Транспортний Транспортний
Мережевий Мережевий
Канальний Мережевих
Фізичний інтерфейсів
WebSocket
Причина появи – зміна парадигми HTTP з моделі «запит-
відповідь» на встановлення та підтримку довготривалих
з'єднань клієнтів та серверів з передачею лише корисних
даних (без заголовків). Підтримує технологію Server Push
⚫ Використовуються:

⚫ для веб-додатків із інтенсивними обмінами даних


(google docs, maps, біржі…)
⚫ розраховані на багато користувачів веб-додатки
(соцмережі, ігри, спільна робота, чати, …)

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 (гніздо) - структура даних, щ о іденифікує


мережеве з’єднання

Команди:
 SOCKET – створити новий (порожній) сокет

 BIND – сервер зв’язує свою локальну адресу (порт) з


сокетом
Інтерфейс транспортного рівня. Команди.

 LISTEN – сервер виділяє пам'ять під чергу


приєднань клієнтів та встановлює сокет у стан
«listening» (TCP)
 ACCEPT – сервер чекає на підключення клієнта
або приймає перше підключення з черги (TCP)
 CONNECT–клієнт запитує з’єднання (TCP)
Інтерфейс транспортного рівня. Команди.

 SEND / SEND_TO – надіслати дані (TCP / UDP)

 RECEIVE / RECEIVE_FROM – отримати дані (TCP / UDP)

 DISCONNECT – запитати роз’єднання (TCP)

55
Web Application
Це програма, яку розроблено на основі архітектури «клієнт-сервер», та яка
використовує Web-браузер в якості своєї клієнтської програми та надає
послугу шляхом з'єднання з серверами через Інтернет (або інтранет).
Web додаток надає зміст, що динамічно сформований на основі:
 параметрів запитів,

 відстежуваної поведінки користувачів та

 з урахуванням проблем безпеки.


Web Application
Спочатку Web-додаток розглядався, як реалізація циклу запит/відповідь (request/response):
 клієнт (браузер) відправляє запит на Web-сервер з будь-якими даними на поточній
сторінці;
 наявність коду на сервері, що формує нову сторінку;
 відправка нової сторінки назад клієнту та (нарешті) браузер відображає всю нову
сторінку користувача;
далі цикл запит – відповідь повторюється.
Сучасне розуміння Web додатків:
 клієнт так саме надсилає запит на нову сторінку;
 але після формування нової сторінки, отримання її браузером та відображення
користувачеві, всі подальші взаємодії між сторінкою та сервером виконується з
використанням JavaScript та Web Сервісів (принаймні доти, доки користувач не зробить
перехід до нової сторінки).
WEB-СЕРВІСИ
Веб-сервіс – це програмуєма бізнес-логіка, яка доступна через
стандартні Web-протоколи
Web XML Web
Service Service

XML
Web XML Web
Service Service

“Building Block
Client Services”
Переваги web-додатків

1. Простота доступу до програми. Будь-яка людина, що має


комп'ютер, підключений до мережі Інтернет, може
використовувати цей веб-додаток.
2. Простота розгортання (установки). На відміну від локальних
програм, веб-програми після завершення їх розробки не потрібно
встановлювати на комп'ютерах користувачів – достатньо лише
повідомити користувачам URL адресу програми. При зміні
програми всі користувачі відразу починають працювати зі
зміненою версією.
3. Наявність великої кількості кваліфікованих користувачів.
4. Високий рівень розвитку та надійності мережевих з'єднань та
web-технологій.
Недоліки web-додатків

«Слабко-зв'язана» архітектура web-мережі:


 Відсутність підтримки стану сеансу роботи та затримка під час
перезавантаження кожної сторінки.
 Кожне перевантаження або оновлення сторінки викликає помітну затримку,
викликану необхідністю встановити HTTP з'єднання, обробити запит на
сервері, передати по мережі HTTP повідомлення у відповідь і перевантажити
сторінку браузером.
 Це створює стрибки та переривчастий режим роботи користувача.

Відкритість доступу до програм.


 У зв'язку з відкритим доступом до web-додатків практично для всіх веб-
додатків потрібно підтримувати безпеку роботи користувачів з ними.
Недоліки web-додатків
Обмежений набір елементів управління для проектування форм програми:
 HTML підтримує лише обмежений набір елементів керування: текстові елементи, радіо
кнопки, прапорці, списки, що випадають, і командні кнопки.
 HTML не пропонує підтримку складних взаємодій, які досить часто використовуються в
нпрограмах: такі, як календарі, майстри, закладки, інструментальні смуги, контекстні меню
тощо; елементи управління можуть бути розроблені за допомогою JavaScript та CSS, проте
відсутність вбудованої підтримки браузерів призводить до різноманітності реалізацій з
неузгодженими уявленнями та способами роботи з ними.
 базова архітектура Web-мережі та обмежений набір доступних елементів управління
робить підтримку взаємодії з web-додатками більш складною, у порівнянні з локальними
додатками.
 оскільки більшість веб-додатків розробляють незалежними від конкретного браузера, то
взаємодія та зовнішнє уявлення web-додатків може відрізнятися в різних ОС.
Недоліки web-додатків

Неузгоджені підходи до оформлення та способу взаємодії користувачами:


 Користувачі зустрічаються з великою різноманітністю стилів візуальних
інтерфейсів та способів взаємодії, кожен з яких пропонує свій словник
об'єктів, дій та візуальних уявлень, змішаних в тому самому додатку.
 Для вирішення таких проблем проектування (розробки) та пов'язаних з
ними проблем використання багато компаній (організацій) розробляють
посібники з проектування інтерфейсу користувача та стилю для
впорядкування оформлення і роботи web-додатків.
Розподіл компонентів

Локально
– Всі компоненти розташовані на локальному
комп'ютері

– Не обов’язково у вигляді однієї програми
В мережі
– Компоненти розподілені між декількома вузлами
Клієнт-серверна архітектура

У такому випадку всі даних сервер зберігає в своїй оперативній пам'яті. Ось тільки якщо сервер впаде, або
просто перезавантажиться - вся інформація буде втрачена. Все, що було в пам'яті, стирається при виключенні
системи.
Клієнт-серверна архітектура

Клієнт - це програма, з якою працює користувач. Він навіть не уявляє собі, чи у нього на комп'ютері програма
цілком, або десь за нею ховаються сервер з базою, а то і цілий RAID. Він працює в браузері або з desktop-додатком.
І все, що йому потрібно знати - це «куди тут тикати».

Сервер - комп'ютер, на якому зберігається сам додаток. Весь код, вся логіка, всі додаткові матеріали і довідники.
Іноді кажуть «сервер додатків» та «сервер БД». Це нормально, адже фактично сервер - це просто машина,
комп'ютер. А базу і сервер додатків зазвичай зберігають на різних машинах заради безпеки. У такому випадку,
якщо кажуть «сервер додатків» - то мова йде про другий елемент в ланці схеми.
Персистентність

Якщо раптом пропаде мережа, то база «зависне», машина з базою перезавантажиться, або трапиться щось інше,
наші зміни не пропадуть. Ця властивість має назву персистентність. Досягається вона за рахунок транзакцій, які
відкочуються назад, коли щось йде не так.
Плюси архітектури
1. Потужний сервер дешевше за 100+ потужних клієнтських машин -
якщо ми хочемо, щоб програма не гальмувала, нам потрібна хороша
машина. Вона у вас буде одна. Або кілька - якщо навантаження значне
- але явно менша за кількість клієнтів.
2. Немає дублювання коду - основний код зберігається на сервері, клієнт
відповідає тільки за «намалювати гарненько» і звичайнісенькі
перевірки на полях «тут число, тут рядок не довший за 100 символів».
3. Персональні дані в безпеці - звичайний користувач не бачить зайвого.
Він не знає ваше ключове слово, паспортні дані та кількість грошей на
рахунку.
Мінуси архітектури
Якщо впав сервер або відвалилася
база, тобто зіпсувалося перша ланка -
все, все в ступорі, всі відпочивають.
Сотні, тисячі, та хоч мільйони клієнтів
якщо є - ніхто не може працювати. Всі
операціоністки сумно дивляться на
вікно «Вибачте, щось пішло не так» і
розводять руками перед клієнтом.
Кластерна архітектура
Кластерна архітектура: балансування

Перед серверами ставлять балансувальник, і клієнт шле запит туди. Скільки б серверів не поставили в
кластер, клієнтам це не цікаво. У них є один URL - адреса балансувальника.
Така схема використовується для високонавантажених додатків - коли запитів надходить так багато, що
один сервер з ними просто не справляється.
Високонавантажені системи
Перспективи розвитку програмування
 Хмара переможе закон Мура
Головна задача програмістів - знайти розумні
способи еластичного розгортання достатніх
обчислювальних потужностей для кожної
проблеми користувача – отримання рішення
повинно бути достатньо швидким, а користувач
не скучив
Перспективи розвитку програмування
 Безпека IoT буде постійно підвищуватися
Головна задача програмістів - надати
користувачам максимальну гнучкість в
програмуванні кінцевих пристроїв. Але це також
дає вірусобудівникам більше можливостей, ніж
будь-коли раніше
Перспективи розвитку програмування
 Відеоконтент буде домінувати в Інтернет
Коли комітет стандартів HTML почав вставляти
теги відео в сам HTML, вони, мабуть, не мали
грандіозних планів переробки розваг - вони,
напевно, тільки хотіли виключити глюки з плагінів.
Але основні теги відео відповідають командам
JavaScript, що робить їх, по суті, програмованими.
Перспективи розвитку програмування
 Консолі продовжуть витісняти комп'ютери
Ігри прекрасні, і графіка вражає. Вони мають
чудові відеокарти та відносно стабільні програмні
платформи, щоб ми могли розслабитися та мріяти
про те, щоб постріляти поганих хлопців або
пограти у футбол
Перспективи розвитку програмування
 Обробка даних буде ще більш актуальною
На теперішній час більшість прогнозів були
драматично неправильними. Збір, аналіз, кодування
та аналіз даних залишатимуться однією з
найважливіших завдань для програмістів. Особи, які
приймають рішення, потребують цифр, а
програмістам і надалі буде поставлено завдання
забезпечити подання даних таким чином, щоб його
було легше зрозуміти.
Перспективи розвитку програмування
 Machine learning стане обов’язковою функцією
Зараз програмістам і вченим необхідно розробити
значну кількість власного коду для виконання
складного аналізу. Незабаром такі мови, як R, і деякі
найуспішніші інструменти бізнес-аналітики,
перестануть бути особливими та почнуть бути
звичайною функцією в більшості програмних пакетів.
Перспективи розвитку програмування
 Дизайн інтерфейсу буде більш складним,
оскільки ПК будуть продовжувати зникати
Кожного дня залишається все менше підстав для
використання комп'ютерів. Серед користувачів
смартфонів, консолей та планшетів єдиними
людьми, які все ще, здається, чіпляються за
комп'ютери, є офісні працівники та студенти.
Перспективи розвитку програмування
 Кінець відкритості
Консолі щільно закриті. Ніхто не потрапляє на цей
ринок без вкладення капіталу. Магазини додатків
відкриті трохи більше, але вони обмежують те, що
ми можемо зробити. Ми втрачаємо здатність
ділитися кодом, оскільки ми втрачаємо здатність
збирати та запускати код. Відкритий код вмирає.
Мережеві операційні системи
Визначення
Мережева операційна система – це комплекс
програмних модулів, призначений для
підвищення ефективності апаратних ресурсів
комп'ютера шляхом раціонального управління
ресурсами та розподілу ресурсів між множиною
процесів, що виконуються у мережі.
Класичні архітектури:
● Централізована архітектура;
● Архітектура "файл-сервер";
● Дворівнева архітектура "клієнт-сервер";
● Багаторівнева архітектура "клієнт-сервер";
● Архітектура розподілених систем;
● Архітектура Веб-додатків;
● Сервіс-орієнтована архітектура.
Підходи до побудови мережевих операційних систем
Вбудовані
мережеві
Мережеві служби глибоко інтегровані в операційну Мережева ОС служби

систему (наприклад, Windows NT)

Мережева
оболонка

Мережеві служби об'єднані у вигляді деякого набору ОС


програмних модулів – оболонки (наприклад, LAN
Server, NetWare for UNIX)

Мережеві
Мережева ОС служби –
окремі
Мережеві служби розробляються та поставляються у додатки
вигляді окремих програмних модулів (NDS для різних
ОС)
ОС з перемиканням ядра
Мікроядерна архітектура ОС
Множинні прикладні середовища
Серверна віртуалізація

Серверна віртуалізація передбачає


створення віртуальних машин на хост-
серверах для розміщення серверних
навантажень
WebOS

 С развитием технологий в целом, и интернет-технологий в


частности, привычные нам понятия трансформируются,
превращаясь в нечто совершенно новое. Были модемы – стала
беспроводная передача данных. Были текстовые игры –
появились сложные трехмерные игровые миры. Был Web – стал
Web 2.0. И именно росту популярности приложений Web 2.0
обязан своим появлением совершенно новый тип операционных
систем – браузерные операционные системы, или, сокращенно,
WebOS (WebOperating System)
WebOS

 Термин "Web operating system" принадлежит все тому же Тиму О’Рилли,


который придумал и термин Web 2.0. Проект "WebOS" был начат в
Университете Калифорнии для выработки теоретической базы и конечных
web-приложений для управления и взаимодействия через Сеть. Были названы
основные черты WebOS:
• Файловая система, идентифицирующая информацию по однозначному ее
местоположению.
• Не зависящая от расположения ресурсов система их имен.
• Безопасное удаленное выполнение программ.
• Охраняемый доступ к данным.
• Безопасная передача информации.
WebOS
 Первая WebOS увидела свет в 1999 году.
Позднее она стала известна как Hyperoffice, а
еще позже – MyWebOS. Фредерик
Малмер (Fredrik Malmer) – вот имя молодого
шведского программиста, который первым
создал online-десктоп.
WebOS: HyperOffice
WebOS: G.ho.st
WebOS: G.host
WebOS: YouOS
WebOS: X.Cerion
WebOS: X.Cerion
WebOS: CloudMe Os
WebOS: CloudMe Os
WebOS: EyeOS
Безпека у мережевому середовищі
Перспективи розвитку програмування
Мережеві операційні системи
Заходи з мережевої безпеки
Поняття інформаційної безпеки
З погляду інформаційної безпеки для корпоративних мереж найістотнішими є
наступні проблеми:
• Корпоративна мережа є розподіленою, зв'язки між окремими частинами забезпечуються зовнішніми
провайдерами.
• Корпоративна мережа має або одне, або декілька підключень до Інтернет
• Критично важливі сервери можуть розміщуватися на різних майданчиках
• Для доступу користувачів використовуються як комп'ютери, так і інші мобільні пристрої.
• Протягом одного сеансу роботи користувач звертається до кількох інформаційних сервісів
• Інформаційна система є мережу з активними агентами, у процесі роботи програмні модулі передаються з
сервера на комп'ютери користувача тощо
• Не всі системи контролюються адміністраторами ІС
• Програмне забезпечення та модулі отримані через мережу не можуть розглядатися як надійні
• Конфігурація ІС постійно змінюється на рівнях адміністрування даних, програм, апаратури
Погрози інформації
• Збої обладнання.
• Втрата інформації через некоректну роботу ПЗ.
• Втрати, пов'язані із несанкціонованим доступом.
• Втрати, пов'язані із неправильним зберіганням
архівних даних.
• Помилки обслуговуючого персоналу та користувачів.
Причини існування погроз
Причини існування погроз
Погрози в інформаційній системі
➢ Доступ до мережі з боку штатного комп'ютера;
➢ Доступ до мережі з боку кабельних ліній зв'язку:
➢ Порушення безпеки з боку штатного користувача;
➢ Порушення безпеки у разі підключенні стороннього комп'ютера та іншої
апаратури;
➢ Вплив побічних електромагнітних випромінювань та навмисне
викривлення інформації;
➢ Аварійна ситуація, відмова апаратури, помилки операторів та
розробників програмного забезпечення тощо.
Погрози в інформаційних системах
Існуючі варіанти погроз:
❑ Активні погрози (зовнішні мережеві атаки);

❑ Пасивні погрози (атаки з середини мережі)


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

Розробка та Злочинна недбалість


поширення вірусів під час розробки

Підробка комп’ютерної Розкрадання комп'ютерної


інформаціїи інформації
Атака -
це цілеспрямований вплив на ІС, що здійснюється
програмними засобами з метою порушення
конфіденційності, цілісності чи доступності
інформації
Здійснення комп'ютерних атак стає можливим
завдяки наявності в комп'ютерній системі
вразливостей
Приклади уразливостей
⚫ помилки, допущені під час розробки ПЗ чи протоколів
обміну (наприклад, відсутність механізмів захисту
інформації від несанкціонованого доступу);
⚫ помилки у програмному коді, що дозволяють тим чи
іншим чином обійти систему захисту (наприклад,
помилки програмування, що створюють можливість
виконати атаку на переповнення буферу);
⚫ помилки конфігурування та адміністрування
(неправильне налаштування системи захисту, занадто
короткий пароль тощо).
Комп'ютерні віруси
Шкідливий код – програми, які завдають шкоди процесам, що
підтримуються комп'ютерними системами.
Для заподіяння шкоди шкідливий код необхідно впровадити в
комп'ютерну систему.
Найчастіше шкідливий код передається та впроваджується через
Інтернет.
Антивірусний захист
 Більшість засобів захисту розпізнають відомі атаки,
використовуючи сигнатури вірусів та інші відомі ознаки
шкідливого коду.
 Створення «демілітаризованих зон» та проактивні методи
антивірусного захисту не дають гарантій виявлення шкідливого
коду.
 В даний час шкідливий код найчастіше поширюється через
соціальні мережі. Тут використовуються психологічні методи на
користувачів.
Антивірусний захист
 Існує ілюзія інформаційної безпеки роботи в
мережі, якщо використано всі сучасні засоби
захисту.
 Фірми розробляють продукти захисту та зацікавлені
у продажу.
 Звідси випливає нескінченний потік заяв про те, що
продукти, що продаються, гарантують безпеку.
Типові схеми розповсюдження вірусів
Класифікація вірусних погроз
Вірусні погрози

Malware

Riskware Viruses

Adware Worms

Pornware Trojan programs

Suspicious packers

Malicious tools
Класичні віруси
Класичні віруси - програми, що розповсюджують свої копії по ресурсах локального
комп'ютера з метою подальшого запуску свого коду за будь-яких дій користувача
та подальшого впровадження в інші ресурси комп'ютера.

Розрізняються між собою за такими основними ознаками:


➢ середовище існування;

➢ спосіб зараження.
Класифікація вірусів
За середовищем існування

Файлові віруси

Завантажувальні віруси

Макро-віруси

Скриптові віруси
Класифікація вірусів
За способом зараження

Перезаписувані (overwriting)
Паразитичні (parasitic)
Заражують об’єктні модулі (OBJ)
Віруси-компаньони (companion)

Заражують бібліотеки компіляторів (LIB)


Віруси-посилання (link)
Заражують тексти програм
Мережеві атаки
⚫ збір інформації: вивчення мережевої топології,
визначення типу та версії ОС атакованого вузла, доступних
мережевих сервісів
⚫ виявлення вразливих місць атакованої системи: аналіз
наявності вразливостей у ПЗ та його налаштуваннях
⚫ реалізація обраної атаки: надсилання мережних пакетів на
певні мережеві служби, SYN Flood, Teardrop, UDP Bomb,
підбір паролів
Дослідження мережевої топології
⚫ ICMP-сканування:
⚫ команда ECHO_REQUEST протоколу ICMP
⚫ відповідь-повідомлення ECHO_REPLY

⚫ 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
ВИСНОВКИ
 Компютерні мережі – це інструмент організації
інформаційного обігу
 Компютерні мережі – це складова технологічної
революції
 Компютерні мережі – це інструментарій для керування
 Компютерні мережі – це засіб масового управління
 Компютерні мережі – це зброя масового знищення

You might also like