目录

  • 前言
    • HTTPS为什么会出现?
    • HTTP和HTTPS的区别
    • HTTP的格式
      • Request格式
      • Response格式
      • 格式的参考资料
    • HTTP和HTTPS的运行原理
      • HTTP
      • HTTPS
    • 用java代码来理解
    • SSL协议
  • 总结

前言

因为在之前的学习中有点搞不明白服务器和客户端之间是怎么样进行沟通的,
所以就到网上去找了些资料,然后就打算接http和https来作为今天的一个主题。

http是一种协议(超文本传输协议)是一个客户端和服务端请求和应答的标准(TCP

https则是http的一个安全协议(安全超文本传输协议),即HTTP+SSL


HTTPS为什么会出现?

HTTP协议以明文方式发生内容,不提供任何方式的数据加密,当web浏览器和网站服务之间的传输报文被攻击者截取,就可以读懂其中的信息,因此HTTP协议不适合传输一些敏感信息。如:银行卡号、密码等支付信息。

就像下面的这个一样,非常非常的不安全

下面一个就是qq的一个登陆页面,就是通过https协议来进行的,大概就是这样

为了解决HTTP协议的这一缺陷,就诞生了HTTPS协议:安全套接字层超文本传输协议HTTPS,通过在HTTP的基础上加入SSL协议,保证数据传输的安全。SSL协议依靠证书来验证服务器的身份,并为Web浏览器和服务器之间的通信加密。

嘛,就是做一个安全保障,毕竟谁都不想自己的重要信息泄露嘛


HTTP和HTTPS的区别

  1. HTTP是超文本传输协议,信息是明文传输,HTTPS是具有安全性的SSL加密传输协议
  2. HTTPS协议需要ca申请证书,一般免费证书少,因而需要一定费用。
  3. HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样。前者是80,后者是443。

HTTP的格式

嘛,因为是为了之前的知识而去整理的,所以我会参照之前所学的内容来举例,

先简单了解一下HTTP的运行原理

做过项目的也都清楚:
客户端发送一个请求(request)给服务器,
服务器在接收到这个请求后将生成一个响应(response)返回给客户端

可是说到上面,我肯定也是知道的,可我不知道的是结构。

所以:

Request格式

HTTP请求行
(请求)头
空行
可选的消息体

实列:
GET / HTTP/1.1Host: gpcuster.cnblogs.comUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: en-us,en;q=0.5Accept-Encoding: gzip,deflateAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7Keep-Alive: 300Connection: keep-aliveIf-Modified-Since: Mon, 25 May 2009 03:19:18 GMT

所以我也就找了一下对应的,下面的就是一般的信息。比如请求的方式为:post,状态码为200,端口号为8080;


这个下面也就是Request的头部部分。


Response格式

HTTP状态行
(应答)头
空行
可选的消息体

实例:HTTP/1.1 200 OKCache-Control: private, max-age=30Content-Type: text/html; charset=utf-8Content-Encoding: gzipExpires: Mon, 25 May 2009 03:20:33 GMTLast-Modified: Mon, 25 May 2009 03:20:03 GMTVary: Accept-EncodingServer: Microsoft-IIS/7.0X-AspNet-Version: 2.0.50727X-Powered-By: ASP.NETDate: Mon, 25 May 2009 03:20:02 GMTContent-Length: 12173

也就是服务器给我们的反馈,以及一些其他的请求内容。

就是我们在进行一个跨域处理的时候也就是进行一个请求头的一个处理

有了处理过后 我们才能实现跨域调用。

下面就是我们之前用axios后,服务器给我返的一个数组,相当于之前的json


格式的参考资料

参考资料是全英文的哈。

参考资料


HTTP和HTTPS的运行原理

HTTP

  1. UserServer建立连接,单击某个超链接,HTTP的工作开始。
  2. 连接建立后,User发送一个请求给Server,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符User信息和可能的内容。
  3. Server接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括Server信息、实体信息和可能的内容。
  4. User接收Server返回的信息通过浏览器显示在用户的显示屏上,然后User和Server断开连接。

HTTPS

  1. Client使用HTTPS的URL访问Web服务器,要求与Web服务器建立SSL连接。
  2. Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
  3. 客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
  4. 客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
  5. Web服务器利用自己的私钥解密出会话密钥。
  6. Web服务器利用会话密钥加密与客户端之间的通信。

用java代码来理解

在eclipse中我们可以通过代码去简单的去测试一下
如何去访问服务器,

package com.liwangwang.demo;import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;public class demo {//httppublic static String httpRequest(String requestUrl,String requestMethod,String outputStr){StringBuffer buffer=null;try{URL url=new URL(requestUrl);HttpURLConnection conn=(HttpURLConnection)url.openConnection();conn.setDoOutput(true);conn.setDoInput(true);conn.setRequestMethod(requestMethod);conn.connect();//往服务器端写内容 也就是发起http请求需要带的参数if(null!=outputStr){OutputStream os=conn.getOutputStream();os.write(outputStr.getBytes("utf-8"));os.close();}//读取服务器端返回的内容InputStream is=conn.getInputStream();InputStreamReader isr=new InputStreamReader(is,"utf-8");BufferedReader br=new BufferedReader(isr);buffer=new StringBuffer();String line=null;while((line=br.readLine())!=null){buffer.append(line);}}catch(Exception e){e.printStackTrace();}return buffer.toString();}}

上面是用http 有一个可以去访问服务器的

public static void main(String[] args){String s=httpRequest("https://www.baidu.com","GET",null);System.out.println(s);}

结果

具体体现可以在:如何在java中发起http和https请求参考。


SSL协议

SSL的简介: SSL是Netscape公司所提出的安全保密协议,在浏览器(如Internet Explorer、Netscape Navigator)和Web服务器(如Netscape的Netscape Enterprise Server、ColdFusion Server等等)之间构造安全通道来进行数据传输,SSL运行在TCP/IP层之上、应用层之下,为应用程序提供加密数据通道,它采用了RC4、MD5 以及RSA等加密算法,使用40 位的密钥,适用于商业信息的加密。同时,Netscape公司相应开发了HTTPS协议并内置于其浏览器中,HTTPS实际上就是SSL over HTTP,它使用默认端口443,而不是像HTTP那样使用端口80来和TCP/IP进行通信。HTTPS协议使用SSL在发送方把原始数据进行加密,然 后在接受方进行解密,加密和解密需要发送方和接受方通过交换共知的密钥来实现,因此,所传送的数据不容易被网络黑客截获和解密。 然而,加密和解密过程需要耗费系统大量的开销,严重降低机器的性能,相关测试数据表明使用HTTPS协议传输数据的工作效率只有使用HTTP协议传输的十 分之一。

假如为了安全保密,将一个网站所有的Web应用都启用SSL技术来加密,并使用HTTPS协议进行传输,那么该网站的性能和效率将会大大降低,而 且没有这个必要,因为一般来说并不是所有数据都要求那么高的安全保密级别,所以,我们只需对那些涉及机密数据的交互处理使用HTTPS协议,这样就做到鱼 与熊掌兼得。总之不需要用https 的地方,就尽量不要用。


总结

这是我在网上所学到的一些小知识,然后进行了一个整合,虽然还是有点迷,但是如今我的一些迷惑也随之而解开了一些,所以说是太好了。

嗯,
Thanks♪(・ω・)ノ希望对大家有所帮助

了解HTTP和HTPS的S之差相关推荐

  1. LeetCode简单题之最小绝对差

    题目 给你个整数数组 arr,其中每个元素都 不相同. 请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回. 示例 1: 输入:arr = [4,2,1,3] 输出:[[1,2],[2,3],[ ...

  2. LeetCode简单题之二叉搜索树的最小绝对差/最小距离

    题目 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 . 差值是一个正数,其数值等于两值之差的绝对值. 示例 1: 输入:root = [4,2,6,1,3] 输出: ...

  3. LeetCode简单题之两个数对之间的最大乘积差

    题目 两个数对 (a, b) 和 (c, d) 之间的 乘积差 定义为 (a * b) - (c * d) . 例如,(5, 6) 和 (2, 7) 之间的乘积差是 (5 * 6) - (2 * 7) ...

  4. LeetCode简单题之差的绝对值为 K 的数对数目

    题目 给你一个整数数组 nums 和一个整数 k ,请你返回数对 (i, j) 的数目,满足 i < j 且 |nums[i] - nums[j]| == k . |x| 的值定义为: 如果 x ...

  5. LeetCode简单题之整数的各位积和之差

    题目 给你一个整数 n,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差. 示例 1: 输入:n = 234 输出:15 解释: 各位数之积 = 2 * 3 * 4 = 24 各位数之和 ...

  6. python时区转换_在python 不同时区之间的差值与转换方法

    之前有个程序,里面有个时间部分是按照国内时区,也就是东八区,来写的,程序中定义了北京时间2点到八点进行检查:后面程序在国外机器上,例如说韩国,欧美等,执行的时候发现会有时间上的问题,因为获取的是机器的 ...

  7. ibm db2获取目标时间与当前时间的差值_高帧频视觉实时目标检测系统

    基于机器视觉的智能目标检测系统应用非常广泛,尤其在航天军工等领域中,经常涉及高速目标的实时检测和控制,对目标检测的智能性和实时性提出了更严格的要求.在这种应用中,视觉系统相对雷达.声纳具有信息量大.抗 ...

  8. steam自建服务器游戏_虽有差评销量却还是直步青云,《Atlas》力登Steam榜单前茅...

    许多用Steam的玩家们应该都知道在Steam上面差评如潮对于一款游戏来说是什么意义.只要是差评如潮的游戏,都附带着退款率极高,销量极低这些形容,而且游戏往往无人问津,但也有例外,小编今天要给大家介绍 ...

  9. mysql 月份差_MySQL时间差返回月个数

    Sql代码   select PERIOD_DIFF(date_format(now(),'%Y%m'),date_format('2010-11-30','%Y%m')) 1. MySQL 为日期增 ...

  10. 网站性能越来越差怎么办?

    新的一年,你的老板或客户,是否曾和你抱怨公司的网站性能愈来愈差?网站大家都会写,自从有了 Visual Studio 之后,连你家楼下的正妹小喵和隔壁的王大婶都会写 ASP.NET.但同样的一个画面, ...

最新文章

  1. 一维数组对象转成二维数组
  2. WPF的消息机制(三)- WPF内部的5个窗口之处理激活和关闭的消息窗口以及系统资源通知窗口...
  3. MATLAB知识点2
  4. 企业实战03:Oracle数据库_用户和表空间
  5. 阿里云数据库产品专家胡航丽:数据库自动驾驶平台DAS重磅助力数据库领域智能未来...
  6. android 的wifi定位
  7. IE与FireFox的不同点(不断更新中..)
  8. “ +”(加号)CSS选择器是什么意思?
  9. Linux之socket网络编程(全)
  10. 虚拟机Linux服务器网络设置
  11. docker network详解、教程
  12. 百度编辑器设置上传文件大小
  13. 中关村-DIY之笔记本做wifi热点供手机无线上网
  14. 织梦首页php打开慢,DEDECMS网站打开速度慢解决方法
  15. Java编程工具(10-1):idea moudle没有蓝色的小方块
  16. Python Revisited Day 08 (高级程序设计技术)
  17. 拿下618,京东祭出AI备战双11
  18. 苹果Mac笔记本电脑如何开启热点分享网络?
  19. adguard自定义_openwrt上装adguard以及实用教程
  20. 操盘建议----全球顶尖交易员的成功实践和心路历程(三)

热门文章

  1. 关于华为pad(鸿蒙系统)连接wedo 2.0 集线器问题
  2. 广告违规词、敏感词在线检测
  3. 【产品】业务流程+任务流程+页面流程绘制指南
  4. softmax函数反向传播
  5. PS初学者(非设计专业人士)的碎碎念
  6. 机器人焊枪动作与编程实验_工业机器人编程实验.doc
  7. python可以用于工业机器人编程与操作_如何实现工业机器人编程抓取
  8. rxbus 源码_从 RxBus 这辆兰博基尼深入进去
  9. sketch软件_初学UI设计要学sketch软件吗?
  10. Bookmarks 各种技术 参考