我是 TCP/IP 新手,正在努力学习基础知识。嗯,我真的很想知道防火墙的入站规则和出站规则以及源地址端口、目标地址端口的概念。
例如,我正在调查端口 80。我知道 Http 使用端口 80。但是当我尝试监听流量时,我发现我的浏览器不使用端口 80。从图中可以看出,只使用了目标端口 80,“目标”应该是托管网页的服务器。而且源端口上没有使用端口 80,“源”应该是我的计算机。
我的浏览器使用其他一些端口作为源,并转到服务器端口 80。由此,我了解到我的计算机的端口 80 不用于 Http,只有托管网页的服务器计算机才使用端口 80,但如果我从出站规则关闭计算机的端口 80,互联网将无法工作。但正如我之前从图片中了解到的那样,我的计算机上没有使用端口 80。
真的很困惑。有人能帮我解释一下吗?
答案1
好的,让我们深入了解 IPv4 的细节。每个 IP 数据包都有一个源 IP 地址和端口以及一个目标 IP 地址和端口。IP 地址是整个计算机的地址,因此 IP 地址足以将数据包从计算机 A 传送到计算机 B。如果一台计算机上运行两项服务(如电子邮件和 Web 服务器),则 IP 数据包需要到达正确的服务。正确服务的选择是基于端口进行的。
如果客户端想要连接到服务器(如 Web 服务器或邮件服务器),则客户端需要知道服务器的 IP 地址。在 Web 浏览器中,您输入服务器的 DNS 名称或 IP 地址。在邮件客户端中,您还需要输入邮件服务器的名称。因此,当客户端想要连接到服务器时,唯一缺少的就是端口。为了方便起见,有标准定义哪个端口用于/保留用于哪个服务。例如,对于 http,端口 80 是保留的。Web 服务器只监听端口 80,而忽略任何其他端口。
如果您愿意,您可以配置一个 Web 服务器来监听您想要的任何端口,例如,也可以是端口 12345。但这样客户端就需要输入,http://ip:12345/
以便 Web 浏览器知道在哪个端口上联系 Web 服务器。只需给出http://ip/
即可http://ip:80/
。
因此,正如您所看到的,服务器正在一个明确定义的端口上工作,它正在接收发送到目标=服务器 IP:服务器端口的数据包,并发送源=服务器 IP:服务器端口的数据包。在客户端,操作系统为每个新连接打开一个新套接字,并为该套接字分配一个唯一的(尚未使用的)端口。使用哪个端口并不重要。客户端是发起连接的一方,他将源=客户端 IP:客户端端口的数据包发送到服务器。服务器可以查看数据包的来源,现在知道谁在连接他,以及他应该将答案发回哪里。
每个四元组 server-ip:server-port:client-ip:client-port 唯一地标识一个连接。
客户端将连接视为传出,服务器将其视为传入。防火墙可以有出站规则(发送数据包),也可以有入站规则(接收数据包)。如果您想阻止来自/到您的计算机的 http 连接,您唯一知道的就是服务器正在使用的端口。因此,当您想阻止计算机上的 Web 浏览器时,您必须为目标 = 端口 80 定义拒绝出站防火墙规则。如果您想阻止其他计算机以使其无法连接您在计算机上运行的 Web 服务器,那么您必须为目标 = 端口 80 定义拒绝入站防火墙规则。
还有一些你没有要求的东西:
- 并非每个服务都有指定/保留的 IP 端口。
- 还有针对特殊服务发现程序的协议。
- 端口范围(16 位)分为两部分。端口号 1-1024 为管理/系统进程保留,而更高的端口号可供任何人使用。
答案2
您正在关闭到端口 80 的出站连接,您必须记住出站连接将连接到 Google、StackOverflow 和其他网站/其他服务器。
您的浏览器通过端口 80 与其他服务器建立连接,如果您阻止该连接,则会阻止浏览器建立该连接。
假设某人通过浏览器连接到您的 IP,这将被归类为端口 80(对于 https 则为 443)TCP 上的传入流量,如果您阻止该端口的传入流量,那么他们将无法连接到该端口。
假设您通过浏览器连接到 IP 或 DNS 记录,该记录将被归类为端口 80/443 TCP 上的传出流量,阻止该传出端口将导致无法与该服务器建立连接。
答案3
端口解释
2 个用于 Web 服务器的常用端口:80 和 443(用于安全的 HTTPS 连接)。
端口 0 - 1024 是“保留”端口,用于常用功能,其中 80 和 443 用于 HTTP 和 HTTPS。这维基百科条目显示所有这些端口的列表,以及这些端口的“通常”用途。您可以覆盖这些端口以供自己使用,但通常不建议这样做。注意:wiki 一直到 65536,但保留端口(仅从 0 到 1024)
如果您将防火墙的 OUTBOUND 规则设置为 BLOCK 端口 80,则任何到端口 80 的传出连接都将被阻止,因此任何 HTTP 请求都将被阻止。端口 80 用于传出。您阻止了它。但是,如果您正在检查安全站点(使用 HTTPS 的站点),它仍将有效,除非您也阻止了 OUTGOING 端口 443。
浏览器解释
您的浏览器不是 Web 服务器,因此您的浏览器没有打开 80 端口供其他人连接。如果您的计算机上打开了 80 端口,您可能需要检查您是否正在运行 Web 服务器。如果您没有故意运行 Web 服务器,但 80 端口已打开,最好检查您的 PC 是否存在间谍软件/病毒/广告软件。
您的浏览器之所以有这些看似随机的端口号,是因为操作系统需要一种方法来识别每个不同的传出连接。因此,操作系统会为您电脑上的软件进行的每个传出连接分配一个大于 1024 的随机端口号(或某个任意数字,通常大于 10000)。分配端口的原因是为了识别 Web 服务器或您正在连接的任何其他服务器返回的传入数据。操作系统需要知道将数据返回到哪里,是发送到您的 Chrome 浏览器,还是发送到其他需要互联网访问的软件。
一旦端口号达到 65536,它就会简单地回到 1025(或者可能是操作系统设置的某个随机任意数字)并再次达到最高值。
我希望这能帮你澄清一切。