http概述
HTTP
http1.0的会话方式:
四个步骤:
建立连接
发送请求信息
回送响应信息
关闭连接
浏览器与WEB服务器的连接过程是短暂的,每次连接只处理一个请求和响应。对每一个页面的访问,浏览器与WEB服务器都要建立一次的单独的连接。
浏览器到WEB服务器之间的所有通讯都是完全独立分开的请求和响应对。
HTTP1.1与HTTP1.0的比较
HTTP1.1的特点
在一个TCP连接上可以传送多个HTTP请求和响应
多个请求和响应过程可以重叠进行(不用等待上一次请求响应的的结束)
增加了更多的请求头和响应头
HTTP请求消息
请求消息的结构
一个请求行、若干消息头、以及实体内容、其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要空行隔开。
请求行:请求行用于描述客户端的请求方案。请求的资源名称,以及使用的HTTP协议版本号。
消息头:消息头用于描述客户端请求那台主机,以及客户端的一些环境信息。
HTTP响应消息
响应消息的结构
一个状态行、若干个消息头、以及实体内容,其中一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。
HTTP消息—>其他细节
响应消息的实体内容就是网页文件的内容,也就是在浏览器中使用查看源文件的方式所看到的内容。
一个使用GET方式的请求消息中不能包含实体内容,只能使用POST、PUT、和DELETE方式的请求消息中才可以包含实体内容。
对于HTTP1.1来说,如果HTTP消息中包括实体内容,且没用采用chunked传输编码方式,那么消息头部分必须包含内容长度的字段,否则,客户端和服务程序就无法知道实体内容何时结束。
在HTTP协议中,还可以使用简单的请求消息和响应消息,它们都没有消息头部分。简单的请求消息只能用于GET方式,且请求行中不能指定HTTP版本号。对于简单的请求消息,服务器放回简单的响应消息,简单的响应消息中之返回实体内容。
HTTP消息头
使用消息头,可以实现HTTP客户机与服务器之间的条件请求和应答,消息头相当于服务器和浏览器之间的一些暗号指令。
每个消息头包含一个头字段名称,然后依次是冒号、空格、值、回车和换行符。
消息头字段名是不区分大小写的,但习惯上将每个单词的第一个字母大写。
整个消息头部分中的各行消息头可按任意顺序排序。
消息头又可以分为通用消息头、请求头、响应头、实体头等四类。
许多请求头字段都允许客户端在值部分指定多个可接受的选项,多个项之间一逗号分隔。
有些头字段可以出现多次,例如,响应消息中可以包含多个“Warning”头字段。
HTTP协议详解
请求行与状态行
请求行
格式:请求方式资源路径HTTP版本号<CRLF>
举例:GET/test.htmlHTTP/1.1
请求方式:POST、HEAD、OPIONS、DELETE、TRACE、PUT
状态行
格式:HTTP版本号状态码原因描述<CRLF>
举例:HTTP/1.1200OK
使用GET和POST方式传递参数
在URL地址后面可以附加一些参数
GET
特点:传送的数据量是有限制的,一般限制在1KB一下
POST方式
举例:
特点:传递的数据量要比GET方式传递的数据量大得多。
响应状态码
响应状态码用于表示服务器对请求的各种不同处理结果和状态,他是一个三位的十进制数。响应状态码可归为5中类别,使用最高位为1到5来进行分类,如下所示;
1、100~199
表示成功接收请求,要求客户端继续提交下一个请求才能完成整个处理过程。
2、200~299
表示成功接收请求并已完成整个处理过程。
3、300~399
为完成请求,客户端需进一步细化请求。例如请求的资源已经移动一个新地址。
4、400~499
客户端的请求有错误
5、500~599
服务器端出现错误。
通用信息头
通用信息头字段既能用于请求消息,也能用于响应消息,它包括一些被传输的实体内容没有关系的常用消息头字段。
请求头
请求头字段用于在请求消息中向服务器传递附加信息,主要包括客户端可以接受的数据类型,压缩方法、语言、以及发出请求的超链接所属网页的URL地址等信息。
http常用请求头
Accept:用于告诉服务器,客户机支持的数据类型。
Accept-Charset:用于告诉服务器,客户机采用的编码
Accept-Encoding:用于告诉服务器,客户机支持的数据压缩格式
Accept-Language:客户机的语言环境
Host:客户机通过这个头告诉服务器,想访问的主机名
If-Modified-Since:客户机通过这个头告诉服务器,资源的缓存时间
Referer:客户机通过这个头告诉服务器,它是从那个资源来访问服务器的(防盗链)
User-Agent:客户机通过这个头告诉服务器,客户机的软件环境
Cookies:客户机通过这个头可以向服务器带数据
Connection:告诉服务器请求完是否保持连接
http常用响应头
Location:这个头配合302状态使用,用于告诉客户找谁
Server:服务器通过这个头,告诉浏览器服务器的类型
Content-Encoding:服务器通过这个头,告诉浏览器的数据压缩格式
Content-Length:服务器通过这个头,告诉浏览器回送数据的长度
Content-Language:服务器通过这个头,告诉浏览器回送的语言环境
Content-Type:服务器通过这个头,告诉浏览器回送的数据类型
Last-Modified:服务器通过这个头,告诉浏览器当前资源的最后缓存时间
Refresh:服务器通过这个头,告诉浏览器隔多长时间刷新一次
response.setHerder(“refresh”,“3;url=‘http://www.sina.com’”);
Content-Disposition:服务器通过这个头,告诉浏览器以下载方式打开
Transfer-Encoding:服务器通过这个头,告诉浏览器数据的传送格式
ETag:缓存相关的头
Expires:服务器通过这个头,告诉浏览器把回送的资源缓存多长时间,-1或0,则是不缓存
Cache-Control:no-cache
Pragma:no-cache
服务器通过以上这两个头,也是控制浏览器不要缓存数据
Http请求头字段
Range:range头指示服务器只传输一部分Web资源,这个头可以用于实现断点续传功能。Range字段可以通过三种格式设置要传输的字节范围;
Range:bytes=1000-2000
传输范围从1000到2000字节
Range:bytes=1000-
传输Web资源中第1000个字节以后的所有内容
Range:bytes=1000
传输最后的1000个字节
Http响应头字段
Accept-Ranges:这个字段说明Web服务器是否支持Range,则返回Accept-Range:bytes,如果不支持,则返回Accept-Ranges:none。
Content-Range:指定了返回的Web资源的字节范围,这个字段的格式是:例子:Content-Range:1000-3000/5000
实体头
实体头用作实体内容的元信息,描述了实体内容的属性,包括实体信息类型、长度、压缩方法、最后一次修改时间、数据有效期等。
Win7中telnet的使用
控制面板-程序-打开或关闭windows功能,在这里你可以看到许多服务项,选择telnet服务器和telnet客户端确定即可。
在控制面板-管理工具-服务中,找到telnet并且右键属性改为手动,再通过手动启动。
Telent输入telnetlocalhost8080
输入Ctrl+]键