1.什么是HTTP
HTTP是一种可靠的数据传输协议,也叫超文本传输协议。能够用来在客户端和服务器之间进行数据传输。由于它是一种可靠的数据传输协议,所以我们不用担心在数据传输过程中数据被损毁或产生混乱。
2.Web客户端和服务器
HTTP协议使用来在Web客户端和服务器进行数据传递的。它们共同构成了万维网的基本组建。客户端发起HTTP请求,服务器在HTTP响应中返回所请求的数据。
3.资源
Web服务器是Web资源的宿主。Web资源是Web内容的源头。Web资源包括静态文件,如文本文件、html文件、jpeg文件等,也包括根据需要生成内容的软件程序,这些动态资源可以根据实际情况来生产不同的内容。总之,所有类型的内容来源都是资源。如网络摄像机网关、股票交易网关、搜索引擎。
3.1 媒体类型
数据的MIME类型,当浏览器从服务器拿到数据时,根据MIME类型来决定如何处理数据。MIME类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔。
HTML格式的文本文档由text/html类型来标记
普通的ASCII文本文档由text/plain类型来标记
JPEG版本的图片为image/jpeg类型
微软的PowerPoint演示文件为application/vnd.ms-powerpoint类型
3.2 URI
服务器的资源名被称作统一资源标识符(Uniform Resource Identifier,URI)。URI就像因特网上的邮政地址一样,在世界范围内唯一并定位信息资源。
如:http://img2.imgtn.bdimg.com/it/u=395920684,863299018&fm=21&gp=0.jpg
URI有两种形式,分别称为URL和URN。
3.3 URL
统一资源定位符(URL)是资源标识最常见的形式。URL描述了一台特定服务器上某资源的特定位置。
大部分URL都遵循一种标准格式,这种格式包含三个部分。
URL的第一部分方案(scheme)。用来说明访问资源所使用的协议类型,通常就是HTTP协议(http://)。
第二部分是服务器的地址,如www.joes-hardware.com。
其余的部分指定Web服务器上某个资源的位置,如/specials/saw-blade.gif。
3.4 URN
统一资源名,被作为特定内容的唯一名称来使用,与资源所在地无关。通过URN,可以用同一个名字通过多种网络访问协议来访问资源。
比如,因特网标准文档RFC2414可以用URN来命名为urn:ietf:rfc:2414
URN处于试验阶段,还未大范围使用。
4.事务
一个HTTP请求和响应一起被称作一个HTTP事务。如图:
4.1 方法
HTTP支持不同的命令,这些命令叫HTTP方法(method)。每个HTTP请求都包含一个方法。服务器通过这些方法来执行响应的动作。常见的HTTP方法如下:
HTTP方法 描述
GET 从服务器获取资源
PUT 将来自客户端的数据存储到一个命名的服务器资源中去
DELETE 从服务器中删除资源
POST 将客户端的数据发送到服务器
HEAD 仅发送命名资源响应中的HTTP首部
4.2 状态码
每条HTTP响应都会携带一个状态码,用来告知客户端服务器处理请求的结果。
每个状态码,还对应一个解释性的“原因语句”文本。用来描述处理结果。
5.报文
报文分为请求报文和响应报文。报文分包括三个部分
起始行
报文的第一行就是起始行,在请求中用来说明要服务器进行那种操作,在响应报文中说明出现了什么情况。
首部字段
起始行后有零个或多个首部字段,以key:value的形式出现。首部以一个空行结束
主体
空行后就是报文的主题。包含所有类型的数据。
6.连接
HTTP是应用层协议,传输层使用TCP传输控制协议提供可靠的数据传输。当然要在客户端和服务端进行通信,还需要IP地址和端口号,所以在URL中需要指定IP或者端口号,通常默认端口号就是80,当然也可以是其他的端口号,关于IP地址,我们使用域名来通过DNS域名解析服务来解析成IP。
7.协议版本
HTTP的版本有0.9、1.0、1.0+、1.1、2.0。目前使用的协议版本是1.1。
8.Web的结构组建
代理 位于客户端和服务器之间的HTTP中间实体
缓存 HTTP仓库,使常用页面的副本可以保存在离客户端更近的地方。
网关 连接其他应用程序的特殊Web服务器
隧道 对HTTP同学报文进行盲转发的特殊代理
Agent代理 发起自动HTTP请求的半智能Web客户端