一、HTTP概述
1.1 web客户端和服务器
常见的web客户端有浏览器和QQ等,客户端用于向服务器发送HTTP请求。
服务器接收客户端发送的请求,寻找请求中的资源,如果找到把资源放在响应内容中,发送响应到客户端。
1.2 媒体类型
HTTP协议中传输对象的标签(分类)就是媒体类型(MIME)
服务器会为HTTP对象数据附上此标签
常见的标签有:
1.3 URI和URL
URI就是服务器资源的地址,分为URL和URN两种,一般情况下都使用URL,所以也称URI为URL。
1.4 事务
一个事务实例演示一次完整的HTTP传输
1.客户端发送一个请求方法为“GET”,目标服务器地址为:www.jose-hardware.com,资源路径为:/specials/...gif,HTTP协议版本为1.0的请求。
2.服务器收到了客户端请求的,寻找目标资源,成功后把响应发送给客户端,响应对象包括: 状态码:200,响应对象MIME类型:image/gif,响应对象长度:8572,响应对象主体内容(gif资源)
1.5 状态码
每一条响应报文都有一个状态码,根据状态码可以获取用户请求的结果。
常见的状态码有:
100:表示临时响应,告诉客户端应该继续发送请求
200:表示服务器已经成功接受请求,并将返回客户端所请求的最终结果
202:表示服务器已经接受了请求,但是还没有处理,而且这个请求最终会不会处理还不确定
204:服务器成功处理了请求,但没有返回任何实体内容 ,可能会返回新的头部元信息
301:客户端请求的网页已经永久移动到新的位置
404:请求失败,客户端请求的资源没有找到或者是不存在
500:服务器遇到未知的错误,导致无法完成客户端当前的请求
503:服务器由于临时的服务器过载或者是维护,无法解决当前的请求
1.6 报文
HTTP的报文就是HTTP对象的内容
请求报文:
1.请求行:请求的方法(GET、POST),访问的资源路径(不包括服务器地址)
2.请求头:
Host: 主机名
User-Agent: 浏览器基本资料
Accept: 浏览器能够识别的响应类型
Accept-Language: 浏览器默认语言
Accept-Encoding: 浏览器能够识别的压缩方式
Referer: 来路页面,保存跳转信息
Connecton:是否保持连接
3.请求数据:包括请求的参数等
响应报文
1.响应状态行:说明响应情况
2.响应头:
Content-Length: 表示长度
Content-Type: 内容格式
Date: 日期
Server: 服务器类型
3.响应正文:响应对象的内容
1.7 连接
HTTP处于应用层,往下调用TCP层的接口。
TCP层具有:无差错传输;按序传输;未分段数据流(可以放入任意长度的数据块)的特点
要使用HTTP协议进行传输,先要在客户端和服务端之间建立一条TCP连接,TCP连接需要服务器的IP地址和对应应用的端口号,可以通过URL获取。
获取TCP连接有三种情况
1.URL:202.232.232.125:80 可以直接获取到TCP连接
2.URL:www.baidu.com:80 可以把域名通过DNS服务转换成IP
3.URL:www.baidu.com 默认端口号为80
1.8 Web的结构组件
代理是web安全、应用集成及性能优化的重要组成模块
代理位于客户端和服务器之间,接收所有客户端的http请求,并将这些请求转发给服务端,对于用户来讲,这些程序就是代理,代表用户来访问服务端。
web cache(缓存)是一种特殊的http代理服务器,可以将经过代理传送的常用文档复制保存起来。下一次请求同一个文档的客户端就可以享受缓存的私有副本所提供的服务。
网关:链接其他应用程序的特殊web服务器
可以理解为通过一个关卡来到另外一个地方(服务端),而这期间作为用户来讲可能并不知道自己走了网关这个路径。
隧道是对http通信报文进行盲转发的特殊代理
隧道例子:借用http协议把自己的数据包通过80端口转发,因为一般防火墙都开了80端口的。同理就还有其他隧道。
Agent代理是代表用户发起http请求的客户端程序,常见的例子是浏览器