如果您阻止所有传入的连接,仍然如何使用互联网?


22

如果您的ISP或防火墙阻止了所有传入连接,Web服务器又如何将数据发送到浏览器?您发送请求(传出),服务器发送数据(传入)。如果您阻止所有传入,则Web服务器如何响应?

使用UDP的视频流和多人游戏又如何呢?UDP是无连接的,因此没有建立连接,那么防火墙或ISP将如何处理呢?


2
阻止所有来电/将所有来电转接到语音邮件?并不能阻止您呼唤某人。
WernerCD

Answers:


43

“传入阻止”表示传入的新连接被阻止,但允许建立的流量。因此,如果允许出站新连接,则该会话的传入一半是可以的。

防火墙通过跟踪连接状态来管理此问题(这种防火墙通常称为“有状态防火墙”)。它看到传出的TCP SYN并允许它。它看到传入的SYN / ACK,并可以验证它是否与看到的出站SYN匹配,并使其通过,依此类推。如果允许三向握手(例如,按照防火墙规则允许),它将允许该对话。并且当看到对话结束(FIN或RST)时,它将把该连接从允许的数据包列表中删除。

UDP的执行方式与此类似,尽管它使防火墙记住足够多的内容,以假装UDP具有连接或会话(而UDP没有)。


1
对于UDP,由于没有实际的连接,防火墙通常会跟踪目标UDP数据包的目标IP和端口,如果存在与源IP相同的IP和端口的传入数据包,它将假定它是一个答复并让它英寸
WhiteWinterWolf

17

@gowenfawr概述了下来。但是,我想我将添加一些有关如何执行连接跟踪的“匹配”的详细信息,因为对于初学者来说这听起来像是魔术。

每个TCP连接在每一端都有一个端口号。如大多数技术人员所知,HTTP服务器运行在端口80上。当您的浏览器连接到Web服务器时,它将要求操作系统生成一个“本地”端口号,该端口号将是随机的,例如29672,其他任何端口都不会使用来自该计算机的TCP连接(操作系统可以执行此操作,因为它知道所有活动的TCP连接)。然后,初始的TCP设置数据包将从您计算机的ip(IP_YOURS)和端口号29672发送到Web服务器的ip(IP_WEBSERVER)和端口号80。这时,有状态防火墙将说“啊哈,将来来自IP_WEBSERVER端口的数据包进入IP_YOURS端口29672的80不是新的连接,它们是对现有连接的响应,将被允许”。状态防火墙维护一个表,


3
这在大多数情况下是正确的,但是,作为少数几个要点,端口号停止在65535(它们是16位无符号数字),并且除了超时之外,设置了FIN或RST标志的数据包还可以表示TCP连接现已关闭。
reirab 2015年

@reirab哦,糟糕,端口号失败。关闭时,当然可以检查TCP标志,但是必须考虑可能的数据包丢失和关闭序列的重发非常复杂,以至于我假设大多数防火墙只是将最近使用最少的表条目改了用途,而不是保留准确跟踪。

@atsby您可以随时编辑帖子,并用更合适的端口号代替端口号?

所有这些都是很好的信息。只是想在上面评论中讨论的端口上添加一件事。它们被称为“临时端口”,其范围由特定于每个OS的内核定义。在Linux上,您可以通过“ cat / proc / sys / net / ipv4 / ip_local_port_range”获得它们-默认范围是“ 32768至61000”
Arul Selvan 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.