owned this note
owned this note
Published
Linked with GitHub
# [2025: Комп'ютерні системи та мережі. Екзаменаційний лист 3.]()
[TOC]
---
## [Прізвище Ім'я та по Батькові. Дата народження.]()
Дужевідомий Іван Олександрович, 30.07.2003
<img src=https://s10.s3c.es/imag/_v0/1762x1138/c/9/e/700x420_Captura-de-Pantalla-2022-11-18-a-las-161624.jpg>
---
# [1. Екзаменаційні запитання (4 бали)]()
- [ ] *1.1 Чому завдання точної синхрокоординації майбутніх подій у мережі з детермінованими параметрами можна вирішити в загальному випадку, а просте, на перший погляд, завдання синхронізації точних годинників в такій же мережі не можна вирішити в загальному випадку, наприклад, у каналі з асиметрією поширення? Які практичні параметри каналу зв'язку дозволяють виконувати точну синхрокоординацію майбутніх подій (наприклад, отримання сигналу від сервера у запланований час на клієнті) в клієнт-серверному додатку навіть для каналів з асиметрією поширення?
(2 бали)*
### [Відповідь]()
:::info
...............
:::
- [ ] *1.2 Наведіть приклади практичних завдань, у яких розв'язання задачі точної синхрокоординації майбутніх подій у мережі дозволяє обійтися без вирішення найважчого завдання синхронізації годинника!*
### [Відповідь]()
:::info
...............
:::
# [2. Розрахункові екзаменаційні завдання (6 балів)]()
## [2.1 Час передачі даних (3 бали)]()
Обчисліть час передачі Вашого фото в виділеному каналі, де використовується метод AIMD з низьким стартом (навчальна кількість пакетів дорівнює 1 і до першого переповнення кількість пакетів подвоюється). Параметр аддитивного зростання дорівнює 1, параметер мультипликативного зниження дорівнює 1/2. Втрачені пакети передаються повторно.
Розмір пакету передачи 4000 байт, дистанція між клієнтом та сервером М*1000 км (дистанція - це дліна канала, M - це місяць Вашого народження), смуга пропускання каналу 800 Кбіт/c, та тип каналу -- радіорелейний.
### [Розв'язання]()
:::info
1. .......
2. .......
:::
## [2.2 Відносна затримка (3 бали)]()
Розробить метод обчислення відносної затримки для умов пункта 2.1, або її аналога! Порівняйте її з відносною затримкою для протоколу зупинки та очікування.
### [Розв'язання]()
:::info
1. .......
2. .......
3. .......
:::
# [3. Екзаменаційне завдання на реалізацію (15 балів)]()
## [3.1 Час передачі даних для протоколу зупинки та очікування]()
Напишіть серверно-клієнтський додаток, що, використовуючи протокол WebSocket, виконує синхронізацію годинника клієнта 2 з годинником клієнта 1 як майстер-годинником, приймаючи гіпотезу симетричності каналів. Дайте оцінку похибки методу визначення початкової синхрокорекції $𝜃_0$
Самостійно вибрати передбачуваний Вами закон розподілу випадкової величини з набору:
а) [Гаусовий розподіл](https://ru.wikipedia.org/wiki/%D0%9D%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D1%80%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5)
б) [Зміщений розподіл Пуассона](https://en.wikipedia.org/wiki/Displaced_Poisson_distribution)
в) [Зміщений експоненційний розподіл](https://pssc.org.ph/wp-content/pssc-archives/The%20Philippine%20Statistician/1998/07_Estimation%20of%20Parameters%20of%20the%20Displaced%20Exponential%20Distribution.pdf)
Для обраного розподілу за даними роботи програми отримати оцінки випадкової величини :
* min *- мінімум*
* $q_{1/4}$ *- перший (або нижній) квартiль*
* $q_{2/4}=q_{1/2}=$ med *- медіана або другий квартiль*
* avg *- середнє арифметичне*
* mode *- мода*
* $q_{3/4}$ *- третій (або верхній) квартiль*
* max *- максимум*
* stddev *- стандартне відхилення*
* $I_q = q_{3/4} - q_{1/4}$ *- інтерквартiльний розмах*
Вибрати найбільш точну оцінку для з ціх параметрів для $𝜃_0$
### [Опис розв'язання (заменіть своїм)]()
:::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
Відповідь....
:::