11、持久连接
我们经常会在报文中看到Connection: keep-alive,它表示持久连接,在HTTP/1.1默认启动。尤其是在web上,一次性需要显示大量不同信息,如果请求都是按我们平时理解的三次握手就结束,那么TCP频繁地建立与断开,对客户端与服务器都会造成大量的开销。持久连接需要客户端和服务端都支持,且只有一端主动断开才会完全断开TCP连接。
12、管线化
这个与多线程类似,HTTP连接后并不是依次串行地发起请求和响应请求,这样效率太低了,管线化技术使得HTTP可以并行地发起和响应多个请求。
13、HTTP状态码
其中3开头的重定向比较少接触,举个例子,我们在浏览器输入http://www.baidu.com,就会返回301重新指向https://www.baidu.com,还有很多场景,比如URI修改了,如果使用旧的URI就会返回3开头的状态码,重定向指向新的URI。其余四种类别的状态码基本都知道了,就不细讲,具体到每种类别还有不同的状态码表示不同的状况。
14、代理、网关
代理的作用主要是在客户端与服务器之间进行转发,可以对资源进行缓存、加工;
网关的作用跟代理相似,但是它有一个特点就是能进行非HTTP协议通信,比如在线银行卡密码验证,发出账号密码后,中间通过网关可以连接银行的数据库,验证密码的正确性再重新进行转发。
15、首部字段:Host
GET /index.htm HTTP/1.1
Host: baidu.com
请求的首部字段中,Host字段对应的“baidu.com”不是域名,不是IP地址,是主机名,同一个IP地址可以部署多个域名,Host用来指明哪个主机服务器。
16、HTTPS(HTTP Secure/HTTP over SSL)
- HTTPS就是拥有加密机制和认证机制的HTTP。
- HTTP存在的问题就是传输过程中的内容可能会被窃听和修改,其次是无法证明请求和响应各自的身份(我们听过的Dos[Denial of Service]攻击就是这个原因,服务端无法证明请求的身份,进行对应过滤和拦截,因而会因为遭受海量的请求导致过载崩溃)。
- 加密、认证、完整性保护机制就是在HTTP与TCP层之间增加了SSL(Secure Socket Layer)与TLS(Transport Layer Security)协议。
- 身份认证是通过数字证书认证机构(CA,Certificate Authority)提供的秘钥证书,这个客户端和服务器均有,需要购买,在后台搭建的时候已确定,唯一需要我们后面深入去理解的是证书为什么会认证失败?这是18年项目出现一系列网络莫名请求无效,查遍各种问题后最终找到的原因。
17、认证
想强调一点,身份认证可以通过密码、动态令牌(短信验证码、临时token)、生物证书(指纹、虹膜)等等,但是世界上不存在一种绝对安全的证明方式,唯一能使让你的密码不轻易被破解,就是不泄露任何信息。