# [2024: Комп'ютерні системи та мережі. Екзаменаційний лист 1.]()
[TOC]
---
## [Прізвище, Ім'я та по Батькові. Дата народження.]()
Єжкова Аліна Геннадіївна, 28.01.1997
---
# [1. Екзаменаційні запитання (5 балів)]()
- [x] *1.1 Коли є сенс використовувати, або самому імплементувати протокол зупинки та очікування? (2 бали)*
### [Відповідь]()
:::info
Протокол зупинки та очікування має сенс використовувати або імплементувати у таких випадках:
1. Простота реалізації: для навчальних або експериментальних цілей, коли потрібно показати основні принципи роботи протоколів передачі даних.
2. Малі відстані та низька затримка: в мережах з малими відстанями між вузлами та низькою затримкою, де час очікування підтвердження не є критичним.
3. Надійність передачі: в умовах високої надійності каналу, де ймовірність втрати пакетів низька, що мінімізує затримки через повторну передачу.
:::
- [x] *1.2 Які протоколи або мережеві утиліти використовують цей протокол? Пояснить чому та наведіть приклади їх використання(3 бали)*
### [Відповідь]()
:::info
1. XMODEM: простий протокол передачі файлів, який використовувався на ранніх етапах розвитку комп'ютерних мереж, де важлива була надійність передачі даних навіть за рахунок швидкості.
2. TFTP (Trivial File Transfer Protocol): використовується для передачі файлів у локальних мережах, де невеликий обсяг даних і простота реалізації мають більше значення, ніж висока швидкість передачі.
3. Прості сценарії автоматизації: протокол зупинки та очікування може бути використаний у самописних скриптах для передачі даних між двома пристроями, коли не потрібна складна логіка контролю помилок.
Приклади використання:
1. Ініціалізація мережевого обладнання: завантаження прошивки або конфігураційних файлів через TFTP.
2. Освітні проекти: навчальні лабораторні роботи, де студенти вивчають основи мережевої взаємодії.
:::
# [2. Розрахункові екзаменаційні завдання (20 балів)]()
## [2.1 Час передачі даних (10 балів)]()
Обчислите час передачі даних для протоколу зупинки та очікування, якщо Вам відомі: обсяг даних 10Мбайт, максимальний розмір пакету передачи 65000 байт, дистанція між клієнтом та сервером 17000 км, смуга пропускання каналу 1 Мбіт/c, та тип каналу -- волоконно-оптичний.
### [Розв'язання]()
:::info
1. Обчислення часу передачі одного пакету:
- Обсяг даних: 10 Мбайт = 80 Мбіт = 80 000 000 біт
- Максимальний розмір пакету: 65 000 байт = 520 000 біт
- Кількість пакетів: 80 000 000 біт / 520 000 біт = 153.85 (округлюємо до 154 пакетів)
- Час передачі одного пакету: 520 000 біт / 1 000 000 біт/с = 0.52 с
2. Обчислення затримки сигналу:
- Дистанція: 17 000 км
- Швидкість світла у волоконно-оптичному каналі (приблизно 2/3 від швидкості світла): 2 * 10^8 м/с
- Затримка сигналу: 17 000 000 м / (2 * 10^8 м/с) = 0.085 с
3. Обчислення загального часу передачі:
- Для протоколу зупинки та очікування, загальний час передачі даних включає (час передачі пакета + час затримки сигналу + час підтвердження отримання) * кількість пакетів.
- (0.52 с + 0.085 с + 0.085 с) * 154 = 106.26 с
:::
## [2.2 Відносна затримка (10 балів)]()
Обчисліть відносну затримку для умов пункта 2.1. Порівняйте її з відносною затримкою для більш ефективного протоколу. Яка назва у цього ефективного протоколу і на якому рівні стеку OSI він працює?
### [Розв'язання]()
:::info
1. Обчислення відносної затримки для протоколу зупинки та очікування:
- Відносна затримка = (час затримки сигналу) / (час передачі даних)
- Відносна затримка = 0.085 с / 0.52 с = 0.163
2. Порівняння з відносною затримкою для ефективного протоколу:
- Для протоколу передачі з використанням зворотного зв'язку та чергування (наприклад, Selective Repeat):
- Затримка зменшується за рахунок одночасної передачі кількох пакетів без очікування підтвердження на кожен окремий пакет.
- Припустимо, що для Selective Repeat відносна затримка становить 0.05.
3. Назва ефективного протоколу і рівень стеку OSI:
- Назва протоколу: Selective Repeat
- Рівень OSI: Транспортний рівень
:::
# [3. Екзаменаційне завдання на реалізацію (25 балів)]()
## [3.1 Час передачі даних для протоколу зупинки та очікування]()
Використовуючи протокол HTTP, метод POST та API fetch() побудувати клієнт-серверний додаток для сервера на хостінгу replit.com, що виконує емпіричну оцінку **часу передачі даних** для протоколу зупинки та очікування.
**Обсяг даних** для передачі: 10Мбайт.
Гарантуйте у коді **максимальний розмір кадру** даних 65000 байт.
Обчислите приблизну **затримку поширення** між клієнтом та сервером.
Отримайте емпіричну оцінку **затримки передавання** кадру даних.
Отримайте емпіричну оцінку **смуги пропускання** каналу.
### [Опис розв'язання (замініть своїм)]()
:::info
...............
Робота зроблена відповідно до алгоритму, описаного в .....
Код відображає на веб-сторінці час передачі даних для протоколу зупинки та очікування. Для синхронізації використовується бібліотека superlib
1. Підключення бібліотеки superlib:
```html=1
<script src="/superlib/superlib.js"></script>
```
2. Створення HTML-структури сторінки:
```html=1
<body onload="start()">
<pre id=MyClocks>...</pre>
<hr>
<pre id=TimeConsole></pre>
<hr>
</body>
```
Тут використовуються два pre-елементи: MyClocks та TimeConsole.
MyClocks буде відображати час сервера та браузера, а TimeConsole буде відображати час передачі даних для протоколу зупинки та очікування.
Функція start ініціалізує процес обчислення часу та обробку змін часу:
Створюється об'єкт, який буде зв'язуватися з сервером кожну секунду (1000 мілісекунд).
---
Обробка змін зміщення часу:
```js=1
super.on('change', function (offset) {
numSamples++;
let alpha = 1 / (numSamples + 1);
smoothed = alpha * offset + (1 - alpha) * smoothed;
let s = '\n Clocks (with small errors): ' + smoothed.toFixed(3) + ' ms<br>' + TimeConsole.innerHTML;
TimeConsole.innerHTML = s;
});
```
---
У цьому блоці коду, кожен раз при виявленні зміни зміщення часу, відбувається оновлення альфа-коефіцієнта та обчислення зміщення часу. Значення часу потім додається до елемента TimeConsole.
Взагалі код виконує такі кроки:
- Відправлення клієнтським додатком запиту на сервер для .....
- Обчислення різниці між ...
- Повторення процесу декілька разів та сумування обчислених різниць з врахуванням коефіцієнта згладжування.
- _Якщо потрібно перевірити швидкість мережі_ : використання додаткового серверного файлу для виконання тесту швидкості мережі та отримання даних про швидкість завантаження, швидкість відправлення та пінг.
:::
## [3.3 Посилання на розв'язання](*)
:::success
https://replit.com/xxxxx
:::
# [4. Питання (приклад)]()
:::danger
*Ваша програма не синхронізує клієнта із сервером. У ній немає тестування асиметрії каналу. Додайте у реалізацію код, який якось вирішує ці проблеми!*
:::
---
:::info
Відповідь....
:::