使用Wireshark软件抓取分析HTTP协议和DNS通讯的网络协议

前端之家收集整理的这篇文章主要介绍了使用Wireshark软件抓取分析HTTP协议和DNS通讯的网络协议前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

使用Wireshark软件抓取分析HTTP协议和DNS通讯的网络协议

计算机网络课程的作业,献丑了。

第一部分 抓取分析HTTP协议的网络数据


作业中使用OS X系统下的Wireshark软件,通过在浏览器中输入www.qq.com开始网络访问,从键入地址到浏览器完成渲染的过程当中Wireshark共捕获到了2958个包(此数据为设置WireShark过滤器仅显示TCP流后的数据,同时随后尽管没有进一步操作,但网络数据包的数量一直在增加,推测是因为计算机个别进程在后台访问网络以及腾讯网页中使用了异步请求等造成)

输入腾讯网之后抓取到的TCP包

1.1建立TCP连接的三次握手

根据课堂内容和查阅网络资料,了解到经典的TCP三次握手的过程大致上是如图所示的,下面分别看三次握手中的数据包

第一次:客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接

从下图中我们可以发现,在第一次请求的时候TCP协议的SYN位是置1的同时还可以看到客户端向服务器发出的TCP报文段中还包括有接收窗口的大小(Window Size value=65535),源端口号(65107),目的端口号(80),当前分组的序号0,当前的确认号0,紧急指针(此报文中为0)以及校验和0x249e等TCP报文段中规定的信息。

第二次:服务器发回确认包,标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户序号+1

从下图中我们可以发现,服务器在响应给客户端的TCP报文中确认序号为1,标志位为ACK和SYN,同时我们还发现服务器端的接受窗口的大小仅有5760.除此之外,在服务器返回给客户端的数据报中源、目的端口及地址交换了位置,校验和、请求序号、确认号等数据包内容也均存在

第三次:客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,完成TCP连接的建立

下图中源主机为本机,目的主机为服务器(针对腾讯网而言就是腾讯的服务器),目的端口80,源端口65107,确认号字段为1,可以发现SYN已经置为了0,发送窗口的大小也从第一次的65535降为了当前的8192,TCP连接建立完成。

1.2HTTP协议的报文分析

当浏览器与服务器通过三次握手建立起TCP连接过后,可以看到第65号数据包发出了一个HTTP的GET请求,具体的报文如图

通过报文可以看到当前使用的HTTP协议版本为1.1版,使用的方法是GET方法,连接的方式时持久连接,Cache-Control字段的max-age=0表示当前所请求的页面浏览器不做缓存,Accept字段表示了客户端期望接收到的文件类型,User-Agent说明了客户端使用的浏览器版本和系统相关信息。除此之外还可以看到客户端希望接收到的HTML文件语言、编码格式,以及用于身份认证和用户行为分析的Cookie字段的内容

对于这个请求,服务器给出的响应内容如图

可以看到服务器响应的状态码为200结果是OK,表明请求成功,然后可以看到服务器使用的软件版本,响应内容的类型,传输过程中的编码方式(Transfer-Encoding),内容的压缩方式(gzip),HTTP校验和,在正文部分就是HTTP文本的内容啦,浏览器通过解析这些标签语言,就可以渲染出网页了,对于网页中的其他对象,浏览器在读取到他们的URL后,又发出了一系列的请求,并根据响应生产了对应的页面。而且我们可以发现,浏览器使用的是带流水线的持久化连接请求方式。

发现几只通过条件GET直接从本地缓存中渲染的内容

1.3 IP协议的报文分析

这里有一个问题,发现腾讯貌似使用了负载均衡的手段,每一次访问腾讯网的ip地址都不一样..........对于IP协议,可以发现协议的报文如图

此上图的报文中可以看到,IP协议使用的版本是4,剩余的跳数是64,上层协议是TCP,偏移量是0,标志是Don't Fragment(不要分片),除此之外还有源、目的IP,首部长度等信息。

1.4 链路层的报文

由于在宿舍使用的是小米路由器进行路由,所以很明显链路层的下一跳就是小米路由器了(MAC地址为f0:b4:29:6a:bc:a4),源MAC地址是本机网卡的地址,使用的IP版本为IPv4

第二部分 抓取分析DNS协议的网络数据


抓取分析DNS协议时我使用了白宫网站的域名(www.whitehouse.gov)进行测试

2.1 请求白宫域名的DNS记录

可以看到,这个DNS请求被发送到了我自己的路由器网关(192.168.31.1),在DNS查询报文中可以看到这是一个标准的查询,问题数量只用1个,然后查询语句中想要查找的是他的A记录,也就是Host Address

来看一看DNS返回的响应:DNS查询返回的了一堆记录,在响应的头部说明了标志位No error问题数为1,回答数为4,权威数服务器的数量为9,附加资源记录的数量为8,从回答中可以看到查询到了3和别名记录和一个Host Address记录,客户端软件直接访问23.15.242.127就可以访问白宫的网站了

2. DNS服务的UDP报文分析

在DNS查询请求中UDP报文如图,可以知道UDP服务使用的源端口是9195,目的端口是53,数据字段的长度是44,校验和是0xc011

在响应中UDP报文如图,可以发现源和目的端口交换了位置,由于返回的记录数较多,所以这个UDP的报文正文有512字节,校验和是0x63d6

对比可以发现,TCP在确定进程时需要源端口号、目的端口号、源IP地址和目的IP地址四个条件,而UDP在确定进程通讯时仅需要源端口号和目的端口号

3. DNS服务的IP报文和链路层报文分析

在DNS服务中,IP报文的内容和HTTP服务中的差不多,却别在于报文中的上层协议变为了UDP协议,而由于链路层实现相邻主机之间的通信,在宿舍的网络环境中,我的电脑所有对外网的请求都需要经过路由器,故目的MAC地址始终会是路由器地址,与HTTP中相同。

第三部分 总结

通过Wireshark抓包,很清晰的看到了TCP连接三次握手的过程、UDP无连接的服务形式以及HTTP、DNS这两个应用层协议在实际网络过程中PDU的变化。由于自己对Wireshark还不太熟悉,短时间内软件能够捕获的数据包太多又来自太多不同的进程,比较遗憾的是并没有能够发现TCP连接断开时所使用的四次握手的过程。总的来说,通过这次作业对应用层、运输层、网络层、链路层的协议都有了一个更加深刻的印象,也算有所收获。

原文链接:https://www.f2er.com/note/422078.html

猜你在找的程序笔记相关文章