当客户端程序要通过一个主机名称来访问网络中的一台主机时,它首先要得到这个主机名称所对应的IP地址,因为IP数据报中允许放置的是目地主机的IP地址,而不是主机名称。可以从本机的hosts文件中得到主机名称所对应的IP地址,但如果hosts文件不能解析该主机名称时,只能通过向客户机所设定DNS服务器进行查询了。
DNs共有的种查询方法,分别是递归查询和迭代查询。递归查询即由该计算机指定的DNS服务器代表客户端向其他DNs服务器进行查询,以便完全解析该域名,并将结果返回至客户端。选代查询即由该计算指定的DNs服务器向客户端返问一个可以解析该域名的其他DNs服务器地址,客户端再继续向其他DNs服务器进行查询。下面分别对这两种解析方法进行详细介绍。
当局部DNs服务器自己不能回答客户机的DNS查询请求时,那么该DNS服务器就需要向其他DNs服务器进行查询。此时有递归查询和迭代查询两种查询方式。如图1所示的是递归变询方式。由局部DNs服务器自己负责向其他DNs服务器进行查询,一般是先向该域的根域服务器进行查询,再由根域名服务器一级级向下查询。最后,将得到的查询结果返回结局部DNs服务器,再由局部DNs服务器返回给客户端。当局部DNs服务器自己不能回答客户机的DNs查询请求时,也可以通过迭代查询的方式进行域名解析,如图2所示。局部DNs服务器不是自己向其他DNs服务器进行查询,而是把能解析该域名的其他DNs服务器的IP地址返回给客户端DNS程序,客户端DNs程序再继续向这些DNs服务器发出查询请求,直到得到查询结果为止。
想查看HTTP请求和应答报文,可以先了解一下TCP和HTTP协议:HTTP是第七层也就是应用层协议,它是建立在TCP协议之上的,因此,抓包分析的话,HTTP交互都是从TCP三次握手开始的。
以一次简单的HTTP交互为例说明:
客户端-->syn-->服务器 (TCP层交互)
服务器-->syn ack-->客户端 (TCP层交互)
客户端-->ack-->服务器 (TCP层交互)
TCP三次握手建立连接后,
4. 客户端发送GET/POST请求数据 (HTTP层交互)
5. 服务器收到GET/POST请求,回复ack (TCP层交互)
6. 服务器根据请求回复相应的数据 (HTTP层交互)
7. 客户端收到服务器数据,回复ack (TCP层交互)
在完成HTTP数据交互后,TCP四次分手断开连接:
8. 客户端-->fin ack-->服务器
9. 服务器-->ack-->客户端
10. 服务器-->fin ack-->客户端
11. 客户端-->ack-->服务器
这样,一次简单的HTTP交互就完成了。如果要查看的话,windows下可用wireshark等抓包工具,linux下用tcpdump就行。wireshark和tcpdump都可以指定网卡和设置相关规则,过滤掉不想关的报文。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)