应用层---HTTP协议

应用层

应用层是TCP/IP协议分层的最顶层模型,它的作用是维持好应用程序之间的沟通,维护好特定的协议。 如简单电子邮件传输(SMTP),文件传输协议(FTP),网络远程访问协议(Telnet)等。

应用层协议分为两种,一种是根据客户要求自己对数据格式约定的自定制应用层协议;另一种是应用层知名协议,即已被他人定义好且十分好用的应用层协议,其中HTTP协议就是其中一种。

HTTP协议-超文本传输协议

1.HTTP协议介绍

  • HTTP协议是应用层协议,由HTTP请求和HTTP响应组成,是一种标准的客户端服务器模型。局限性是客户端没有发送请求时,服务器无法将消息推送给客户端。见下图:

应用层---HTTP协议

  • HTTP协议是一种无状态的协议。同一客户端的这次请求与上次请求没有对应关系。
  • HTTP协议是用于WWW服务器传输超文本文件到本地浏览器的一种协议。它可以使浏览器更加高效,使网络传输减少。
  • 它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

2.HTTP协议格式

2.1 HTTP请求格式

应用层---HTTP协议

(1)请求行:在HTTP请求报文中第一行,以空格为界,分为三个区域:【请求方法,常为GET/POST】+【请求的资源URL】+【HTTP协议版本,常为1.0/1.1】; 

(2)请求报头Header:在HTTP请求报文中从第二行到空行之前的即为请求报头,即为请求的属性,均以冒号分割的键值对形式呈现,每组属性间用 \n 分隔; 

(3)空行:请求报头与请求正文的分界,不能省略 

(4)请求正文Body:空行以后的均是请求正文,表示要提交给浏览器看的消息,允许为空字符串。 

2.2 HTTP响应格式

应用层---HTTP协议

(1)响应行:在HTTP响应报文的第一行,以空格为界,分为三个区域:【HTTP协议版本号】+【状态码】+【状态码解释】

(2)响应报头Header:在HTTP响应报文中从第二行到空行之前的即为响应报头,即为响应的属性,均以冒号分割的键值对形式呈现,每组属性间用 \n 分隔;

(3)空行:响应报头与响应正文的分界,不能省略 

(4)响应正文Body:空行以后的均是响应正文,允许为空字符串。若Body存在,Header中会有一个Content-Length来标识Body的长度。

3.HTTP协议的方法

应用层---HTTP协议

Http协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET,POST,PUT,DELETE。 我们最常见的就是GET和POST两种方法:GET一般用于获取/查询资源信息,而POST一般用于更新资源信息.

注:GET和POST的区别

  (1)GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连。  POST方法是把提交的数据放在HTTP包的Body中.

  (2)GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制。

  (3)GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。

  (4)GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.

4.URL的介绍

  • URL为统一资源定位符,是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。
  • URL 给资源的位置提供一种抽象的识别方法,并用这种方法给资源定位。
  • 基本URL包含模式(或称协议)、服务器名称(或IP地址)、路径和文件名,如“协议://授权/路径?查询”。

5.状态码

 

状态码大意

常见状态码

常见状态码解释

 1xx

 

 

 信息性状态码,接收的请求正在处理

 

 

100

服务器接收部分请求,只要没拒绝,客户端继续发送请求

101

服务器将遵从客户的请求转换到另外一种协议。

102

 由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行

2xx

 

 

成功状态码,请求正常处理完毕

 

 

200

请求成功(尤其对get和post请求的应答文档)

201

请求被创建完成,同时新的资源被创建

202

共处理的请求已被接受,但处理未完成

3xx

 

重定向状态码,需要进行附加操作来完成请求

 

301

永久性重定向,所请求的页面已经转移至新的url下次直接到新的url中访问

302

临时性重定向,所请求的url已被暂时你移到新的url,下次访问先到当前url中,若没有再到新的url中访问

 

4xx

 

 

客户端错误状态码,客户端可能出现某些错误,导致服务器无法处理请求

 

 

400

服务器未能理解请求或请求参数有误

403

禁止访问被请求的页面

404

服务器无法找到被请求的页面

 

5xx

 

 

服务器错误状态码,服务器处理请求出错

 

 

502

请求未完成。服务器从上游服务器收到一个无效的响应

503

请求未完成服务器临时过载或当机

504

网关超时