---
# System prepended metadata

title: экзамен

---

# [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
Відповідь....
:::




