1、HTTP 和 HTTPS 区别
* HTTPS 是在 HTTP 的基础上计入了 SSL协议,SSL 依靠证书来验证服务器的身份。为浏览器和服务器之间的通讯加密
* HTTP + 加密 + 认证 + 完整性保护 = HTTPS
* HTTPS 协议需要到 CA申请证书或者自制证书
* HTTP 是 明文传输;HTTPS 传输信息是通过 SSL加密的
* HTTP 直接与 TCP 进行数据传输;HTTPS 运行在 SSL/TLS(安全传输层协议) 之上,SSL/TLS运行在TCP上。
两者用的端口不一样, HTTP 的端口是 80,HTTPS 端口 443.
* HTTP 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的,可进行加密传输、身份认证的网络协议。
2、HTTP 2 和 HTTP 1.X
* HTTP 2 使用的是新的二进制格式传送;HTTP 1.X 是 文本传送。 二进制协议解析起来更加高效。
* HTTP 2 报头压缩,通过 gzip 和 compress 压缩头部 然后发送,避免重复 header 的传输,并且减少传输的大小
* HTTP 2 支持 Server Push (服务端推送)。
传统的请求模式(响应模式),用户在请求一个HTML文件的时候,只有当HTML文件下载完毕之后,浏览器解析HTML文件才能发现页面中的其他资源并获取。这样会延迟页面的渲染,拉长了页面的加载时间。
Server Push 可以让服务端在用户没有明确询问下,抢先地“推送”一些网站资源给客户端。我们可以根据用户正在访问的页面,给用户发送一些即将被使用的资源
For example:全局样式 style.css,在浏览器访问 index.html的时候,服务端在为客户端发送 index.html 的同时,还可以向客户端发送 style.css,这样就可以降低页面的渲染时间。
* HTTP 2 支持多路复用,即连接共享,即每个 reuqest 都是用作连接共享机制的。
在HTTP 1.X中,每个请求都会创建一个HTTP连接,也就是在之前文章里面说过的三次握手和四次挥手,这个过程非常的耗费时间,及时启动了keep live,也会存在以下问题:
* 单通道传输的情况下,当请求a文件时,b文件只能等待,等待a连接到服务器、服务器处理文件、服务器返回文件。我们假设这三步用时都是1秒,那么a文件用时为3秒,b文件传输完成用时为6秒,依此类推。
* 连接数过多。我们假设Apache设置了最大并发数为300,因为浏览器限制,浏览器发起的最大请求数为6,也就是服务器能承载的最高并发为50,当第51个人访问时,就需要等待前面某个请求处理完成。
HTTP 2 中有两个重要的概念,帧 (frame) 和 流 (stream)。
帧 代表 最小的数据单位,每个帧都会标志属于哪个流,流则是由多个帧组成的数据流。
一个TCP连接中可以存在多条流,也就是说一个TCP连接可以发送多个请求,另外一端可以通过帧中的标志来判断属于哪个流。通过这个技术,可以避免 HTTP 旧版本中的队头阻塞问题,极大的提高传输性能。
3、TCP 和 UDP
* UDP 是 User Datagram Protocol的简称, 中文名是用户数据报协议。是无连接的传输协议,UDP的应用程序提供了一种无需建立连接的可以发送封装的IP数据包的方法。
*
7、HTTP Request Header和Response Header里面分别都有哪些比较重要的字段?
* 请求报文和响应报文两方都会使用的首部
-
Cache-Control
告诉所有的缓存机制是否可以缓存及哪种类型 -
Connection
表明是否需要持久连接 -
Transfer-Encoding
文件传输编码
* Request Header
-
Accept
指定客户端能够接收的内容类型,内容类型中的先后次序表示客户端接收的先后次序 -
Range
实体的字节范围请求 -
Authorization
web的认证信息 -
Host
请求资源所在服务器 -
User-Agent
客户端程序信息
* Response Header:
Location
令客户端重定向的URIETag
能够表示资源唯一资源的字符串Server
服务器的信息