HTTP 通常被译为超文本传输协议,但这种译法并不严谨。严谨的译名应该为“超文本转移协议”。
网络基础 TCP/IP:
协议中存在各式各样的内容:
从电缆的规格到 IP 地址的选定方法、寻找异地用户的方法、双方建立通信的顺序,以及 Web 页面显示需
要处理的步骤,等等。
负责传输的 IP 协议:
按层次分,IP(Internet Protocol)网际协议位于网络层。
可能有人会把“IP”和“IP 地址”搞混,“IP”其实是一种协议的名称。
IP 协议的作用是把各种数据包传送给对方。而要保证确实传送到对方那里,则需要满足各类条件。其中两个重要的条件是 IP 地址和 MAC地址(Media Access Control Address)。
IP 地址指明了节点被分配到的地址,MAC 地址是指网卡所属的固定地址。IP 地址可以和 MAC 地址进行配对。IP 地址可变换,但 MAC地址基本上不会更改。
使用 ARP 协议凭借 MAC 地址进行通信。IP间的通信依赖 MAC 地址。
ARP是一种用以解析地址的协议,根据通信方的IP 地址就可以反查出对应的 MAC 地址。
确保可靠性的 TCP 协议:
按层次分,TCP 位于传输层,提供可靠的字节流服务。
一言以蔽之,TCP 协议为了更容易传送大数据才把数据分割(报文段),而且 TCP 协议能够确认数据最终是否送达到对方(三次握手策略)。
负责域名解析的 DNS 服务:
DNS(Domain Name System)服务是和 HTTP 协议一样位于应用层的
协议。它提供域名到 IP 地址之间的解析服务。计算机既可以被赋予 IP 地址,也可以被赋予主机名和域名。
DNS 协议提供通过域名查找 IP 地址,或逆向从 IP 地址反查域名的服务。
IP 协议、TCP 协议和 DNS 服务在使用
HTTP 协议的通信过程中各自发挥了哪些作用:
使用 Cookie 的状态管理:
HTTP 是无状态协议,它不对之前发生过的请求和响应的状态进行管理。也就是说,无法根据之前的状态进行本次的请求处理。
编码提升传输速率:
HTTP 在传输数据时可以按照数据原貌直接传输,但也可以在传输过程中通过编码提升传输速率。通过在传输时编码,能有效地处理大量
的访问请求。但是,编码的操作需要计算机来完成,因此会消耗更多的 CPU 等资源。
分割发送的分块传输编码:
在 HTTP 通信过程中,请求的编码实体资源尚未全部传输完成之前,浏览器无法显示请求页面。在传输大容量数据时,通过把数据分割成多块,能够让浏览器逐步显示页面。
这种把实体主体分块的功能称为分块传输编码(Chunked TransferCoding)。
分块传输编码会将实体主体分成多个部分(块)。每一块都会用十六
进制来标记块的大小,而实体主体的最后一块会使用“0(CR+LF)”来标
记。
使用分块传输编码的实体主体会由接收的客户端负责解码,恢复到编
码前的实体主体。
HTTP/1.1 中存在一种称为传输编码(Transfer Coding)的机制,它可
以在通信时按某种编码方式传输,但只定义作用于分块传输编码中。
获取部分内容的范围请求:
如果服务器端无法响应范围请求,则会返回状态码 200 OK 和完整的实体内容。
内容协商返回最合适的内容:
代理有多种使用方法,按两种基准分类。一种是是否使用缓存,另一
种是是否会修改报文。
利用网关能提高通信的安全性,因为可以在客户端与网关之间的通信
线路上加密以确保连接的安全。比如,网关可以连接数据库,使用
SQL 语句查询数据。另外,在 Web 购物网站上进行信用卡结算时,
网关可以和信用卡结算系统联动。
表 6-2:请求首部字段
非 HTTP/1.1 首部字段:
在 HTTP 协议通信交互中使用到的首部字段,不限于 RFC2616 中定义的 47 种首部字段。还有 Cookie、Set-Cookie 和 Content-Disposition
等在其他 RFC 中定义的首部字段,它们的使用频率也很高。
这些非正式的首部字段统一归纳在 RFC4229 HTTP Header FieldRegistrations 中。
HTTP 协议中没有加密机制,所以容易被窃听和篡改。
HTTP+ 加密 + 认证 + 完整性保护=HTTPS
HTTPS 也存在一些问题,那就是当使用 SSL 时,它的处理速度
会变慢。
确认访问用户身份的认证:
基于 HTTP 的功能追加协议:
1.Ajax和Comet通信都未解决HTTP协议本身存在的问题
2.SPDY
SPDY 消除 Web 瓶颈了吗?
因为 SPDY 基本上只是将单个域名( IP 地址)的通信多路复用,所以当一个 Web 网站上使用多个域名下的资源,改善效果就会受到限
制。
SPDY 的确是一种可有效消除 HTTP 瓶颈的技术,但很多 Web 网站存在的问题并非仅仅是由 HTTP 瓶颈所导致。对 Web 本身的速度提
升,还应该从其他可细致钻研的地方入手,比如改善 Web 内容的编写方式等。
3.使用WebSocket
WebSocket,即 Web 浏览器与 Web 服务器之间全双工通信标准。
其中,WebSocket 协议由 IETF 定为标准,WebSocket API 由 W3C 定为
标准。仍在开发中的 WebSocket 技术主要是为了解决 Ajax 和 Comet
里 XMLHttpRequest 附带的缺陷所引起的问题。
一旦 Web 服务器与客户端之间建立起 WebSocket 协议的通信连接,
之后所有的通信都依靠这个专用协议进行。通信过程中可互相发送
JSON、XML、html 或图片等任意格式的数据。
由于是建立在 HTTP 基础上的协议,因此连接的发起方仍是客户端,
而一旦确立 WebSocket 通信连接,不论服务器还是客户端,任意一方
都可直接向对方发送报文。
主要特点:
推送功能、减少通信量
为了实现 WebSocket 通信,在 HTTP 连接建立之后,需要完成一
次“握手”(Handshaking)的步骤。
为了实现 WebSocket 通信,需要用到 HTTP 的 Upgrade 首部字
段,告知服务器通信协议发生改变,以达到握手的目的。
HTTP/2.0 的 7 项技术及讨论: