…
…
Обчисліть час передачі Вашого фото в виділеному каналі, де використовується метод AIMD з низьким стартом (навчальна кількість пакетів дорівнює 1 і до першого переповнення кількість пакетів подвоюється). Параметр аддитивного зростання дорівнює 1, параметер мультипликативного зниження дорівнює 1/2. Втрачені пакети передаються повторно.
Розмір пакету передачи 4000 байт, дистанція між клієнтом та сервером М*1000 км (дистанція - це дліна канала, M - це місяць Вашого народження), смуга пропускання каналу 800 Кбіт/c, та тип каналу – радіорелейний.
Розробить метод обчислення відносної затримки для умов пункта 2.1, або її аналога! Порівняйте її з відносною затримкою для протоколу зупинки та очікування.
Напишіть серверно-клієнтський додаток, що, використовуючи протокол WebSocket, виконує синхронізацію годинника клієнта 2 з годинником клієнта 1 як майстер-годинником, приймаючи гіпотезу симетричності каналів. Дайте оцінку похибки методу визначення початкової синхрокорекції \(𝜃_0\)
Самостійно вибрати передбачуваний Вами закон розподілу випадкової величини з набору:
а) Гаусовий розподіл
б) Зміщений розподіл Пуассона
в) Зміщений експоненційний розподіл
Для обраного розподілу за даними роботи програми отримати оцінки випадкової величини :
…
Робота зроблена відповідно до алгоритму описаного в …
Код відображає на веб-сторінці час передачі даних для протоколу зупинки та очікування. Для синхронізації використовується бібліотека superlib
<script src="/superlib/superlib.js"></script>
<body onload="start()">
<pre id=MyClocks>...</pre>
<hr>
<pre id=TimeConsole></pre>
<hr>
</body>
Тут використовуються два pre-елементи: MyClocks та TimeConsole.
MyClocks буде відображати час сервера та браузера, а TimeConsole буде відображати час передачі даних для протоколу зупинки та очікування.
Функція start ініціалізує процес обчислення часу та обробку змін часу:
Створюється об'єкт, який буде зв'язуватися з сервером кожну секунду (1000 мілісекунд).
Обробка змін зміщення часу:
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.
Взагалі код виконує такі кроки:
Ваша програма не синхронізує клієнта із сервером. У ній немає тестування асиметрії каналу. Додайте у реалізацію код, який якось вирішує ці проблеми!
Відповідь…