1、Great Firewall
它的存在会对境外涉及敏感内容的网站、IP地址、关键词、网址等进行过滤
结果就是:国内网络用户无法访问某些国外网站,国外网络用户也无法访问某些国内网站,其中有可以分成2类
- 永久性无法访问
- 暂时性无法访问
2、主要技术
- 域名劫持
- 特定IP地址封锁
- 特定IP地址端口封锁
- 无状态TCP连接重置
- 特定TLS证书阻断
- 明文HTTP协议关键字过滤阻断
- 对破网软件的反制
本文主要介绍无状态TCP连接重置
3、DNS小测试
引入:客户端如何获得Baidu, Bing, Google服务器的IP地址?
打开浏览器,输入网址http://baidu.com/,从wireshark抓包工具抓到以下数据包:
174号数据包源IP地址为172.18.237.245为本机IP地址,通过查询,发现174号和175号数据包的目的地址202.192.18.1和202.192.18.2为DNS服务器地址,结果如下:
178号数据包为本地DNS服务器发回的数据包,它告诉客户端baidu.com的IP地址为111.13.100.91,
而180号数据包则发回一个ICMP数据包表示目的地址不可达。
打开浏览器,输入网址http://bing.com/,从wireshark抓包工具抓到以下数据包:
可以发现326号数据包为DNS请求数据包,它向本地DNS服务器请求bing.com的IP地址,而327号数据包则是本地DNS服务器发回的响应数据包,它告诉客户端bing.com的IP地址为204.79.197.200。
打开浏览器,输入网址http://google.com/,从wireshark抓包工具抓到以下数据包:
可以发现195号数据包为DNS请求数据包,它向本地DNS服务器请求google.com的IP地址,而196号数据包则是本地DNS服务器发回的响应数据包,它告诉客户端google.com的IP地址为216.58.200.238。
通过以上测试,可以发现:客户端是通过发送域名给DNS服务器来获得网站服务器的IP地址的。
4、TCP连接的过程
接下来研究一下客户端实现Baidu, Bing, Google服务器的TCP连接的过程
在连接baidu.com的过程中捕获以下分组:
观察181、184、185号数据包,它们两端的端口号是分别是20564→80、80→20564、20564→80,发送的报文刚好符合TCP连接的三次握手,具体过程为:
(1)、客户端进程向服务器发送SYN报文段(SYN=1的报文段)请求建立连接;
(2)、服务器收到请求后,如果同意建立连接,就向客户端发送确认报文;
(3)、客户端接收到服务器的确认后,再次向服务器发送确认报文;
(4)、服务器接收到客户端的确认后,TCP连接建立,双方可以相互发送数据。
而连接bing.com和google.com的过程与此相同,捕获的数据包如下:
TCP三次握手对应328、332、333号数据包
TCP三次握手对应449、454、455号数据包
5、无状态TCP连接重置
什么技术导致Google不返回搜索结果?
GFW监控特定IP地址的所有数据包,若发现匹配的黑名单动作(例如 TLS加密连接的握手),其会直接在TCP连接握手的第二步即SYN-ACK之后伪装成对方向连接两端的计算机发送RST包(RESET)重置连接,使用户无法正常连接服务器。这种方法和特定IP地址端口封锁时直接丢弃数据包不一样,因为是直接切断双方连接因此封锁成本很低,故对于Google的多项(强制)加密服务例如Google文件、Google网上论坛、Google+和Google个人资料等的TLS加密连接都是采取这种方法予以封锁
6、可能发出人造RST包的IP地址及其所属ISP
发出去的数据包ttl=64,Google返回值为50
ttl=53的Reset包?
64-53=11跳左右
而跟踪google.com的结果如下:
第11跳地址为 223.119.30.130
理论上发出的人造RST包来自这或之前的节点,该节点可以监视所有出口的流量!
7 、那有可能使Google返回搜索结果吗?
^-^
END
原文地址:https://www.cnblogs.com/chuanzi/p/10424991.html