用户请求资源基本流程
客户端部分:
1.HTTP协议的职责:生成针对目标Web服务器的HTTP请求报文,比如:请求获取http://XXX.YY/index 页面的资源
2.TCP协议的职责:为了方便通信,将Http请求报文分割成报文段(按序号分为多个报文段)然后将每个报文段可靠的传给对方
路由器部分(多个):
IP协议的职责: 搜索对方的地址,一边中转一边传送。详细介绍
服务器部分:
1.TCP协议的职责: 从对方那里接收到的报文段——> 重组报文(按照序号以原来的顺序重组请求报文)
2.HTTP协议的职责:对Web服务器请求的内容的处理(目标资源)
处理结果同样利用TCP/IP通信协议想用户进行回传。
HTTP 报文内的HTTP信息
HTTP报文包含请求和效能感应的各种条件和属性的各类首部,一般来说有四种首部,分别是:通用首部、请求首部、响应首部和实体首部。可以看出,请求首部和响应首部是对应存在的,一个在请求报文中,一个在响应报文中。
HTTP压缩传输常用的内容编码有gzip(GUN zip),compress(UNIX系统的标准压缩), deflate(zlib), identity(不进行编码)
返回结果的HTTP状态码
确保Web安全的HTTPS
通信加密:
通过和SSL(Secure Socket Layer,安全套接层)或TLS(Transport Layer Security,安全层传输协议)的组合使用,加密HTTP的通信内容。与SSL组合使用的HTTP称为HTTPS。
内容加密:
这是由于HTTP协议中没有加密机制,那么久对HTTP协议传输的内容本身加密。加密对象是报文主体。主要应用在Web服务中,由于此方式不同于SSL或TLS将整个通信线路加密处理,所以内容仍有被篡改的风险。
风险1:
不验证通信方的身份,任何人都可以发起请求。HTTP协议通信时,不存在确认通信方的处理步骤,收到任何请求都会返回一个响应(只要IP和port没有被服务器限制)。DOS攻击(Denial of Service,拒绝服务攻击)
风险2:
无法验证报文完整性,接收到的内容可能有误。中间人攻击(Man-In-The-Middle attack, MITM)。
HTTPS改进:
使用SSL进行加密处理,而且通过查看证书(第三方机构颁发)来确认对方是实际存在的。HTTP 加上加密处理和认证以及完整性保护后即是 HTTPS。
HTTPS并不是应用层的一种新协议。只是HTTP通信接口部分用SSL(Secure Socket Layer)和TLS(Transport Layer Security)协议代替而已。
对称秘钥加密: 加密解密使用同一个秘钥,传输的时候需要将解密的秘钥也发送给对方。
非对称加密:使用对方的公钥加密,接收方收到数据的时候使用自己的私钥进行解密。
HTTPS采用混合加密机制,因为公开密钥加密比共享秘钥加密处理速度慢,所以充分利用两者各自的优势,将多种方法组合起来用于通信。在交换秘钥缓解使用公开秘钥加密方式,之后的建立通信交换阶段则使用共享秘钥加密方式。
怎样保证公钥的正确性?
使用数字证书认证机构(CA,Certificate Authority)和其相关颁发的公开秘钥证书。
HTTPS通信过程:
既然 HTTPS 那么安全可靠,那为何所有的 Web 网站不一直使用 HTTPS ?
加密通信会消耗更多的 CPU 及内存资源。如果每次通信都加密,会消耗相当多的资源,平摊到一台计算机上时,能够处理的请求数量必定也会随之减少。
基于 HTTP 的功能追加协议
SPDY:
SPDY没有完全改写HTTP协议,而是在TCP/IP 的应用层与运输层之间通过新加会话层的形式运作。同时,考虑到安全性问题,SPDY规定通信中使用SSL
多路复用流:
通过单一的TCP连接,可以无限制处理多个HTTP请求。所有请求的处理都在一条TCP连接上完成。因此TCP的处理效率得到提高。
赋予请求优先级:
主要是为了在发送多个请求的时候,解决因带宽低而导致响应变慢的问题。
压缩HTTP首部:
通信产生的数据包数量和发送的字节数变少了。
推送功能:
支持服务器主动向客户端推送数据的功能。这样,服务器可直接发送数据。而不必等待客户端的请求。
服务器提示功能:
服务器可以主动提示客户端请求所需的资源。
由于在客户端发现资源之前就可以获知资源的存在,因此在资源已经缓存等情况下,可以避免发送不必要的请求。
WebSocket协议:
一旦 Web 服务器与客户端之间建立起 WebSocket 协议的通信连接, 之后所有的通信都依靠这个专用协议进行。通信过程中可互相发送 JSON、XML、HTML或图片等任意格式的数据。
由于是建立在 HTTP 基础上的协议,因此连接的发起方仍是客户端, 而一旦确立 WebSocket 通信连接,不论服务器还是客户端,任意一方 都可直接向对方发送报文。
WebSocket 协议的主要特点:
推送功能、减少通信量
为了实现WebSocket通信,需要用到HTTP的Upgrade首部字段,告知服务器通信协议发生改变,以达到握手的目的。服务器返回状态码101 Switching Protocols响应。
完整版文档
小结:《图解HTTP》已经读完了,下一步把买的《HTTP权威指南》读一下。