当一台客户机10.0.0.2需要访问www.abc.com
首先需要发请DNS解析请求,得到结果比如是8.8.8.8
接着,本机对8.8.8.8:80发出一个SYN请求,源端口比如为1025
10.0.0.2:1025 to 8.8.8.8:80 SYN
这个请求进入网关10.0.0.1之后这个数据包的目标地址被重定向为10.0.0.1:3128
10.0.0.2:1025 to 10.0.0.1:3128 SYN
Squid应答
10.0.0.1:3128 to 10.0.0.2:1025 SYN+ACK
既然前面有重定向,回来就应该对照NAT表翻译回来,客户机收到的是
8.8.8.8:80 to 10.0.0.2:1025 SYN+ACK
客户机应答
10.0.0.2:1025 to 8.8.8.8:80 ACK
重定向成
10.0.0.2:1025 to 10.0.0.1:3128 ACK
到此三次握手完成,但此时Squid还不清楚客户机要访问哪个网站呢
客户机该发送HTTP请求了
10.0.0.2:1025 to 8.8.8.8:80 HTTP GET......www.abc.com......(我在iris里看到有这些内容)
重定向成
10.0.0.2:1025 to 10.0.0.1:3128 HTTP GET......www.abc.com......
这时Squid才知道客户机要访问ABC
于是解析www.abc.com,得到结果8.8.8.8
Squid服务器与ABC建立三次握手,略,完成后发送HTTP GET请求
得到结果后返回给客户机
10.0.0.1:3128 to 10.0.0.2:1025
对照NAT表项,转译
8.8.8.8:80 to 10.0.0.2:1025