http及https的 抓包分析

**

HTTP及HTTPS实验

**
1、访问http://wwww.qq.com和https://www.sangfor.com.cn并抓包,分析从PC访问到结束访问网站的全数据流过程
2、分析DNS解析过程及请求回应报文结构,掌握DNS报文结构特征和DNS A记录
3、分析PC和网站建立连接和断开连接的过程(TCP三次握手、四次挥手、RST包抓包)
4、分析HTTP和HTTPS请求报文和响应报文,分析HTTP报文常见字段
HTTP实验:
一:首先我们打开一个新的浏览器输入 http://www.qq.com 然后在后台开启wireshark的抓包功能,这里我选择WLAN(我连接的是 WiFi)。
在这里插入图片描述
http及https的 抓包分析_第1张图片
通过cmd窗口下的ipconfig查看电脑本地IP地址为192.168.0.14
http及https的 抓包分析_第2张图片
http及https的 抓包分析_第3张图片
这时我们知道了自己主机的IP及目标IP,通过浏览器访问,后台运行的抓包工具抓取流量,通过wireshark软件目的IP筛选ip.src == 61.151.166.146 or ip.dst == 61.151.166.146到如图所示的数据包
**

TCP的三次握手:

**
http及https的 抓包分析_第4张图片
本机向服务器发送的请求,服务器返回的包:
**

http的请求报文

**
http及https的 抓包分析_第5张图片
**

http的响应报文

**
http及https的 抓包分析_第6张图片
**

TCP报文

**http及https的 抓包分析_第7张图片

**

下面三种状态行在响应报文中常见:

**
HTTP/1.1 202 Accepted {接受}
HTTP/1.1 400 Bad Request {错误的请求}
HTTP/1.1 404 Not Found {找不到}

**

http访问过程

**
1、客户端与服务端建立连接,TCP/IP 三次握手
2、客户端发送请求数据
3、服务端接受并解析请求数据,作出响应
4、返回响应数据
5、断开连接 TCP/IP 四次挥手

**

一、RST介绍

**
RST标示复位、用来异常的关闭连接。

  1. 发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓冲区中的包,发送RST。
  2. 而接收端收到RST包后,也不必发送ACK包来确认。
    **

二、什么时候发送RST包

**

  1. 建立连接的SYN到达某端口,但是该端口上没有正在 监听的服务。
  2. TCP收到了一个根本不存在的连接上的分节。
  3. 请求超时。 使用setsockopt的SO_RCVTIMEO选项设置recv的超时时间。接收数据超时时,会发送RST包。

HTTPS实验
1.我们打开一个新的浏览器输入 https://www.sangfor.com.cn 然后在后台开启wireshark的抓包功能,首先,浏览器和服务器三握手,建立连接。
http及https的 抓包分析_第8张图片
4. https的发包过程:浏览器先发送client hello:
客户端给服务器发送一个随机值random1,和加密(暗号)套件。如图所示
http及https的 抓包分析_第9张图片
5. 服务器给浏览器(客户端)发送server hello
同时我们从数据包中发现服务器也给客户端发送了一个随机值random2和证书。
http及https的 抓包分析_第10张图片
四次挥手:
http及https的 抓包分析_第11张图片

RST数据包

http及https的 抓包分析_第12张图片

**

DNS解析过程:

**
当你在知浏览器中输入一个网址的时候,系统首先检查本地缓存中有没有相关的记录如果有则直接转道换为IP地址进行访回问,如果没有则连接到你ISP的主DNS服务器进行域名解析,如果还没有则向更上一级的DNS服务器寻找只到找到答为止。

我们在浏览器访问www.baidu.com这个域名,dns怎么查询到这台主机那?DNS解析有大致几个过程,如下:

  1. 浏览器先检查自身缓存中有没有被解析过的这个域名对应的ip地址,如果有,解析结束。同时域名被缓存的时间也可通过TTL属性来设置。

  2. 如果浏览器缓存中没有(专业点叫还没命中),浏览器会检查操作系统缓存中有没有对应的已解析过的结果。而操作系统也有一个域名解析的过程。操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个ip地址映射,完成域名解析,或者在windows中可通过c盘里一个叫hosts的文件来设置,如果你在这里指定了一个域名对应的ip地址,那浏览器会首先使用这个ip地址。
    但是这种操作系统级别的域名解析规程也被很多黑客利用,通过修改你的hosts文件里的内容把特定的域名解析到他指定的ip地址上,造成所谓的域名劫持。所以在windows7中将hosts文件设置成了readonly,防止被恶意篡改。

  3. 如果至此还没有命中域名,首先会找TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器(LDNS),这台服务器一般在你的城市的某个角落,距离你不会很远,并且这台服务器的性能都很好,一般都会缓存域名解析结果,大约80%的域名解析到这里就完成了。

  4. 如果LDNS仍然没有命中,本地DNS就把请求发至13台根DNS (Root Server )域名服务器请求解析, 根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(baidu.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找baidu.com域服务器,重复上面的动作,进行查询,直至找到www.baidu.com主机。

  5. LDNS缓存这个域名和对应的ip

  6. LDNS把解析的结果返回给用户,用户根据TTL值缓存到本地系统缓存中,域名解析过程至此结束

浏览器缓存,系统缓存,路由器缓存,IPS服务器缓存,根域名服务器缓存,顶级域名服务器缓存,主域名服务器缓存。

你可能感兴趣的:(协议基础)