Акселераторы/Компрессоры-основные принципы работы и различия. Автор Toonel.net Существует много программ, которые обещают увеличение скорости работы интернета и/или уменьшение трафика. При этом зачастую пользователю, далекому от мира программирования, довольно трудно понять, какую программу выбрать. Я не буду сравнивать конкретные программы, но дам общие приципы работы. Все программы можно разделить на несколько групп. 1) Акселераторы, изменяющие значения MTU/MSS. Пожалуй, наиболее многочисленная группа программ. Вкратце техническая сторона выглядит следующим образом - все данные, которые передаются по сети разбиваются на маленькие пакеты. Пакет состоит из служебной информации и собственно данных. Размер пакета может быть разным, в зависимости от типа соединения - для adsl соединения размер пакета 1500 байт (или немного меньше, в зависимости от типа adsl-соединения), для модемного соединения - 576 байт. Если размер пакета выставлен в операционной системе меньше, чем максимально позволяет сетевая карта/модем, то происходит фрагментация пакета, т.е. вместо одного пакета посылается два. В результате дважды передается служебная информация, хотя достаточно одно раза, и общая пропускная способность сети падает. Современные операционные системы выставляют эти значения достаточно верно. В интернете много ресурсов (напр. http://www.dslreports.com/tweaks) где можно проверить MTU/MSS. Обычно там же можно почитать инструкцию, как выставить эти значения самому. 2) Интернет-сервисы, которые предлагают сжатие страниц. Выглядит это следующим образом - открывается сайт такого сервиса и вводится адрес страницы, которую хочется получить сжатой. Как вариант - вводтися адрес прокси сервера в настройках броузера. Не сжимают трафик электронной почты, игр, messangers и т.д. Не требуют установки никаких программ. Где же нас обманывают, спросите вы? Ответ - нигде. Вы действительно получите сжатую страницу и съекономите трафик (если вам не будет показана реклама). Суть этой технологии в следующем. В протоколе 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 соединениями, когда скорость на прием данных существенно выше скорости на передачу данных и когда один пользователь загружает файл, другой же отсылает. Дело в том, что во время загрузки данных передается служебная иформация о подтверждении приема пакетов. Если в это время второй пользователь начнет передавать данные, то он может занять всю линию и служебные пакеты первого пользователя будут сильно задерживаться, в результате "быстрый" входящий канал будет простаивать и загрузка файла сильно замедлится. Этот акселератор позволяет "проталкивать" служебные пакеты от первого пользователя, что приводит к полной загрузке входящего канала. 7) "Железные" акселераторы. Есть группа акселераторов, выполненных в виде отдельных устройств. Не рассматривается здесь, т.к. для индивидуального использования они не предназначены и, конечно, слишком дороги. Ссылки на источники Эта статья представлена с разрешения администрации сервиса toonel.net, предоставляющего услуги сжатия трафика. Оригинал статьи находится по адресу: http://ru.toonel.net/viewtopic.php?t=4
|