首页 > 代码库 > HTTP协议详解【转】

HTTP协议详解【转】

  HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。

  HTTP(端口80)协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS(端口443)。

  HTTP协议永远都是客户端发起请求,服务器回送响应。这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。 HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。

  一次HTTP操作称为一个事务,其工作过程可分为四步:

1)首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。

2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。 

3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。 

4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

  如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。

HTTP请求报文格式:

HTTP请求报文主要由请求行、请求头部、空行以及请求正文4部分组成

1,请求行由3部分组成,分别为:请求方式,URI(通用资源标识符,注意这里不是URL)以及协议版本组成,之间由空格分隔

请求方法主要包括GET、POST等;常见的协议版本有HTTP/1.1

2,请求头部包含很多有关客户端环境以及请求正文的有用信息

请求头部由“关键字/值”对组成,每行一对,关键字和值之间使用英文“:”分隔

3,空行,这一行非常重要,必不可少,表示请求头部结束,接下来为请求正文

4,请求正文,如以POST方式提交的表单数据

GET请求示例:

POST请求示例:

GET请求方式和POST请求方式到底有什么不同:

1,POST方式比GET更加安全(相对的)

GET方式请求参数放在请求行中作为请求URI的一部分,POST方式请求参数放在请求正文中,我们是可以对请求正文进行加密的

2,如果传输大数据量,只能使用POST方式

由于GET方式将请求参数放置在请求行URI中,故参数的长度受限于URL的长度限制;POST方式请求参数放在请求正文中,请求正文没有长度限制

HTTP响应报文格式:
HTTP响应报文主要由状态行、响应头部、空行以及响应正文4部分组成

1,状态行由3部分组成,分别为:HTTP协议版本,状态代码,状态代码描述

状态代码为3位数字,由1、2、3、4以及5开头,2开头的指响应成功,3开头的指重定向,4开头的指客户端错误,5开头的指服务端错误。详细的状态码就不介绍了,这里列举几个常见的:

200:响应成功

400:错误的请求,用户发送的HTTP请求不正确

404:文件不存在,也就是HTTP请求URI错误

500:服务器内部错误

2,响应头部与请求头部类似,也包含了很多有用的信息

3,空行,这一行非常重要,必不可少,表示响应头部结束,接下来为响应正文

4,响应正文,服务器返回的文档,最常见的为HTML网页

响应示例: