如果您的ISP或防火墙阻止了所有传入连接,Web服务器又如何将数据发送到浏览器?您发送请求(传出),服务器发送数据(传入)。如果您阻止所有传入,则Web服务器如何响应?
使用UDP的视频流和多人游戏又如何呢?UDP是无连接的,因此没有建立连接,那么防火墙或ISP将如何处理呢?
如果您的ISP或防火墙阻止了所有传入连接,Web服务器又如何将数据发送到浏览器?您发送请求(传出),服务器发送数据(传入)。如果您阻止所有传入,则Web服务器如何响应?
使用UDP的视频流和多人游戏又如何呢?UDP是无连接的,因此没有建立连接,那么防火墙或ISP将如何处理呢?
Answers:
“传入阻止”表示传入的新连接被阻止,但允许建立的流量。因此,如果允许出站新连接,则该会话的传入一半是可以的。
防火墙通过跟踪连接状态来管理此问题(这种防火墙通常称为“有状态防火墙”)。它看到传出的TCP SYN并允许它。它看到传入的SYN / ACK,并可以验证它是否与看到的出站SYN匹配,并使其通过,依此类推。如果允许三向握手(例如,按照防火墙规则允许),它将允许该对话。并且当看到对话结束(FIN或RST)时,它将把该连接从允许的数据包列表中删除。
UDP的执行方式与此类似,尽管它使防火墙记住足够多的内容,以假装UDP具有连接或会话(而UDP没有)。
@gowenfawr概述了下来。但是,我想我将添加一些有关如何执行连接跟踪的“匹配”的详细信息,因为对于初学者来说这听起来像是魔术。
每个TCP连接在每一端都有一个端口号。如大多数技术人员所知,HTTP服务器运行在端口80上。当您的浏览器连接到Web服务器时,它将要求操作系统生成一个“本地”端口号,该端口号将是随机的,例如29672,其他任何端口都不会使用来自该计算机的TCP连接(操作系统可以执行此操作,因为它知道所有活动的TCP连接)。然后,初始的TCP设置数据包将从您计算机的ip(IP_YOURS)和端口号29672发送到Web服务器的ip(IP_WEBSERVER)和端口号80。这时,有状态防火墙将说“啊哈,将来来自IP_WEBSERVER端口的数据包进入IP_YOURS端口29672的80不是新的连接,它们是对现有连接的响应,将被允许”。状态防火墙维护一个表,