我在这个页面上读到,在 TCP ACK 位过滤中,只有设置了 ACK 位的数据包才被允许进入网络,以便防火墙知道这些数据包是由该网络中的用户请求的。
好的,所以我知道为 TCP 确认数据包设置了 ACK 位。但它还有什么用呢?如果本地 Intranet 上的用户正在请求网页怎么办?是否会为包含网络用户请求的网页的 HTTP 响应设置 ACK 位?他们必须这样做,否则数据包将被防火墙丢弃。
但是 HTTP 和 TCP 在完全不同的层上工作,因此 TCP 能够为 HTTP 设置 ACK 标志是没有意义的。我的意思是,它怎么知道数据包是 HTTP 响应?但这是我能想到的唯一方法,本地网络上的用户将能够使用网络外的 Web 服务,因为否则,防火墙将允许进入网络的唯一内容是 TCP 确认数据包,这些数据包基本上对最终用户。
有人可以帮助我理解这一点吗?我很困惑。
编辑:我认为我的困惑源于对 TCP 工作原理的误解。我认为为从一台主机发送到另一台主机的每条消息维护一个单独的 TCP 会话,即 HTTP 请求的一个 TCP 会话和 HTTP 响应的另一个 TCP 会话。如果是这种情况,则不会为 HTTP 响应数据包设置 ACK 标志,它们将被丢弃。事实上,如果是这种情况,基本上没有任何有用的应用层通信将被允许进入网络。多亏了这篇文章,我现在明白为整个会话维护一个连接,包括请求和响应。