HTTP协议漫谈

发布时间:2017-05-03 18:49:29 编辑:站点网
    Get后面仅仅需要相对路径即可。这看起来虽然仅仅类似语法糖的感觉,但实际上,这个提升使得在Web上的一台主机可以存在多个域。否则多个域名指向同一个IP会产生混淆。    此外,还引入了Range头,使得客户端通过HTTP下载时只下载内容的一部分,这使得多线程下载也成为可能。    还有值得一提的是HTTP1.1 默认连接是一直保持的,这个概念我会在下文中具体阐述。

HTTP的网络层次

    在Internet中所有的传输都是通过TCP/IP进行的。HTTP协议作为TCP/IP模型中应用层的协议也不例外。HTTP在网络中的层次如图 1 所示。        图1.HTTP在TCP/IP中的层次    可以看出,HTTP是基于传输层的TCP协议,而TCP是一个端到端的面向连接的协议。所谓的端到端可以理解为进程到进程之间的通信。所以HTTP在开始传输之前,首先需要建立TCP连接,而TCP连接的过程需要所谓的“三次握手”。概念如图 2 所示。       图2.TCP连接的三次握手   在TCP三次握手之后,建立了TCP连接,此时HTTP就可以进行传输了。一个重要的概念是面向连接,既HTTP在传输完成之间并不断开TCP连接。在HTTP1. 1 中(通过Connection头设置)这是默认行为。所谓的HTTP传输完成我们通过一个具体的例子来看。    比如访问我的博客,使用Fiddler来截取对应的请求和响应。如图 3 所示。   图3.用fiddler抓取请求和相应    可以看出,虽然仅仅访问了我的博客,但锁获取的不仅仅是一个HTML而已,而是浏览器对HTML解析的过程中,如果发现需要获取的内容,会再次发起HTTP请求去服务器获取,比如图 2 中的那个common2.css。这上面 19 个HTTP请求,只依靠一个TCP连接就够了,这就是所谓的持久连接。也是所谓的一次HTTP请求完成。
更多相关内容:
    无相关信息
[!--temp.cy--]