Come funzionano gli zoccoli con le connessioni wireless?

14

Ho lavorato solo su applicazioni client (specificamente mobili) utilizzando Android, dove tutto il networking è gestito a livello HTTP utilizzando componenti forniti come framework HttpUrlConnection.

Ma spingere sistemi di messaggistica come Websockets / XMPP, ecc., mantengono tutti una connessione persistente al server. Anche il GCM di Google, che è integrato nei dispositivi supportati da Google Play, mantiene una connessione permanente ai server.

La mia domanda è: come funziona senza scaricare la batteria? Se facciamo richieste HTTP continue in sequenza, lo scaricamento della batteria è significativo. Come vengono mantenute queste connessioni persistenti senza incontrare lo stesso problema?

    
posta Vinay S Shenoy 12.07.2014 - 15:23
fonte

1 risposta

22

Una connessione TCP aperta è uno stato logico. Ciò non implica che tali dati vengano sempre inviati avanti e indietro. Dopo l'iniziale handshake a tre vie hai inserito lo stato "connesso". Sei in quello stato finché non si verifica una disconnessione a 3 vie o se un keep-alive fallisce.

Durante la vita della connessione, è possibile stabilire risorse dal supporto "fisico" sottostante per effettuare trasferimenti di dati per quella connessione. Nel caso di una connessione cablata, si tratta di trasferire i frame ethernet in giro. Nel caso di una connessione wireless 3G / 4G, ciò avviene stabilendo connessioni con i protocolli di livello inferiore secondo necessità.

Quindi, per la durata della connessione, non esiste una connessione dati fisica sottostante esistente. Invece giace latente in attesa che un peer nella connessione TCP debba inviare i dati.

Un altro problema è che TCP è ack basato. I peer TCP possono essere informati in modo abbastanza efficiente su ciò che è stato definitivamente ricevuto. In caso di fallimento, TCP ritrasmetterà. Funziona perfettamente per collegamenti fisici abbastanza affidabili, ma tende a cadere a pezzi in collegamenti molto rumorosi / interrotti, come le connessioni wireless. Come puoi immaginare, gli ack / ritrasmissioni si verificano molto frequentemente in questi ambienti.

In genere, il protocollo wireless sottostante fa tutto il possibile per ridurre la necessità di ritrasmissioni TCP. Ad esempio, c'è un sacco di controllo degli errori incorporato nel livello wireless. I peer nel regno wireless (la stazione base / telefono) usano anche un protocollo basato su nak per dire all'altro lato quando non hanno ricevuto qualcosa. Essendo basato su nak riduce il sovraccarico nel controllo degli errori (assumiamo tutto bene a meno che l'altro lato non ne dica). Aiuta anche a indirizzare gli errori prima a livello bolla sul livello TCP, evitando così un sacco di thrash TCP che tenta di ritrasmettere. Inoltre, riduce la portata di qualsiasi ritrasmissione ai peer wireless - il telefono non ha bisogno di chiedere al server da qualche parte su Internet per il pacchetto di nuovo, solo la stazione base sul collegamento wireless.

    
risposta data 12.07.2014 - 16:41
fonte

Leggi altre domande sui tag