浏览器可以向Web服务器发送请求并获得响应,这很容易理解,因为每个域都解析为一个或多个公共网络IP,浏览器可以通过公共网络IP找到Web服务器。
有些客户端拥有像PPPOE这样的公共IP,因此,当我在浏览器和服务器之间建立Websocket连接时,服务器可以在拥有公共网络IP设备的设备上向浏览器发送数据,但不是每个客户端都有公共网络IP。
我的问题是服务器如何通过Websocket在局域网中找到没有公共IP的浏览器?
答案 0 :(得分:0)
魔术的一部分是Network Address Translation,由服务器和网络浏览器的计算机之间的路由器执行。
答案 1 :(得分:0)
简单的答案是server
永远不必找到client
,因为一旦浏览器向服务器发送请求并建立了TCP连接,就可以在必要时保持该连接。
TCP协议具有keepalive
概念,其中对等体经常向客户端发送探测包而没有数据期望和ACK包作为响应。这样,尽管网络不活动,连接仍然保持活动状态,并且可以在对等方不回复的情况下终止。
WebSocket协议是一种基于TCP的协议,它还定义了一个类似的概念Ping/Pong
,其中任何一个对等体都可以在建立连接后按需发送Ping探测。对等体必须尽快响应具有Pong帧的Ping帧。这会检查死对等体,在这种情况下连接将会死亡。