Http和https请求过程
一、HTTP请求过程
1、浏览器根据域名解析IP地址
什么是DNS?
域名系统(DNS)是因特网的电话簿。DNS将域名转换为IP地址,以便浏览器可以加载Internet资源。
DNS查找:
1、首先搜索DNS浏览器缓存,有次域名且没有过期则解析成功。
2、系统缓存,第1步无法解析则浏览器会搜索操作系统自身的DNS缓存。
3、路由器缓存,第2步未找到则会向路由器发送查询请求。
4、ISP(互联网服务提供商)DNS缓存:如果在路由缓存也没找到,最后查ISP缓存DNS的服务器。
2、浏览器与web服务器简历TCP连接
3、发送http请求
http请求报文 = 请求行+请求头+空行+请求数据
请求行=请求方法+url+http协议版本
4、服务端响应http请求,浏览器得到html代码
http响应报文=状态行+响应头部+空行+响应数据
5、浏览器解析html并请求数据
6、关闭TCP连接,浏览器对页面进行渲染
二、https请求过程
为什么要使用https呢?
http简单快速,但由于明文协议,不会对数据进行加密,容易被黑客攻击,不适用于敏感信息的传播。
1、客户端发起https请求,连接到服务器的443端口
2、服务端将非对称加密的公钥传递给客户端,以证书的形式回传到客户端
3、客户端接受公钥进行验证,如果有问题则请求无法继续,如果没有问题客户端随机生成一个私钥作为client key,使用公钥对client key进行非对称加密
4、第二次请求,将加密的client key传递给服务器
5、服务器使用私钥进行解密,得到client key,使用client key对数据进行对称加密
6、将加密数据传递给客户端,客户端解密
正文数据量大,适用于对称加密,速度快但安全级别低
对私钥进行加密,私钥数据量小,安全要求高
为验证正确的交互方,用证书保证公钥安全性
Http和https请求过程相关推荐
- HTTPS 请求过程
一.HTTPS 加密过程 概念 HTTP 协议(HyperText Transfer Protocol,超文本传输协议):是客户端浏览器或其他程序与 Web 服务器之间的应用层通信协议 . HTTPS ...
- java证书验证失败_Java 跳过 HTTPS 请求过程中证书验证问题
受益于谷歌和苹果对 HTTPS 的强制升级要求,服务已经全面升级了,安全性提高的同时也引起了新的问题. 由于 HTTPS 证书还是很贵的,所以各种测试环境上各种非法证书,通过浏览器访问的时候可以直接选 ...
- 关于使用https请求微信乱码问题
请求微信的时候返回乱码,一般是在https请求过程中修改为: out = new PrintWriter(new OutputStreamWriter(httpsConn.getOutputStrea ...
- Network 【HTTPS请求/AFN】
HTTPS请求过程 如下图: ① 客户端输入网址https://www.domain..com,连接到server的443端口. ② 服务器返回一个证书(包含公钥.和证书信息,如证书的颁发机构 ...
- Android 使用自带的HttpClient进行https请求出现403的解决过程记录
2019独角兽企业重金招聘Python工程师标准>>> 出现的过程 最近在用程序模拟一个web站的https登录,然后进行一些后续操作的小玩意.先使用java程序写测试代码,测试通过 ...
- 一次完整的http的请求过程与https的实现
一次完整的http请求过程: (1)发起请求建立连接: 三次握手 接收请求或拒绝请求 (2)接受请求 来自网络的请求报文中对某资源的一次请求过程: 并发访问响应模型(Web I/O); 单进程I/O ...
- iOS使用自签名证书实现HTTPS请求
原文链接:http://www.jianshu.com/p/e6a26ecd84aa 由于苹果规定2017年1月1日以后,所有APP都要使用HTTPS进行网络请求,否则无法上架,因此研究了一下在iOS ...
- iOS 用自签名证书实现 HTTPS 请求的原理实例讲解
在16年的WWDC中,Apple已表示将从2017年1月1日起,所有新提交的App必须强制性应用HTTPS协议来进行网络请求.默认情况下非HTTPS的网络访问是禁止的并且不能再通过简单粗暴的向Info ...
- 图解HTTPS建立过程
阅读目录 准备工作(对应图中prepare1234) 发起链接 最后 关于网络安全加密的介绍可以看之前文章: 1. 网络安全--数据的加密与签名,RSA介绍 2. Base64编码.MD5.SHA1- ...
最新文章
- Python设计模式-职责链模式
- 利用openssl签署多域名证书
- openpose_net随机搜索(维度搜索)网络源代码
- 风暴事件处理器–每个工作者的GC日志文件
- leetcode738. 单调递增的数字(贪心)
- unsigned int mysql_mysql 中int类型字段unsigned和signed的探索
- LeetCode 662. 二叉树最大宽度(递归)
- jQuery教程04-jQuery_this选择器
- 对抗机器学习(Adversarial Machine Learning)发展现状
- [置顶] 【cocos2d-x入门实战】微信飞机大战之六:子弹层的处理
- wowza拉流和推流接口备忘
- python答题系统设计
- 3月16日—3月20日四年级课程表
- go 语言最详细的入门教程
- Stay hungry. Stay foolish.
- 《控制论导论》读书:变异度-传输变异度
- 各个框架原理总结归纳
- xmanager5链接linux配置,使用Xmanager连接CentOS 5.5
- 微博舆情 之 数据获取
- 端到端与点到点的区别