Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia Tuesday TopDrive KupDnes Navrcholu Bomba NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Test akcelerátorů Internetu: proč je dial-up pomalý?

V prvním díle si povíme, proč je Internet přes modem pomalejší, než by odpovídalo rychlosti samotných modemů. Spojení mezi ISP a uživatelem sice brzdí, ale více, než je záhodno. Také nastíníme způsoby, jak je možné čas ušetřit, a s čím nám tedy mohou pomoci programy zvané akcelerátory. V díle druhém se pak podíváme na praktické výsledky pěti z nich.

V nadpisu tohoto článku se píše o „Internetu“, ale hned na začátek čestně přiznávám, že ve skutečnosti se budeme věnovat výhradně webu. Proč zrovna webu? Inu, ze zkušenosti mohu říci, že kromě techniků lidé obvykle ztotožňují Internet s tím, co vidí ve svém webovém prohlížeči (koneckonců se to přece jmenuje Internet Explorer, ne?). Jedinou významnější výjimkou je elektronická pošta, nicméně spousta uživatelů používá web i k mailování (a k mnoha dalším činnostem, k nimž se vůbec nehodí). Zkoumání obecného Internetu proto přenechme akademikům a hnidopichům (případně kombinaci obojího), a my ostatní budeme „rychlostí Internetu“ rozumět rychlost webu, resp. čas potřebný k zobrazení www stránky. Dále budeme pro jednoduchost předpokládat, že taková stránka je napsána v (X)HTML a že se přenáší protokolem HTTP.

Neuškodí, když začneme trochu zeširoka (netrpělivci, čtěte až přespříští odstavec). Z pohledu uživatele Internet obsahuje nějaké informace, které se mu zobrazují v prohlížeči ve formě stránek. Jednu takovou stránku často tvoří data, která poskytují různé servery. Nebudeme se příliš zabývat tím, co musí webový server udělat mezi přijetím požadavku a odesláním dat, přestože i to pochopitelně ovlivňuje, za jak dlouho se stránka uživateli zobrazí, a zaměříme se na tok dat mezi prohlížečem a servery, protože právě v tom se od sebe různé způsoby připojení k Internetu liší.

Podívejme se, jak celý proces zobrazení webové stránky zhruba probíhá. Na začátku je obvykle potřeba převést jméno serveru na IP adresu (dotaz DNS). Poté se prohlížeč spojí s daným serverem a vyžádá si stránku. Když se stránka načítá, prohlížeč ji průběžně parsuje, získává informace o dalších objektech ve stránce obsažených (obrázky, stylesheety, rámce, javascript aj.) a stahuje je stejným způsobem jako původní stránku. V průběhu parsování většina prohlížečů již také zobrazuje částečný obsah stránky. Reálná situace je o něco složitější, ale k tomu se dostaneme za chvíli; teď se vrátíme k rychlosti modemového připojení k Internetu.

Zdálo by se, že úzkým hrdlem je linka mezi ISP a uživatelem – její přenosová rychlost je maximálně 56 kbit/s u k­lasického dialupu a 128 kbit/s u ISDN při spojení obou kanálů, zatímco rychlosti na páteřní síti se pohybují nejméně o tři řády výš. Jak je ale tato kapacita skutečně využita a kde nastávají zdržení?

DNS

Klient vždy musí nejprve vyslat UDP paket s dotazem na DNS server ISP a čekat, než se tento server rekurzivně dopracuje až k odpovědi, kterou pošle zpět. U často vyžadovaných dotazů (např. www.lupa.cz :-) bude příslušná odpověď v cache, takže odpadne rekurze, ale i tak je tu určitá prodleva.

Navázání spojení TCP

Klient navazuje spojení s každým serverem, někdy i více spojení s jediným serverem. Každé zahájení spojení s sebou nese přinejmenším jedno čekání (mezi odesláním TCP paketu s nastaveným bitem SYN a přijetím paketu SYN ACK).

Vlastní přenos dat

Přímo z koncepce protokolu TCP vyplývá, že kapacita linky nebude ani v ideálním případě využita na maximum. Začněme velikostí MTU. Ta bývá u modemových serverů menší (typicky 576 bytů) než na serverech (většinou 1500 bytů), takže dochází k fragmentaci. V praxi však ztráta nebude nijak drastická: při minimální délce hlavičky protokolu IP (20 bytů) se fragmentací proplýtvá cca 0,44 procenta šířky pásma.

Výrazněji se projevuje velikost okna TCP, resp. algoritmus TCP Slow Start (viz RFC 2581). Jde o to, že vysílající strana ve spojení TCP se snaží maximalizovat velikost okna, aby se eliminovaly prodlevy při čekání na potvrzení ACK. Počáteční okno je ovšem malé, aby se zabránilo případnému zahlcení sítě. Při přenosu větších bloků dat to nevadí, protože velikost okna se celkem rychle ustálí na ideální hodnotě, ale to se zpravidla netýká persistentních spojení HTTP, pokud se přenáší postupně několik malých souborů (např. ikony).

Konkurence paralelních spojení

Jak jsme uvedli výše, prohlížeč se stahováním dalších objektů nečeká, až se dokončí přenos kódu HTML, ale rovnou naváže další spojení. Jenže paralelně probíhající přenos využívá prakticky celou šířku pásma ve směru ke klientovi, a tím se zvětšuje latence. Je sice pravda, že důležitější je latence v opačném směru (kvůli paketům ACK), ale i příliš velké zpoždění paketu ve směru k uživateli má za následek, že příslušný ACK nebude včas odeslán a vysílající strana znovu zbytečně pošle data, která už klient má.

Ve směru od serveru se pochopitelně také občas ztratí či zpozdí paket ACK, takže klient musí zopakovat požadavek HTTP. Ačkoliv je tady situace lepší, protože retransmit probíhá ve směru od klienta (tj. kapacita linky nebývá problém), prodlouží se časový limit, a když se ztratí i další pakety ACK, může se v nejhorším případě dostat až do oblasti exponenciálních časů (viz STD007). Uživatel to většinou diagnostikuje jako „zamrzlé spojení“ a klikne na tlačítko Obnovit…

Zmíněné problémy se projevují tím výrazněji, čím více paralelních spojení je otevřeno. Běžně používané prohlížeče se naštěstí nesnaží otevřít najednou více spojení než určité maximum, ale i to je pro vytáčené linky příliš vysoké.

Kde se dá ušetřit?

Všechny výše uvedené problémy kromě posledního řeší použití proxy. Prohlížeč se pak nemusí zajímat o DNS, spojení s proxy bude trvalé, a to i v případě, že požadujeme stránky z různých serverů. Dobře nastavená proxy pro dial-upy by měla mít i vhodné MTU. Tady bych se chtěl zmínit o zachytávajících proxy („intercepting proxy“; nesprávně, zato častěji, označované jako transparentní proxy). Z uvedených problémů taková proxy pomůže jenom s MTU.

Konkurenci paralelních spojení řeší akcelerátory, a to tak, že se samy chovají jako proxy na klientském počítači a k nadřízenému proxy serveru otevírají jediné spojení.

To je zřejmě vše, co lze získat optimalizací spojení TCP/IP. Tím ovšem nejsou vyčerpány všechny možnosti, jak zkrátit čas potřebný pro zobrazení stránky.

Komprese

Protože HTML je z pohledu teorie informace vysoce redundantní, přímo se nabízí možnost jej komprimovat. Oproti přímému připojení umožní použití proxy (a to i zachytávájící proxy) použít kompresi gzip i tam, kde webové servery posílají obsah nekomprimovaný. Jak ale uvidíme, úspora nemusí být nijak velká.

Při modemovém přenosu dat může dojít ke kompresi na několika úrovních. Na té nejnižší stojí modemové protokoly, např. tedy V.42bis či V.44. O něco výš stojí při vytáčeném spojení protokol PPP, který také nabízí několik metod komprese, na Windows nejčastěji MPCC (Microsoft Point-to-Point Compression). Na nejvyšší úrovni pak stojí „Content-Encoding“ protokolu HTTP (např. gzip). Je zřejmé, že při kompresi na vyšší úrovni dostanou protokoly nižší úrovně data s nižší mírou redundance a dosáhnou horších kompresních poměrů. Lidově řečeno, co zkomprimuje HTTP, na tom už si MPCC vyláme zuby. Naopak, když na úrovni HTTP budeme přenášet nezkomprimovaný kód HTML, bude komprese na úrovni PPP vysoce efektivní. Neméně důležité je, že spousta formátů dat je komprimovaná sama o sobě (GIF, JPEG, MPEG, AVI, OGG, …), takže při jejich přenosu už se nic nezkomprimuje.

Předchozí odstavec se týká bezeztrátové komprese. U obrázků však přichází v úvahu i ztrátová komprese, kde dojde ke snížení kvality. Také tuto možnost akcelerátory využívají a dokonce umožňují, aby si uživatel sám vybral, jaký kompromis mezi kvalitou a velikostí mu nejlépe vyhovuje.

Nepřenášet nepotřebná data

Svým způsobem sem patří i techniky proti zbytečným retransmitům na úrovni TCP, ale těžištěm této metody je filtrování reklamních bannerů. Podstatnou, ba mnohdy převážnou část webových stránek totiž tvoří reklama, kterou uživatelé vnímají jako irelevantní. Kromě bannerů akcelerátory dokážou zablokovat i některé typy dat (např. flash).

UX konference
       

Další možností, která se nabízí, je přenášet data v pořadí podle relevance. Prohlížeče totiž začínají zobrazovat stránku dříve, než stáhnou všechny v ní obsažené objekty, a uživatele většinou text zajímá více než obrázky. Opravdu málokdy uživatel čeká na úplné natažení stránky a i v tom případě jistě uvítá, když může začít číst co nejdříve. Přitom ve chvíli, kdy se otevře několik paralelních spojení, může být načítání textu brzděno právě obrázky. Pokud je mi známo, tímto směrem se zatím nikdo nevydal.

A co dál?

Příště opustíme teoretické úvahy a podíváme se zcela prakticky, jak se daří zkrátit čas přenosu pěti českým akcelerátorům.

Petr Tesařík

Autor je spoluzakladatelem firmy Internet Info. V minulosti se zabýval testy poskytovatelů, v současné době studuje překladatelství a tlumočnictví na FFUK.

Workshop uživatelského testování použitelnosti

DW - Školení použitelnosti
  • Dokonalý web sám od sebe nikdo nevymyslí.
  • Otestujte své řešení se skutečnými uživateli.
  • Naučíme vás, jak testovat rychle, levně a efektivně.
  • Během testování může moderátor udělat desítky chyb - vyvarujte se jich

Detailní informace o workshopu uživatelského testování »

Přehled názorů

K navazani TCP spojeni
Michal Kára 18. 2. 2005 07:59
Nový
├ 
Re: K navazani TCP spojeni
Jan Šimek 18. 2. 2005 09:02
Nový
├ 
Re: K navazani TCP spojeni
Vejda 18. 2. 2005 11:07
Nový
│
├ 
Re: K navazani TCP spojeni
LK 18. 2. 2005 12:08
Nový
│
└ 
Re: K navazani TCP spojeni
Pepak 18. 2. 2005 13:38
Nový
├ 
Re: K navazani TCP spojeni
pc 19. 2. 2005 18:08
Nový
│
├ 
Re: K navazani TCP spojeni
Michal Krsek 19. 2. 2005 22:43
Nový
│
│
└ 
Re: K navazani TCP spojeni
Zdenek Pavlas 19. 2. 2005 22:55
Nový
│
│
 
└ 
Re: K navazani TCP spojeni
Michal Kubeček 19. 2. 2005 23:06
Nový
│
│
 
 
└ 
Re: K navazani TCP spojeni
Zdenek Pavlas 21. 2. 2005 10:52
Nový
│
│
 
 
 
└ 
Re: K navazani TCP spojeni
Michal Kubeček 21. 2. 2005 11:24
Nový
│
│
 
 
 
 
└ 
Re: K navazani TCP spojeni
Zdenek Pavlas 21. 2. 2005 16:59
Nový
│
└ 
Re: K navazani TCP spojeni
Michal Kubeček 19. 2. 2005 23:01
Nový
│
 
└ 
Re: K navazani TCP spojeni
Michal Kára 20. 2. 2005 08:29
Nový
└ 
Re: K navazani TCP spojeni
... 20. 2. 2005 13:56
Nový
 
└ 
Re: K navazani TCP spojeni
Michal Kubeček 20. 2. 2005 14:42
Nový
Článek pro běžného uživatele jako stvořený...
Jan Šimek 18. 2. 2005 09:00
Nový
├ 
Re: Článek pro běžného uživatele jako stvořený...
michal_sjx 18. 2. 2005 09:25
Nový
│
└ 
Re: Článek pro běžného uživatele jako stvořený...
Michal Kára 18. 2. 2005 09:27
Nový
│
 
└ 
Re: Článek pro běžného uživatele jako stvořený...
Jan Šimek 18. 2. 2005 09:33
Nový
├ 
Re: Článek pro běžného uživatele jako stvořený...
Martin 18. 2. 2005 09:31
Nový
│
└ 
Re: Článek pro běžného uživatele jako stvořený...
Jan Šimek 18. 2. 2005 09:37
Nový
│
 
├ 
Re: Článek pro běžného uživatele jako stvořený...
bln 18. 2. 2005 09:54
Nový
│
 
│
└ 
Re: Článek pro běžného uživatele jako stvořený...
J. 19. 2. 2005 18:11
Nový
│
 
├ 
Re: Článek pro běžného uživatele jako stvořený...
noname 18. 2. 2005 10:22
Nový
│
 
│
├ 
Re: Článek pro běžného uživatele jako stvořený...
Jan Šimek 18. 2. 2005 11:20
Nový
│
 
│
└ 
Re: Článek pro běžného uživatele jako stvořený...
LiLu 19. 2. 2005 11:53
Nový
│
 
└ 
Re: Článek pro běžného uživatele jako stvořený...
Petr Tesařík 18. 2. 2005 14:48
Nový
│
 
 
└ 
Re: Článek pro běžného uživatele jako stvořený...
Jan Šimek 18. 2. 2005 16:00
Nový
│
 
 
 
└ 
Re: Článek pro běžného uživatele jako stvořený...
Michal Kára 18. 2. 2005 16:10
Nový
│
 
 
 
 
└ 
Re: Článek pro běžného uživatele jako stvořený...
Grovik 19. 2. 2005 11:20
Nový
│
 
 
 
 
 
└ 
Re: Článek pro běžného uživatele jako stvořený...
Michal Krsek 19. 2. 2005 11:30
Nový
│
 
 
 
 
 
 
└ 
Re: Článek pro běžného uživatele jako stvořený...
Grovik 19. 2. 2005 11:35
Nový
│
 
 
 
 
 
 
 
└ 
Re: Článek pro běžného uživatele jako stvořený...
Michal Krsek 19. 2. 2005 12:07
Nový
│
 
 
 
 
 
 
 
 
└ 
Re: Článek pro běžného uživatele jako stvořený...
Grovik 19. 2. 2005 12:18
Nový
│
 
 
 
 
 
 
 
 
 
├ 
Re: Článek pro běžného uživatele jako stvořený...
Michal Krsek 19. 2. 2005 15:26
Nový
│
 
 
 
 
 
 
 
 
 
│
└ 
Re: Článek pro běžného uživatele jako stvořený...
Petr Tesařík 20. 2. 2005 00:04
Nový
│
 
 
 
 
 
 
 
 
 
│
 
└ 
Re: Článek pro běžného uživatele jako stvořený...
Michal Krsek 20. 2. 2005 01:21
Nový
│
 
 
 
 
 
 
 
 
 
└ 
Re: Článek pro běžného uživatele jako stvořený...
Karl 20. 2. 2005 13:17
Nový
│
 
 
 
 
 
 
 
 
 
 
└ 
Re: Článek pro běžného uživatele jako stvořený...
Michal Krsek 20. 2. 2005 13:36
Nový
└ 
Re: Článek pro běžného uživatele jako stvořený...
Aleš Miklík 18. 2. 2005 18:27
Nový
 
└ 
Re: Článek pro běžného uživatele jako stvořený...
Grovik 19. 2. 2005 11:24
Nový
 
 
└ 
Re: Článek pro běžného uživatele jako stvořený...
Aleš Miklík 19. 2. 2005 20:06
Nový
tri body
iji 18. 2. 2005 14:21
Nový
├ 
Re: tri body
ldx 19. 2. 2005 10:44
Nový
│
└ 
Re: tri body
iji 19. 2. 2005 12:41
Nový
└ 
Re: tri body
Jan Šimek 21. 2. 2005 09:03
Nový
Praxe
TomK 19. 2. 2005 11:16
Nový
└ 
Re: Praxe
Jan Šimek 21. 2. 2005 08:54
Nový
Tip pro vyvojare akceleratoru
TomK 19. 2. 2005 11:26
Nový
└ 
Re: Tip pro vyvojare akceleratoru
Ondřej Pavlíček 20. 2. 2005 18:02
Nový
 
└ 
Re: Tip pro vyvojare akceleratoru
Rothschild 21. 2. 2005 09:08
Nový
 
 
├ 
Re: Tip pro vyvojare akceleratoru
Ondřej Pavlíček 21. 2. 2005 11:00
Nový
 
 
└ 
Re: Tip pro vyvojare akceleratoru
TomK 21. 2. 2005 15:20
Nový
MPCC vs. MPPC
Meesha 19. 2. 2005 19:59
Nový
Nepoznate Operu?
macko 19. 2. 2005 20:12
Nový
└ 
Re: Nepoznate Operu?
Michal Kubeček 19. 2. 2005 23:08
Nový
 
└ 
Re: Nepoznate Operu?
shrek 20. 2. 2005 13:57
Nový
Clanek me potesil
Petr Svoboda 21. 2. 2005 14:12
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem