HTTP和HTTPS总结

1. 请你介绍一下Http?
(1)基本概念
   Http是超文本传输协议,是客户端和服务器端请求和响应的标准,用于 从www服务器(万维网服务器)上传输超文本到本地浏览器。
(2)特点
   a)无状态的。也就是说同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同。
   b)采用TCP作为传输层协议。
   c)可以使用非持久连接,也可以采用持久连接。持久连接又可分为非流水线和流水线两种方式。
   d)HTTP是媒体独立的。这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送
(3)Http的操作过程
  (以访问http://www.tsinghua.edu.cn/chn/index.htm为例)
   a) 浏览器分析链接指向页面的URL。
   b) 浏览器向DNS请求解析清华大学服务器的IP地址。
   c) 域名系统DNS解析出清华大学服务器的IP地址。
   d) 浏览器与该服务器建立TCP连接(默认端口号80)。
   e) 浏览器发出Http请求:GET /chn/index.htm。
   f ) 服务器通过Http响应把文件index.htm发送给浏览器。
   g) TCP连接释放。
   h) 浏览器解析文件index.htm,并将web页显示给用户。

2. 请你介绍一下Https?
(1) 基本概念
  Https是安全版的Http,是Http协议加上SSL协议构成的。
(2) 优缺点
   · 使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;
  · HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。
  · HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。
  
  · https握手阶段比较费时,会使页面加载时间延长50%,增加10%~20%的耗电。
  · https缓存不如http高效,会增加数据开销。
  · SSL证书也需要钱,功能越强大的证书费用越高。
  · SSL证书需要绑定IP,不能再同一个ip上绑定多个域名,ipv4资源支持不了这种消耗。
(3)https协议的工作原理
  · 客户使用https url访问服务器,则要求web 服务器建立ssl连接。
  · web服务器接收到客户端的请求之后,会将网站的证书(证书中包含了公钥),返回或者说传输给客户端。
  · 客户端和web服务器端开始协商SSL链接的安全等级,也就是加密等级。
  · 客户端浏览器通过双方协商一致的安全等级,建立会话密钥,然后通过网站的公钥来加密会话密钥,并传送给网站。
  · web服务器通过自己的私钥解密出会话密钥。
  · web服务器通过会话密钥加密与客户端之间的通信。

3. Http和Https的区别?
· Https协议需要ca证书,费用较高。
· http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
· 使用不同的链接方式,端口也不同,一般而言,http协议的端口为80,https的端口为443
· http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

4.说一下http2.0?
http2.0是基于1999年发布的http1.1之后的首次更新。
(1) 内容安全,因为http2.0是基于https的,天然具有安全特性,通过http2.0的特性可以避免单纯使用https的性能下降
(2)提升访问速度。(相比http1.0请求资源所需时间更少,访问速度更快)
(3)允许多路复用。多路复用允许同时通过单一的HTTP/2连接发送多重请求-响应信息。改善了:在http1.1中,浏览器客户端在同一时间,针对同一域名下的请求有一定数量限制(连接数量),超过限制会被阻塞。
(4)header压缩。HTTP1.x的header带有大量信息,而且每次都要重复发送,HTTP2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。
(5)二进制分帧。HTTP2.0会将所有的传输信息分割为更小的信息或者帧,并对他们进行二进制编码
(6)服务器端推送

5.get和post的区别
(1)get参数通过url传递,post放在request body中。
(2)get请求在url中传递的参数是有长度限制的(浏览器决定),而post没有。
(3)get比post更不安全,因为参数直接暴露在url中,所以不能用来传递敏感信息。
(4)get请求只能进行url编码,而post支持多种编码方式。
(5)get请求参数会被完整保存在浏览历史记录里,而post中的参数不会被保留。
(6)get和post本质上就是TCP连接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。
(7)get产生一个TCP数据包。post产生两个TCP数据包。 对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容