Принцип работы технологии «UDP hole punching»



Рассмотрим принцип работы программ обмена мгновенными сообщениями на примере работы программы Skype.

Исходные данные:

1)сервер, имеющий глобальный уникальный IP-адрес;

2) узлы А и В, которые желают обмениваться между собой информацией. Предположим, у этих узлов есть глобальные уникальные IP-адреса:

 

Узел IP-адрес
А 100.100.1.1
В 100.100.2.2

 

3) На каждом узле работает сетевой экран. Предположим, сетевой экран работает на маршрутизаторе (на практике сетевой экран может работать на самом узле или на маршрутизаторе);

4) Узлы А и В выбирают номера портов, которые будут участвовать в обмене данными (могут быть выбраны случайно из некоторого диапазона).

Узел IP-адрес Порт для участия в обмене данными
А 100.100.1.1 2001
В 100.100.2.2 2020

Если на первоначальном этапе один узел попытается послать сообщение другому узлу, то сообщение будет заблокировано.

Принцип организации взаимодействия:

 

1)Узел А посылает сообщение серверу:

Посылка сообщения может осуществляться с использованием UDP-или TCP-протокола. Происходит авторизация пользователя А:

– сообщение от узла А серверу –сообщение вида «Я пользователь А с паролем *»;

–сервер узнает, какиеIP-адрес и порт используются пользователем А (из содержимого полученного пакета), и использует их для обмена сообщениями с клиентом по UDP. Сообщения идут непрерывно;

2) Сетевой экран запоминает, что обратные сообщения разрешены (в сетевом экране как бы проделывается «дырочка»);

 

3) Узел В выполняет действия, аналогичные действиям узла А;

 

4) После авторизации узлы А и В получают полный список своих контактов с указанием соответствующих IP-адресов и портов.

 

5) Пусть узел А хочет позвонить узлу В.

 

Узел А сообщает серверу, что он звонит узлу В.

 


Узел А начинает звонить узлу В. В это же время сервер сообщает узлу В, что ему хочет позвонить узел А.

 


Пакет узла А блокируется сетевым экраном узла В (стандартная настройка сетевого экрана, которая не пропускает входящий сетевой трафик).

 


Узел В получает информацию о том, что узел А хочет ему позвонить, и начинает посылку встречных пакетов (В ->А).

 


Образуется канал UDP («дырка» в сетевом экране, временное разрешающее правило), по которому узлы А и В могут обмениваться сообщениями.

 

 


Таким образом, посылая встречные пакеты, узлы проделывают в своих сетевых экранах дырки, через которые уходят их пакеты и приходят пакеты от других узлов.


 

Работа технологии при наличии NAT

 

Условие: программы обмена сообщениями находятся на узлах в локальной сети, где используется NAT. За NAT находятся и узел А, и узел В.

Принцип организации взаимодействия:

1) Узел А посылает пакет серверу, чтобы пройти авторизацию. 

 

 

Когда пакет отправляется, он проходит через NAT. NAT подменяет адрес отправителя, устанавливая туда свой IP-адрес (100.100.1.1), а также подменяет порт отправителя на некоторый порт из пула портов (со значением, превышающим граничное). Пусть выбран порт 30001.

 

Измененный пакет приходит на сервер. Сервер по заголовку пакета узнает, что он пришел с узла 100.100.1.1 и порта 30001, а по данным, вложенным в пакет, определяется оригинальный узел-отправитель (узел А с адресом 192.168.1.1, порт 2001);

2) Аналогично происходит авторизация узла В;


 

Обмен пакетами происходит постоянно: клиент шлет серверу информацию, сервер в ответ периодически шлет состояния.

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

3) Когда узел А желает позвонить узлу В, он сообщает об этом серверу (пакет вида «А звонит В»). Сервер сообщает эту информацию узлу В. В это же время узел А начинает посылать пакеты на 2 адреса:

Адрес Порт
100.100.2.2 30002
192.168.1.2 2020

 

4) Первый вариант: пакет от узла А идет на адрес 100.100.2.2, порт 30002. Он проходит через свой NAT и сетевой экран, проделывая «дырочки», однако сетевой экран узла 100.100.2.2блокирует этот пакет.

В то же время узел В начинает посылать пакеты на адрес узла А (на 2 адреса: 100.100.1.1, порт 30001 и 192.168.1.1, порт 20001). Пакеты проходят через сетевой экран и NATузла В. Когда пакет доходит до NATузла A, у NATуже имеется сохраненное соответствие:

100.100.1.1,порт 30001 ->192.168.1.1, порт 2001,

поэтому становится возможной обратная трансляция адреса.


Дата добавления: 2018-08-06; просмотров: 335; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!