为什么推送通知可以在防火墙级别阻止传入连接的情况下正常工作?

为什么推送通知可以在防火墙级别阻止传入连接的情况下正常工作?

本周我一直在设置我的新家庭网络,有一个问题让我思考——我似乎找不到明确的答案。尽管默认情况下阻止所有入站连接(除了我家庭服务器上的特定端口),无论是 IPv4 还是 IPv6 上的设备,推送通知仍然有效。我默认允许所有出站流量(我意识到这可能需要微调)。我相信我的 IPv4 网络确实有 UPnP,但我不确定我的 IPv6 网络会有(我是不是太天真了,认为它没有必要?)。

从本质上讲,如果我没记错的话,推送通知属于传入流量。从技术角度来看,它们为什么还能正常工作?设备是否拥有持续的出站连接,该连接经常检查通知,或者可能是 UPnP 允许入站连接?

需要明确的是,我并不是想阻止推送通知,我只是想知道为什么它们不受入站流量阻止的影响。

答案1

手机已与“云消息”服务建立了传出连接,并偶尔通过该服务接收数据。(这与 IRC、XMPP 或 AIM 等旧 IM/聊天应用程序的工作方式非常相似 - 它们只是与服务器建立了持久的 TCP 连接。我认为 Google 的 FCM 甚至可能使用相同的 XMPP 协议。)

您的防火墙(和 NAT 网关)会跟踪连接状态,并自动允许看似与现有活动连接关联的传入流量(基于 TCP 端口对和序列号)。这对于建立该连接以及通过该连接接收响应都是必要的。

请注意,手机不需要每秒都请求新数据 - 它可以随时接收数据;TCP 连接是自由格式的,不受请求/响应格式的约束。只要 TCP 连接未关闭,服务器就可以随时通过该连接发送数据。

(虽然有时这是不可避免的。在理想情况下,空闲的 TCP 连接应该能够在活动爆发之间持续数小时甚至数天(只要您仍然在同一个网络上并且您的地址没有改变)。但由于许多家用路由器的状态超时时间相当短,手机确实会偶尔被唤醒并通过该连接发送“保持活动”数据包,以延长防火墙的状态到期计时器。)

UPnP IGD 的“端口转发”机制与 IPv6 领域无关,但是,家庭 IPv6 网络通常仍位于防火墙后面,因此更新后的 IGD2 协议确实也有调用来公开特定端口。

相关内容