我试图弄清楚服务器上的防火墙应用程序在软件堆栈中的位置,以及在网络过程的哪个阶段防火墙“启动”,从服务器上试图通过同一服务器上的软件防火墙进行通信的应用程序的角度来看。
没有防火墙:
program asks OS for port; then poof:
program --> port --> internet
防火墙安装在哪儿?
program asks OS for port; then poof:
program --> firewall(block/pass) --> port --> internet
或者
program asks OS for port; then poof:
program --> port --> firewall(block/pass) --> internet
答案1
简而言之,您机器上的本地防火墙充当通过操作系统网络堆栈的实际流量的守门人。
因此,情况如下:
软件 -> 网络堆栈(输入/输出) -> 防火墙 -> 网络
确实如此不是阻止端口绑定,因为内核会处理此问题。但是,如果配置为阻止端口上的流量,它将阻止端口上的流量。
答案2
(就所有实际目的而言)您的要求涉及两个不同的层面。
请求端口绑定的应用程序与防火墙运行的级别不同。应用程序将直接与 TCP/IP 堆栈通信以获取绑定。无论防火墙是位于应用程序主机本地还是远程系统,此过程都完全独立于任何防火墙。
一旦绑定被授予,防火墙就会拦截配置为关注的端口上的数据包。然后,一旦数据包开始流经这些端口,防火墙就可以开始工作并检查流量。这时防火墙就会允许或阻止。