2011-01-05 2 views
3

Я пишу приложение P2P и хотел бы, чтобы пользователи не вручную настраивали переадресацию портов.Обход NAT: UPnP/IGD vs NAT-PMP

Я немного смущен, поскольку для настройки NAT, UPnP/IGD и NAT-PMP существует два разных протокола. Какой из них я должен использовать? Поддерживаются ли они всеми NAT? Или я должен поддерживать оба, чтобы убедиться, что по крайней мере один из них будет поддерживаться NAT?

+2

Вы должны поддерживать оба варианта. Тем не менее, у какого-то маршрутизатора нет ни одного из них. –

ответ

1

Рассмотрите возможность использования STUN вместо NAT-PMP или UPnP-IGD. Он обычно работает повсеместно и почти наверняка будет работать через широкомасштабные NAT-службы NAT NAT и NAT64.

+0

Он не работает через все широкомасштабные NAT. –

2

NAT-PMP (теперь PCP) представляет собой черновик, так что он должен быть тем, который вы реализуете. Однако для обеспечения совместимости вы должны позволить вашему приложению тихо отказать UPnP/IGD, поскольку не все устройства NAT поддерживают PCP/NAT-PMP, а многие из старых устройств поддерживают только UPnP/IGD.

0

Придерживайтесь штамповки отверстий UDP. Он работает практически на всех маршрутизаторах, за исключением случаев, когда оба клиента находятся за сетями 4G LTE (они часто имеют произвольное распределение портов) и маршрутизаторы, которые блокируют весь UDP-трафик. Если вам нужно надежно отправлять данные, вы можете использовать надежный UDP.

Смежные вопросы