HTTP协议(一):概述

马谦马谦马谦 2017年12月15日21:59:25 发表评论
文章最后编辑于:2017-12-15 22:01:31

一、概述

超文本传输协议(Hypertext Transfer Protocol, HTTP)是当今网络的重要角色之一,也是万维网(World Wide Web, WWW)的核心组成。它的特点为:

  • 无连接:HTTP是一个无连接的协议,虽然基于TCP,但是每次进行数据交互之前,无需先建立HTTP连接。
  • 无状态:HTTP协议不保存任何连接的状态和连接时的数据信息,每一个新的连接都是完全陌生的。

它是一个基于TCP的协议,因此,每次连接的建立和关闭都要进行三次握手四次挥手操作。

二、协议内容

2.1 请求报文

HTTP请求的报文格式为:

request-line:请求头,包含请求类型、请求URL以及协议版本号等,常用的请求类型:

  • GET:获取请求URL的数据内容。
  • POST:用于传输一个带数据信息的请求,唯一一个需要再body中携带数据的请求。
  • HEAD:和GET类似,只是服务端在返回数据时只会返回响应头,不带有数据部分。

header:请求头参数部分,例如user-agent等等。

body:只有POST请求才有的数据部分,用于携带传输的数据信息,一个特别要注意的地方是请求头和body之间必须要有一个空行隔开。

2.2 响应报文

响应报文的格式为:

status-line:响应的状态码,最常见的如200以及404等。

通常我们使用浏览器上网时,浏览器在内部就帮我们完成了这一系列请求,例如当我们打开百度的时候,浏览器实际上是执行了一次GET请求:

得到的响应:

2.3 首部字段

通常我们都会遇到以下的场景:当我们用手机打开一个PC网页时,系统往往都会默认跳转到该页面的手机版页面中去,这其中就用到了HTTP首部字段。

首部字段是HTTP协议中最重要的一部分,它包含了很多和服务端进行交互时的数据信息。

它格式为:key: value,例如user-agent: chrome,首部不区分大小写。一些常用的字段:

  • Accept:表示可接受的文件类型。
  • Accept-Encoding:可接受的编码格式。
  • Accept-Language:可接受的语言。
  • User-Agent:当前的浏览器信息。

2.4 响应状态码

服务端对客户端的响应放在数据包的第一行,表明本次请求的响应状态,常用的状态码及含义为:

20x:响应成功

  • 200:OK,请求成功。
  • 201:OK,新的资源建立( post命令)。
  • 202:请求被接受,但处理未完成。
  • 204:OK,但没有内容返回。

30x:重定向

  • 301:所请求的资源已被指派为新的固定RUL。
  • 302: 所请求的资源临时位于另外的URL。
  • 304: 文档没有修改。

40x:客户端错误

  • 400:错误的请求。
  • 401:未被授权,该请求要求用户认证。
  • 403:不明原因的禁止。
  • 404:没有找到。

50x:服务器错误

  • 500:内部服务器差错
  • 501:没有实现
  • 502:错误的网关;网关或上游服务器来的无效响应
  • 503:服务暂时失效
本文共执行44次查询,耗时0.281秒!
马谦马谦马谦

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: