HTTP通信机制是在一次 完整的HTTP 通信 过程 中 ,WEB浏览器 与 WEB 服务器 将完成 下列 七个步骤:
1. 建立TCP连接
在HTTP开始工作之前,web浏览器 首先 要通过 网络 与 web 服务器 建立连接 ,该连接 是通过 TCP 来完成的,TCP协议 与 IP协议 共同 构建 Internet,即著名的TCP/IP协议族,因此Internet又被称为是 TCP/IP网络。HTTP 是比 TCP更高层次的 应用层 协议,根据 规则 ,只有底层协议建立成功之后,才能进行更高层协议的连接。因此,首先要建立TCP连接,一般TCP连接的端口号是80
2. Web浏览器向web服务器发送请求命令
一旦建立了TCP连接,web浏览器就会向web服务器发送请求命令,例如:GET/sample/hello.jsp HTTP/1.1。
3. Web浏览器发送请求头信息
浏览器发送请求命令之后,还要以头信息的形式向 服务器发送 一些别的信息,之后浏览器会通过发送一空白行 来通知 服务器,它已经结束了该 头消息 的发送。
4. Web服务器应答
客户端向服务器发送请求后, 服务器会向客户端回送应答 ,HTTP/1.1 200 OK,应答的第一部分 是 协议的版本号 和 应答状态
5. Web服务器发送应答头信息
如同客户端 会随同 请求 发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档,也会以一个空白行来结束应答头信息的发送。
6. Web服务器向浏览器发送数据
紧接着就会按照 刚才发送给浏览器的应答头中 Content-Type 描述的数据格式 发送用户所请求的实际数据。
7. Web服务器关闭TCP连接
一般情况下,一旦web服务器向浏览器发送了它所请求的数据之后,就会关闭TCP连接,但是如果浏览器或者服务器在其头信息中加入了这行代码:Connection:keep-alive。这样TCP连接在发送后 将仍然保持 打开的状态,于是,浏览器可以在这个连接上继续发送请求,保持连接 节省了为每个请求建立新连接所需的时间,还节约了网络宽带.
HTTP的请求信息由3部分组成
1. 请求方法(GET\POST)、URL 、协议/版本
2. 请求头(Request Header)
3. 请求正文
1. 请求方法、URL、协议/版本
2. 请求头
下面截取一个请求头的信息,方便理解:
l Content-Type:在请求头中,表示后面的文档属于什么MIME类型。在响应头中,是非常重要的内容,原则上说浏览器会根据 content—type来决定如何显示返回消息的主体内容。
l Host:指定请求资源的Interenet主机号和 端口号,必须表示请求url的原始服务器或者网关位置
l Accept:浏览器可以接受的MIME类型
l ACCEPT-Charset:浏览器可接受的字符集
l Accept-Encoding:浏览器能够进行编码的数据编码方式,比如gzip,servlert能够向支持gzip的浏览器返回经gzip编码的HTML页面,许多情形下可以减少5-10倍的下载时 间。
l Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本的时要用到
l Connection:表示是否需要持久连接
l Connection-Length:表示请求消息的正文长度
l Cookie:重要的请求头信息之一
l User-Agent:浏览器的类型
常见的MIME类型:
- text/html : HTML格式
- text/plain :纯文本格式
- text/xml : XML格式
- image/gif :gif图片格式
- image/jpeg :jpg图片格式
- image/png:png图片格式
以application开头的媒体格式类型:
- application/xhtml+xml :XHTML格式
- application/xml : XML数据格式
- application/atom+xml :Atom XML聚合格式
- application/json : JSON数据格式
- application/pdf :pdf格式
- application/msword : Word文档格式
- application/octet-stream : 二进制流数据(如常见的文件下载)
- application/x-www-form-urlencoded : <form encType=””>中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)
另外一种常见的媒体格式是上传文件之时使用的:
- multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式