webrtc中的SDP如何了解候选人';s ip?

webrtc中的SDP如何了解候选人';s ip?,webrtc,sdp,Webrtc,Sdp,属性提供候选对象的连接地址。看起来是这样的: a=candidate:4022866446 1 udp 2113937151 192.168.0.197 36768 typ host 我想知道sdp是如何收集我的本地ip信息的 如果有任何特定的webrtc代码可供查看,这将非常有帮助。而且,如果可以查看本地IP,sdp可以知道我的默认网关吗?它被称为“冰收集”,并且是在浏览器内部完成的 浏览器不知道您的网关,但如果您使用STUN服务器,它将知道您的公共IP 无论何时创建对等连接对象,它都会收集

属性提供候选对象的连接地址。看起来是这样的:

a=candidate:4022866446 1 udp 2113937151 192.168.0.197 36768 typ host
我想知道sdp是如何收集我的本地ip信息的

如果有任何特定的webrtc代码可供查看,这将非常有帮助。而且,如果可以查看本地IP,sdp可以知道我的默认网关吗?

它被称为“冰收集”,并且是在浏览器内部完成的


浏览器不知道您的网关,但如果您使用STUN服务器,它将知道您的公共IP

无论何时创建
对等连接
对象,它都会收集所有可能的ice候选对象(远程对等方可以通过其与您联系的地址),您必须使用事件处理程序收集这些候选对象,并通过信令服务器将其传递给远程对等方


其中一些候选人会对本地生成的sdp进行反思,他们不是sdp的强制性部分,sdp的主要目的是描述您共享的mediasteam

WebRTC为您提供了一些API。你看不到下面发生了什么。您调用特定的API,SDK在内部完成其工作,在本例中,它收集您的ip信息

有3种候选主机、服务器自反(公共地址)和中继地址

候选主机是您的接口地址。接口地址通过一些系统API调用收集,并且为每个接口创建并绑定一个套接字以获取端口

由于WebRTC在内部使用ICE、STUN和TURN协议,服务器自反和中继候选收集有特定的规则要遵循

要在内部收集服务器自反候选对象(NAT的公共IP:端口),将向STUN服务器发送一条STUN消息,响应消息包含映射的/XOR映射地址。这是收集服务器自反地址的方式

要收集中继候选者,将向TURN服务器发送TURN allocate请求,响应消息包含中继地址。TURN消息响应还包含服务器自反地址。所以,若你们有转机服务器,那个么你们不需要眩晕服务器

编辑:

我认为没有WebRTC API可以帮助您实现这一点

您不需要WebRTC来查找默认网关。您可以通过编程自己找到答案。有些系统调用将为设备提供路由表条目。或者在某些平台中,您需要读取特定的配置文件才能获取这些条目。您可以解析这些条目以找到默认网关。有关示例,请参见以下问题


好的。我想知道候选人的IP是如何收集的。我提到了SDP,因为我们只有SDP向我们显示它。PeerConnection对象如何了解它?我想通过浏览器收集我的IP信息。所以,了解浏览器通常是如何收集它们的就好了。onicecandidate事件处理程序可以为我们提供哪些IP信息?@Anirban如Alex所说,候选对象是通过浏览器收集的,您无法控制,您可以使用
onicecandidate
event收集,您可以轻松找到免费的stun服务器,只需在创建新PeerConnection时将其添加到配置中,然后,收集到的一些ice候选者将是srflx类型,这些是从STUN获得的,基本上是您的外部ipAlso,它可以推断您可能的网关地址,因为99%的网络将网关放在x.x.x.1或其他一些“可能”和众所周知的地址。此外,还可以(不使用WebRTC)推断出您的网络上正在使用哪些地址,尽管这不能告诉您是否是网关(尽管根据上文,这是可以猜测的,并且您可以使用某些类型的IMG/etc请求来检查该猜测,至少在家庭网络中)我们不应该猜测接口信息。你能描述一下这些要求吗?最好确认一下这个猜测。网关地址可以通过这些API调用实现吗?虽然Alex说这是不可能的,但我在想,是否有人试图找出API调用如何产生接口地址。我需要WebRTC,因为我试图从浏览器中找到默认网关。WebRTC已用于从浏览器中查找和访问IP。您提供的第二个链接(通过C的默认网关)看起来很有希望,尽管在接受的答案中指定的链接已经失效。而且,正如您所建议的,我在想,如果C可以找到IP信息,并且可以使用类似WebRTC的东西从浏览器中编译,那么就不需要WebRTC了。