HTTP与HTTPS请求过程

1、HTTP请求过程

HTTP协议处于网络协议的应用层,底层通过TCP/IP协议支持。HTTP请求基本过程为:
1.域名解析
2.三次握手创建TCP连接
3.服务器响应传输数据
4.四次挥手断开连接
TCP三次握手过程如下


第一次握手:客户端发送SYN报文和客户端初始序列号X,等待服务器确认。
第二次握手:服务器收到报文返回SYN+Ack报文和初始序列号Y
第三次握手:客户端收到服务器返回并返回Seq=X+1和Ack=Y+1
使用报文来解释三次握手比较难懂,为什么TCP连接的建立需要三次握手简单的说:把客户端的发送和接收功能分开算TCP连接的建立必须保证这四样都是可用的:客户端的发送功能、客户端的接收功能、服务器发送功能和服务器接收功能。我们来看三次握手分别做了些什么事:
第一次:客户端发送报文(客户端发送功能是可用的);
第二次:服务器接收到报文并返回。(服务器接收和发送功能是可用的);
第三次:客户端接收到服务器报文并返回。(客户端接收功能是可用的);
一个很常见的问题是为什么建立连接需要三次握手,由上可见是最后一次握手是为了保证客户端仍可以接收报文。TCP连接时有可能会出现这种情况:客户端第一次请求连接的报文因为各种原因阻塞在路上了,由于超时客户端放弃了这次连接,但一段时间过后阻塞的报文被转到服务器手上了,服务器如果直接第二次握手然后发送信息的话由于客户端放弃连接无法接收会导致此次请求失败。
三次握手之后TCP连接建立,开始传输数据,参数结束之后需要四次挥手断开连接,四次挥手内容如下:

既然四次握手是为了保证四个发送和接收功能正常那四次挥手必定也是保证这四个功能正确断开。
第一次挥手:主动方发送断开请求。(发送断开请求之后主动方不会再发送任何数据,这次挥手后主动方发送功能关闭但仍能接收请求)
第二次挥手:被动方收到断开请求,并返回我知道了。(被动方收到断开请求后知道你不会再发数据了随即关闭自己的接收数据功能,此时被动方可能还有数据没传输完成)
第三次挥手:被动方继续传输未完成的数据,结束后发送我也不再发送数据的请求。(被动方此时关闭发送数据功能)
第四次挥手:主动方收到请求,返回可以断开(此时主动方关闭接收数据功能)
注意上面说的接收数据功能和发送数据功能都只针对用户数据而言,协议数据不包括在内。
由于第二次和第三次挥手都是被动方发送的,显然当被动方收到断开请求时如果没有剩余数据需要传输是可以将第二次和第三次挥手放在一起的。此时只需要三次挥手即可断开连接。
第四次挥手的作用是保证被动方发送的断开请求送达到了主动方,如果第三次挥手后被动方就完全断开了但报文因为网络原因而没到达主动方时主动方会一直在傻傻的等而不能关闭接收功能。
第四次挥手后需要等待2MSL才能关闭连接原因有二:1、若客户端发送的第四次挥手信息未被服务端收到,服务端会超时重发第三次挥手信息,此时客户端仍处于等待状态可以收到信息后重新第四次挥手。2、防止有残存的失效报文存在于网络上。如果本次连接中有报文因阻塞残存于网络上在关闭连接后再到达会干扰其他连接,客户端发送最后一次挥手后等待2MSL(2个报文最大存活时长)可以保证此次连接的所有报文都消失于网路上。

HTTPS请求过程

看上面的HTTP请求过程容易发现,HTTP传输时数据都是在网络中裸奔的,一旦被第三人截获则所有内容都可以被看光甚至被修改,这对于一些金融系统是不可忍受的。因此超文本传输安全协议的出现迫在眉睫。
HTTPS是基于HTTP的,不同的是他在TCP/IP协议上面又新加了一层SSL

SSL层是为了保证HTTPS传输过程的安全性的。保证的方式在于他传输数据之前先传输一套对称密钥,然后通过这个对称密钥来加密一个key,再使用这个key来加密需要传输的数据,以此达到第三人不可解密和更改的目的。机密过程如下:

1、客户端发送请求https连接。
2、服务器返回加密公钥,通常是SSL证书。
3、客户端从这个SSL证书解析出公钥,并随机生成一个key,通过公钥加密这个key发送给服务器(这一步是安全的因为只有服务器才有私钥能读出这个key)。
4、服务器通过私钥解密出key。
5、客户端使用这个key来加密需要传输的数据。
6、服务器使用key来解析数据。
简单的来说SSL加密的方式是使用一个密钥来加密另一个密钥(key),在使用被加密的密钥来加密数据。
这样的做法固然保证了安全性,但每次连接时都需要使用密钥加密,导致请求会需要额外的开销,同时服务器第一次返回的公钥的可靠性需要第三方来保证,通常是购买SSL证书。这也会造成额外的经济开销。

HTTP与HTTPS请求过程相关推荐

  1. Http和https请求过程

    一.HTTP请求过程 1.浏览器根据域名解析IP地址 什么是DNS? 域名系统(DNS)是因特网的电话簿.DNS将域名转换为IP地址,以便浏览器可以加载Internet资源. DNS查找: 1.首先搜 ...

  2. HTTPS 请求过程

    一.HTTPS 加密过程 概念 HTTP 协议(HyperText Transfer Protocol,超文本传输协议):是客户端浏览器或其他程序与 Web 服务器之间的应用层通信协议 . HTTPS ...

  3. java证书验证失败_Java 跳过 HTTPS 请求过程中证书验证问题

    受益于谷歌和苹果对 HTTPS 的强制升级要求,服务已经全面升级了,安全性提高的同时也引起了新的问题. 由于 HTTPS 证书还是很贵的,所以各种测试环境上各种非法证书,通过浏览器访问的时候可以直接选 ...

  4. 关于使用https请求微信乱码问题

    请求微信的时候返回乱码,一般是在https请求过程中修改为: out = new PrintWriter(new OutputStreamWriter(httpsConn.getOutputStrea ...

  5. Network 【HTTPS请求/AFN】

    HTTPS请求过程 如下图: ① 客户端输入网址https://www.domain..com,连接到server的443端口.     ② 服务器返回一个证书(包含公钥.和证书信息,如证书的颁发机构 ...

  6. Android 使用自带的HttpClient进行https请求出现403的解决过程记录

    2019独角兽企业重金招聘Python工程师标准>>> 出现的过程 最近在用程序模拟一个web站的https登录,然后进行一些后续操作的小玩意.先使用java程序写测试代码,测试通过 ...

  7. 一次完整的http的请求过程与https的实现

    一次完整的http请求过程: (1)发起请求建立连接:  三次握手 接收请求或拒绝请求 (2)接受请求 来自网络的请求报文中对某资源的一次请求过程: 并发访问响应模型(Web I/O); 单进程I/O ...

  8. iOS使用自签名证书实现HTTPS请求

    原文链接:http://www.jianshu.com/p/e6a26ecd84aa 由于苹果规定2017年1月1日以后,所有APP都要使用HTTPS进行网络请求,否则无法上架,因此研究了一下在iOS ...

  9. iOS 用自签名证书实现 HTTPS 请求的原理实例讲解

    在16年的WWDC中,Apple已表示将从2017年1月1日起,所有新提交的App必须强制性应用HTTPS协议来进行网络请求.默认情况下非HTTPS的网络访问是禁止的并且不能再通过简单粗暴的向Info ...

  10. 图解HTTPS建立过程

    阅读目录 准备工作(对应图中prepare1234) 发起链接 最后 关于网络安全加密的介绍可以看之前文章: 1. 网络安全--数据的加密与签名,RSA介绍 2. Base64编码.MD5.SHA1- ...

最新文章

  1. Opencv 图像叠加 添加水印
  2. 智能指针shared_ptr的几个例子
  3. 17年三月计算机二级,2017年3月计算机二级考试攻略
  4. xcode 设置快捷键 整行上下移动
  5. apache 支持.htaccess重写url
  6. 亲测有效!解决macOS Big Sur系统Parallels Desktop 16的USB无法使用和无法联网问题
  7. 周鸿祎IOT发布会思考
  8. it项目经理成长手记 mobi_步入IT行业的心路历程
  9. jquery-添加/删除cookie
  10. IDEA上传本地项目到SVN
  11. 线性代数-线性转化和矩阵
  12. linux 查看运行平台,linux查看程序运行相关命令
  13. 在线网络投票/打分活动实施步骤及疑难问题汇编
  14. python global用法_利用Python自动发送钉钉数据消息
  15. 【音效处理】Reverb 混响算法简介
  16. 二维数组指针,指针数组与数组指针的区别,一看就懂
  17. 帝国CMS二次开发对接第三方支付接口教程
  18. 正版软件 - AxMath 专业的数学公式编辑器带计算功能 数学公式编辑器首选工具
  19. Linux基础命令之:top命令详解以及VIRT,RES,SHR,DATA
  20. 工频风力发电储能逆变电路中的电流检测(霍尔电流传感器ACS712/CH701应用案例)

热门文章

  1. 涉密计算机用户密码操作规程,涉密计算机管理设置密码
  2. windows下安装wget
  3. OpenCV车牌识别
  4. 通达信l2高级行情服务器地址配置文件,疯赢版通达信更好用——开通level2行情,添加龙虎榜数据...
  5. AltiumDesigner14.3.X下载安装破解教程
  6. 第3章-线性概率模型(1)-logistics/probit模型
  7. 有了PDA手持终端,仓库再也不愁盘点了
  8. 电解电容串联的均压电阻计算
  9. 今日头条笔试8/23第二题
  10. Clark与Park变换详解