HTTP协议原理详解及应用

HTTP协议是什么

  1. HTTP协议(HyperText Transfer Protocol,超文本传输协议),是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。它是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。

  2. HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

HTTP协议工作原理

  1. HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。

  2. Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。

  3. Web服务器根据接收到的请求后,向客户端发送响应信息。

  4. HTTP默认端口号为80,但是你也可以改为8080或者其他端口。

下图表展示了HTTP协议通信流程:

HTTP协议三点注意事项:

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

HTTP协议工作流程

一.请求流程

一次HTTP请求,其工作过程大概如下:

  1. 用户在浏览器中键入需要访问网页的URL或者点击某个网页中链接;

  2. 浏览器根据URL中的域名,通过DNS解析出目标网页的IP地址;

    浏览器请求这个页面:http://hackr.ip/index.html
    在这一步,需要域名系统DNS解析域名hackr.ip,得主机的IP地址 20X.189.105.112。
    然后将上面结合本机自己的信息,封装成一个http请求数据包
    复制代码
  3. 在HTTP开始工作前,客户端首先会通过TCP/IP协议来和服务端建立链接(TCP三次握手)

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

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

  6. 一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码: Connection:keep-alive,TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

    过程如下图

二.消息结构

HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。 一旦建立连接后,数据消息就通过类似Internet邮件所使用的格式[RFC5322]和多用途Internet邮件扩展(MIME)[RFC2045]来传送。

2.1 URI和URL
  • URI

URI(Uniform Resource Identifier)是统一资源标识符,在某个规则下能把这个资源独一无二标示出来,比如人的身份证号

  1. Uniform 不用根据上下文来识别资源指定的访问方式
  2. Resource 可以标识的任何东西
  3. Identifier 表示可标识的对象
  • URL

统一资源定位符,表示资源的地点,URL时使用浏览器访问WEB页面时需要输入的网页地址

  1. Uniform 不用根据上下文来识别资源指定的访问方式
  2. Resource 可以标识的任何东西
  3. Location 定位
  • URL的格式

三.请求报文

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成,下图给出了请求报文的一般格式。

1.请求行(request line)
  • 请求方法
    GET 获取资源
    POST 向服务器端发送数据,传输实体主体
    PUT 传输文件
    HEAD 获取报文首部
    DELETE 删除文件
    OPTIONS 询问支持的方法
    TRACE 追踪路径
    协议/版本号
    URL
    复制代码
  • 请求头
    通用首部(General Header)
    请求首部(Request Header)
    响应首部(Response Header)
    实体首部(Entity Header Fields)
    复制代码
  • 请求体

四.响应报文

HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

HTTP协议状态码

状态码负责表示客户端请求的返回结果、标记服务器端是否正常、通知出现的错误

状态码类别
类别原因短语
1XXInformational(信息性状态码)
2XXSuccess(成功状态码)
3XXRedirection(重定向)
4XXClient Error(客户端错误状态码)
5XXServer Error(服务器错误状态吗)
2XX 成功
  • 200(OK 客户端发过来的数据被正常处理
  • 204(Not Content 正常响应,没有实体
  • 206(Partial Content 范围请求,返回部分数据,响应报文中由Content-Range指定实体内容
3XX 重定向
  • 301(Moved Permanently) 永久重定向
  • 302(Found) 临时重定向,规范要求方法名不变,但是都会改变
  • 303(See Other) 和302类似,但必须用GET方法
  • 304(Not Modified) 状态未改变 配合(If-Match、If-Modified-Since、If-None_Match、If-Range、If-Unmodified-Since)
  • 307(Temporary Redirect) 临时重定向,不该改变请求方法
4XX 客户端错误
  • 400(Bad Request) 请求报文语法错误
  • 401 (unauthorized) 需要认证
  • 403(Forbidden) 服务器拒绝访问对应的资源
  • 404(Not Found) 服务器上无法找到资源
5XX 服务器端错误
  • 500(Internal Server Error)服务器故障
  • 503(Service Unavailable) 服务器处于超负载或正在停机维护

HTTP请求方法

根据HTTP标准,HTTP请求可以使用多种请求方法。

HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

首部

通用首部字段

请求首部字段

响应首部字段

实体首部字段

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值