文章目录
目录
前言
还记得一个月前被面试官问到NAT的时候完全茫然,面试结束复盘的时候发现自己一直在用的内网穿透APP就是基于NAT的。平时还是得多问问为什么。
在介绍NAT之前,首先需要简单介绍一下防火墙。
一、防火墙
1.1 防火墙简介
防火墙的任务是控制互联网中网络流量的流向,本质上是一种能够限制转发流量类型的路由器。(代理防火墙严格意义上不算是)
常见的防火墙主要有两种:
- 包过滤防火墙(packet-filter firewall)
- 代理防火墙(proxy firewall)
包过滤防火墙是一个互联网路由器,能够根据条件对数据包进行丢弃/传输的操作。而代理防火墙是一个服务器主机,它作为TCP和UDP传输的一个端点,通常不会在IP协议层中路由IP数据包。
二者的主要区别是所操作的协议栈的层次不同。
1.2 包过滤防火墙
过滤器选项包括:IP地址、ICMP报文类型、数据包中的端口号等。
包过滤防火墙可分为无状态的和有状态的。无状态的包过滤防火墙单独处理每一个数据包;而有状态的防火墙能够通过关联已经或者即将到达的数据包来推断数据信息。(举个例子,对于分片的IP报文,有状态的防火墙往往能够判断出其属于同一个IP数据报,但无状态的无法做到)
1.3 代理防火墙
代理防火墙的本质是运行一个或多个应用层网关的主机。
一般来说,防火墙内的客户端通常会进行特殊配制,从而能够连接到代理防火墙,而不是连接到真正提供服务的主机。所以说这种防火墙配置繁琐(必须为每个传输层服务设置一个代理,通过这个代理和新的服务器发起连接)。但也正因如此,代理防火墙是非常安全的。
我的理解中,这是一种用配置的繁琐换安全性的trade-off。
常见的代理防火墙的形式有:
- HTTP代理防火墙
也称为Web代理,只能用于HTTP和HTTPS协议。这种代理对于内网用户来说相当于Web服务器,对于被访问的外部网站来说相当于Web客户端。
此外,这种代理往往还提供其他的一些功能:
- Web缓存功能。对网页内容进行缓存,从而减少网页延迟,提高用户访问体验。(例如HTTP缓存)
- 作为内容过滤器,基于黑名单屏蔽特定用户。
- 隧道代理服务器,功能和2相反。
- SOCKS代理防火墙
相比于HTTP代理,范围更广,可以用于Web以外的其他服务。