Подтвердить что ты не робот

Что такое ICE Candidates и как между ними выбирается одноранговое соединение?

Недавно я написал простое приложение для чата, но на самом деле я не понял фона кандидатов ICE.

Когда партнер создает соединение, они получают ICE-кандидаты, и они обменивают их и устанавливают они, наконец, к peerconnection.

Итак, мой вопрос: откуда берутся кандидаты ICE и как они используются, и все они действительно используются?

Я заметил, что у моего коллеги меньше кандидатов, когда он выполняет заявку на своей машине, что может быть причиной разного количества кандидатов?

4b9b3361

Ответ 1

Ответ от @Ichigo правильный, но он немного больше. Каждый ICE содержит "a node" вашей сети, пока он не достигнет наружу. Этим вы отправляете эти ICE другим партнерам, чтобы они знали, через какие точки подключения они могут дойти до вас. Увидите это как большое здание: один находится в здании и должен сказать другому (кто не знаком), как пройти через него. То же самое, если у меня много сетевых устройств, входящее соединение каким-то образом должно найти правильный путь к моему компьютеру. Предоставляя все узлы, соединение RTC находит самый короткий маршрут. Поэтому, когда вы подключаетесь к компьютеру рядом с вами, который подключен к одному маршрутизатору/коммутатору/независимо, он использует все ICE и определяет кратчайший, и это прямо через эту точку. То, что ваш колледж получил меньше кандидатов ICE, связан с количеством устройств, которые он должен пройти. Обратите внимание, что каждый сетевой адаптер внутри вашего компьютера, у которого есть IP-адрес (у меня есть переключатель vEthernet от hyper-v), он также создает для него ICE.

Ответ 2

ICE означает Интерактивное установление связи, его методы, используемые в NAT (транслятор сетевых адресов) для establishing communication for VOIP, peer-peer, instant-messaging, and other kind of interactive media.

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

Этот формат выглядит следующим образом

a = кандидат: 1 1 UDP 2130706431 192.168.1.102 1816 тип хост

здесь UDP указывает протокол, который будет использоваться, typ host указывает, какой тип ледяных кандидатов он имеет, хост означает, что кандидаты генерируются в брандмауэре. Если вы используете wireshark для отслеживания трафика, то вы можете видеть, что порты, используемые для передачи данных, такие же, как у тех, которые присутствуют у ледяных кандидатов.

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

Он может содержать больше информации в зависимости от используемого вами браузера. Много раз я видел 8-12 ледяных кандидатов, созданных браузером.