СПОСОБ УСТАНОВЛЕНИЯ ОДНОРАНГОВОГО СОЕДИНЕНИЯ И ПРЕДНАЗНАЧЕННАЯ ДЛЯ ЭТОГО СИСТЕМА
METHOD FOR MAKING PEER-TO-PEER CONNECTION AND SYSTEM DESIGNED FOR IT

Область техники
Настоящее изобретение относится к технологии связи между узлами компьютерной сети. Более конкретно изобретение относится к способу установления однорангового соединения (соединения Р2Р) и к предназначенной для этого системе.
Уровень техники
Соединения между двумя узлами сети обычно выполняются в двух режимах. Первый режим - "клиент-сервер", согласно которому клиент запрашивает услугу, а сервер эту услугу предоставляет, как правило, по схеме "один ко многим". Как показано на фиг.1, сервер может принимать запросы от многих клиентов и предоставлять им услуги, при этом связь между ними не является одноранговой. Второй режим - одноранговый (режим Р2Р), при котором любые два узла компьютерной сети связаны непосредственно друг с другом (см. фиг.2), т.е. каждые два узла образуют одноранговую пару.
Поскольку в режиме "клиент-сервер" серверы отвечают за предоставление услуг множеству клиентов, то в качестве серверов обычно используются высокопроизводительные и, как следствие, дорогостоящие компьютеры. В режиме Р2Р два коммуникационных терминала являются одноранговыми и предоставляют услуги друг другу, что обеспечивает режиму Р2Р заметные преимущества, поскольку для совместного использования ресурсов и связи друг с другом можно объединять множество ПК средней производительности, при этом затраты заметно снижаются. Эта и другие причины повлияли на то, что при разработке сетей стали использовать режим Р2Р. В настоящее время к приложениям, использующим данный режим, относятся, например, приложения обмена файлов, приложения распределенных вычислений, электронной торговли и т.д.
Несмотря на упомянутые преимущества дальнейшее развитие режима Р2Р в некоторой степени ограничено тем обстоятельством, что все больше и больше компьютеров работают с использованием транслятора сетевых адресов (транслятора NAT), защищающего компьютеры от сетевых вирусных атак. Транслятор NAT - это механизм, обычно используемый в маршрутизаторах, который отвечает за проверку и пересылку пакетов между частной сетью и сетью общего доступа. Поскольку трансляторы NAT могут изменять информацию IP-адреса и порта хоста частной сети, они ограничивают возможности прямого соединения между любыми двумя компьютерами и позволяют организовать связь только в соответствии с определенными правилами. Следовательно, при реализации режима Р2Р основной задачей становится преодоление ограничений трансляторов NAT.
Трансляторы NAT можно в общих чертах разделить на три категории: Basic NAT (Базовый NAT), Cone NAT (Конусный NAT) и Symmetric NAT (Симметричный NAT).
Транслятор Basic NAT обычно ассоциирует пару {локальный IP-адрес, локальный порт} с парой {глобальный IP-адрес, глобальный порт} и транслирует адреса между этими ассоциированными портами.
Транслятор Cone NAT обычно ассоциирует пару {локальный IP-адрес, локальный порт} с парой {глобальный IP-адрес, глобальный порт} и использует этот ассоциированный порт повторно для обслуживания соединений с одного и того же сочетания локального IP-адреса и номера порта. Транслятор Cone NAT поддерживает ассоциированный порт в активном состоянии до тех пор, пока остается действующим хотя бы одно такое соединение.
Трансляторы Cone NAT подразделяются, в свою очередь, на несколько подкатегорий: Full Cone NAT (Полный Конусный NAT), Restricted Cone NAT (Ограниченный Конусный NAT) и Port-Restricted Cone NAT (Ограниченный по Портам Конусный NAT). Транслятор Full Cone NAT ассоциирует глобальный порт с локальным портом при установлении нового сеанса связи с внешним терминалом и затем принимает коммуникационные данные от любого внешнего терминала сети общего доступа через глобальный порт. Транслятор Restricted Cone NAT не принимает любые пакеты данных от внешнего хоста с внешним IP-адресом, пока локальный хост не отправит один или несколько пакетов данных по IP-адресу внешнего хоста. Транслятор Port-Restricted Cone NAT не принимает любые пакеты данных от внешнего хоста с заданным сочетанием IP-адреса и порта, пока локальный хост не отправит один или несколько пакетов данных по IP-адресу и номеру порта внешнего хоста. Нетрудно заметить, что трансляторы Restricted Cone NAT и Port-Restricted Cone NAT могут эффективно защищать локальные хосты от получения нежелательных пакетов данных.
Транслятор Symmetric NAT не поддерживает ассоциативное отношение между парой {локальный IP-адрес, локальный номер порта} и парой {глобальный IP-адрес, глобальный номер порта}, неизменное для всех сеансов связи. Вместо этого для каждого нового сеанса он использует новый глобальный порт или глобальный IP-адрес.
Поскольку на практике используются все типы трансляторов NAT и в каждом из них применяется собственный специфический режим связи, то при установлении соединения Р2Р между двумя узлами с разными типами трансляторов NAT прежде всего необходимо определить используемые типы трансляторов NAT, а затем установить соединение Р2Р, использующее разные режимы связи в соответствии с этими типами трансляторов NAT.
Далее описывается способ установления соединения Р2Р, соответствующий известному уровню техники.
Когда хост А некоторой сети пытается установить соединение Р2Р с хостом В, то для определения типа транслятора NAT его сети и последующей передачи данных об этом типе на сервер обычно используется внешний сервер с двумя IP-адресами. Соответственно этот сервер сохраняет тип транслятора NAT, переданный хостом В. Хост А получает с сервера информацию о типе транслятора NAT, используемом в сети, где расположен хост В. Если хост В расположен в сети общего доступа или в сети, где используется тип транслятора Full Cone NAT, то хост А должен использовать активный режим (см. фиг.3). Как показано на фиг.3, хост А посылает пакет данных непосредственно хосту В, а хост В возвращает ответный пакет хосту А. Таким образом устанавливается соединение Р2Р. В противном случае хост А использует пассивный режим (см. фиг.4). Как показано на фиг.4, хост А сначала посылает через сервер на хост В команду передавать пакет данных на хост А, затем хост А возвращает ответный пакет на хост В, устанавливая таким образом соединение Р2Р.
Если при описанном пассивном режиме хост А расположен в сети общего доступа или в сети, где используется тип транслятора Full Cone NAT, то соединение Р2Р устанавливается успешно. Однако если в сети, где расположен хост А, используется один из типов Restricted Cone NAT, Port-Restricted Cone NAT или Symmetric NAT, то трансляторы NAT этих типов будут отвергать нежелательные пакеты данных или даже отбрасывать в течение некоторого периода времени пакеты, направляемые с определенной комбинации IP-адреса и номера порта, из-за того что они будут определяться как имеющие признаки атаки. Все это делает невозможным установление соединений Р2Р. Нетрудно заметить, что техническое решение известного уровня техники обеспечивает низкую степень успеха в установлении соединений Р2Р.
Сущность изобретения
Задача данного изобретения заключается в создании способа и системы установления соединений Р2Р, которые позволяют повысить процент успеха при установлении таких соединений.
Изобретение представлено следующими вариантами выполнения.
Заявленный способ установления соединения Р2Р включает следующие этапы:
передачу сервером после получения запроса синхронизации от первого хоста каждому из первого и второго хостов пакета данных синхронизации, содержащего по меньшей мере адресную информацию другого хоста из указанных первого и второго хостов;
и передачу после получения указанного пакета данных синхронизации первым и вторым хостами друг другу пакета данных протокола UDP (протокола пользовательских дейтаграмм) в соответствии с полученной адресной информацией другого хоста из указанных первого и второго хостов.
Кроме того, способ содержит:
регистрацию первого и второго хостов на сервере перед передачей первым хостом запроса синхронизации серверу,
и сохранение сервером сетевых идентификаторов и адресной информации первого и второго хостов соответственно.
Запрос синхронизации от первого хоста содержит по меньшей мере сетевой идентификатор и адресную информацию второго хоста. Кроме того, способ содержит:
определение вторым хостом, устанавливать ли соединение Р2Р с первым хостом после получения пакета данных синхронизации, и направление пакета данных протокола UDP первому хосту, если принято решение устанавливать соединение Р2Р с первым хостом, или завершение процесса, если принято решение не устанавливать соединение Р2Р с первым хостом.
Кроме того, способ содержит:
передачу первым и вторым хостами друг другу ответного пакета данных после получения пакета данных протокола UDP, переданного другим хостом из указанных первого и второго хостов.
Если первый хост расположен в домене, использующем транслятор Restricted Cone NAT (Ограниченный Конусный Транслятор Сетевых Адресов), Port-Restricted Cone NAT (Ограниченный по Портам Конусный NAT) или Symmetric NAT (Симметричный NAT), а второй хост расположен в сети общего доступа или в домене, использующем транслятор Full Cone NAT, то передача первым и вторым хостами друг другу пакета данных протокола UDP после получения пакета данных синхронизации содержит:
передачу первым хостом после получения пакета данных синхронизации пакета данных протокола UDP второму хосту в соответствии с полученной адресной информацией второго хоста;
и передачу вторым хостом после получения пакета данных синхронизации пакета данных протокола UDP первому хосту в соответствии с полученной адресной информацией первого хоста.
Если первый хост расположен в сети общего доступа или в домене, использующем транслятор Full Cone NAT, а второй хост расположен в домене, использующем трансляторы Restricted Cone NAT, Port-Restricted Cone NAT или Symmetric NAT, то передача первым и вторым хостами друг другу пакета данных протокола UDP после получения пакета данных синхронизации содержит:
передачу вторым хостом после получения пакета данных синхронизации пакета данных протокола UDP первому хосту в соответствии с полученной адресной информацией первого хоста;
и передачу первым хостом после получения пакета данных синхронизации пакета данных протокола UDP второму хосту в соответствии с полученной адресной информацией второго хоста.
Если первый хост расположен в домене, использующем транслятор Restricted Cone NAT или транслятор Port-Restricted Cone NAT, и второй хост расположен в домене, использующем транслятор Restricted Cone NAT или транслятор Port-Restricted Cone NAT, то передача первым и вторым хостами друг другу пакета данных протокола UDP после получения пакета данных синхронизации содержит:
передачу первым хостом после получения пакета данных синхронизации пакета данных протокола UDP второму хосту в соответствии с полученной адресной информацией второго хоста;
и передачу вторым хостом после получения пакета данных синхронизации пакета данных протокола UDP первому хосту в соответствии с полученной адресной информацией первого хоста.
Если первый хост расположен в домене, использующем транслятор Restricted Cone NAT или транслятор Port-Restricted Cone NAT, и второй хост расположен в домене, использующем транслятор Restricted Cone NAT или транслятор Port-Restricted Cone NAT, то передача первым и вторым хостами друг другу пакета данных протокола UDP после получения пакета данных синхронизации содержит:
передачу вторым хостом после получения пакета данных синхронизации пакета данных протокола UDP первому хосту в соответствии с полученной адресной информацией первого хоста;
и передачу первым хостом после получения пакета данных синхронизации пакета данных протокола UDP второму хосту в соответствии с полученной адресной информацией второго хоста.
Адресная информация содержит по меньшей мере IP-адрес в сети общего доступа и номер порта.
Кроме того, адресная информация включает локальный IP-адрес и номер порта.
Заявленная система установления соединения Р2Р содержит сервер, первый хост и второй хост;
причем сервер после получения запроса синхронизации, переданного первым хостом, передает каждому из указанных первого и второго хостов пакет данных синхронизации, содержащий по меньшей мере адресную информацию другого хоста из указанных первого и второго хостов;
и первый и второй хосты после получения пакета данных синхронизации передают друг другу пакет данных протокола UDP (протокола пользовательских дейтафамм) в соответствии с полученной адресной информацией другого хоста из указанных первого и второго хостов.
Заявленный способ установления соединения Р2Р содержит:
прием первым хостом от сервера адресной информации второго хоста и информации о трансляторе NAT (трансляторе сетевых адресов), используемом в сети, где расположен второй хост;
и если второй хост расположен в сети общего доступа или в домене, использующем транслятор Full Cone NAT (Полный Конусный Транслятор NAT), то передачу первым хостом пакета данных протокола UDP второму хосту в соответствии с принятой адресной информацией второго хоста;
и если второй хост не расположен ни в сети общего доступа, ни в домене, использующем транслятор Full Cone NAT, то определение первым хостом информации о трансляторе NAT, используемом в сети, где расположен первый хост;
если первый хост расположен в сети общего доступа или в домене, использующем транслятор Full Cone NAT, то подачу через сервер первым хостом второму хосту команды на передачу пакета данных протокола UDP первому хосту;
и если первый хост не расположен ни в сети общего доступа, ни в домене, использующем транслятор Full Cone NAT, то выполнение следующих действий:
передачу первым хостом запроса синхронизации на сервер после получения этого запроса синхронизации;
передачу сервером на каждый из указанных первого и второго хостов пакета данных синхронизации, содержащего по меньшей мере адресную информацию другого хоста из указанных первого и второго хостов;
и передачу после получения пакета данных синхронизации первым и вторым хостами друг другу пакета данных протокола UDP в соответствии с полученной адресной информацией другого хоста из указанных первого и второго хостов.
Из приведенной схемы видно, что согласно заявленному способу оба хоста посылают друг другу пакет данных протокола UDP, поэтому транслятором NAT принятый пакет данных рассматривается как допустимый, потому что пакет данных передан другому хосту от указанных первого и второго хостов во время приема пакета данных от этого другого хоста. Следовательно, между двумя хостами может быть успешно установлено соединение Р2Р. Таким образом решается проблема известного уровня техники, связанная с невозможностью успешного установления соединения Р2Р, если какой-либо хост расположен в домене с использованием трансляторов Restricted Cone NAT или Port-Restricted Cone NAT, отвергающих нежелательные пакеты данных. Кроме того, когда один хост расположен в домене с использованием транслятора Symmetric NAT с заменой портов, а другой хост расположен в домене с использованием транслятора Restricted Cone NAT, то соединение Р2Р также может быть успешно установлено. В результате степень успеха установления соединений Р2Р значительно возрастает.
Краткое описание чертежей
Фиг.1 иллюстрирует схему соединения хостов сети в режиме клиент/сервер.
Фиг.2 иллюстрирует схему соединения хостов сети в режиме Р2Р.
Фиг.3 иллюстрирует схему установления соединения Р2Р в активном режиме в соответствии с известным уровнем техники.
Фиг.4 иллюстрирует схему установления соединения Р2Р в пассивном режиме в соответствии с известным уровнем техники.
Фиг.5 иллюстрирует схему установления соединения Р2Р в синхронном режиме в соответствии с настоящим изобретением.
Фиг.6 изображает алгоритм установления соединения Р2Р в синхронном режиме в соответствии с настоящим изобретением.
Описание вариантов выполнения изобретения
Далее изобретение описано более подробно на примере некоторых вариантов его выполнения, которые раскрыты со ссылкой на приложенные чертежи и позволяют полнее понять цели, техническую сущность и преимущества данного изобретения. Необходимо иметь в виду, что предложенные варианты выполнения использованы только для пояснения сути изобретения и не должны расцениваться как ограничение объема его правовой охраны.
В изобретении предложен способ установления соединения Р2Р в синхронном режиме (см. фиг.5). Если требуется установить соединение Р2Р с хостом В, то хост А сначала передает на сервер пакет данных запроса синхронизации. При получении пакета данных запроса синхронизации сервер передает каждому из хостов А и В пакет данных синхронизации, содержащий сетевую информацию другого хоста. И после получения этих пакетов данных синхронизации хосты А и В передают друг другу пакет данных протокола UDP (протокола пользовательских дейтаграмм). После получения пакета данных протокола UDP, переданного другой стороной, хосты А и В передают друг другу ответный пакет данных протокола UDP.
Фиг.6 изображает алгоритм установления соединения Р2Р в синхронном режиме в соответствии с настоящим изобретением. Как следует из фиг.6, способ включает в себя следующие этапы.
На этапе 601 хост А и хост В регистрируются на сервере, который сохраняет глобальные IP-адреса и глобальные номера портов, локальные IP-адреса и локальные номера портов и сетевые идентификаторы хоста А и хоста В.
На этапе 602 при попытке установить соединение Р2Р с хостом В хост А передает на сервер пакет данных запроса синхронизации, содержащий по меньшей мере локальные IP-адрес и номер порта хоста А, глобальные IP-адрес и номер порта хоста А и сетевой идентификатор хоста В.
На этапе 603 после получения пакета данных запроса синхронизации от хоста А сервер направляет каждому из хостов А и В пакет данных синхронизации. Пакет данных синхронизации, переданный хосту А, содержит по меньшей мере глобальные IP-адрес и номер порта хоста В и локальные IP-адрес и номер порта хоста В, тогда как пакет данных синхронизации, переданный хосту В, содержит по меньшей мере глобальные IP-адрес и номер порта хоста А и локальные IP-адрес и номер порта хоста А. Далее выполняются этапы 604 и 606.
На этапе 604 после получения пакета данных синхронизации, переданного сервером, хост А направляет хосту В пакет данных протокола UDP, используя IP-адреса и номера портов хоста В в сети общего доступа и в частной сети.
На этапе 605 после получения пакета данных протокола UDP, переданного хостом А, хост В возвращает хосту А ответный пакет данных, принимаемый транслятором NAT той сети, где расположен хост А, поскольку хост А уже передал пакет данных протокола UDP хосту В. Затем хост А завершает процесс.
На этапе 606 при получении пакета данных синхронизации, переданного сервером, хост В принимает решение, устанавливать ли соединение Р2Р с хостом А, и выполняет этап 607 при положительном решении, в противном случае завершает процесс и соединение Р2Р не устанавливается.
На этапе 607 хост В направляет пакет данных протокола UDP хосту А, используя IP-адреса и номера портов сети общего доступа и частной сети хоста А.
На этапе 608 после получения пакета данных протокола UDP, переданного хостом В, хост А возвращает хосту В ответный пакет данных, принимаемый также транслятором NAT той сети, где расположен хост В, потому что хост В уже передал пакет данных протокола UDP хосту А.
Таким образом, процесс установления соединения Р2Р между хостами А и В завершается.
Далее анализируется результаты, обеспечиваемые описанной выше схемой.
Если хосты А и В расположены в сети общего доступа или в доменах, использующих транслятор Full Cone NAT, то в соответствии с настоящим изобретением соединение Р2Р может быть успешно установлено в синхронном режиме установления соединения Р2Р.
Если хост А расположен в домене, использующем трансляторы Restricted Cone NAT, Port-Restricted Cone NAT или Symmetric NAT, а хост В расположен в сети общего доступа или в домене, использующем транслятор Full Cone NAT, то соединение Р2Р может быть успешно установлено, если этап 604 выполняется перед этапом 608, т.е. до того, как хост А получит пакет данных протокола UDP, переданный хостом В, хост А должен уже передать пакет данных протокола UDP хосту В. На практике для обеспечения передачи хостом А пакета данных протокола UDP хосту В до получения хостом А пакета данных протокола UDP от хоста В необходимо запретить хосту В передавать пакет данных протокола UDP хосту А, пока хост А не передаст пакет данных протокола UDP хосту В.
Если хост А расположен в сети общего доступа или в домене, использующем транслятор Full Cone NAT, а хост В расположен в домене, использующем трансляторы Restricted Cone NAT, Port-Restricted Cone NAT или Symmetric NAT, то соединение Р2Р может быть успешно установлено, если этап 607 выполняется перед этапом 605, т.е. хост В уже должен передать пакет данных протокола UDP хосту А до того, как хост В получит пакет данных протокола UDP, переданный хостом А. На практике для обеспечения передачи хостом В пакета данных протокола UDP хосту А до получения пакета данных протокола UDP от хоста А необходимо запретить хосту А передачу пакета данных протокола UDP хосту В, пока хост В не передаст пакет данных протокола UDP хосту А.
Если хост А расположен в домене, использующем трансляторы Restricted Cone NAT или Port-Restricted Cone NAT, и хост В расположен в домене, использующем трансляторы Restricted Cone NAT или Port-Restricted Cone NAT, то соединение Р2Р может быть успешно установлено, если этап 607 выполняется перед этапом 605 или этап 604 выполняется перед этапом 608. На практике можно запретить хосту В передачу пакета данных протокола UDP хосту А до передачи хостом А пакета данных протокола UDP хосту В или запретить хосту А передачу пакета данных протокола UDP хосту В до передачи хостом В пакета данных протокола UDP хосту А.
Если любой их хостов А или В расположен в домене, использующем транслятор Symmetric NAT, то соединение Р2Р также может быть успешно установлено в следующих двух случаях.
Случай 1. Если один из хостов А или В расположен в домене с использованием транслятора Symmetric NAT с заменой портов, а другой хост - в домене с использованием транслятора Restricted NAT, то соединение Р2Р между этими хостами может быть установлено, потому что транслятор Symmetric NAT не меняет глобальный IP-адрес источника, с которого передаются пакеты данных, и следовательно, транслятор Restricted NAT как противоположная сторона примет пакеты данных.
Случай 2. Соединение Р2Р между хостами может быть установлено в тех системах, которые отображают IP-адрес и номер порта в режиме транслятора Port-Restricted Cone NAT, предпочтительно в случае обнаружения транслятора Symmetric NAT, и в которых режимы Symmetric, например iptables, используются только при вероятности возникновения конфликта.
Из проведенного анализа видно, что установление соединения Р2Р в синхронном режиме согласно настоящему изобретению позволяет решить по меньшей мере проблему невозможности установления соединения Р2Р при расположении двух хостов в доменах с использованием трансляторов Restricted Cone NAT или Port-Restricted Cone NAT, если каждый из обоих хостов уже послал пакет данных другому хосту во время приема пакета данных от этого другого хоста. Как следует из фиг.5, условие заключается в том, чтобы сумма времени, необходимого серверу для передачи пакета данных синхронизации хосту А, и времени, необходимого хосту А для передачи пакета данных протокола UDP хосту В, превышала время, необходимое серверу для передачи пакета данных синхронизации хосту В. На практике это условие реализовать легко, поэтому настоящее изобретение обеспечивает более часто успешное установление соединений Р2Р, т.е.увеличивает степень успешности установления соединений Р2Р.
Кроме того, в изобретении предложена комбинированная схема, объединяющая описанную выше схему одновременной передачи пакетов со схемой установления соединений Р2Р, соответствующей предыдущему уровню техники. Эта схема подробно описана далее.
Хост А получает от сервера адресную информацию хоста В и тип транслятора NAT, используемого в сети, где расположен хост В. Если хост В расположен в сети общего доступа или в сети, использующей тип транслятора Full Cone NAT, то хост А использует активный режим (см. фиг.3). Как показано на фиг.3, хост А посылает пакет данных непосредственно хосту В, используя адресную информацию хоста В. Хост В возвращает ответный пакет хосту А. Таким образом, устанавливается соединение Р2Р.
Если хост В не расположен ни в сети общего доступа, ни в домене, использующем транслятор Full Cone NAT, то хост А определяет, расположен ли хост А в сети общего доступа или в домене, использующем транслятор Full Cone NAT.
Если хост А расположен в сети общего пользования, но не в домене, использующем транслятор Full Cone NAT, то хост А применяет пассивный режим (см. фиг.4). Как показано на фиг.4, хост А через сервер предписывает хосту В сначала передать пакет данных хосту А. Хост А возвращает ответный пакет хосту В, устанавливая таким образом соединение Р2Р.
Если хост А не находится ни в сети общего доступа, ни в домене, использующем транслятор Full Cone NAT, то применяется описанная выше схема одновременной передачи пакетов данных. В соответствии с этой схемой хост А передает запрос синхронизации на сервер, затем сервер одновременно передает каждому из хостов А и В пакет данных синхронизации, содержащий по меньшей мере адресную информацию другого хоста. При получении пакета данных синхронизации хосты А и В передают друг другу пакет данных.
В данной заявке описаны только предпочтительные варианты изобретения, однако объем правовой охраны изобретения не ограничивается только этими вариантами. Все изменения, равноценные замены или усовершенствования, не выходящие за рамки принципов настоящего изобретения, должны рассматриваться как подпадающие под объем его правовой охраны.
Список используемых обозначений
basic NAT - Базовый NAT
Cone NAT - Конусный NAT
Full Cone NAT - Полный Конусный NAT
NAT - транслятор сетевых адресов (Network Address Translator)
P2P - одноранговый (Peer to Peer)
Port-Restricted Cone NAT - Ограниченный по Портам Конусный NAT
Restricted Cone NAT - Ограниченный Конусный NAT
Symmetric NAT - Симметричный NAT
UDP - протокол пользовательских дейтаграмм (User Data Protocol)