Як розетки працюють через бездротові з'єднання?


15

Я працював лише на клієнтських (зокрема мобільних) програмах, що використовують Android, де всі мережі обробляються на рівні HTTP за допомогою компонентів, що надаються рамками, як HttpUrlConnection.

Але системи push-messaging, такі як Websockets / XMPP тощо, підтримують стійке з'єднання з сервером. Навіть GCM Google, який випікається на підтримуваних Google Play пристроях, підтримує стійке з'єднання із серверами.

Моє запитання: як це працює без зливу акумулятора? Якщо ми робимо безперервні запити HTTP послідовно, розряджання акумулятора є значним. Як підтримуються ці стійкі зв’язки, не стикаючись з тією ж проблемою?


Ваше запитання про розетки чи веб-розетки? Це дві дуже різні речі.
svick

@svick Моє запитання стосувалося розеток.
Vinay S Shenoy

Відповіді:


23

Відкрите TCP-з'єднання - це логічний стан. Це не означає, що ці дані завжди надсилаються вперед і назад. Після первинного тристороннього рукостискання ви перейшли у стан "підключення". Ви перебуваєте в такому стані, поки не відбудеться або тривимірне відключення або не вдається зберегти життя.

Протягом життя з'єднання можуть бути створені ресурси з базового "фізичного" середовища для передачі даних для цього з'єднання. У разі дротового з’єднання це питання перенесення Ethernet-кадрів навколо. У випадку бездротового з'єднання 3G / 4G це робиться шляхом встановлення з'єднань з протоколами нижчого рівня за необхідності.

Тому протягом життя з'єднання не існує жодного фізичного базового з'єднання даних. Натомість він лежить у стані спокою, очікуючи, що будь-який з однолітків у з'єднанні TCP повинен надсилати дані.

Інша проблема полягає в тому, що TCP заснований на ack . Рівні TCP можуть досить ефективно інформувати один одного про те, що було отримано напевно. Після відмови TCP повторно передаватиметься. Це чудово підходить для досить надійних фізичних посилань, але, як правило, розпадається в дуже галасливих / пошкоджених посиланнях, як ваші бездротові з'єднання. Як ви можете собі уявити, аки / повторні передачі трапляються дуже часто в цих умовах.

Отже, як правило, базовий протокол бездротового зв'язку робить все можливе, щоб зменшити потребу в повторній передачі TCP. Наприклад, існує безліч перевірок помилок, вбудованих у бездротовий шар. Колеги в бездротовій царині (базова станція / телефон) також використовують протокол на основі нак , щоб повідомити іншій стороні, коли вони щось не отримували. Будучи на основі нак, зменшує накладні витрати на перевірку помилок (ми вважаємо, що все добре, якщо інша сторона не скаже, що це не так). Це також допомагає вирішити помилки ранішевони пухиряться до рівня TCP - таким чином, уникаючи безлічі поштовхів TCP, намагаючись повторно передати. Більше того, це зменшує обсяг будь-яких повторних передач на бездротові однорангові - телефону не потрібно знову просити сервер десь в Інтернеті про пакет, лише базову станцію по бездротовому каналу зв'язку.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.