Возможно ли сквозное прохождение через NAT только для Javascript?

Я хотел знать, возможно ли реализовать сквозное приложение NAT только для Javascript. Он должен работать в браузере.

Я ищу решение, которое позволило бы P2P-соединения с сквозным доступом. Сервер тоже будет там, но только для знакомства между пирами и обмена IP-адресами и портами.

Если возможно, это только UDP (читал, что пробивать NAT намного проще в UDP) или также возможны TCP-соединения?


person kapad    schedule 21.07.2013    source источник


Ответы (2)


Ты сможешь. Я упаковал и stun-сервер, и клиент для npm (https://npmjs.org/package/stunsrv) . Я действительно не задокументировал клиентскую часть вещей, но она все еще там. Помимо этого, есть несколько других доступных только клиентских пакетов.

Редактировать: WebRTC может быть чем-то, что вам было бы интересно также посмотреть на https://github.com/webRTC.

person keyneom    schedule 21.07.2013
comment
Эй, спасибо за ответ. Есть ли какое-нибудь решение для TCP, о котором вы знаете? - person kapad; 22.07.2013
comment
Не уверен, но было бы неплохо программно выполнить трехстороннее рукопожатие, если это все, что вам нужно от TCP. - person keyneom; 22.07.2013
comment
Не просто трехстороннее рукопожатие. Я хочу использовать это для передачи файлов. Не только голос или видео, где UPD в порядке и допустима небольшая потеря пакетов. Если TCP очень сложен, то можно обменяться файлом описания до начала передачи. - person kapad; 22.07.2013

Пробивание отверстий TCP возможно, но это зависит от двух факторов: один из них — NAT на базе ОС и аппаратное обеспечение NAT. Эти двое тоже нуждаются в поддержке. Согласно следующей статье перфорация отверстий UDP поддерживает 82%, а перфорация отверстий TCP поддерживает только 64%. Технику вы тоже можете найти в этой статье. Всего наилучшего. http://www.brynosaurus.com/pub/net/p2pnat/

person Navin    schedule 27.07.2013
comment
Отличная статья. Спасибо! - person kapad; 28.07.2013