Http协议:客户端与服务器建立连接后,若想获取web服务器中的某个资源,需要遵守一定的通信格式,Http协议用于定义客户端与web服务器通信的格式。
http协议的特征:
- 基于TCP传输协议【osi七层网络体系结构 物理层 数据链路层 网络层 传输层 表示层 会话层 应用层】TCP协议是传输层协议,而http协议是应用层的协议,可以说http协议比TCP协议更高级。
- 默认80端口
- 基于请求相应模式的协议【先出现请求,后出现响应】
http协议的内容:
【附:TCP采用三次握手来建立连接:
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认
第二次握手:服务器收到syn包,必须确认客户的syn(ack+1),同时自己也发送一个syn(syn=k)包,即syn+ack包,此时服务器进入SYN_RECV状态
第三次握手:客户端收到服务器端的syn+ack包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端与服务器端进入ESTABLISHED状态,完成三次握手
】
Http1.0与Http1.1的区别1
1.0中客户端与服务器建立连接后,一次只能获得一个资源
1.1中一次连接,可以连续获得多个资源
Http(Hypertext transfer protocal(超文本传输协议))是TCP/IP协议的一个应用层协议,用于定义web客户端与web服务器传输数据的过程。
Http与html的关系
http是通信协议 规定数据传输的格式 html是网页设计语言,可以理解为是一种静态数据
http协议:基于请求响应的协议。
1.请求
请求的完整格式包括三部分 1.请求行 2.头信息 3.请求体
请求行:请求中的第一行信息【包含三部分:1.请求方式 2.请求资源的路径 3.协议版本】
请求方式有七种:POST[数据在请求体中,没有数据大小的限制] GET HEAD OPTIONS DELETE TRACE PUT
请求体和头信息之间存在一个空行
头信息:很多的key-value值
Accept:text/html,image/* [客户端可以接受的文件类型,HTML文件,任意格式图片]
Accept—Charset:ISO-8859-1 [客户端可以识别的编码字符集]
Accept-Encoding:gzip [客户端可以识别的压缩格式]
Accept-Language:zn-ch [客户端浏览器的语言]
Host [服务器地址]
If-Modified-Since:Tue,11 Jul 2000 18:25:34 CMT [该请求的资源在客户端保存的最后访问时间]
Referer:http://www.baidu.com/index.jsp [上一次访问页面地址] 《防止客户盗链数据【盗链:其他数据直接获取其他网站的数据】》
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) ---- 客户端浏览器类型版本
Connection: close/Keep-Alive ---- 该次请求连接后,连接是保持还是关闭 1.0 关闭 1.1 保持
Date: Tue, 11 Jul 2000 18:23:51 GMT ---- 请求时间
模拟客户端访问服务器,获取服务器中一个servlet的信息:
1、url连接:使用http协议
2、socket连接:使用的是tcp协议
请求体:存放客户端提交post请求数据
就是post方式提交的表单数据以key-value的形式放在请求体中
2.响应
响应的数据分为3个部分 1.状态行 2.头信息 3.响应体
状态行:分为三个部分【1.http协议版本 2.状态码 3.原因描述】
头信息【响应头】
Location: http://www.it315.org/index.jsp [重定向地址,俩次请求,俩次响应]
Server:apache tomcat ----- 服务器类型
Content-Encoding: gzip ---- 设置响应数据压缩格式 ---- 请求 Accept-Encoding
* 如果响应数据经过压缩 传输体积更小,性能更好
没有压缩情况下 13605字节 http://localhost/docs/
如何设置tomcat压缩
* 通过设置 tomcat/conf/server.xml 设置响应数据压缩
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" compressableMimeType="text/html,text/xml,text/plain" compression="on"/>
* 清除浏览器缓存,重启tomcat
4244字节 http://localhost/docs/
Content-Length: 80 ----- 响应数据长度
Content-Language: zh-cn ----- 响应数据语言
Content-Type: text/html; charset=GB2312 ----- 响应数据类型
* 数据类型采用Mime协议规定类型 html文件 ---- text/html、 jpg文件---- image/jpeg
* 在 tomcat/conf/web.xml 中查看文件mime类型
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT ----- 和请求头信息 If-Modified-Since一起使用,控制服务器缓存
* ETag: W/"13397-1184876416000" tomcat生成Etag 13397文件大小 1184876416000文件最后修改时间(精确毫秒)
* 客户端下次请求时通过If-None-Match 携带刚刚 Etag信息
Refresh: 1;url=http://www.it315.org ----- 网页自动跳转
Content-Disposition: attachment; filename=aaa.zip ----- 文件下载时指定文件附件名称
控制该程序在客户端不缓存
Expires: -1
Cache-Control: no-cache
Pragma: no-cache
* 对于动态程序,经常修改, 禁止浏览器缓存内容
Connection: close/Keep-Alive ---- 响应后连接是否关闭
Date: Tue, 11 Jul 2000 18:23:51 GMT --- 响应时间