Soketler kablosuz bağlantılar üzerinden nasıl çalışır?


15

Ben sadece tüm ağ HttpUrlConnection gibi sağlanan çerçeve kullanarak HTTP katmanında ele Android kullanarak istemci tarafında (özellikle, mobil) uygulamalar üzerinde çalıştım.

Ancak Websockets / XMPP vb. Gibi push mesajlaşma sistemlerinin tümü, sunucuya kalıcı bir bağlantı sağlar. Google'ın Google Play destekli cihazlara dönüştürdüğü GCM bile sunuculara kalıcı bir bağlantı sağlar.

Benim sorum şu, bu bataryayı tüketmeden nasıl çalışıyor? Sürekli HTTP istekleri sırayla yaparsak, pilin boşalması önemlidir. Bu kalıcı bağlantılar aynı sorunla karşılaşmadan nasıl korunur?


Sorunuz soketler veya web soketleri hakkında mı? Bunlar çok farklı iki şey.
svick

@svick Sorum, soketlerle ilgiliydi.
Vinay S Shenoy

Yanıtlar:


23

Açık bir TCP bağlantısı mantıksal bir durumdur. Verilerin her zaman ileri geri gönderildiği anlamına gelmez. İlk üç yönlü el sıkışmasından sonra "bağlı" duruma girdiniz. 3 yönlü bir bağlantı kesilinceye veya canlı tutma başarısız olana kadar bu durumdasınız.

Bağlantının ömrü boyunca, söz konusu bağlantı için veri aktarımı yapmak üzere temeldeki "fiziksel" ortamdan kaynaklar oluşturulabilir. Kablolu bağlantı durumunda, bu, ethernet çerçevelerinin etrafına aktarılması meselesidir. 3G / 4G kablosuz bağlantı durumunda, bu, gerektiğinde alt düzey protokollerle bağlantılar kurularak yapılır.

Dolayısıyla bağlantının ömrü boyunca, var olan fiziksel veri bağlantısı yoktur. Bunun yerine, TCP bağlantısındaki eşlerden birinin veri göndermesini beklemek uykudadır.

Başka bir sorun TCP'nin ack tabanlı olmasıdır. TCP emsalleri birbirlerini kesinlikle alınan şeylerden haberdar ederler. Arıza durumunda TCP yeniden iletir. Bu, oldukça güvenilir fiziksel bağlantılar için harika çalışır, ancak kablosuz bağlantılarınız gibi çok gürültülü / kırık bağlantılarda parçalanma eğilimindedir. Tahmin edebileceğiniz gibi, bu ortamlarda acks / yeniden aktarımlar çok sık gerçekleşir.

Dolayısıyla, tipik olarak, altta yatan kablosuz protokol TCP yeniden iletimlerine olan ihtiyacı azaltmak için elinden gelen her şeyi yapar. Örneğin, kablosuz katmana yerleşik olarak birçok hata denetimi vardır. Kablosuz alandaki (baz istasyonu / telefon) akranları da bir şey almadığı zaman diğer tarafa söylemek için nak tabanlı bir protokol kullanır . Nak tabanlı olmak hataları kontrol etme yükünü azaltır (diğer taraf bunu söylemediği sürece her şeyin iyi olduğunu varsayarız). Daha önce hataların giderilmesine de yardımcı olurTCP katmanına doğru kabarırlar - böylece yeniden aktarmaya çalışırken çok sayıda TCP çökmesini önlerler. Dahası, kablosuz eşlere herhangi bir yeniden iletimin kapsamını azaltır - telefonun internette bir yerde sunucudan tekrar paket istemesi gerekmez, sadece kablosuz bağlantı üzerinden baz istasyonu.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.