owned this note
owned this note
Published
Linked with GitHub
# 2025: Комп'ютерні системи і мережі. 1. Стек протоколів
[TOC]
## [Комп'ютерна мережа](https://en.wikipedia.org/wiki/Computer_network)
{%youtube -L1Zs_1VPXA %}
*Ембеддінг зв'язків Інтернету на основі даних з 1997 по 2021 рік, знайдених на сайті opte.org. Кожна лінія малюється між двома вузлами, що представляють дві IP-адреси. Довжина ліній вказує на затримку між цими двома вузлами.*
- [ ] *Питання. Який тип графу ми бачимо на візуалізації ?*
- [ ] *Питання. Що таке - діаметер графу? Дайте оцінку діаметруграфу мережі Інтернет ?*
- [ ] *Питання. Який середняя длина звїязків в мережі Інтернет ?*
[Комп’ютерна мережа](https://en.wikipedia.org/wiki/Computer_network) — це набір комп’ютерів, які спільно використовують ресурси, розташовані на *вузлах мережі* або надані ними.
Комп’ютери використовують *загальні протоколи зв’язку* через цифрові з’єднання для зв’язку один з одним. Ці взаємозв’язки складаються з технологій телекомунікаційних мереж, заснованих на фізично дротових, оптичних і бездротових радіочастотних методах, які можуть бути організовані в *різноманітних мережевих топологіях*.
*Вузли комп’ютерної мережі* можуть включати персональні комп’ютери, сервери, мережеве обладнання або інші спеціалізовані хости чи хости загального призначення. Вони ідентифікуються *мережевими адресами* та можуть мати *імена хостів*. Імена хостів служать пам’ятними мітками для вузлів і рідко змінюються після початкового призначення. Мережні адреси служать для визначення місцезнаходження та ідентифікації вузлів за протоколами зв’язку, такими як Інтернет-протокол.
- [ ] Які мережевий адрес даної сторинки?
- [ ] Які проблеми мережевої адресації ви можете визначити?
## [Канал зв'язку між двома компонентами комп'ютерної системи](https://en.wikipedia.org/wiki/Communication_channel)
**Канал зв’язку**, визначається як *фізичне середовище передачі*, таке як оптичний дріт, радіоканал або як *логічне з’єднання* через мультиплексне середовище, таке як у телекомунікаційних і комп’ютерних мережах.
Канал використовується для передачі інформації, наприклад, цифрового потоку бітів, від одного або кількох відправників до одного або кількох одержувачів. Канал має такі характеристики, як **час затримки (latency)** та **пропускна здатність (bandwidth)** для передачі інформації, яка часто вимірюється його смугою пропускання в Гц або швидкістю передачі даних у бітах на секунду, .

- [ ] *Як можна назвати величину, зворотну до пропускної здатності каналу?*
- [ ] *Як називають суму часів затримки в прямому та зворотньому напрямках в каналі?*
В залежності від максимального фізичного розміру каналів зв'язку між компонентами комп'ютерної системи та пов'язаними з ними характеристиками часу затримки та пропускної здатності можно типизувати комп'ютерні мережі як
* Персональна мережа (PAN)
* Локальна мережа (LAN)
* Кампусна мережа (CAN)
* Міська мережа (MAN)
* Всесвітня мережа (WAN)
- [ ] *Завдання. Вкажить типовий максимальний фізичний розмір PAN, LAN, CAN, MAN, WAN та їх характеристики часу затримки та пропускної здатності*
## Стек протоколів
Програмно-апаратну абстракцію вузла мережі (комп'ютера) можна охарактеризувати стеком шарів інтерфейсів:

*Стек шарів інтерфейсів вузла мережі (комп'ютера)*
*Комунікаційний протокол* — це обумовлені наперед правила передачі даних *між двома пристроями*. До основних параметрів, які описує протокол, відносяться:
* тип перевірки помилок, що використовується
* метод компресії (стискання) інформації (якщо такий є)
* спосіб визначення передаючим пристроєм завершення передачі
Для мереж теж використовують абстраговану спеціфікацію шарів реалізації взаємодії вузлів. І центральним центральним поняттям цієї спеціфікації є
[*мережевий протокол*](https://en.wikipedia.org/wiki/Communication_protocol)
[*Мережевий протокол*](https://en.wikipedia.org/wiki/Communication_protocol) відповідає за адресацію хост-інтерфейсів, інкапсуляцію даних у дейтаграми (включаючи фрагментацію та повторне збирання) і маршрутизацію дейтаграм від вихідного хост-інтерфейсу до кінцевого хост-інтерфейсу через одну або більше мереж. Для цих цілей мережевий протокол визначає формат пакетів і забезпечує систему адресації.
[*Стек протоколів*](https://en.wikipedia.org/wiki/Protocol_stack) або мережевий стек є реалізацією набору протоколів комп’ютерної мережі або сімейства протоколів. Можна казати, що набір протоколів визначає взаємодію протоколів для вирішення певного класу мережевих задач, а стек — це орієнтована структура зв’язку протоколів та програмна реалізація.
Окремі протоколи стеку часто розробляються зі спеціалізованою метою. Така модульність спрощує проектування та оцінку. Оскільки кожен модуль протоколу зазвичай взаємодіє з двома іншими, їх репрезентують як шари в стеку протоколів.

Найнижчий протокол завжди має справу з низькорівневою взаємодією з комунікаційним обладнанням. Кожен вищий рівень додає додаткові можливості. Програми користувача зазвичай мають справу лише з найвищими шарами.
### [Рівні моделі OSI](https://en.wikipedia.org/wiki/OSI_model)

Ми почнемо опис рівнів моделі OSI з 7-го рівня, який називається прикладним i на якому додатки користувача звертаються до мережі. Модель OSI закінчується 1-м рівнем - фізичним, на якому визначено стандарти, що пред'являються незалежними виробниками до середовищ передачі даних.
## [Протоколи мережі Інтернет,](https://en.wikipedia.org/wiki/Internet_protocol_suite) з якими ми почнемо працювати

### Короткий опис роботи [HTTP](https://en.wikipedia.org/wiki/HTTP) при запиті з браузера
<iframe width="560" height="315" src="https://www.youtube.com/embed/SbqjHmqozIk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
### [Створення серверів на мові JavaScript з опорою на Node.js та протоколи TCP, UDP, DNS](https://youtu.be/bHn-wTlTTR0)
<iframe width="560" height="315" src="https://www.youtube.com/embed/bHn-wTlTTR0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
### [Простійший HTTP сервер на nodejs](https://replit.com/join/cltvdnmkor-arthmax)
```js=1
const http = require("http");
const server = http.createServer(
(req, res) => {
console.log(req.url);
res.writeHead(200, { "Content-Type": "text/plain" });
res.end("Hello, World! Your request was "+ req.url);
}
);
server.listen(3000);
```
## [Simple Page by Express Server](https://simpleexpressserver.arthmax.repl.co/)
[Створення та публікація html сторінки з найпростішого сервера на nodejs](https://replit.com/join/lgkmtvrxut-arthmax)
# Завдання на лабораторну роботу 1
## Приклад роботи [команди ping](https://en.wikipedia.org/wiki/Ping_(networking_utility)), що перевіряє повний час подорожі запиту до сервера та назад (RTT)
```jsonld=
[anonymous@2ip ~]$ ping -c 10 replit.com
PING replit.com (104.18.12.38): 56 data bytes
64 bytes from 104.18.12.38: icmp_seq=0 ttl=57 time=0.668 ms
64 bytes from 104.18.12.38: icmp_seq=1 ttl=57 time=0.594 ms
64 bytes from 104.18.12.38: icmp_seq=2 ttl=57 time=0.481 ms
64 bytes from 104.18.12.38: icmp_seq=3 ttl=57 time=0.486 ms
64 bytes from 104.18.12.38: icmp_seq=4 ttl=57 time=0.519 ms
64 bytes from 104.18.12.38: icmp_seq=5 ttl=57 time=0.533 ms
64 bytes from 104.18.12.38: icmp_seq=6 ttl=57 time=0.523 ms
64 bytes from 104.18.12.38: icmp_seq=7 ttl=57 time=0.581 ms
64 bytes from 104.18.12.38: icmp_seq=8 ttl=57 time=0.592 ms
64 bytes from 104.18.12.38: icmp_seq=9 ttl=57 time=0.558 ms
--- replit.com ping statistics ---
10 packets transmitted, 10 packets received, 0.0% packet loss
```
1. Зробити клієнт-серверний додаток на мові javascript, використовуючи протокол HTTP, що тестує повний час подорожі запиту до сервера та назад (RTT) з обчисленням *мінімального, максимального, медіанного та середнього часу RTT, середнього квадратичного відхилення та коефіцієнта асимметрії* для частот запитів с клієнта до сервера 16Гц, 8Гц, 4Гц, 2Гц, 1Гц для розмірів клієнтських запитів 128, 256, 512, 1024, 2048 байт.
Результати представити у вигляді таблиць
2. Протестувати роботу Вашого клієнт-серверного додатку в персональній мережі (PAN) та у всесвітній мережі (WAN, наприклад, на хостінгах replit.com), а також з мобільних пристроїв.
3. Дати оцінку відстані до сервера та тих характеристик каналу клієнт-сервер, що можно отримати з ціх даних
4. Порівняти отримані дані с даними системної мережевої утіліти ping.
# Ресурси
1. https://hpbn.co/ High Performance Browser Networking, Ilya Grigorik, online version
2. https://en.wikipedia.org/wiki/Transmission_Control_Protocol Transmission Control Protocol
3. https://en.wikipedia.org/wiki/Computer_network
4. https://en.wikipedia.org/wiki/Ping_(networking_utility)
5. [Getting Started with Developer Tools](https://youtu.be/NUKxyR0G1MU?si=ktZ6o3Q_OlJaacXJ)
6. [Inspect Network Activity - Chrome DevTools 101](https://youtu.be/e1gAyQuIFQo?si=6vTUCHepjJdyW9nb)
7. [Identifying backend connection latencies with chrome devtools](https://youtu.be/IjJtmfjp1Ls?si=6O66S4OEDQKDh3bI)
8. [Hello World HTTP server](https://replit.com/join/cltvdnmkor-arthmax)
# Посилання для самостійного ознайомлення:
1. [Hackmd features](https://hackmd.io/features)
1. [Node.js](https://ru.wikipedia.org/wiki/Node.js)
1. [Сайт, що тестує Ваш IP](https://2ip.ua)
2. [ping](https://2ip.ua/ru/services/ip-service/ping-traceroute)
2. [Пропускна_здатність](https://uk.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%BF%D1%83%D1%81%D0%BA%D0%BD%D0%B0_%D0%B7%D0%B4%D0%B0%D1%82%D0%BD%D1%96%D1%81%D1%82%D1%8C)