http协议-java

web开发 必须先 熟悉 http协议 
客户端和服务器建立通信连接后,进行数据交互,使用协议进行交流 

HTTP协议特征
1、基于TCP传输协议 
OSI七层网络体系结构 : 物理层、数据链路层、网络层、传输层、表示层、会话层、应用层 
TCP 是 传输层 协议
HTTP 是 应用层协议 基于TCP 协议 

TCP特征 : 三层握手 
1)、A给B 说话: 能听到我说话吗?
2)、B回应:我能听到,能听到我说话吗?
3)、A回应:我也能听到 
确保通信畅通的 ---- 数据传输不允许丢包 
A 给 B 发数据,如果B 没有回应,A 选择重新发送  ----- 超时 

2、默认端口80  省略端口  http://www.itcast.cn 省略 :80

3、基于请求-响应模式的协议
先请求,再出现响应  ---- 请求和响应 一一对应 

实验一 : 通过telnet 连接服务器,进行协议操作 
XP 自动安装telnet 
win7 系统 安装telnet插件 
* telnet 采用 传输层连接原理方式  通信内容必须严格按照应用层协议 
语法:telnet ip port 
1、 cmd> telnet localhost 80 
2、手动输入HTTP协议请求 
telnet乱码解决:ctrl+] 回车
3、输入协议内容
GET / HTTP/1.0
HOST: localhost
回车

实验二  : 安装Httpwatch
完成访问web页面时 http协议数据包 抓取 

查看网络连接过程中 http协议内容 

请求内容

GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*
Accept-Language: zh
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
Host: localhost
Connection: Keep-Alive

响应内容

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
ETag: W/"7347-1184876416000"
Last-Modified: Thu, 19 Jul 2007 20:20:16 GMT
Content-Type: text/html
Content-Length: 7347
Date: Sat, 09 Jun 2012 07:02:35 GMT

<?xml version="1.0" encoding="ISO-8859-1"?>

...


HTTP 和 HTML 关系 ?
HTTP 通信协议 规定数据传输格式
HTML 网页设计语言,静态网页数据 

HTTP 传输格式 、HTML 传输内容 

HTTP/1.0、HTTP/1.1 区别?
1.0 一次 与服务器连接 只能获得一个资源 
1.1 一次与服务器连接 ,连续获得多个资源 

思考题:
一个web页面中,使用img标签引用了三幅图片,当客户端访问服务器中的这个web页面时,客户端总共会访问几次服务器,即向服务器发送了几次HTTP请求。
* 三幅图片地址是否相同 
如果三幅图片地址都不相同 --- 4次请求

第一部分 HTTP 请求
请求完整格式 包括三个部分 : 请求行、头信息、请求体 

1、请求行:请求中第一行信息  ---- 包括三个部分 请求方式、资源路径、HTTP协议版本
例如: GET / HTTP/1.1 
HTTP请求方式有几种 : POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT
常用两种: GET 、 POST 

客户端网页哪些是GET方式请求? 哪些是 POST 请求
GET方式 :1、用户直接在浏览器上手动输入url地址  2、<a href="url"></a>  3、<form method="get" > *form表单默认提交方式就是get 
POST方式: 1、<form method="post" >

GET提交方式和POST提交方式区别 ?
Get url地址后携带数据有大小限制 1K ,提交数据在url上显示 
* http://localhost/day04/url?username=zhangsan 格式 url?name=value&name=value&name=value... 
以?分隔url和参数,参数采用键值对格式,多个参数使用& 符合分隔

POST 数据在请求体中,不在url上显示 ,没有数据大小限制 
* username=zhangsan 请求体和头信息直接存在一个空行 

2、头信息: 很多key -value 
Accept: text/html,image/*   ----- 客户端可以接收文件类型 text/html HTML文件 image/* 任意格式图片
Accept-Charset: ISO-8859-1 ----- 客户端可以识别编码字符集  
Accept-Encoding: gzip -----  客户端可以识别压缩数据格式 gzip是一种压缩格式 
Accept-Language:zh-cn ----- 客户端浏览器语言 
Host: www.itcast.com:80  ----- 访问服务器地址 
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT ----- 该请求的资源在客户端保存最后访问时间 (缓存有关)
Referer: http://www.itcast.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 ---- 请求时间 

******* Accept-Encoding 、If-Modified-Since 、Referer 

Referer 防止客户盗链数据 :通过google搜索页面直接下载 其它网站数据 (盗链)

模拟浏览器访问服务器 获得 refererServlet当中信息
1) URL 连接 ---- HTTP协议
2) Socket 连接 ----- TCP协议 


3、请求体: 存放客户端提交post 请求 数据
key=value&key=value&key=value ....   
例如 : username=sss 


第二部分 HTTP响应
响应数据 分为三个部分 :状态行、头信息、响应体 
1、状态行 分为三个部分: HTTP协议版本、状态码、描述信息
例如: HTTP/1.1 200 OK 
100199 Informational  请求信息不足 ,还需要其他信息才能处理
200299 Success  请求处理成功
300399 Redirection 服务器已经处理完毕,客户端还需要进一步动作
400499 Client Error  客户端错误
500599 Server Error  服务器端错误

200 请求处理成功 302 客户端进行重定向 304 客户端访问资源没有被修改后,客户端访问本地缓存 404 访问资源不存在 500 服务器内部出错
借钱
200  A 找 B 借钱 B 将钱 借个A 
302  A 找 B 借钱 B 通知 A 找C 借钱 --- A 找C 借钱
304  A 找 B 借钱 , B对A 说 借过了 --- A 使用 之前从B 借的钱
404  没钱
505  B 不存在了 

2、响应头 
Location: http://www.it315.org/index.jsp ---- 重定向地址 结合 302 一起使用 
* 重定向 两次请求 两次响应 
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 --- 响应时间 

重点:302结合Location进行重定向 、在tomcat配置gzip压缩 、tomcat缓存策略 、禁止浏览器缓存 

3、响应体
通常HTML 文件内容  ---- 如果设置响应体进行gzip压缩,看到gzip压缩内容

-------------------------------------------------------------------------------------------------
通过HTTP协议Range头信息 实现断点下载功能 
在连接服务器目标资源进行下载过程中,传递Range头信息, 指定下载目标资源部分内容 ---- 实现断点下载功能 

使用URL类 模拟客户端访问 WebRoot/info.txt 下载文件中内容


小结:
1、Tomcat安装配置 ---- 修改端口 、掌握tomcat启动问题解决(一闪就没 pause,端口占用 netstat -ano)
2、tomcat 理论细节 Tomcat和JAVAEE、Servlet、JDK版本对应关系 、Tomcat目录结构、标准网站目录结构 
3、虚拟目录映射三种方式 
4、虚拟主机配置(虚拟主机DNS解析过程) ----配置缺省虚拟目录,配置欢迎页面、 配置虚拟主机
5、在MyEclipse中 使用Tomcat 
6、HTTP 请求方式几种? GET和POST区别?
7、HTTP 协议头信息 Referer防盗链案例、Location重定向、tomcat的gzip配置、tomcat缓存策略、禁止浏览器缓存
8、Range断点下载 了解即可 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值