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+]键

相关推荐