owned this note
owned this note
Published
Linked with GitHub
# [2025: Комп'ютерні системи та мережі. Екзаменаційний лист 1.]()
[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 На якому рівні стека OSI знаходиться протокол ICMP і в яких випадках прикладна браузерна програма на мові javascript (разом із серверною частиною) може бути кращою (точнішою), ніж утиліти, що використовують тільки ICMP, наприклад, утиліти ping та інші? Коли є сенс використовувати, або самому імплементувати протокол зупинки та очікування? (2 бали)*
### [Відповідь]()
:::info
...............
:::
- [ ] *1.2 Наведіть короткі витримки програмного коду мовою javascript, які демонструють переваги javascript коду над відповідними утілітами ICMP, та прокоментуйте переваги та недоліки цього коду. Які протоколи або мережеві утиліти використовують цей протокол? Пояснить чому та наведіть приклади їх використання(2 бали)*
### [Відповідь]()
:::info
...............
:::
# [2. Розрахункові екзаменаційні завдання (6 балів)]()
## [2.1 Час передачі даних (3 балли)]()
Вашу екзаменаційну фотографію необхідно передати від клієнта на сервер з мінімальною підсумковою затримкою через комунікаційну систему із двома виділеними для Вас паралельними каналами.
Обчислите мінімальний час передачі фотографії в цій комунікаційній системі, якщо для передачі даних в кожному каналі використовується протокол зупинки та очікування і якщо Вам відомі: обсяг даних - розмір в байтах Вашої фотографії, максимальний розмір пакету передачи 65000 байт, дистанція між клієнтом та сервером M тисяч километрів (дистанція - це дліна каналів, M - це місяць Вашого народження), смуга пропускання першого каналу 1 Мбіт/c, смуга пропускання другого каналу 2 Мбіт/c, та тип каналів -- волоконно-оптичний.
### [Розв'язання]()
:::info
1. .......
2. .......
:::
## [2.2 Відносна затримка (3 балли)]()
Розробить метод обчислення відносної затримки для умов пункта 2.1, або її аналога! Порівняйте її з відносною затримкою для більш ефективного протоколу. Яка назва у цього ефективного протоколу і на якому рівні стеку OSI він працює?
### [Розв'язання]()
:::info
1. .......
2. .......
3. .......
:::
# [3. Екзаменаційне завдання на реалізацію (15 балів)]()
## [3.1 Час передачі даних для протоколу зупинки та очікування]()
Використовуючи протокол HTTP, метод POST та API fetch() побудувати клієнт-серверний додаток для сервера на хостінгу glitch.com або github codespace, що
1) передбачає **час передачі даних** для протоколу зупинки та очікування із заданим розміром кадру даних.
2) виконує емпіричну оцінку **часу передачі даних** для протоколу зупинки та очікування.
3) передбачає **час передачі даних** для протоколу HTTP.
4) виконує емпіричну оцінку **часу передачі даних** для протоколу HTTP.
**Обсяг даних** для передачі - не більш 64 Мбайт, дані - це фото, або аудіо, що Ви вибираєте на клієнтському компьютері.
Гарантуйте у коді можливість зміни розміру кадру та **максимальний розмір кадру** даних 65000 байт.
Обчислите приблизну **затримку поширення** між клієнтом та сервером як для Вашої реалізації протоколу зупинки та очікування для різних розмірів кадру, так і для протоколу HTTP.
Отримайте емпіричну оцінку **затримки передавання** кадру даних як для Вашої реалізації протоколу зупинки та очікування для різних розмірів кадру, так і для протоколу HTTP.
Отримайте емпіричну оцінку **смуги пропускання** каналу як для Вашої реалізації протоколу зупинки та очікування для різних розмірів кадру, так і для протоколу HTTP.
Порівняйте і зробить висновки.
### [Опис розв'язання (замініть своїм)]()
:::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://glitch.com/xxxxx
:::
# [4. Питання (приклад)]()
:::danger
*Ваша програма не синхронізує клієнта із сервером. У ній немає тестування асиметрії каналу. Додайте у реалізацію код, який якось вирішує ці проблеми!*
:::
---
:::info
Відповідь....
:::