来源:http://www.lovemaple.info/blog/2011/07/solve-problems-by-making-connections/
解决问题的经典方法有很多种,比如启发式,自顶向下式,自底向上式等,但是他们都有一个通病,那就是他们容易让思考者的思维局限在这个问题上,以致于”Failing to see the big picture“,下面将介绍一种比较适合学习阶段使用的方法,那就是通过联想找到完整知识点之间的关系,然后解决原始的问题。下面我们用一个简单的例子来说明:如何判断一个网站是否被gfw了?首先是联想,我们先撇开问题不看,想想从浏览器输入域名到浏览器显示网页有的过程是怎样的:
- 根据网站域名在DNS服务器中查询域名对应的IP
- 连接到ip对应的主机
- 获取信息现实网页内容
所以,如果你是方XX,zf要你墙调xx网站你该怎么办呢?从上面的过程可知,我们可以在3个地方做手脚:
- DNS污染,让DNS服务器里面的域名指向错误的ip地址
- ip封锁,让他人无法连接到那个ip
- 让所有浏览器发布商自动添加网站黑名单,让他们的浏览器默认不访问这些网站,但是这个显然不可行。
反过来看,如果是我们,该如何判断一个网站是否gfwed了呢?对于我们来说,过程如下:
- 操作系统的网络服务是否正常,是否已经连接到互联网(ifconfig & ping 127.0.0.1)
- 你想上的网页的域名能否正常解析(nslookup facebook.com)
- 解析出的ip能否连接上(ping xxx.xxx.xxx.xxx)
- 浏览器是否有设置问题
如果我们要翻gfw,那么也可以根据上面的过程采取策略
- 使用open dns,如google和norton提供的,但是目前来说基本被污染了,已无效
- 修改hosts文件(大部分操作系统都提供了这种IP的别名机制),让域名指向正确的ip,但是现在ip基本被封了,不过,由于gfw for ipv6还不够完善,所以将域名解析到ipv6的主机上时还是可以连接的。
- 这个方法有点特殊,超出了先前的思路了:将电脑连接到未被gfw的国外主机上,然后让国外的主机获取了你需要的网页后发送给你,这里就衍生出了各种协议,比如ssh,http(s)_proxy,vpn,GAE应用等,当然里面很多原先就不是用于翻gfw的。。。
上面我们从3个角度(五毛,普通用户,翻墙者)按照思路分析了各自的解决问题的方法,这里我们开始着手的不是那一个问题,而是力求了解含有问题的完整知识的过程是怎样的,了解知识点之间的联系,一次学习后可以解决所有与之相关的内容。
PS:mtr命令也很强力,你还可以思考下为什么需要域名,为什么用ip的方式唯一的表示不同的电脑。
思考题:windows下有自动播放机制,请先写出自动播放在操作系统中执行的流程,然后根据流程的思路,分析用户,反病毒专家,病毒制作者分别应该采取什么样的策略。
不错的链接:
本文由自动聚合程序取自网络,内容和观点不代表数字时代立场