Существует много программ, которые обещают увеличение скорости работы интернета и/или уменьшение трафика. При этом зачастую пользователю, далекому от мира программирования, довольно трудно понять, какую программу выбрать. Не будем сравнивать конкретные программы, но дадим общие приципы работы. Все программы можно разделить на несколько групп.
1) | Акселераторы, изменяющие значения MTU/MSS. Пожалуй, наиболее многочисленная группа программ.
Вкратце, техническая сторона выглядит следующим образом - все данные, которые передаются по сети разбиваются на маленькие пакеты. Пакет состоит из служебной информации и собственно данных. Размер пакета может быть разным, в зависимости от типа соединения - для adsl соединения размер пакета 1500 байт (или немного меньше, в зависимости от типа adsl-соединения), для модемного соединения - 576 байт. Если размер пакета выставлен в операционной системе меньше, чем максимально позволяет сетевая карта/модем, то происходит фрагментация пакета, т.е. вместо одного пакета посылается два. В результате дважды передается служебная информация, хотя достаточно одно раза, и общая пропускная способность сети падает.
Современные операционные системы выставляют эти значения достаточно верно. В интернете много ресурсов (напр. http://www.dslreports.com/tweaks ) где можно проверить MTU/MSS. Обычно там же можно почитать инструкцию, как выставить эти значения самому.
|
2) | Интернет-сервисы, которые предлагают сжатие страниц. Выглядит это следующим образом - открывается сайт такого сервиса и вводится адрес страницы, которую хочется получить сжатой. Как вариант - вводится адрес прокси сервера в настройках браузера. Не сжимают трафик электронной почты, игр, messengers и т.д. Не требуют установки никаких программ. Где же нас обманывают, спросите вы? Ответ - нигде. Вы действительно получите сжатую страницу и съэкономите трафик (если вам не будет показана реклама).
Суть этой технологии в следующем. В протоколе HTTP (это который отвечает за показ страничек) заложена функция сжатия страниц. Все современные браузеры эту функцию поддерживают. Сервер должен сжать страницу и передать браузеру. Однако, в современном интернете очень мало серверов, у которых эта функция задействована, по некоторым оценкам, единицы процентов. Вот эту оплошность и исправляют такие интернет-сервисы. Они получают страницу по адресу, который вы ввели, сжимают ее и передают вашему браузеру сжатой.
Хорошо, скажете вы, мне не нужно пользоваться электронной почтой, он-лайн играми и прочим, мне нужно только из браузера странички смотреть. Зачем я буду пользоваться другими компрессорами, требующими установки какой-то программы, ведь этот сервис именно то, что мне нужно? Чтобы ответить на этот вопрос, нужно опять немного углубиться в технические детали.
Итак, что же происходит на самом деле, когда браузер запрашивает страничку? Браузер посылает так называемый http-запрос серверу. Вот как выглядит запрос на получение главной страницы форума с браузера:
Код:
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FDM; .NET CLR 1.1.4322)
Host: ru.toonel.net
Connection: Keep-Alive
Cookie: <эти данные удалены, т.к. в них содержится пароль>
Этот запрос содержит 550 байт (вместе со строчкой, которая удалена). Можно увидеть, что браузер IE 6.0 поддерживает функцию сжатия (Accept-Encoding: gzip, deflate). Теперь посмотрим, что ответил сервер:
Код:
HTTP/1.1 200 OK
Date: Tue, 03 Jan 2006 22:14:12 GMT
Server: Apache/1.3.33 (Unix) PHP/4.3.11 mod_ssl/2.8.22 OpenSSL/0.9.7a FrontPage/5.0.2.2635 mod_throttle/3.1.2
X-Powered-By: PHP/4.3.11
Cache-Control: private, pre-check=0, post-check=0, max-age=0
Expires: 0
Pragma: no-cache
Content-Encoding: gzip
Vary: Accept-Encoding
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html
Это http-ответ сервера, размер ответа 442 байта. В ответе видно, что сервер поддерживает функцию сжатия (Content-Encoding: gzip). После этого ответа идёт собственно сжатая страничка форума.
Итого, получаем, что для получения странички было послано и принято служебной информации 550 + 442 = 992 байта.
Сама страничка пришла в сжатом виде и занимает 4857 байт, в разжатом виде 20950 байт.
Что ж, потери на передачу служебной информации совсем невелики. Однако, на этом показ странички не заканчивается.
Когда браузер получил страничку, он увидел, что в страничке есть также другие ресурсы - в данном случае картинки в количестве 16 штук и так называемая таблица стилей (style sheet). Эти ресурсы не содержатся в самой странице, на них есть только ссылки. Когда браузер видит эти ссылки, он опять посылает http-запрос и опять получает http-ответ на каждую ссылку. Причем запрос выглядит абсолютно также, как и на запрос главной страницы, за исключением первой строчки, в которой указывается, что конкретно должен вернуть сервер (пример GET /templates/subSilver/images/server.gif HTTP/1.1). Ответ от сервера приблизительно такой же, как и ответ на главную страницу.
Пример ответа на запрос картинки:
Код:
HTTP/1.1 200 OK
Date: Tue, 03 Jan 2006 22:14:12 GMT
Server: Apache/1.3.33 (Unix) PHP/4.3.11 mod_ssl/2.8.22 OpenSSL/0.9.7a FrontPage/5.0.2.2635 mod_throttle/3.1.2
Last-Modified: Tue, 03 Jan 2006 18:27:36 GMT
ETag: "1f4375-11ee-43bac218"
Accept-Ranges: bytes
Content-Length: 4590
Keep-Alive: timeout=15, max=98
Connection: Keep-Alive
Content-Type: image/gif
после чего идёт собственно картинка.
В результате получаем следующую картину - 8969 байт http-запросов и 6658 байт http-ответов потребовалось для получения всей заглавной странички форума. Это служебная информация, в текстовом виде, которая хорошо поддается сжатию и которую интернет-сервисы из этой группы не обрабатывают.
Общий результат для главной странички - из 36577 байт текстовой информации (т.е. той, которая поддаётся сжатию), мы получили 20484 байт, что весьма много для сжатой текстовой информации.
Следует заметить, что на самом деле всё происходит немного сложнее - хорошие сервисы такого рода также сжимают таблицы стилей и скрипты (хотя при этом увеличивается объём служебной информации). Некоторые сервисы грешат тем, что передают свои управляющие скрипты с каждой открываемой страницей, в этом случае эффективность их использования резко снижается.
Сервисы из этой группы также могут иметь дополнительные возможности, такие как антивирусная проверка, блокировка рекламы, сжатие картинок за счёт ухудшения качества и пр.
Общий недостаток один - служебная информация не сжимается. Если же вы ходите на сайты типа библиотеки Машкова, где на странице мало дополнительных ресурсов (картинок), а только текстовая информация, то эти сервисы весьма хорошо справляются. С сайтами, на которых много картинок они справляются хуже и для них были придуманы сервисы по сжатию, требующие установки программы.
|
3) | Сервисы по сжатию, требующие установки программы. На самом деле, здесь можно говорить очень много и долго, т.к. у каждой программы есть как общие свойства, так и дополнительные особенности, причем особенности далеко не всегда раскрываются, а в некоторых случаях и патентуются. Общим, пожалуй, можно назвать только одно - все эти программы сжимают служебную информацию в http протоколе и используют словарики для более качественного сжатия. Многие программы позволяют сжимать не только http трафик, но и трафик почтовых программ, игр, messengers и прочее. Некоторые специально созданы для спутникового интернета и имеют специальные возможности уменьшающие время ответа сервера, что очень важно в спутниковом интернете. Из других особенностей можно перечислить сжатие картинок за счёт уменьшения качества, функции родительского контроля, блокировки рекламы, антивирусная поддержка и так далее.
Общий принцип работы - программа тем или иным способом перехватывает запросы от браузера, сжимает и отсылает на свой сервер. На этом сервере запрос разжимается, и обрабатывается, т.е. сервер получает страницу. После этого страница сжимается и отправляется назад, в программу-клиента. Программа страницу разжимает и отдает браузеру.
|
4) | Еще один тип - это то, что называют прокси серверами. На самом деле прокси с английского переводится как "представитель", т.е. к прокси относятся также сервисы из групп 2 и 3. Но здесь пойдёт речь о так называемых кеш-прокси. Сама идея достаточно проста - когда первый раз загружается картинка или страница, она сохраняется на диске. Если эту картинку нужно загрузить еще раз, то она не загружается из интернета, а берётся прямо из диска. Поведение прокси серверов определено в стандарте http - когда передаётся запрос на получение страницы, прокси сначала проверяет, нет ли такой страницы на диске, если есть, то он передаёт дату создания. Сервер может ответить, что страница у него той же даты и не передавать страницу обратно. Когда прокси получит такой ответ от сервера, то он передаст браузеру страницу с диска. Понятно, что такой тип прокси особенно удобен для компаний, когда много людей ходят через один сервер в интернет, в этом случае высока вероятность, что ваш коллега уже смотрел данную страницу и она сохранена на диске у прокси.
Использование такого типа прокси долгое время приносило головную боль системным администраторам в основном из-за ошибок обработки кеширующих инструкций как на серверах, так и браузерами. Так же все больше и больше появляется динамических страниц, т.е. страниц, которые формируются заново на сервере при каждом запросе и поэтому не могут сохраняться локально на диске прокси.
Нужны ли кеш-прокси для индивидуального использования - вопрос достаточно спорный. Кто-то полагается на встроенный кеш браузера, кто-то считает, что браузер хуже справляется с кешированием.
Стоит заметить, что некоторые программы из третьей группы имеют свой кеш. Обычно, также можно использовать кеш-прокси и компрессоры из третьей группы в связке. |
5) | Другие. К этой группе я отнесу две весьма экзотические программы. Одна из них работает только с MS Internet Explorer и только на хороших линиях. Используется следующая особенность IE - когда открывается страничка с большим количеством картинок, IE не открывает по одному соединению на картинку, а пытается загрузить картинки через 5-6 соединений. Этот же акселератор меняет настройки IE, в результате открывается по одному соединению на каждую картинку. Если интернет-соединение быстрое, если сервер, на котором лежат картинки, тоже быстрый и если картинок много и они достаточно большие, то получается некоторый выигрыш в загрузке.
Другой тип акселератора тоже весьма специфичен. Он рассчитан на работу с adsl соединениями, когда скорость на прием данных существенно выше скорости на передачу данных и когда один пользователь загружает файл, другой же отсылает. Дело в том, что во время загрузки данных передаётся служебная информация о подтверждении приёма пакетов. Если в это время второй пользователь начнёт передавать данные, то он может занять всю линию и служебные пакеты первого пользователя будут сильно задерживаться, в результате "быстрый" входящий канал будет простаивать и загрузка файла сильно замедлится. Этот акселератор позволяет "проталкивать" служебные пакеты от первого пользователя, что приводит к полной загрузке входящего канала. |
6) | "Железные" акселераторы. Есть группа акселераторов, выполненных в виде отдельных устройств. Не рассматривается здесь, т.к. для индивидуального использования они не предназначены и, конечно, слишком дороги. |
|