Автор работы: Пользователь скрыл имя, 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.3 Сравнение «Кэширующего прокси-сервера» с другими прокси-серверами.
2.3.1. Squid
Squid — программный пакет, реализующий функцию кэширующего прокси-сервера для протоколов HTTP, FTP, Gopher и (в случае соответствующих настроек) HTTPS. Разработан сообществом как программа с открытым исходным кодом (распространяется в соответствии с GNU GPL). Все запросы выполняет как один неблокируемый процесс ввода/вывода.
Используется в UNIX-like системах и в ОС семейства Windows NT. Имеет возможность взаимодействия с Active Directory Windows Server путём аутентификации через LDAP, что позволяет использовать разграничения доступа к интернет ресурсам пользователей, которые имеют учётные записи на Windows Server, также позволяет организовать «нарезку» интернет трафика для различных пользователей. Используется вместе с движками Mediawiki на wiki хостингах. Использование кэширующего прокси-сервера становится выгодно примерно с 2000 посетителей в сутки.
Squid
имеет возможность
Главным достоинством squid является его модульность. Существует множество надстроек, которые существенно повышают степень надежности соединения и безопасности.
SAMS - это система для управления доступа пользователей через прокси сервер к ресурсам интернет. Она идеально подходит для использования как в частных фирмах так и в госудаственных учереждениях. Всю работу по проксированию, перенаправлению запросов, кэшированию и авторизации берет на себя proxy-сервер Squid а SAMS занимается учетом трафика и управлением пользователями.
И многие
другие…
К недостаткам SQUID можно отнести:
В
программе «Кэширующий прокси-
2.3.2. DeleGate
DeleGate - Многоцелевой прокси-сервер, работающий с различными TCP-, UDP-протоколами, такими как HTTP, HTTPS, FTP, NNTP, SMTP, SOCKS, IMAP, ICP и т. д. Delegate работает как прокси уровня приложения (application-level), который пропускает через себя различные протоколы, производя необходимые изменения в данных. Также Delegate может быть использован как прокси для передачи любых данных между клиентом и сервером по протоколам TCP, UDP. Являясь прокси уровня приложения, Delegate обеспечивает виртуальное представление ресурсов, расположенных на различных серверах. В случаях HTTP, FTP, NNTP, Delegate может выступать самостоятельным сервером. Поддерживается фильтрация данных. Для фильтрации используется собственный интерфейс CFI (Common Filtering Interface). В качестве фильтров могут быть использованы как внутренние средства Delegate, так и обычные внешние приложения (sed, awk...), работающие со стандартным вводом/выводом. В случае когда Delegate выступает в качестве HTTP прокси-сервера, для хранения объектов может быть использован постоянный кэш, размещенный на диске. Поддержка протокола ICP позволяет эффективнее взаимодействовать с другими кэш-серверами. Авторизация пользователей, если она необходима, происходит через PAM и собственную службу авторизации DGAuth.
Для ограничения загрузки сервера поддерживается ограничение по количеству соединений, тайм-ауту. Если взглянуть на Delegate, создается ощущение, что он представляет собой гигантский запутанный конструктор, из которого можно смастерить практически любой прокси-сервис.
Тем не менее функциональности для кэширующего прокси недостаточно.
Прозрачное HTTP-проксирование поддерживается не полностью, поскольку реализация опирается только на данные «Host:» HTTP-заголовка, а он не всегда присутствует. Не поддерживаются протоколы WCCP, CARP. Вместо стандартного протокола ICAP поддерживается свой собственный интерфейс фильтрации, что затрудняет встраивание стандартных сервисов фильтрации и аудита. Не поддерживаются схемы авторизации NTLM, MSNT, что затрудняет интеграцию в сеть, построенную на технологии Windows.
Скажем несколько слов об архитектуре Delegate. Сервер каждого протокола работает в отдельном процессе и при каждом соединении с пользователем порождает новый процесс.
Для пересылки информации по каналу данных в протоколе FTP создаются дополнительные процессы. Фильтры также создают дополнительные процессы для запуска внешних программ фильтрации. Скорость работы таких фильтров оставляет желать лучшего. Когда количество клиентов достигает хотя бы тысячи, создается большое количество процессов, что ведет к неразумному расходу ресурсов и большой загрузке системы.
Несмотря на все перечисленные недостатки, Delegate может быть весьма полезен в небольших сетях для решения простых задач, поскольку весьма прост в конфигурации. В таких сетях загрузка прокси будет небольшой, и проблемы с производительностью не возникнут.
Большинство офисных ПК работают под управлением ОС семейства Windows(как правило, Windows XP SP3), именно поэтому данный продукт не подойдет для данных сетей. «Кэширующий прокси-сервер» способен обслуживать как ПК под управлением Windows, так и UNIX-подобных систем.
2.3.3. WinGate
WinGate - один из популярных прокси-серверов, позволяющий нескольким пользователям локальной сети получить доступ в Интернет.
К
положительным сторонам Wingate относятся
его стабильность и простота
установки, настройки и
К недостаткам можно отнести:
Данный
прокси-сервер не может корректно работать
с запросами более чем 25 машин и число
коллизий возрастает до 10%. В «Кэширующем
прокси-сервере» эта проблема решена путем
расширения таблиц кэширования.
2.3.4. UserGate
UserGate - это комплексное решение для подключения пользователей к сети Интернет, обеспечивающее полноценный учет трафика, разграничение доступа и предоставляющее встроенные средства сетевой защиты.
UserGate позволяет
тарифицировать доступ
UserGate состоит из нескольких частей:
сервер, консоль администрирования
(«UserGate Administrator») и несколько
UserGate включает четыре
Данный прокси-сервер является весьма популярным программным продуктом на IT-рынке
К недостаткам можно отнести:
UserGate является отличным решением для однородных сетей Windows. Однако его стоимость достаточно высока, и не каждый руководитель может себе позволить себе оплатить расходы на ее эксплуатацию. «Кэширующий прокси сервер» задумывался как бесплатное ПО с открытым кодом.
2.3.5. Traffic Inspector
Traffic
Inspector - позволяет решить большинство
задач, возникающих при подключении к
Интернет по выделенному каналу: обеспечение
доступа в сеть Интернет из внутренней
сети; авторизация и разграничение доступа
пользователей; билинг ( тарификация пользователей,
подсчет трафика и блокировка доступа
при перерасходе); обеспечение пользователей
средствами экономии трафика и предоставление
возможности самостоятельно контролировать
свою работу в Интернет; сетевая защита
(Firewall), позволяющая закрыть сервер доступа
и внутреннюю сеть от несанкционированного
доступа извне; подробный анализ сетевого
трафика, потребляемого у провайдера;
динамическое ограничение скорости работы
пользователей или их групп; Advanced Routing
(Policy Routing или Source Routing) — возможность гибкой
настройки перенаправления разных пользователей
и видов трафика на разные каналы доступа;
отключение пользователей от сети Интернет
при заражениях сетевыми вирусами и др.
Основным недостатком данного
прокси-сервера является его низкая устойчивость
к сбоям даже в сетях малого офиса. В случае
внезапной остановки службы сервера необходимо
перезапускать все машины в локальной
сети за минимальный промежуток времени.
Программный продукт «Кэширующий прокси-сервер» был разработан в среде Code::Blocks на языке программирования C. Так же были использованы сторонние библиотеки POSIX для реализации некоторых функций присущих только UNIX-подобным системам.
Язык С - это универсальный язык программирования, для которого характерны экономичность выражения, современный набор операторов и типов данных. Язык С не является ни языком "очень высокого уровня", ни "большим" языком, и не предназначается для некоторой специальной области применения, но отсутствие ограничений и общность языка делают его для многих задач более удобным и эффективным, чем языки, предположительно более мощные.
Язык С не связан с какими-либо определенными аппаратными средствами или системами, и на нем легко писать программы, которые можно пропускать без изменений на любой ЭВМ, имеющей С-компилятор.
Язык С является универсальным языком программирования. Он первоначально появился в операционной системе UNIX, и развивался как основной язык систем, совместимых с ОС UNIX. Сам язык, однако, не связан с какой-либо одной операционной системой или машиной; и хотя его называют языком системного программирования, так как он удобен для написания операционных систем, он может использоваться для написания любых больших вычислительных программ, программ для обработки текстов и баз данных.
Язык С - это язык относительно "низкого уровня". Это означает, что Си имеет дело с объектами того же вида, что и большинство ЭВМ, а именно, с символами, числами и адресами. Они могут объединяться и пересылаться посредством обычных арифметических и логических операций, осуществляемых реальными ЭВМ.
В языке Си отсутствуют