javhd观看教程

2019-07-01 20:50:40    来源:星岛中文网

超文本传输协议(HTTP,Hypertext Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的Web文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force)共同合作研究,最终发布了一系列的RFC文档,其中著名的RFC 2616定义了HTTP 1.1。

HTTP基于TCP/IP通信协议来传递数据,HTTP属于OSI网络七层协议模型中的最上层:应用层,由请求和响应组成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。HTTP协议的版本有0.9、1.0、1.1和2.0,目前广泛使用的是1.1版本。

HTTP默认端口号为80。它也可以承载在TLS和SSL之上,通过加密、认证的方式实现数据传输的安全,称为HTTPS,HTTPS默认端口号为443。

HTTP协议具有以下特点:

● 简单快速,客户端向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET和POST。每种方法规定了客户与服务器联系时的类型。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

● 灵活,HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

● 无连接,无连接的含义是限制每次连接只处理一个请求。服务器处理完成客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

● 无状态,HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重新传送数据,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要之前的信息时它的应答就比较快。

HTTP协议规定了Web的基本运作过程,以及浏览器与Web服务器之间的通信细节。客户端主动发出HTTP请求,服务器端接收HTTP请求,再返回相应的HTTP响应结果。客户端与服务器端之间的一次信息交换包括以下过程:

● 客户端与服务器端建立TCP连接。

● 客户端发出HTTP请求。

● 服务器端发出响应的HTTP响应。

● 客户端与服务器端之间的TCP连接关闭。

当用户在浏览器中输入URL地址:http://www.itxdl.cn后,浏览器与服务器之间的具体通信过程如下:

● 浏览器与网络上域名为www.itxdl.cn的Web服务器建立TCP连接。

● 浏览器发出要求访问index.html(网站主页,欢迎页)的HTTP请求。

● Web服务器在接收到HTTP请求后,解析HTTP请求,然后发回包含index.html文件数据的HTTP响应。

● 浏览器在接收到HTTP响应后,解析HTTP响应,并在窗口中展示index.html文件。

● 浏览器与Web服务器之间的TCP连接关闭。

当用户在上面的网站页面中用鼠标点击“JavaEE工程师”的超链接时,将会触发浏览器与Web服务器开始一次新的HTTP通信,在这次通信过程中,浏览器会发出请求访问“JavaEE工程师”页面的HTTP请求。

从浏览器与Web服务器的通信过程中,可以看出浏览器应该具备以下功能:

● 请求与Web服务器建立TCP连接。

● 创建并发送HTTP请求。

● 接收并解析HTTP响应。

● 在浏览器窗口中展示HTML文档。

Web服务器应该具有以下功能:

● 接收来自客户端浏览器的TCP连接请求。

● 接收并解析HTTP请求。

● 创建并发送HTTP响应。

HTTP客户端程序和HTTP服务器分别由不同的软件开发商提供,目前最常使用的HTTP客户端程序包括IE(Microsoft Edge)、Firefox、Opera和NetScape、Chrome等,最常用的HTTP服务器包括IIS和Apache等。HTTP客户程序和服务器程序都可以用任意的编程语言编写,那么用VC编写的HTTP客户程序能否与用Java编写的HTTP服务器顺利通信呢?答案是肯定的。此外,运行在Windows平台上的HTTP客户程序能否与运行在Linux平台上的HTTP服务器通信呢?答案也是肯定的。

HTTP客户程序和服务器程序分别用不同的语言编写,并且运行在不用的平台上,双方如何能看得懂对方的数据呢?这要归功于HTTP协议。HTTP协议严格规定了HTTP请求和HTTP响应的数据格式,只要HTTP服务器与客户程序之间的交换数据都遵守HTTP协议,双方都能看得懂对方发送的数据,从而能顺利交流。

HTTP协议由两部分组成,分别是请求部分和响应部分。

1.3.2 HTTP协议中的请求

客户端连接上服务器端后,向服务器端请求某个Web资源,称之为客户端向服务器端发送了一个HTTP请求。

一个完整的HTTP请求包含以下内容:

● 请求行

● 请求头

● 请求空行

● 请求体

一个HTTP请求的示例:

POST /servlet/login.html HTTP/1.1

Host: localhost:8088

Content-Length: 21

Cache-Control: max-age=0

Accept: text/html,application/xhtml+xml,application/xml; q=0.9,image/webp, */*;q=0.8

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64)

Content-Type: application/x-www-form-urlencoded

Accept-Encoding: gzip,deflate,sdch

Accept-Language: zh-CN,zh;q=0.8

name=snape&pwd=123456

现在我们分析上面请求示例中各部分的内容:

● 请求行

HTTP请求中的请求行描述了请求方法,请求的服务器地址以及所使用的HTTP协议版本。

上面的HTTP请求实例中,位于请求行中的POST称之为请求方式,HTTP协议中定义的请求方式如表1.1所示:

表1.1 HTTP协议中定义的请求方式

用户如果没有设置,默认情况下浏览器向服务器发送的都是GET请求,例如在浏览器中直接输入地址访问,点击超链接访问等都是GET请求,用户如果想把请求方式改为POST,可通过更改表单的提交方式实现。

不管POST还是GET,都用于向服务器端请求某个Web资源,这两种方式的区别会在本书的1.3.4小节中进行详细的介绍。

在请求行中,请求方式之后的是URL地址和HTTP协议的版本。它们之间使用空格分隔。

● 请求头

HTTP请求中的请求头由一个个的键值对组成,是用来通知服务器有关客户端的信息的。HTTP请求中常用以下的请求头来告诉服务器一些信息:

(1)Accept:浏览器可接受的MIME类型。

(2)Accept-Charset:浏览器可接受的字符集。

(3)Accept-Encoding:浏览器能够进行解码的压缩格式。

(4)Accept-Language:浏览器所处的语言环境环境。

(5)Host:浏览器通过这个头告诉服务器想访问哪台主机。

(6)Content-Length:表示请求消息的正文长度。

(7)Content-Type:表示请求的MIME类型。

(8)User-Agent:表示浏览器的标识信息。

(9)Cache-Control:标识浏览器缓存机制。

● 请求空行

在HTTP请求的请求头和请求体之间,使用了一个请求空行用来分隔,告诉服务器端已经没有请求头信息了。即使请求体中没有内容,也必须有一个请求空行

● 请求体

请求体用来向服务器发送数据信息,使用“key=value&key=value”的形式,在GET请求中,请求体是空的,GET请求的数据信息在请求行中的URL地址中进行拼接。

1.3.3 HTTP协议中的响应

一个HTTP响应代表了服务器端向客户端返回的数据,一个HTTP完整的响应包含了以下内容:

● 响应行

● 响应头

● 响应体

一个HTTP响应的示例:

HTTP/1.1 200 OK

Server: Apache-Coyote/1.1

Last-Modified: Thu, 08 Sep 2016 12:59:41 GMT

Content-Type: text/html

Content-Length: 588

Date: Thu, 08 Sep 2016 12:59:54 GMT

这是一个HTML页面

现在我们分析上面响应示例中各部分的内容:

● 响应行

以及HTTP响应中的响应行用于描述服务器端对请求的处理结果,其中包括了HTTP协议的版本号已经响应状态码信息,状态码用于表示服务器对请求的处理结果。

响应状态码由三位十进制数字组成,第一个十进制数定义了状态码的类型,后两个数字没有分类的作用。响应状态码共分为5中类型,如下表1.2所示。

表1.2 响应状态码分类

目前比较常见的响应状态码如表1.3所示。

表1.3 常见响应状态码

● 响应头

响应头用于描述服务器的基本信息,以及对返回的数据进行描述,服务器通过这些数据的描述信息,通知客户端如何处理服务器端返回的数据。HTTP响应中常用以下的响应头来告诉浏览器一些信息:

(1)Server:服务器名称,一般由Web服务器设置的,如:Apache、Tomcat。

(2)Location:通过设置Location通知浏览器跳转到指定的地址再次发送请求。

(3)Content-Encoding:该响应头告诉浏览器返回的数据的压缩格式。

(4)Content-Length:该响应头告诉浏览器返回的数据的长度。

(5)Content-Type:通过该响应头告诉浏览器返回的数据的类型。

(6)Date:表示当前的GMT时间。

(7)Last-Modified:表示文档的最后修改时间。

● 响应体

在HTTP响应中的响应体中,包含了服务器端返回给浏览器的数据。根据Content-Type类型的不同,响应体中的数据形式也不同。

1.3.4 HTTP协议中的GET和POST请求的区别

● GET请求:

(1)GET请求的数据,以键值对的形式在请求行中的URL后,以?进行拼接,多个键值对之间使用&拼接。

(2)GET请求只能传输字符串类型的数据。

(3)GET请求因浏览器限制URL长度的原因只能传输少量数据。

(4)因为GET请求会将传输的数据显示在地址栏中,所以相对POST请求不安全。

● POST请求:

(1)POST请求的数据,以键值对的形式存储在请求体中,多个键值对之间使用&拼接。

(2)POST请求可以传输任意类型的数据。

(3)POST请求对传输的数据的大小没有限制。

(4)相对于GET请求,POST请求不会将传输的数据显示在地址栏中,较为安全。

关键词: java 教程