Кэширующий прокси-сервер

Автор работы: Пользователь скрыл имя, 10 Октября 2011 в 19:40, дипломная работа

Описание

Данный вид прокси-серверов так же используется и провайдерами. Как говорилось выше, Интернет состоит из большого количества серверов. Некоторые из них содержат веб-сайты, а некоторые являются лишь транспортными узлами, перенаправляющими трафик от пользователя к веб-сайту и обратно. Провайдеры заинтересованы в уменьшении объема трафика. Для этого они применяют технологию кэширования на своих серверах, чтобы отвечать на часть пользовательских запросов, не пересылая их дальше внутренней сети. Данный метод описан в RFC 2616, позволяющий сообщить прокси-серверам, что содержимое желательно кэшировать (Cache-Control: public).

Содержание

Введение………………….………………………………………………………3

1.ПОСТАНОВКА ЗАДАЧИ……………………………………………………..5

2.ОБЗОР СЕТЕЙ И ПРОКСИ-СЕРВЕРОВ…………………………………….6

2.1. Локальная сеть………………………………………………………..6

2.2. Функции различных прокси-серверов………………………………8

2.3. Сравнение «Кэширующего прокси-сервера» с другими прокси-серверами……………..……………………………………………….…..22

2.3.1. Squid………………………………………………………….22

2.3.2. DeleGate……………………...……………...………………..24

2.3.3. WinGate…………………………………………………........26

2.3.4. UserGate………………………………………………………27

2.3.5. Traffic Inspector……………………………………………....28

3. АРХИТЕКТУРА ПРИЛОЖЕНИЯ…………………………………………....30

3.1. Обоснование выбора языка программирования…………………….30

3.2. Протокол TCP…………………………………………………………31

3.3. Формат заголовка HTTP……………………………………………...35

3.4. Сокеты…………………………………………………………………38

3.5. Разработка структуры приложения………………………………....40

4.СОЗДАНИЕ ПРОГРАММЫ «КЭШИРУЮЩИЙ ПРОКСИ-СЕРВЕР» ...…42

4.1 Библиотеки и компоненты, которые использовались при разработке программы……………..……………………………………………….....42

4.2 Реализация функций программы «Кэширующий прокси-сервер»...47

5. КРАТКАЯ ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЯ…………………...………...56

Заключение……………………………………………………………………….60

Список литературы…..…………………………………………………………..61

Работа состоит из  2 файла

Диплом-текст.doc

— 873.50 Кб (Скачать документ)

       Наиболее распространенными методами, используемыми для фильтрации содержимого, являются: черные списки URL и DNS, фильтрация по регулярным выражениям, фильтрация по типам MIME и ключевым словам. Некоторые продукты используют специализированные техники для поиска содержимого, обычно предоставляемого определенными типами контент-провайдеров.

       Веб-прокси, фильтрующий содержимое, обычно поддерживает аутентификацию  пользователей для контроля доступа  к веб-ресурсам. Также он ведет  файлы журналов для того, чтобы  предоставить детальную информацию  о ссылках, посещенных пользователями, или для того, чтобы отслеживать статистику использования полосы пропускания. Фильтрующий веб-прокси может взаимодействовать с антивирусной службой, либо с антивирусом, поддерживающим протокол ICAP, для того, чтобы обеспечить защиту от вирусов и других вредоносных программ. Данный вид фильтрации содержимого осуществляется путем сканирования всех входящих данных в реальном времени и их блокировки до того, как они попадут во внутреннюю сеть.

     Анонимный прокси-сервер (иногда называемый веб-прокси) применяется для анонимизации веб-серфинга, т.е. для сокрытия информации о серфере. Существует множество различных вариантов анонимизаторов, наиболее типичным из которых является открытый прокси-сервер. Благодаря тому, что их весьма трудно отследить, открытые прокси особенно полезны тем, кому необходима анонимность в онлайне - от политических диссидентов до кибер-преступников. Некоторые пользователи принципиально соблюдают анонимность, например для обеспечения конституционных прав на свободу слова. Сервер в Интернет получает запросы от анонимного прокси-сервера и таким образом не получает информации об адресе конечного пользователя. Однако, запросы к анонимизирующему прокси-серверу не являются анонимными, поэтому необходима определенная степень доверия прокси-серверу со стороны пользователя. Множество анонимных прокси-серверов финансируются рекламой, демонстрируемой пользователю на протяжении всего сеанса работы.

       Некоторые прокси-серверы требуют  входа. В больших организациях, пользователи должны войти на прокси-сервер прежде чем получить доступ в Интернет. Исходя из этих данных, организация может установить личность, совершившую тот или иной запрос.

       В заголовок запроса некоторые  анонимизирующие прокси-серверы  включают такие строки как  HTTP_VIA, HTTP_X_FORWARDED_FOR или HTTP_FORWARDED, содержащие информацию об IP-адресе клиента. Другие анонимизирующие прокси, также называемые прокси-серверами высокой анонимности, включают в заголовок только одну строку, содержащую IP-адрес прокси-сервера - REMOTE_ADDR. Таким образом серверу в Интернет передается информация о том, что его клиент использует прокси-сервер. Сайт может также заподозрить использование прокси-сервера в том случае, если клиент передает серверу cookie своих предыдущих визитов, во время которых он не использовал прокси-сервер высокой степени анонимности. Очистка cookies и кэша решит эту проблему.

     Враждебный  прокси-сервер. Прокси-сервер можно установить для того, чтобы перехватить поток данных между клиентами и Интернет. Все полученные веб-страницы или отправленные формы данных могут быть сохранены и проанализированы оператором прокси-сервера. По этой причине, пароли к онлайн-сервисам (к электронной почте или клиент-банку) следует передавать по шифрованному каналу связи, например используя SSL.

     Прозрачный прокси (также известный как перехватывающий прокси-сервер) сочетает в себе функции прокси-сервера и шлюза. Соединения, устанавливаемые браузерами клиентов проходят через шлюз, где перенаправляются на прокси-сервер без какой-либо необходимости в настройке клиентских программ (часто, клиентам даже не известно то, что все их запросы проходят через прокси-сервер).

       Прозрачные прокси часто используются  бизнесом для предотвращения  обхода ограничений на использование  Интернет, а также для облегчения  администрирования сети - снимается необходимость настройки браузеров сотрудников.

       Часто можно определить наличие  прозрачного прокси-сервера, сравнив  внешний IP-адрес, с IP-адресом,  определяемым внешними веб-серверами,  либо изучив доступные внешнему  веб-серверу заголовки HTTP.

     Принудительный  прокси-сервер. Термин "принудительный прокси" является двусмысленным. С одной стороны он похож на прозрачный прокси-сервер (так как фильтрует весь трафик, проходящий через шлюз, который запрещает доступ к ресурсам Интернет минуя прокси-сервер), а с другой стороны - прямо противоположен ему, так как требует обязательной настройки со стороны пользователя, которому необходимо получить доступ в Интернет.

       Принудительный прокси-сервер иногда  необходим из-за некоторых проблем  с HTTP, возникающих при перехвате TCP-сессий. Например, перехват HTTP запросов может сильно повлиять на эффективность кэша прокси-сервера, а также на некоторые механизмы аутентификации. В основном, эти проблемы возникают как следствие уверенности клиента в том, что он работает с сервером напрямую и вытекающей из этого невозможности отделить заголовки запроса, необходимые прокси-серверу от заголовков, необходимых вышестоящему серверу (особенно это касается авторизационных заголовков). Кроме того, спецификации HTTP, запрещают кэширование ответов, содержащих авторизационные заголовки.

     Суффиксный  прокси-сервер позволяет получить доступ к веб-страницам приписывая имя прокси-сервера к их адресу (например, "ru.wikipedia.org.statoscope.ru"). Суффиксные прокси-серверы проще в использовании, чем другие виды прокси-серверов.

     Открытый  прокси-сервер отличается от прочих тем, что доступ к ресурсам Интернет при помощи этого прокси-сервера может получить любой желающий. Часто открытые прокси-сервера появляются в результате неверной конфигурации программного обеспечения системным администратором. Открытый прокси-сервер часто используется с враждебными целями, и именно поэтому системные администраторы разработали ряд способов отказать в обслуживании клиенту, работающему через открытый прокси. Множество IRC-сетей автоматически тестируют клиентскую систему на известные типы открытых прокси-серверов. Схожим образом, почтовый сервер может быть настроен на блокировку сообщений, отправленных через открытые прокси.

      IRC группы и операторы электронной почты поддерживают черные списки IP-адресов открытых прокси-серверов (DNSBL). В качестве примеров таких списков можно привести AHBL, CBL, NJABL и SORBS.

       Этика автоматического тестирования  клиентов на работу через открытые  прокси противоречива. Некоторые эксперты полагают, что такое тестирование является аналогом сканирования атакующим портов клиентского компьютера. Другие считают, что клиент одобряет такое сканирование, если подключается к сервису, условия использования которого содержат информацию о наличии такого сканирования.

     SOCKS proxy – прокси сервер передающий абсолютно все данные от клиента к серверу, не изменяя и не добавляя ничего. С точки зрения web-сервера SOCKS proxy является клиентом, т.е. SOCKS proxy анонимны по определению. Имеет подтипы SOCKS4, SOCKS4a, SOCKS5. Чаще всего SOCKS proxy имеют 1080, 1081 номер порта.

     HTTP-прокси — самый распространенный. Он предназначен для организации работы браузеров и других программ, использующих протокол HTTP. Браузер передает прокси-серверу URL ресурса, прокси-сервер получает его с запрашиваемого веб-сервера (или с другого прокси-сервера) и отдает браузеру. У HTTP-прокси широкие возможности при выполнении запросов:

       Можно сохранять полученные файлы  на диске сервера. Впоследствии, если запрашиваемый файл уже скачивался, то можно выдать его с диска без обращения в интернет — увеличивается скорость и экономится внешний трафик (который может быть платным). Эта опция называется кэшированием — именно её очень любят администраторы и пользователи — настолько, что считают её главной функцией прокси. Однако приводимые оценки экономии (в описаниях встречалось от 30 до 60%) слишком оптимистичны, не верьте им. На деле получается не более 10-15% — современный интернет очень динамичен, страницы часто меняются, зависят от работающего с ними пользователя и т.д. — такие данные кэшировать нельзя, веб-серверы обычно вставляют в HTTP-заголовки специальные указания об этом, чтобы браузеры и прокси имели это в виду. Хотя многие прокси-серверы можно настроить так, чтобы эти указания частично игнорировались — например, перечитывать страницу не чаще одного раза в день.

       Можно ограничивать доступ к  ресурсам. Например, завести "черный  список" сайтов, на которые прокси  не будет пускать пользователей  (или определенную часть пользователей, или в определенное время и т.д.). Ограничения можно реализовать по-разному. Можно просто не выдавать ресурс — например, выдавая вместо него страницу "запрещено администратором" или "не найдено". Можно спрашивать пароль и авторизованных пользователей допускать к просмотру. Можно, не спрашивая пароля, принимать решение на основании адреса или имени компьютера пользователя. Условия и действия в принципе могут быть сколь угодно сложными (не во всех прокси, но в нашем точно .

       Можно выдавать не тот ресурс, который запрашивается браузером. Например, вместо рекламных баннеров и счетчиков показывать пользователям прозрачные картинки, не нарушающие дизайн сайта, но существенно экономящие время и трафик за счет исключения загрузки картинок извне.

       Можно ограничивать скорость работы для отдельных пользователей, групп или ресурсов. Например, установить правило, чтобы файлы *.mp3 качались на скорости не более 1кб/сек, чтобы предотвратить забивание вашего интернет-канала трафиком меломанов, но не лишать их полностью этого удовольствия. Эта возможность, к сожалению, есть не во всех прокси. В Eproxy эта возможность есть. Она реализуется дополнением TrafC, который кроме ограничения пропускной способности (скорости) может ограничивать и суммарный трафик.

       Ведутся журналы работы прокси — можно подсчитывать трафик за заданный период, по заданному пользователю, выяснять популярность тех или иных ресурсов и т.д.

       Можно маршрутизировать веб-запросы  — например, часть направлять  напрямую, часть через другие  прокси (прокси провайдера, спутниковые прокси и т.д.). Это тоже помогает эффективнее управлять стоимостью трафика и скоростью работы прокси вцелом.

     HTTPS-прокси – фактически часть HTTP-прокси. S в названии означает “secure”, т.е. безопасный. Не смотря на то, что программно это часть HTTP-прокси, обычно HTTPS выделяют в отдельную категорию (и есть отдельное поле для него в настройке браузеров). Обычно этот протокол – безопасный HTTP – применяют, когда требуется передача секретной информации, например, номеров кредитных карт. При использовании обычного HTTP-прокси всю передаваемую информацию можно перехватить средствами самого прокси (т.е. это под силу администратору ЛС) или на более низком уровне, например, tcpdump (т.е. и администратор провайдера и любого промежуточного узла и вообще любой человек, имеющий физический доступ к маршрутам передачи ваших данных по сети, может при большом желании узнать ваши секреты). Поэтому в таких случаях применяют secure HTTP – всё передаваемое при этом шифруется. Прокси-серверу при этом дается только команда «соединится с таким-то сервером», и после соединения прокси передает в обе стороны шифрованный трафик, не имея возможности узнать подробности (соответственно и многие средства управления доступом – такие как фильтрация картинок – не могут быть реализованы для HTTPS, т.к. прокси в этом случае неизвестно, что именно передается). Собственно в процессе шифрации/дешифрации прокси тоже участия не принимает – это делают клиентская программа и целевой сервер. Наличие команды «соединиться с таким-то сервером» в HTTPS-прокси приводит к интересному и полезному побочному эффекту, которым все чаще пользуются разработчики клиентских программ. Так как после соединения с указанным сервером HTTPS-прокси лишь пассивно передает данные в обе стороны, не производя никакой обработки этого потока вплоть до отключения клиента или сервера, это позволяет использовать прокси для передачи почти любого TCP-протокола, а не только HTTP. То есть HTTPS-прокси одновременно является и простым POP3-прокси, SMTP-прокси, IMAP-прокси, NNTP-прокси и т.д. – при условии, что соответствующая клиентская программа умеет так эксплуатировать HTTPS-прокси (увы, далеко не все еще это умеют, но есть вспомогательные программы, «заворачивающие» трафик обычных клиентов через HTTPS-прокси). Никаких модификаций целевого сервера не требуется. Фактически HTTPS-прокси является программируемым mapping-proxy, как и Socks-proxy.

     FTP-прокси бывает двух основных видов в зависимости от протокола работы самого прокси. С ftp-серверами этот прокси, конечно, всегда работает по протоколу FTP. А вот с клиентскими программами – браузерами и ftp-клиентами (CuteFTP, FAR, и др.) прокси может работать как по FTP, так и по HTTP. Второй способ удобнее для браузеров, т.к. исторически является для них «родным». Браузер запрашивает ресурс у прокси, указывая протокол целевого сервера в URL – http или ftp. В зависимости от этого прокси выбирает протокол работы с целевым сервером, а протокол работы с браузером не меняется – HTTP. Поэтому, как правило, функцию работы с FTP-серверами также вставляют в HTTP-прокси, т.е. HTTP-прокси, описанный выше, обычно с одинаковым успехом работает как с HTTP, так и с FTP-серверами. Но при «конвертации» протоколов FTP<->HTTP теряется часть полезных функций протокола FTP. Поэтому специализированные ftp-клиенты предпочитают и специальный прокси, работающий с обеими сторонами по FTP. В различных приложениях это называется этот прокси FTP-gate, чтобы подчеркнуть отличие от FTP-прокси внутри HTTP-прокси. Хотя встречаются и вносящие путаницу названия. Например, в программе CuteFTP FTP-gate называют firewall, хотя FireWall в общем случае – это вообще не прокси, а фактически программа обратного назначения – не для подключения к интернету, а для изоляции от него Для прокси в FireWall оставляют специальные «дыры». FTP-gate поддерживают различные способы указания в FTP-протоколе целевого сервера, с которым FTP-клиент хочет работать, в настройке FTP-клиентов обычно предлагается выбор этого способа.

     Здесь USER user@site, OPEN site, и т.д. – способ указания сервера, с которым производится работа. Такое многообразие связано с тем, что нет общепринятого стандарта на этот вид прокси, и применяются такие хитрые добавки к стандартным командам FTP-протокола.

     Mapping-прокси — способ заставить работать через прокси те программы, которые умеют работать с интернетом только напрямую. При настройке такого прокси администратор создает как бы "копию" целевого сервера, но доступную через один из портов прокси-сервера для всех клиентов локальной сети — устанавливает локальное "отображение" заданного сервера. Например, пользователи локальной сети хотят работать с почтовым сервером mail.ru не через браузер, а с использованием почтовой программы Outlook Express или TheBat. Эти программы не умеют работать через прокси (кроме случая, когда Outlook получает почту по HTTP с hotmail.com — тогда он, как и браузер, пользуется HTTP-прокси). Простейший способ работать с mail.ru по POP3 через прокси — установить локальное отображение сервера pop.mail.ru. И в Outlook'ах вместо pop.mail.ru написать имя прокси-сервера и порт отображения. Outlook будет соединяться с прокси-сервером ("думая", что это почтовый сервер), а прокси при этом будет соединяться с pop.mail.ru и прозрачно передавать всю информацию между Outlook и pop.mail.ru, таким образом "превращаясь" на время соединения в POP3-сервер. Неудобство mapping-прокси в том, что для каждого необходимого внешнего сервера нужно вручную устанавливать отдельный порт на прокси. Но зато не требуется модификация ни серверов, ни клиентов. Особенно это помогает в случае необходимости "проксирования" многочисленных "доморощенных" протоколов, реализованных в играх или финансовых программах. Почему-то они часто игнорируют существование прокси и стандартных протоколов. Такие программы можно "обмануть" и направить через прокси практически всегда, если они не делают другой глупости — передачи клиентского IP-адреса внутри протокола и пытаются с ним соединяться напрямую еще раз (что невозможно, т.к. локальные адреса недоступны извне).

Титульный лист.doc

— 30.00 Кб (Открыть документ, Скачать документ)

Информация о работе Кэширующий прокси-сервер