HTTP、HTTPS协议

一、www.qq.com抓包

第一步:浏览器分析超链接中的URL www.qq.com

第二步:DNS请求

PC用本地IP地址向DNS服务器222.172.200.68发出DNS QUERY请求,请求www.qq.com的A记录

本地IP地:ipconfig查看

DNS请求报文:

请求报文中,请求www.qq.com的A记录

第步:DNS

DNS应答报文

DNS服务器222.172.200.68回复DNS response,解析出www.qq.com域名对应的两条A记录14.18.175.154, 113.96.232.215

第四步:PC向www.qq.com的服务器14.18.175.154发起三次握手请求;

第五步:PC向www.qq.com发起GET请求,请求主页

第六步:www.qq.com回应HTTP/1.1 200OK,返回请求数据

第七步:完成数据交互过程,四次挥手断开连接

二、https://www.sangfor.com.cn抓包

第一步:浏览器分析超链接中的URLhttps://www.sangfor.com.cn

由于我用Windows抓包,包很多,显示的比较复杂,中间还会出现很多你不想看到的东西。我就使用了linux里面抓包

第二步:DNS请求

DNS请求报文

第三步:DNS回复

DNS应答报文

第四步:三次握手

第一次握手:PC发送SYN给服务器

第二次握手:服务器发送SYN+ACK给PC

第三次握手:PC发送ACK给服务器

第五步:SSL协商

1. Client Hello

握手第一步是客户端向服务端发送 Client Hello 消息,这个消息里包含了一个客户端生成的随机数 Random1、客户端支持的加密套件(Support Ciphers)和 SSL Version 等信息。通过 Wireshark 抓包,我们可以看到如下信息:

2. Server Hello

第二步是服务端向客户端发送 Server Hello 消息,这个消息会从 Client Hello 传过来的 Support Ciphers 里确定一份加密套件,这个套件决定了后续加密和生成摘要时具体使用哪些算法,另外还会生成一份随机数 Random2。注意,至此客户端和服务端都拥有了两个随机数(Random1+ Random2),这两个随机数会在后续生成对称秘钥时用到。

3. Certificate

这一步是服务端将自己的证书下发给客户端,让客户端验证自己的身份,客户端验证通过后取出证书中的公钥。

Server Key Exchange

如果是DH算法,这里发送服务器使用的DH参数。RSA算法不需要这一步。

Certificate Request

Certificate Request 是服务端要求客户端上报证书,这一步是可选的,对于安全性要求高的场景会用到。

Server Hello Done

Server Hello Done 通知客户端 Server Hello 过程结束。

4. Certificate Verify

客户端收到服务端传来的证书后,先从 CA 验证该证书的合法性,验证通过后取出证书中的服务端公钥,再生成一个随机数 Random3,再用服务端公钥非对称加密 Random3 生成 PreMaster Key。

Client Key Exchange

上面客户端根据服务器传来的公钥生成了 PreMaster Key,Client Key Exchange 就是将这个 key 传给服务端,服务端再用自己的私钥解出这个 PreMaster Key 得到客户端生成的 Random3。至此,客户端和服务端都拥有 Random1 + Random2 + Random3,两边再根据同样的算法就可以生成一份秘钥,握手结束后的应用层数据都是使用这个秘钥进行对称加密。

为什么要使用三个随机数呢?这是因为 SSL/TLS 握手过程的数据都是明文传输的,并且多个随机数种子来生成秘钥不容易被暴力破解出来。客户端将 PreMaster Key 传给服务端的过程如下图所示:

Change Cipher Spec(Client)

这一步是客户端通知服务端后面再发送的消息都会使用前面协商出来的秘钥加密了,是一条事件消息。

Encrypted Handshake Message(Client)

这一步对应的是 Client Finish 消息,客户端将前面的握手消息生成摘要再用协商好的秘钥加密,这是客户端发出的第一条加密消息。服务端接收后会用秘钥解密,能解出来说明前面协商出来的秘钥是一致的。

第六步:数据传输

第七步:四次挥手

HTTP请求和回应

https请求回应

三、RST报文

四、http常见字段及状态码

方法字段可以取值 GET、POST、HEAD、PUT 和 DELETE。

方法(操作) 含义
GET 请求读取一个Web页面
HEAD 请求读取一个Web页面的首部
POST 附加一个命名资源(如Web页面)
PUT 请求存储一个Web页面
DELETE 删除Web页面
TRACE 用于测试,要求服务器送回收到的请求
CONNECT 用于代理服务器
OPTION 查询特定选项
状态码 说明
200 响应成功
302 跳转,跳转地址通过响应头中的 Location 属性指定
400 客户端请求有语法错误,不能被服务器识别
403 服务器接收到请求,但是拒绝提供服务(例如认证失败)
404 请求资源不存在
500 服务器内部错误

访问网站,http、https协议抓包,完整分析相关推荐

  1. Fiddler手机抓包,及HTTPS协议抓包【手机如何安装fiddler证书,以华为为例】

    [推荐使用]使用安卓模拟器手机抓包配置[夜神模拟器为例]: 第一步:只要你在本地电脑可以访问ip地址:端口8888[如:http://192.168.2.102:8888/]可以访问,那么在模拟器就直 ...

  2. HTTPS中间人攻击,HTTPS被抓包了怎么办?

    目录 一.写在前面 二.什么是中间人攻击 三.https 是绝对安全的吗 四.中间人攻击的初步了解 五.中间人攻击的深入了解 六.https 是如何防止中间人攻击的 SSL-Pinning 七.浏览器 ...

  3. 抓包!抓包! HTTPS中间人抓包

    简介 抓包是一种网络分析技术,可以用于捕获和分析数据包,通常用于网络故障排查.协议分析.安全审计等.网络上所有的数据包都是以二进制的形式在网络上传输的,抓包工具可以捕获到这些数据包并将其转换为可读的格 ...

  4. 如何使用charles对Android Https进行抓包

    2019独角兽企业重金招聘Python工程师标准>>> 如何使用charles对Android Https进行抓包 博客分类: 搜索引擎,爬虫 原理 man-in-the-middl ...

  5. charles抓包工具_HTTP协议抓包工具:Charles for Mac

    Charles mac版对于开发者来说应该都不会陌生,这是一款非常实用的HTTP信息抓包工具,可以帮助开发人员查看其机器和Internet之间的所有HTTP和SSL / HTTPS流量,让你可以快速诊 ...

  6. xmpp协议抓包_开源网络抓包与分析框架学习-Packetbeat篇

    开源简介 packbeat是一个开源的实时网络抓包与分析框架,内置了很多常见的协议捕获及解析,如HTTP.MySQL.Redis等.在实际使用中,通常和Elasticsearch以及kibana联合使 ...

  7. https wireshark抓包——要解密出原始数据光有ssl 证书还不行,还要有浏览器内的pre-master-secret(内存里)...

    基于wireshark抓包的分析 首先使用wireshark并且打开浏览器,打开百度(百度使用的是HTTPS加密),随意输入关键词浏览. 我这里将抓到的包进行过滤.过滤规则如下 ip.addr == ...

  8. iOS开发——使用Charles进行https网络抓包详解

    我在前面两篇博客中<网络抓包工具Charles的介绍与使用><iOS开发--使用Charles进行http网络抓包详解>对Charles的http抓包进行了详细的讲解.今天我们 ...

  9. Https/Tcp抓包工具Charles、fiddler,ping (网络诊断工具),Android平台HTTPS抓包解决方案及问题分析HttpCanary

    市面上已经有一些弱网络模拟工具,比如微软的Network Emulator for Windows Toolkit(NEWT),Facebook的Augmented Traffic Control(A ...

最新文章

  1. 程序员兄弟们,我们的基本素质怎么样?
  2. 中国聚氨酯胶粘剂行业现状研究分析及市场前景预测报告(2022年)
  3. 数据可视化 信息可视化_动机可视化
  4. 关于4A系统(我对4A系统的维护的理解)
  5. ps aux、ps -aux、ps -ef之间的区别
  6. python json解释器_Python JSON
  7. 如何修改照片的尺寸大小
  8. android ps模拟器 金手指,电脑ps模拟器金手指的使用教程
  9. 双系统安装deepin20_win10deepin15.10双系统安装教程
  10. chrome双击突然打不开的解决办法
  11. 23种设计模式中英文对照
  12. 高通平台DDR3初始化
  13. aws打开慢_亚马逊AWS服务器访问较慢,如何快速访问AWS服务器呢?
  14. Mixpanel使用注意点
  15. PGN: 指针生成网络(Get To The Point: Summarization with Pointer-Generator Networks)
  16. Java实习生常规技术面试题每日十题Java基础(五)
  17. ThinkPad 插电时电源指示灯不亮
  18. caffe layer层详解
  19. Nobleman__ ACM 比赛模板 (C++ Java)个人总结 (不断更新) (自用)
  20. Linux 常用基本命令 rmdir rm

热门文章

  1. Android实现圆形图像的两种方法(Glide和Picasso)
  2. vscode代码自动格式化快捷键
  3. TikZ做思维导图并插入幻灯片
  4. 【python】输入一个值,输出以这个值为公比,1为首项的等比数列前10项
  5. amplifer 项目_文章详细信息
  6. 【正点原子FPGA连载】 第七章 Verilog HDL语法 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0
  7. 高发疾病分布特征分析
  8. 一天干掉一只Monkey计划(四)——卡通着色,描边
  9. 使用 setoolkit 伪造站点窃取用户信息
  10. redis C接口hiredis 简单函数使用介绍