码迷,mamicode.com
首页 > Web开发 > 详细

HTTP协议

时间:2016-12-19 21:28:43      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:名称   客户   业务   信用卡   htm   环境   验证   oct   通信机制   

1. 什么是HTTP协议?

HTTP(HyperText Transfer Protocol),是一套计算机通过网络进行通信的协议,使得HTTP客户(eg:Web浏览器)能从HTTP服务器(Web服务器)请求信息和服务。

2. 性质:

1)是一种无状态的协议。无状态是指当一个客户端向服务器端发出请求(Request),然后服务器端返回相应(Response),连接就会被关闭,在服务器端不保留连接的有关信息。

2)遵循请求(Request)/应答(Response)模型。Web浏览器向Web服务器发送请求,Web服务器处理请求并且返回适当的应答。所有HTTP连接都会被构造成一套请求和应答。

3)使用内容类型。指Web服务器向Web浏览器返回的文件都有与之相关的类型。所有这些类型在MIME Internet邮件协议上模型化,即Web服务器告诉Web浏览器该文件所具有的种类,是HTML文档、GIF格式图像、声音文件还是独立的应用程序。大多数Web浏览器都拥有一系列的可配置的辅助应用程序,它们告诉浏览器应该如何处理Web服务器发送过来的各种内容类型。

3. HTTP通信机制

HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成以下4个步骤:建立TCP连接 —— Web浏览器向Web服务器发送请求(Request) —— Web服务器向Web浏览器发送应答(Response)——关闭TCP连接。

1. 建立TCP连接。

  HTTP为应用层协议,在HTTP工作开始之前,Web浏览器首先通过网络与Web服务器建立连接——TCP/IP协议。一般TCP连接的端口号:80

2. Web浏览器 —> Web服务器发送请求命令

 HTTP请求格式分为三个部分:

 1)请求方法 + URI + 协议/版本

GET/sample.jsp HTTP/1.1
  • GET:请求方法
  • /sample.jsp:URI(统一资源标识符:用于标识某一互联网资源名称的字符串)
  • HTTP/1.1:协议和版本号

  2)请求头(Request Header)

  请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。

Accept:image/gif.image/jpeg.*/*
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)
Accept-Encoding:gzip,deflate.

  3)请求正文

  请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。请求正文中可以包含客户提交的查询字符串信息:

username=jinqiao&password=1234

3. Web服务器应答

HTTP应答与HTTP请求相似,HTTP响应也由3个部分构成:

  • 协议状态版本代码描述
  • 响应头(Response Header)
  • 响应正文
HTTP/1.1 200 OK
Server:Apache Tomcat/5.0.12
Date:Mon,6Oct2003 13:23:42 GMT
Content-Length:112
 
<html>
<head>
<title>HTTP响应示例<title>
</head>
<body>
Hello HTTP!
</body>
</html>

其中:

第一行:协议状态版本代码描述,表示协议为:HTTP/1.1,200表示:服务器已经成功的处理了客户端发送的请求。

响应头(Response Header)响应头也和请求头一样包含许多有用的信息,例如服务器类型、日期时间、内容类型和长度等:

Server:Apache Tomcat/5.0.12
Date:Mon,6Oct2003 13:23:42 GMT
Content-Length:112

相应正文:就是服务器返回的HTML页面(与响应头以一行空行间隔):

<html>
<head>
<title>HTTP响应示例<title>
</head>
<body>
Hello HTTP!
</body>
</html>

4. Web服务器关闭TCP连接

  一般情况下,一旦Web服务器向浏览器发送了应答数据,它就要关闭TCP连接。但是我们乐意通过在头文件中加入:

Connection:keep-alive

使得TCP连接在Web服务器发送了应答后仍然保持连接,从而使得浏览器可以继续通过相同的连接发送请求,以节省每个请求都需要建立所需要的时间,同时节约了网络带宽。

 

4. HTTP请求方法

1)Get方法

GET方法是默认的HTTP请求方法,我们日常用GET方法来提交表单数据,然而用GET方法提交的表单数据只经过了简单的编码,同时它将作为URL的一部分向Web服务器发送,因此,如果使用GET方法来提交表单数据就存在着安全隐患

Http://127.0.0.1/login.jsp?Name=lesley&Age=16&Submit=%cc%E+%BD%BB

从上面的URL请求中,我们可以辨认出表单提交的内容(?以后的信息)。另外,由于GET方法提交的数据是作为URL请求的一部分,所以提交的数据量不能太大

2)POST方法

POST方法是GET方法的一个替代方法,它主要是向Web服务器提交表单数据,尤其是大批量的数据。POST方法克服了GET方法的一些缺点。通过POST方法提交表单数据时,数据不是作为URL请求的一部分而是作为标准数据传送给Web服务器,这就克服了GET方法中的信息无法保密和数据量太小的缺点。因此,出于安全的考虑以及对用户隐私的尊重,通常表单提交时采用POST方法。

从编程的角度来讲,如果用户通过GET方法提交数据,则数据存放在QUERY_STRING环境变量中,而POST方法提交的数据则可以从标准输入流中获取。

 

5. HTTP应答码

HTTP应答码也称为状态码,它反映了Web服务器处理HTTP请求状态。HTTP应答码由3位数字构成,其中首位数字定义了应答码的类型:
  • 1XX-信息类(Information),表示收到Web浏览器请求,正在进一步的处理中
  • 2XX-成功类(Successful),表示用户请求被正确接收,理解和处理例如:200 OK
  • 3XX-重定向类(Redirection),表示请求没有成功,客户必须采取进一步的动作。
  • 4XX-客户端错误(Client Error),表示客户端提交的请求有错误 例如:404 NOT Found,意味着请求中所引用的文档不存在。
  • 5XX-服务器错误(Server Error)表示服务器不能完成对请求的处理:如 500

 

6. 安全连接(SSL协议)

Web应用最常见的用途之一是电子商务,可以利用Web服务器端程序使人们能够网络购物,需要指出一点是,缺省情况下,通过Internet发送信息是不安全的,如果某人碰巧截获了你发给朋友的一则消息,他就能打开它,假想在里面有你的信用卡号码,这会有多么糟糕,幸运的是,很多Web服务器以及Web浏览器都有创立安全连接的能力,这样它们就可以安全的通信了。

通过Internet提供安全连接最常见的标准是安全套接层(Secure Sockets Layer,SSL)协议。SSL协议是一个应用层协议(和HTTP一样),用于安全方式在Web上交换数据,SSL使用公开密钥编码系统。从本质讲,这意味着业务中每一方都拥有一个公开的和一个私有的密钥。当一方使用另一方公开密钥进行编码时,只有拥有匹配密钥的人才能对其解码。简单来讲,公开密钥编码提供了一种用于在两方之间交换数据的安全方法,SSL连接建立之后,客户和服务器都交换公开密钥,并在进行业务联系之前进行验证,一旦双方的密钥都通过验证,就可以安全地交换数据。

HTTP协议

标签:名称   客户   业务   信用卡   htm   环境   验证   oct   通信机制   

原文地址:http://www.cnblogs.com/lesleysbw/p/6200530.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!