Пользователь может получать объекты с web-серверов-источников
Пользователь может получать объекты с web-серверов-источников, принадлежащих поставщикам ресурсов, с прокси-серверов, арендуемых Интернет-провайдерами, а также с CDN-серверов, управляемых CDN-компаниями. Тем не менее технологии распределения ресурсов этим не исчерпываются. Оказывается, обычные оконечные системы могут обмениваться объектами непосредственно друг с другом! Такому обмену, называемому одноранговым (Peer-to-Peer, Р2Р) разделением файлов, посвящено немало информационных ресурсов. Мы рассмотрим вопросы, связанные с соединением и передачей информации в контексте однорангового разделения файлов. Разумеется, технология Р2Р имеет множество других важных аспектов применения, относящихся к безопасности, конфиденциальности, анонимности и защите авторских прав.
Перед тем как «проникнуть» внутрь одноранговой системы, посмотрим, каким образом пара пользователей может ее применить. Для наглядности вспомним наших персонажей. Пусть Алиса использует Р2Р-систему для загрузки МРЗ-файлов с помощью программного обеспечения, выполняющегося на ее портативном персональном компьютере, который имеет резидентный доступ в Интернет через модем. Алиса пользуется связью с Интернетом в течение нескольких часов в день; в остальное время телефонная линия свободна для переговоров. Компьютер Алисы не имеет имени хоста и каждый раз при подключении к сети ему назначается новый IP-адрес.
Предположим, Алиса подключена к Интернету, ее одноранговое приложение запущено, и с его помощью она осуществляет поиск МРЗ-файла с композицией «Неу Jude» группы «The Beatles». Через некоторое время после ввода команды поиска приложение выводит на экран список систем, подключенных к Интернету и содержащих искомую композицию. Как правило, одноранговая система представляет собой обычный персональный компьютер. Обычно Р2Р-приложения вместе со списком систем выводят дополнительную информацию о каждой системе, например скорость обмена информацией и приблизительное время передачи файла. Алиса выбирает одну систему из списка, к примеру компьютер Боба, и отправляет ему запрос на получение файла. Между компьютерами Алисы и Боба устанавливается прямое TCP-соединение и осуществляется передача требуемого файла. В случае разрыва соединения компьютера Боба с Интернетом Р2Р-приложение Алисы может предпринять автоматическую попытку загрузки оставшегося фрагмента файла с другой одноранговой системы. Во время загрузки файла с композицией «Неу Jude» компьютер Алисы может обслуживать запрос другой системы, передавая ему, к примеру, файл с песней «Angie» группы «Rolling Stones». Таким образом, каждая одноранговая система одновременно является поставщиком и потребителем ресурсов.
Очевидно важное достоинство Р2Р-систем: все объекты передаются между хостами без участия «третьей» стороны в лице серверов-источников, кэш-серверов и CDN-серверов. Таким образом, миллионы пользователей могут напрямую использовать ресурсы друг друга (пропускную способность, дисковое пространство и вычислительные мощности) для распределения ресурсов.
Несмотря на то что файловый обмен в Р2Р-системе происходит децентрализованно, следует помнить о том, что фактически при этом используется уже знакомая нам парадигма клиент/сервер. Действительно, систему, формирующую запрос на получение файла, следует отнести к клиентской стороне, а систему, передающую файл, — к серверной. Передача файла осуществляется при помощи протокола, предназначенного для файлового обмена. Для того чтобы одноранговая система была способна осуществлять генерацию и выполнение запросов, необходимо, чтобы она поддерживала как клиентскую, так и серверную части протокола. Рассмотрим, что происходит в процессе обмена при использовании протокола HTTP, популярного в Р2Р-приложениях. Вернемся к описанному выше примеру, где Алиса загружает файл с композицией «Неу Jude» с компьютера Боба. Одноранговое приложение на стороне Алисы формирует HTTP-запрос на получение соответствующего файла в адрес хоста Боба, а приложение Боба обрабатывает запрос и формирует ответ, содержащий требуемый файл. Необходимо отметить, что компьютер Алисы в Р2Р-системе является одновременно и клиентом, и временным сервером. Он играет роль клиента при передаче запросов и приеме ответов и роль сервера при обработке и обслуживании запросов. Термин «временный сервер» отражает тот факт, что соединение компьютера Алисы с Интернетом не является постоянным, IP-адрес компьютера изменяется с каждым новым подключением к сети, и прием запросов осуществляется только при наличии соединения с Интернетом.
Мы описали наиболее простую область применения Р2Р-системы — передачу файлов между одноранговыми системами. А вопрос о том, каким образом приложение осуществляет поиск нужного файла, остался открытым. Обычно в каждый момент времени существует множество подключенных к Р2Р-системе пользователей, каждый из которых обладает общедоступными ресурсами, включая МРЗ-файлы, изображения, видеоклипы и программы. Для того чтобы составить список пользователей, располагающих требуемым объектом, приложению необходимо получить IP-адреса всех систем, подключенных к сети. Поскольку общее число систем весьма велико, новые отключения и подключения к сети происходят очень часто, что делает разрешение задачи непростым. Ниже мы опишем три варианта архитектуры, позволяющих осуществлять поиск ресурсов и применяющихся в различных Р2Р-системах.