当我们访问Google首页显示该页无法显示时,发生了什么
首先我们在浏览器搜索栏输入
我们的主机就会发出一个ARP请求报文,一个广播数据包,向该网段所有主机发出一个信息,想知道可以带我们接入互联网的网关地址在哪里,网关看到ip地址是自己的,给出ARP回复
随之我们应用层的DNS开始工作,向我们配置的DNS服务器发出一个DNS查询数据包,而DNS默认服务器默认是在网关以外,即我们必须将网关地址配置成功我们才可能正确接收到DNS响应,以获得谷歌域名对应的IP地址,以建立两台主机之间的连接.正常人情况下,我们的主机向已经在我们主机配置好的网络配置里面知道默认DNS服务器,给它们发出DNS请求,并且是递归查询,即若是没有,则代替客户端向上层服务器发出DNS请求,最后我们以一个DNS响应数据包获得相关域名的IP地址.
注意:
1.如果我们本地hosts文件里面有相关的域名映射,我们并不会发起DNS解析
2.如果浏览器DNS缓存里面有相关的信息,我们也不会发起DNS解析
我们知道了谷歌ip地址之后,我们就会建立TCP三次握手连接然后发出HTTP请求,最后以HTTP回复和TCP四次握手结束这个连接.
出错原因:
如果我们地网关地址配置错误我们的DNS请求报文根本无法通过路由器到达Internet,即我们以一系列的DNS请求,结束会话,传递给我们网页的是,网页无法访问.
重定向出错:
输入之后我们的主机直接发送了ARP请求:对应的是who has 这个ip地址,得到ARP响应:这个ip地址的Mac地址.
请求的并不是网关地址,接下来的也不是向外部服务器发起的DNS请求数据包,而是TCP的SYN段,得到的是对应内网地址发回的RST,ACK数据包,是结束连接的数据包.
说明我们hosts文件里面有相应的地址映射,导致我们认为Google在本地网段,得到了ARP响应之后我们尝试向它的80端口发起TCP连接,由于该系统没有配置成Web服务器,因此它不能接受这个连接请求,从而回应了RST数据包.接着我们的主机发出TCP spurious retransmission,TCP虚假重传,接到RST响应.
从以上分析我们可以知道,重定向导致我们访问网页的时候可以定位到其他指定的主机,指定的网页,通过Wireshark抓包分析我们可以知道,缺少了关键的DNS请求和响应.
总结一下,如果我们主机的ARP缓存表里面有相应的网关路由器的Mac-IP缓存,则流量中可以缺少ARP请求和响应.
如果没有DNS请求和响应,很可能是我们的DNS缓存或者hosts文件里面存在IP-域名映射.
我们通过分析数据包可以知道是服务器配置错误,还是我们的主机配置错误,也可以知道是否DNS服务器出错,还或者是路由器出错.