logo search
2 / ИСС / Основы сетевых технологий

3.10 Протоколы прикладного уровня. (2/2)

Протоколы HTTP и SSL

HTTP (сокр. от англ. HyperTextTransfer Protocol, «протокол передачи гипертекста») - протокол прикладного уровня передачи данных (изначально — в виде гипертекстовых документов). Основой HTTP является технология «клиент-сервер», то есть предполагается существование потребителей (клиентов), которые инициируют соединение и посылают запрос, и поставщиков (серверов), которые ожидают соединения для получения запроса,производят необходимые действия и возвращают обратно сообщение с результатом. HTTP в настоящее время повсеместно используется во Всемирной паутине для получения информации с веб-сайтов.

HTTP используется также в качестве«транспорта» для других протоколов прикладного уровня, таких как SOAP, XML-RPC,WebDAV.

Основным объектом манипуляции в HTTP является ресурс, на который указывает URI (англ. Uniform Resource Identifier - унифицированный(единообразный) идентификатор ресурса) в запросе клиента. Обычно такими ресурсами являются хранящиеся на сервере файлы, но ими могут быть логические объекты или что-то абстрактное. Особенностью протокола HTTP является возможность указать в запросе и ответе способ представления одного и того же ресурса по различным параметрам: формату, кодировке, языку и т. д. Именно благодаря возможности указания способа кодирования сообщения клиент и сервер могут обмениваться двоичными данными, хотя данный протокол является текстовым.

HTTP — протокол прикладного уровня,аналогичными ему являются FTPиSMTP. Обмен сообщениями идёт по обыкновенной схеме «запрос-ответ». Для идентификации ресурсов HTTP использует глобальные URI. В отличие от многих других протоколов, HTTP не сохраняет своего состояния.Это означает отсутствие сохранения промежуточного состояния между парами«запрос-ответ». Компоненты, использующие HTTP, могут самостоятельно осуществлять сохранение информации о состоянии, связанной с последними запросами и ответами. Браузер, посылающий запросы, может отслеживать задержки ответов.Серверможет хранитьIP-адреса и заголовки запросов последних клиентов. Однако в самом протоколе не предусмотрена внутренняя поддержка состояния.

Первоначально протокол HTTP разрабатывался для доступа к гипертекстовым документам Всемирной паутины. Поэтому основными реализациями клиентов являются браузеры (агенты пользователя). Популярные браузеры: Internet Explorer, Mozilla Firefox, Opera, и др.

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

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

Например, со стороны клиента используются «веб-пауки»- специальные программы, которые составляют список ресурсов сервера проходя по всем найденным гиперссылкам. Со стороны сервера данная проблема решается с помощью карты сайта (англ. site map) - специальной веб-страницы, где перечислены все доступные для посещения ресурсы. Она предназначена не только для людей, играя аналогичную содержанию в книге роль, но и полезна для тех же роботов-пауков позволяя уменьшить глубину - минимальное необходимое количество переходов с главной страницы. Для тех же целей служат файлы формата Sitemap, которые предназначены уже непосредственно для роботов.

Всё программное обеспечение для работы с протоколом HTTP разделяется на три больших категории:

· Серверы как основные поставщики услуг хранения и обработки информации (обработка запросов).

· Клиенты - конечные потребители услуг сервера(отправка запроса).

· Прокси для выполнения транспортных служб.

Для отличия конечных серверов от прокси в официальной документации используется термин исходный сервер (англ. origin server.). Разумеется, один и тот же программный продукт может одновременно выполнять функции клиента, сервера или посредника в зависимости от поставленных задач. В спецификациях протокола HTTP подробно описывается поведение для каждой из этих ролей.

HTTP протокол предлагает достаточно простой, парольный способ идентификации того или иного пользователя. В момент соединения с сервером, пользователь вводит пароль, пароль передается серверу вот крытом, не зашифрованном виде, и далее, проверив соответствие пароля и имени пользователя, сервер открывает или не открывает затребованное соединение.

Не секрет, что можно без особых технических ухищрений просматривать данные, которыми обмениваются между собой клиенты и серверы. Был даже придуман специальный термин для этого – sniffer(рус. нюхач) . А в связи с увеличением объема использованияИнтернета в коммерческих целях, неизбежно вставал вопрос о защите передаваемых данных. Было создано несколько различных безопасных протоколов. Официальный протокол,разработку которого спонсировала IETF, назывался Secure HTTP (SHTTP). Помимо него, разрабатывались, и были созданы, еще несколько не официальных проектов,один из которых, под названиемSSL(Secure Sockets Layer), созданный Netscape,получил большую популярность и широкое распространение. Не смотря на свою популярность,SSLне является официальнымИнтернетстандартом.

Протокол SSL(secure socket layer) разработанный фирмой Netscape, как протокол обеспечивающий защиту данных между сервисными протоколами (такими как HTTP, NNTP,FTPи т.д.) и транспортными протоколами(TCP/IP). Часто для него используется аббревиатураHTTPS. Именно эта латинская буква "s" превращает обычный, не защищенный канал передачи данных вИнтернете по протоколу HTTP, в засекреченный или защищенный.

Протокол SSLпредоставляет "безопасный канал",который имеет три основные свойства:

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

· Канал аутентифицирован. Серверная сторона диалога всегда аутентифицируется, в то время как клиентская - аутентифицируется опционно.

· Канал надежен. Транспортировка сообщений включает в себя проверку целостности (с привлечением MAC).

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

Использование SSL

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

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

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

Использование SSLначинается в тот момент,когда пользователь вводит в адресной строке своего браузера URL начинающийся с аббревиатуры HTTPS. В результате, он подключается к порту за номером 443,который дляSSLобычно используется по умолчанию (для стандартного HTTP соединения, чаще всего используется порт 80). В процессе подключения, браузер пользователя (в дальнейшем клиент), посылает серверу приветственное сообщение(hello message). В свою очередь сервер, также должен посылать клиенту свое приветственное сообщение. Приветственные сообщения, являются первичными,инициализирующими сообщениями и содержат информацию, используемую при дальнейшей настройке открываемого секретного канала. В общем случае,приветственное сообщение устанавливает четыре основных параметра: версия протокола, идентификатор сессии, способ шифрования, метод компрессии, а также, два специально сгенерированных случайных числа; и сервер, и клиент, генерируют такие числа независимо друг от друга, а затем, просто обмениваются ими друг с другом.

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

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

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

Одним из самых показательных критериев уровня защиты, является размер используемых ключей. Чем больше этот размер, тем соответственно надежнее защита. Браузеры в основном используют три размера: 40,56 и 128 бит, соответственно. Причем, 40-а битный вариант ключа недостаточно надежен. Таким образом, предпочтительнее использовать именно 128-ми битные ключи.

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

Все эти и им подобные прорехи, не идут нив какое сравнение с той угрозой, которую могут представлять для пользователя вовремя не отозванные сертификаты. Дело в том, что браузеры обычно поставляются с неким, вполне определенным набором действительных сертификатов, но автоматического механизма проверки этой годности по прошествии некоторого времени - не существует. Таким образом, возможно, что действие, того или иного,используемого вашим браузером сертификата, уже, давно кончилось; мог истечь срок годности, мог быть потерян контроль над личным ключом соответствующим этому сертификату и.т.д. В любом из этих случаев, сертификат автоматически отзывается, и помещается в специальный, так называемый revocation list, или список не годных сертификатов, создаваемый и обновляемый тем или иным сертификационным сообществом (CA). Теперь, если не удалить такой сертификат из вашего браузера, он по прежнему будет числиться как годный, со всеми вытекающими отсюда последствиями.

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

Протокол DHCP

DHCP(англ. DynamicHostConfiguration Protocol, протокол динамической конфигурации узла) - это сетевой протокол, позволяющий компьютерам автоматически получатьIP-адреси другие параметры, необходимые для работы в сетиTCP/IP. Данный протокол работает по модели «клиент-сервер». ПротоколDHCPпредставляет собой стандартный протокол, определенный RFC 1541 (заменен на RFC2131), который позволяет серверу динамически присваивать клиентамIP-адреса и сведения о конфигурации.Сетевой администраторможет задать диапазон адресов,распределяемых сервером среди компьютеров. Это позволяет избежать ручной настройки компьютеров сети и уменьшает количество ошибок. ПротоколDHCPиспользуется в большинстве крупных (и не очень) сетейTCP/IP.

DHCPявляется расширением протокола BOOTP, использовавшегося ранее для обеспечения бездисковых рабочих станцийIP-адресами при их загрузке.DHCPсохраняет обратную совместимость с BOOTP.

Протокол DHCPпредоставляет три способа распределенияIP-адресов:

· Ручное распределение. При этом способе сетевой администратор сопоставляет аппаратному адресу (для Ethernetсетей этоMAC-адрес) каждого клиентского компьютера определённыйIP-адрес.Фактически, данный способ распределения адресов отличается от ручной настройки каждого компьютера лишь тем, что сведения об адресах хранятся централизованно(на сервереDHCP), и потому их проще изменять при необходимости.

· Автоматическое распределение. При данном способе каждому компьютеру на постоянное использование выделяется произвольный свободныйIP-адрес из определённого администратором диапазона.

· Динамическое распределение. Этот способ аналогичен автоматическому распределению, за исключением того, что адрес выдаётся компьютеру не на постоянное пользование, а на определённый срок. Это называется арендой адреса. По истечении срока аренды IP-адрес вновь считается свободным, и клиент обязан запросить новый (он, впрочем, может оказаться тем же самым). Кроме того,клиент сам может отказаться от полученного адреса.

Некоторые реализации службы DHCPспособны автоматически обновлять записиDNS,соответствующие клиентским компьютерам, при выделении им новых адресов. Это производится при помощи протокола обновленияDNS, описанного в RFC 2136.

Помимо IP-адреса,DHCPтакже может сообщать клиенту дополнительные параметры, необходимые для нормальной работы в сети. Эти параметры называются опциямиDHCP. Список стандартных опций можно найти в RFC2132.

Некоторыми из наиболее часто используемых опций являются:

· IP-адресмаршрутизатора по умолчанию;

· маска подсети;

· адреса серверов DNS;

· имя домена DNS.

Некоторые поставщики программного обеспечения могут определять собственные, дополнительные опции DHCP

Рассмотрим пример процесса получения IP-адреса клиентом от сервераDHCP. Предположим, клиент ещё не имеет собственногоIP-адреса,но ему известен его предыдущий адрес - 192.168.1.100. Процесс состоит из четырёх этапов.

Обнаружение DHCP

Вначале клиент выполняет широковещательный запрос по всей физической сети с целью обнаружить доступные DHCP-серверы. Он отправляет сообщение типаDHCPDISCOVER , при этом в качествеIP-адреса источника указывается 0.0.0.0 (так как компьютер ещё не имеет собственногоIP-адреса), а в качестве адреса назначения — широковещательный адрес 255.255.255.255.

Клиент заполняет несколько полей сообщения начальными значениями:

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

· В поле chaddr помещается аппаратный адрес ( MAC-адрес) клиента.

· В поле опций указывается последний известный клиенту IP-адрес. В данном примере это 192.168.1.100. Это необязательно и может быть проигнорировано сервером.

СообщениеDHCPDISCOVER может быть распространено за пределы локальной физической сети при помощи специально настроенных агентов ретрансляцииDHCP, перенаправляющих поступающие от клиентов сообщенияDHCPсерверам в других подсетях.

Предложение DHCP

Получив сообщение от клиента, сервер определяет требуемую конфигурацию клиента в соответствии с указанными сетевым администратором настройками. В данном случае DHCP-сервер согласен с запрошенным клиентом адресом 192.168.1.100.Серверотправляет ему ответ (DHCPOFFER ), в котором предлагает конфигурацию. Предлагаемый клиентуIP-адрес указывается в поле yiaddr . Прочие параметры(такие, как адреса маршрутизаторов иDNS-серверов) указываются в виде опций в соответствующем поле.

Это сообщение DHCP-сервер отправляет хосту, пославшемуDHCPDISCOVER , на егоMAC. Клиент может получить несколько различных предложенийDHCPот разных серверов; из них он должен выбрать то, которое его «устраивает».

Запрос DHCP

Выбрав одну из конфигураций, предложенных DHCP-серверами, клиент отправляет запросDHCP(DHCPREQUEST). Он рассылается широковещательно; при этом к опциям, указанным клиентом в сообщенииDHCPDISCOVER , добавляется специальная опция — идентификатор сервера — указывающая адресDHCP-сервера, выбранного клиентом (в данном случае — 192.168.1.1).

Подтверждение DHCP

Серверполучив запросDHCPREQUEST подтверждает его и направляет подтверждение (DHCPACK) клиенту. После этого клиент должен настроить свой сетевой интерфейс, используя предоставленные опции.

Если после получения подтверждения ( DHCPACK ) от сервера клиент обнаруживает,что указанный сервером адрес уже используется в сети, он рассылает широковещательное сообщение отказаDHCP(DHCPDECLINE ),после чего процедура полученияIP-адреса повторяется. ИспользованиеIP-адреса другим клиентом можно обнаружить, выполнив запросARP.

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

Клиент может явным образом прекратить аренду IP-адреса. Для этого он отправляет сообщение освобожденияDHCP(DHCPRELEASE) тому серверу, который предоставил ему адрес в аренду. В отличие от других сообщенийDHCP,DHCPRELEASE не рассылается широковещательно.

Информация DHCP

СообщениеинформацииDHCP(DHCPINFORM )предназначено для определения дополнительных параметровTCP/IP(например, адреса маршрутизатора по умолчанию,DNS-серверов и т. п.) теми клиентами, которым не нужен динамическийIP-адрес (то есть адрес которых настроен вручную).Серверы отвечают на такой запрос сообщением подтверждения (DHCPACK ) без выделенияIP-адреса.