HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。

在聊http协议之前我们需要了解一下计算机网络体系结构,OSI模型把网络通信的工作分为7层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

  第一层~物理层:规定通信设备的机械的、电气的、功能的和过程的特性,用以建立、维护和拆除物理链路连接。数据的单位称为比特(bit)。属于物理层定义的典型规范代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等。
  第二层~数据链路层:在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧(Frame)在信道上无差错的传输,并进行各电路上的动作系列。数据的单位称为帧(frame)。数据链路层协议的代表包括:SDLC、HDLC、PPP、STP、帧中继等。
  第三层~网络层:将数据链路层提供的帧组成数据包,数据的单位称为数据包(packet)。网络层协议的代表包括:IP、IPX、RIP、OSPF等。
  第四层~传输层:负责获取全部信息,提供端到端(最终用户到最终用户)的透明的、可靠的数据传输服务。传输层协议的代表包括:TCP、UDP、SPX等。
  第五层~会话层:提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。如服务器验证用户登录便是由会话层完成的。
  第六层~表示层:提供格式化的表示和转换数据服务。数据的压缩和解压缩, 加密和解密等工作都由表示层负责。
  第七层~应用层:为操作系统或网络应用程序提供访问网络服务的接口。应用层协议的代表包括:Telnet、FTP、HTTP、SNMP等。

从上面可以清楚的知道http是应用层的协议。HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。HTTP默认端口号为80,但是你也可以改为其他端口。HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。

  HTTP协议通信流程:

HTTP请求协议 随笔 第1张

CGI(Common Gateway Interface) 是 HTTP 服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。CGI 程序使网页具有交互功能。

HTTP的特点:

  HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type(在ASP中,设定MIME类型的方法是通过Response对象的ContentType属性)内容类型。
  HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

请求消息由四部分组成,请求行(request line)、请求头部(header)、空行和请求数据四个部分组成;响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

例图如下:

HTTP请求协议 随笔 第2张  客户端请求

 

HTTP请求协议 随笔 第3张  服务器响应

HTTP 协议中共定义了八种方法来表明对 Request-URI 指定的资源的不同操作方式,具体介绍如下:
  HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

  OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。
  HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
  GET:向特定的资源发出请求。
  POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的创建和/或已有资源的修改。
  PUT:向指定资源位置上传其最新内容。
  DELETE:请求服务器删除 Request-URI 所标识的资源。
  TRACE:回显服务器收到的请求,主要用于测试或诊断。
  CONNECT:HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。

HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型: 

  1** :信息,服务器收到请求,需要请求者继续执行操作
  2** : 成功,操作被成功接收并处理
  3** :重定向,需要进一步的操作以完成请求
  4** :客户端错误,请求包含语法错误或无法完成请求
  5** : 服务器错误,服务器在处理请求的过程中发生了错误

  比如常见的状态码有,200 - 请求成功、301 - 资源(网页等)被永久转移到其它URL、404 - 请求的资源(网页等)不存在、500 - 内部服务器错误。

HTTP content-type
  Content-Type,内容类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,也就是上面提到的媒体独立特点。

好了,这只是一个简单的随笔,希望能帮助你额!





 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄