- 1
- 0
- 约5.35千字
- 约 13页
- 2018-02-19 发布于浙江
- 举报
HTTP协议的漫谈
HTTP协议漫谈简介园子里已经有不少介绍HTTP的的好文章。对HTTP的一些细节介绍的比较好,所以本篇文章不会对HTTP的细节进行深究,而是从够高和更结构化的角度将HTTP协议的元素进行分类讲解。HTTP的定义和历史在一个网络中。传输数据需要面临三个问题:1.客户端如何知道所求内容的位置?2.当客户端知道所求内容的位置后,如何获取所求内容?3.所求内容以何种形式组织以便被客户端所识别?对于WEB来说,回答上面三种问题分别采用三种不同的技术,分别为:统一资源定位符(URIs),超文本传输协议(HTTP)和超文本标记语言(HTML)。对于大多数WEB开发人员来说URI和HTML都是非常的熟悉。而HTTP协议在很多WEB技术中都被封装的过多使得HTTP反而最不被熟悉。HTTP作为一种传输协议,也是像HTML一样随着时间不断演进的,目前流行的HTTP1.1是HTTP协议的第三个版本。HTTP 0.9HTTP 0.9作为HTTP协议的第一个版本。是非常弱的。请求(Request)只有一行,比如:GET 从如此简单的请求体,没有POST方法,没有HTTP 头可以看出,那个时代的HTTP客户端只能接收一种类型:纯文本。并且,如果得不到所求的信息,也没有404 500等错误出现。虽然HTTP 0.9看起来如此弱,但已经能满足那个时代的需求了。HTTP 1.0随着1996年后,WEB程序的需求,HTTP 0.9已经不能满足需求。HTTP1.0最大的改变是引入了POST方法,使得客户端通过HTML表单向服务器发送数据成为可能,这也是WEB应用程序的一个基础。另一个巨大的改变是引入了HTTP头,使得HTTP不仅能返回错误代码,并且HTTP协议所传输的内容不仅限于纯文本,还可以是图片,动画等一系列格式。除此之外,还允许保持连接,既一次TCP连接后,可以多次通信,虽然HTTP1.0 默认是传输一次数据后就关闭。HTTP 1.12000年5月,HTTP1.1确立。HTTP1.1并不像HTTP1.0对于HTTP0.9那样的革命性。但是也有很多增强。首先,增加了Host头,比如访问我的博客:GET /Careyson HTTP/1.1Host: 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请求完成。HTTP请求(HTTP Request)所谓的HTTP请求,也就是Web客户端向Web服务器发送信息,这个信息由如下三部分组成:1.请求行2.HTTP头3.内容一个典型的请求行比如:GET HTTP/1.1请求行写法是固定的,由三部分组成,第一部分是请求方法,第二部分是请求网址,第三部分是HTTP版本。第二部分HTTP头在HTTP请求可以是3种HTTP头:1.请求头(request header) 2.普通头(general header) 3.实体头(entity header)通常来说,由于Get请求往往不包含内容实体,因此也不会有实体头。第三部分内容只在POST请求中存在,因为GET请求并不包含任何实体。我们截取一个具体的Post请求来看这三部分
您可能关注的文档
- FlightGear的2016.4.1+VS2015编译指南.pdf
- float变量在内存当中存的储格式.docx
- Fireworks_8的图像制作.ppt
- FMEA--潜在失的效模式及后果分析.doc
- FMEA - 潜在失效模式及后果分析 Ver.4(2008.的6).pdf
- FMEA潜在失效模式及其起的因分析.ppt
- Fl的ash课件第五章.ppt
- FOXBORO-OPC-SERVER的安装的配置.ppt
- FPGA的与硬件描述语言_第三章_VHDL硬件描述语言4.pptx
- FPGA的常用调试技术.ppt
- 03-2 2025年度民主生活会征求意见座谈会主持词.docx
- 03-1 2025年度民主生活会主持讲话提纲.docx
- 02-1 会前学习-《县以上党和国家机关党员领导干部民主生活会若干规定》相关要求.docx
- 在2025年度民主生活会上的总结讲话三篇.docx
- 在2025年度民主生活会上的总结讲话三篇 (3).docx
- 市委宣传部2025年度民主生活会查摆问题整改方案两篇.docx
- 在市行政审批和政务信息管理局机关2026年全体干部政绩观教育大会上的党课讲稿.docx
- X市应急管理局2026年度安全生产监督检查计划.docx
- 2025年度民主生活会领导班子对照检查材料(五个带头)三篇.docx
- 2025年度民主生活会“五个带头”个人对照检查材料三篇.docx
原创力文档

文档评论(0)