2014-11-10 2 views
0

У меня есть UDP-сервер, работающий на моей частной сети. У меня есть устройство, которое находится за пределами NAT, который отправляет UDP-пакеты на мой сервер через общедоступный IP-адрес. Я могу получить UDP-пакеты, проанализировать их, и я могу просмотреть загрузочную нагрузку, src и dest-порт. Теперь мне нужно отправить сообщение ACK на это устройство, чтобы я захватил номера ip и портов и отправил ему пакет UDP. Но я не смог просмотреть любые UDP-пакеты в этом устройстве.Как отправить пакет UDP через открытый IP через NAT?

Мой вопрос в том, что мое устройство находится за пределами NAT. IP-адрес и номер порта, который я получаю, это NAT или фактическое устройство?

Как отправить UDP-пакет на это устройство через NAT?

+0

ИМХО, вопрос не по теме здесь. Это лучше подходит для http://networkengineering.stackexchange.com/ –

+0

http://en.wikipedia.org/wiki/UDP_hole_punching – deviantfan

ответ

1

Мой вопрос в том, что мое устройство находится за пределами NAT. IP-адрес и номер порта, который я получаю, это NAT или фактическое устройство?

IP-адрес и порт, которые вы идентифицируете из пакета, - это те, которые NAT создал сопоставление для клиента. Говоря простыми словами, это IP и порт NAT, к которым подключено устройство.

Как отправить UDP-пакет на это устройство через NAT?

Вам необходимо ответить на IP-адрес и порт, обнаруженные сервером, из полученного им пакета. Более четко вам нужно реализовать UDP Holepunching.

Я думаю, вы должны сначала понять сетевые проблемы, связанные с подключением к устройствам, работающим под NAT. Различные RFC s доступны для NAT Traversal и UDP Перфорация.

Вот некоторые источники:

http://en.wikipedia.org/wiki/Network_address_translation

http://en.wikipedia.org/wiki/UDP_hole_punching

http://tools.ietf.org/html/rfc4787

https://tools.ietf.org/html/rfc5128