当前位置:文档之家› 最新实验8 使用Wireshark分析DNS协议

最新实验8 使用Wireshark分析DNS协议

实验八利用Wireshark分析DNS协议

一、实验目的

分析DNS协议

二、实验环境

与因特网连接的计算机,操作系统为Windows,安装有Wireshark、IE等软件。三、实验步骤

nslookup工具允许运行该工具的主机向指定的DNS服务器查询某个DNS记录。如果没有指明DNS服务器,nslookup将把查询请求发向默认的DNS服务器。其命令的一般格式是:

nslookup –option1 –option2 host-to-find dns-server

1、打开命令提示符(Command Prompt),输入nslookup命令。

图中显示三条命令,第一条命令:nslookup https://www.doczj.com/doc/926446270.html, “提出一个问题”

即:“将主机https://www.doczj.com/doc/926446270.html, 的IP地址告诉我”。屏幕上出现了两条信息:(1)“回答这一问题”DNS服务器的名字和IP地址;(2)https://www.doczj.com/doc/926446270.html, 主机名字和IP地址。

第二条命令:nslookup –type=NS https://www.doczj.com/doc/926446270.html,

在这个例子中,我们提供了选项“-type=N S”,域为https://www.doczj.com/doc/926446270.html,。执行这条命令后,屏幕上显示了DNS服务器的名字和地址。接着下面是三个MIT DNS服务器,每一个服务器是MIT校园里权威的DNS服务器。

第三条命令:nslookup www.aiit.or.kr https://www.doczj.com/doc/926446270.html,

在这个例子中,我们请求返回https://www.doczj.com/doc/926446270.html, DNS server 而不是默认的DNS服务器(https://www.doczj.com/doc/926446270.html,)。此例中,DNS 服务器https://www.doczj.com/doc/926446270.html,提供主机www.aiit.or.kr 的IP地址。

2、ipconfig

ipconfig用来显示TCP/IP 信息, 你的主机地址、DNS服务器地址,适配器等信息。如果你想看到所有关于你所在主机的信息,可在命令行键入:

ipconfig /all

ipconfig在管理主机所储存的DNS信息非常有用。

如果查看DNS缓存中的记录用命令:ipconfig /displaydns

要清空DNS缓存,用命令:ipconfig /flushdns

3、利用Wireshark捕获DNS信息

(1)利用ipconfig命令清空你的主机上的DNS缓存。

(2)启动浏览器,将浏览器的缓存清空。

(3)启动Wireshark分组俘获器,在显示过滤筛说明处输入

“ip.addr==your_IP_address”(如:ip.addr==202.202.210.104),过滤器(filter)将会删除所有目的地址和源地址都与指定IP地址不同的分组。

(4)开始Wireshark俘获。

(5)在浏览器的地址栏中输入:https://www.doczj.com/doc/926446270.html,

(6)停止分组俘获。

(7)重复上面的实验,只是将命令替换为:nslookup –type=NS https://www.doczj.com/doc/926446270.html,

(8)重复上面的实验,只是将命令替换为:

nslookup www.aiit.or.kr https://www.doczj.com/doc/926446270.html,

四、实验报告

在实验的基础上,回答以下问题:

(1)你的浏览器运行的是HTTP1.0,还是HTTP1.1?你所访问的服务器所运行的HTTP版本号是多少?

(2)你的浏览器向服务器指出它能接收何种语言版本的对象?

(3)你的计算机的IP地址是多少?服务器https://www.doczj.com/doc/926446270.html,的IP地址是多少?

(4)从服务器向你的浏览器返回的状态代码是多少?

(5)你从服务器上所获取的HTML文件的最后修改时间是多少?

(6)返回到你的浏览器的内容以供多少字节?

(7)分析服务器响应报文的内容,服务器是否明确返回了文件的内容?如何获知?

(8)服务器对第二个HTTP GET请求的响应中的HTTP状态代码是多少?服务器是否明确返回了文件的内容?请解释。

(9)与这个HTTP GET请求相对应的响应报文的状态代码和状态短语是什么?

(10)你的浏览器一共发出了多少个HTTP GET请求?这些请求被发送到的目的地的IP地址是多少?

(11)对于浏览器发出的最初的HTTP GET请求,服务器的响应是什么(状态代码和状态短语)?

(12)当浏览器发出第二个HTTP GET请求时,在HTTP GET报文中包含了哪些新的字段?

(13)DNS查询报文的目的端口号是多少?DNS查询响应报文的源端口号是多少?

//根据半径计算圆的周长和面积

#include

const float PI=3.1416; //声明常量(只读变量)PI为3.1416 float fCir_L(float); //声明自定义函数fCir_L()的原型float fCir_S(float); //声明自定义函数fCir_S()的原型//以下是main()函数

main()

{

float r,l,s; //声明3个变量

cout<<"R="; //显示字符串

cin>>r; //键盘输入

l=fCir_L(r); //计算圆的周长,赋值给变量l

s=fCir_S(r); //计算圆的面积,赋值给变量s

cout<<"l="<

cout<<"\ns="<

}

//定义计算圆的周长的函数fCir_L()

float fCir_L(float x)

{

float z=-1.0; //声明局部变量

if (x>=0.0) //如果参数大于0,则计算圆的周长z=2*PI*x;

return(z); //返回函数值

}

//定义计算圆的面积的函数fCir_S()

float fCir_S(float x)

{

float z=-1.0; //声明局部变量

if (x>=0.0) //如果参数大于0,则计算圆的面积z=PI*x*x;

return(z); //返回函数值

}

/* Program: P1-2.CPP

Written by: Hap

Date written: 02:11:10

*/

#include

void main(void)

{

double s1,s2,s3;

s1=1.5; /* 对变量s1赋值*/

cout<<"s1="<

/* 对变量s2赋值*/ s2=2.5;

cout<<"s2="<

s3= /* 对变量s3赋值*/ 3.5;

cout<<"s3="<

cout<<"s1+s2+s3="<

cout<<"------------------"<

//输出整型常量、变量和表达式

int n=100;

cout<<10;

cout<

cout<<2*n<

cout<<"------------------"<

//输出浮点型常量、变量和表达式

double pi=3.1415926,r=10.0,s=pi*r*r;

cout<

cout<

cout<

cout<<2*r*pi<

cout<<"------------------"<

//一个cout可以输出多项数据

cout<<'W'<<" "<

cout<<"This is a test."<

cout<<"pi="<

文本预览
相关文档 最新文档