http连接发起前需要查询dns
1.拿着域名去domain name server查询域名的ip
2. 你的设备带着域名向ip:80 发起连接
3. ip服务器会根据情况返回一个响应:例如http提升为https,请你向ip:443发起连接,接下来是Https握手流程。
第三步这里服务器不能瞎响应啊,例如你拿着baidu.com的域名连到facebook.com的服务器,fb的服务器程序(例如nginx, apache)遇到fb的域名才会返回正确的响应,其余域名一律返回错误响应。
这时DNS污染就是在第一步就把错误的服务器ip返回给你(多数会返回facebook的ip,前几年fb说被很多cn ip攻击
)
这时候可以修改系统的hosts,其实就是强制将一个域名绑定到一个指定的ip,省略了dns查询,就绕过了DNS污染的问题
那么问题来了,既然连你都可以知道一个能用的IP,那么以墙那边资源就不能吗?墙这时候就祭出ip黑洞大法了,直接把发往该ip(墙肯定有维护一个ip黑名单了)的数据包丢弃了