http://blog.csdn.net/sql_wtx/article/details/8894447
原文是http://net.tutsplus.com/tutorials/tools-and-tips/http-the-protocol-every-web-developer-must-know-part-1/,翻译这面文章的目地是为了更加深刻的了解HTTP协议。现在web技术日新月异,只有对其协议了解清楚,才能更快、更稳固掌握这些新技术。由于文章很长,我会分成几篇博客来翻译,文章里面也加上我的个人理解,如有什么不对的地方,欢迎指出,在此谢谢了!
译文如下:
HTTP全称是超文本传输协议(Hypertext Transfer Protocol).它是一种无国籍的,分布式系统之间通讯的应用层协议,是现代web的基础。作为一个web开发人员,我们必须对这种协议非常熟悉。
让我们通过一个web开发镜头来回顾这种强大的协议。我们将用两个部分来解决这个问题。在第一个条目,我们讲涉及到各种请求和应答的基础和概要。在后台的文章里,我们将回顾HTTP的特殊要点,及缓存、连接处理和验证。
HTTP基础
HTTP允许各种各样的主机和客户端之间相连,而且支持混合的网络构架。这使HTTP作为一个无国籍的协议。通讯一般是通过TCP/IP来发生,但是任何可信赖的端口都能被用。一般TCP/IP的端口是80,但是其它端口也可以被用。
通过一对请求和应答,主机和客户端发生了通讯。客户端发出一个HTTP请求消息,服务端通过HTTP应答消息进行返回。我们将在下面章节来看看一对基础消息。
目前协议的版本是HTTP/1.1,在1.0版本基础添加了一些新特性。在我的观念里, 最有用的是 persistent connections(长连接), chunked transfer-coding (分块传输编码)和fine-grainedcaching headers(细粒度缓存头).在后面,我们将了解这些知识。
URLs
Web通讯的核心是请求消息,通过URLs来发送。我确定你对URLs已经熟悉了,只是没有完全掌握。下面是URLs的结构组成:
这个协议一般是http,但是是安全连接的话就是https。默认端口是80,这个可以如上图一样自定义。资源路径(resource path)就是服务器上本地路径。
动作(Verbs)
URLs是主机的唯一通讯标示,但需要通过HTTP动作在服务器上来执行操作。当然,这些操作是客户端想要服务端来执行。
请求动作如下:
- GET: 获取已存在的资源,URLs包含了所有服务需要返回的资源信息。
- POST: 建立一个新资源。POST请求通常来为新资源带来有效的数据。
- PUT: 更新已经存在的资源。PUT请求包含了资源的更新数据。
- DELETE: 删除已存在的资源。
以上几种动作是最常见的,大多数工具和框架都显示这些请求动作。PUT和DELETE有时被认为是POST的特殊版本,开发者有可能在POST请求里包含了操作数据:create,upadte和delete,从而用POST来替代了PUT和DELETE。
译者注:我以前基本只用post和get,在post里多添加一个action字段,来表示新建、修改、删除。但后面接触了RESTful架构,发觉HTTP的4种操作get、post、put、delete就是对应了我们经常碰到的增、删、改、查功能。通过对http协议的了解,有助于我们对其它知识的扩展,如RESTful、Ajax、长连接等等,其实就是对http协议的应用,而不是什么新鲜事物。
下面还有几种很少用到的HTTP动作:
- HEAD: 用HEAD请求的话,服务器返回的只是响应标题,而不会返回被请求的文档,一般用于搜索引擎。或者通过时间戳来判断资源是否被修改。
- TRACE:用于诊断目地,通过header字段来获取网关和代理的ip和dns。
- OPTIONS:用于客户端查看服务器的能力。