8(499)-709-97-83
Работаем с 8:00 до 19:00

Протокол STUN часть 2

  • 19 августа 2014

Протокол STUN позволяет SIP устройствам, работающим за NAT, узнать свой публичный IP адрес и порт. Поскольку SIP устройства используют протокол UDP в качестве транспортного протокола, поэтому протокол STUN широко используется в SIP сигнализации. Ниже мы увидим, примеры SIP запросов и ответов при использовании STUN сервера.

Отправка SIP сообщений без использования протокола STUN

Ниже приводится пример SIP сообщений типа REGISTER. SIP устройство, работает за NAT и пытается зарегистрироваться в качестве внутреннего номера 101 на IP-АТС (voipproducts.org – АТС находится за пределами локальной сети SIP устройства). SIP устройство не использует протокол STUN.

REGISTER sip:voipproducts.org SIP/2.0
Via: SIP/2.0/UDP 192.168.2.14:7214;branch=z9hG4bK-d8754z;rport
Max-Forwards: 70
Contact: :
To: “account1″
From: “account1″;tag=0a75d76e
Call-ID: OTcxMDU5MGNhNTAxNzgzYjZkODVkY2I3MmE3NDhlNzQ.
CSeq: 1 REGISTER
Expires: 3600
Content-Length: 0
From the above we can see that:
Contact:

В поле “Contact” указан локальный IP адрес SIP устройства (192.168.2.14) и порт 7214. Таким образом, SIP устройство, указывает, что соединение необходимо установить с IP адресом 192.168.2.14 и портом 7214. Но IP-АТС, которая находится не в локальной сети SIP устройства, не сможет установить сеанс связи или отправить ответное SIP сообщение, т.к. IP адреса локальных сетей не маршрутизируются в сети Интернет.

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

Если SIP устройство использует STUN сервер, то SIP устройство отправляет запрос на STUN сервер и ждет от него ответа. Такой запрос обычно делается во время загрузки SIP устройства или прежде чем создать новое соединение. Ниже приводится пример ответа STUN сервера:

Message Type: Binding Response(0×0101)
Message Length: 0×0044
Message Transaction ID: E753D76EA857A24DA38A229F7576E18E
Attribute: MAPPED-ADDRESS
Attribute Type: MAPPED-ADDRESS(0×0001)
Attribute Length: 8
Protocol Family: IPv4 (0×0001)
Port: 6023
IP: 78.158.143.115 (78.158.143.115)
Attribute: SOURCE-ADDRESS
Attribute Type: SOURCE-ADDRESS(0×0004)
Attribute Length: 8
Protocol Family: IPv4 (0×0001)
Port: 3478
IP: 10.252.131.113 (10.252.131.113)
Attribute: CHANGED-ADDRESS
Attribute Type: CHANGED-ADDRESS(0×0005)
Attribute Length: 8
Protocol Family: IPv4 (0×0001)
Port: 3479
IP: 75.101.138.128 (75.101.138.128)

Поясним представленный ответ STUN сервера:

Message Type: Binding Response(0×0101)
Message Length: 0×0044
Message Transaction ID: E753D76EA857A24DA38A229F7576E18E
Message type: Это поле указывается тип сообщения; в приведенном примере мы видим, что это ответ STUN сервера на запрос SIP устройства.
Message Length: Это поле указывает длину сообщения в байтах.
Message Transaction: В этом поле указывается уникальный идентификатор сообщения запрос/ответ STUN сервера. Для каждого нового запроса создается новый идентификатор.
Attribute: MAPPED-ADDRESS
Attribute Type: MAPPED-ADDRESS(0×0001)
Attribute Length: 8
Protocol Family: IPv4 (0×0001)
Port: 6023
IP: 78.158.143.115 (78.158.143.115)

Данный атрибут называется “MAPPED-ADDRESS”; его целью является, указать исходный IP адрес (из приведенного выше примера это 78.158.143.115) и порт источника (из приведенного выше примера это 6023). Эти данные STUN сервер передает SIP устройству.

Attribute: SOURCE-ADDRESS
Attribute Type: SOURCE-ADDRESS(0×0004)
Attribute Length: 8
Protocol Family: IPv4 (0×0001)
Port: 3478
IP: 10.252.131.113 (10.252.131.113)

Данный атрибут называется “SOURCE-ADDRESS”; его целью является обнаружение двойного NAT`а. Из представленного выше мы видим, что в данной конфигурации используется двойной NAT, потому что IP-адрес SIP устройства является 192.168.2.14, а публичный IP адрес, откуда был получен запрос с 78.158.143.115. IP адрес 10.252.131.113 использоваться не будет.

Attribute Type: CHANGED-ADDRESS(0×0005)
Attribute Length: 8
Protocol Family: IPv4 (0×0001)
Port: 3479
IP: 75.101.138.128 (75.101.138.128)

Данный атрибут называется “CHANGED-ADDRESS”; его цель состоит в том, чтобы указать на IP-адрес и порт, куда послать ответ, если клиент запросит “Change IP” и “Change Port” в атрибуте “CHANGE-REQUEST”.

Отправка SIP сообщений с использованием протокола STUN

Ниже приводится пример SIP сообщений типа REGISTER. SIP устройство, работает за NAT и пытается зарегистрироваться в качестве внутреннего номера 101 на IP-АТС (voipproducts.org – АТС находится за пределами локальной сети SIP устройства). SIP устройство использует протокол STUN.

REGISTER sip:voipproducts.org SIP/2.0
Via: SIP/2.0/UDP 192.168.2.14:7214;branch=z9hG4bK-d8754z;rport
Max-Forwards: 70
Contact:
To: “account1″
From: “account1″;tag=484b4e36
Call-ID: YWI3Y2I3ODIzOWIxYWI5NDQwMzA5ZTYxMTAzOTM4Y2I.
CSeq: 1 REGISTER
Expires: 3600
Content-Length: 0
From the above we can see that:
Via: SIP/2.0/UDP 192.168.2.14:7214

SIP устройство по прежнему прослушивает порт 7214 и имеет IP адрес 192.168.2.14.

Contact:

В поле “Contact” SIP устройство меняет свой локальный IP адрес (192.168.1.14) на публичный IP адрес (78.158.143.115) и внешний порт (8676), полученные при помощи протокола STUN. Благодаря протоколу STUN, IP-АТС сможет подключится к SIP устройству, отправляя ответы на IP адрес 78.158.143.115 и 8676.

Как показано выше, протокол SIP обычно используют протокол UDP, в качестве транспортного протокола, который является протоколом без установления соединения, протокол STUN играет очень важную роль, в оказании помощи SIP устройствам, работающим за NAT.

Если вы в статье нашли ошибки или несоответствия, мы будем благодарны, если вы напишите нам о них в комментариях.


 
Powered by SEO CMS ver.: 23.1 TOP 2 (opencartadmin.com)