zoukankan      html  css  js  c++  java
  • 一:HTTP协议解析

    一:HTTP协议解析

      1.HTTP协议即超文本传输协议,是一种详细规定了浏览器和万维网服务器之间互相通信的规则,他是万维网交换信息的基础,它允许将HTML(超文本标记语言)文档从web服务器传送到web浏览器。

      2.发起一个HTTP请求

      ①借助浏览器可以发起一个HTTP请求,输入URL

      ②不借助浏览器的时候,可以使用工具:curl

      3.HTTP协议详解

      目前HTTP协议最新版本为1.1,HTTP协议是一种无状态协议。无状态协议指的是web浏览器与web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器发出请求,然后web服务器返回响应,连接就关闭了,在服务器端不保留连接的有关信息。也就是说HTTP请求只能由客户端发起,服务端不能主动向客户端发送数据。

      HTTP遵循请求/应答模型,Web浏览器向Web服务器发送请求时,Web服务器处理请求并返回适当的应答。如下图:

      HTTP请求包括三部分:1.请求行,即第一行;2.请求头(第二行至空白处);3.请求正文,空白下。

      HTTP响应包括三部分:1.响应行,即第一行;2.响应头(第二行至空白处);3.响应正文,空白下。

      4.HTTP请求方法

      HTTP请求方法中最常见的为get和post。

      ①GET

      GET方法主要用于获取请求页面的指定信息(以实体的格式),如果请求资源为动态脚本(非HTML),那么返回文本是web容器解析后的HTML源代码,而不是源文件。例如请求1.jsp,那么返回的不是1.jsp的源文件,而是经过解析的HTML代码。在浏览器中看到的就是经过解析渲染的页面。

      ②POST

      POSt方法与GET方法类似,但是区别在于,GET方法没有请求内容,POST方法是有请求内容的。POST请求多用于向服务器发送大量的数据。GET也可以,但是有大小限制,并且GET请求会将发送的数据显示在浏览器端,而POST不会,所以相对来说安全一点。

      ③HEAD

      HEAD方法除了服务器不能在响应里返回消息主体外,其他的和GET方法相同。主要用于获取报头,经常被用来测试超文本链接的有效性、可访问性和最近的改变。攻击者编写工具时,经常使用HEAD方法,因为只测试资源是否存在,而不用返回消息主题,所以速度比较快。

    一个经典的HEAD请求如下:
    HEAD /index.php HTTP/1.1 HOST:www.aaa.com

      ④PUT

      PUT方法用于请求服务器把请求中的实体存储在请求资源下,如果请求资源已经在服务器中存在,那么将用此请求中的数据替换原先的数据,作为指定资源的最新修改版。如果请求指定的资源不存在,将会创建这个资源,且数据位于请求正文,请求如下:

    PUT /1.txt
    HOST:www.aaa.com
    Content-length:6
    
    123456

      这段请求将会在主机根目录下创建1.txt,内容为123456,一般会将put方法关闭,因为他会在服务器中建立文件,属于危险方法之一。

      ⑤DELETE

      DELETE方法用于请求资源服务器删除请求的指定资源。服务器一般会关闭此方法,因为在客户端可以进行删除操作,属于危险方法之一。

      ⑥TRACE

      TRACE方法用于回显服务器收到的请求,主要用于测试和诊断。

      ⑦CONNECT

      HTTP/1.1协议规范保留了CONNECT方法,此方法是为了用于能动态切换到隧道的代理。

      ⑧OPTIONS

      允许客户端查看服务器的性能

      5.状态码

      客户端向服务器发送请求之后,服务器进行响应,HTTP响应的第一行正在,就会反应状态码。

       HTTP协议中的状态码为三位数,第一位数字定义响应的类型,且只有5种:

      ①1XX:信息提示,表示请求已被成功接收,继续处理。范围为100~101。

      ②2XX:成功,服务器成功的处理了请求,范围为200~206。

      ③3XX:重定向,重定向状态码用于告诉浏览器客户端,他们访问的字眼已被移动,并告诉客户端新的资源地址位置。这是,浏览器将重新对资源发起请求,其范围为300~305。

      ④4XX:客户端错误的状态码,优势客户端会发送一些服务器无法处理的东西,比如格式错误的i请求,最常见的时,请求一个不存在的URL,其范围为400~415。

      ⑤5XX:有时客户端发送一条有效请求,单web服务器自身却出错了,可能时web服务器运行错误,或者网站挂掉了。5XX就是用来描述服务器内部错误的,其范围为500~505。

      常见的一些状态码:

      200:客户端请求成功,最常见的状态。

      302:重定向。

      404:请求资源不存在。

      400:客户端存在语法错误,不能被服务器所理解。

      401:请求未经授权。

      403:服务器收到请求,但是拒绝提供服务。

      500:服务器内部错误。

      503:服务器当前不能处理客户端请求,一段时间后可能恢复正常

      6.HTTP消息

      具体见下一节

      7.HTTP和HTTPS的区别

      HTTPS协议的全称为Hypertext Transfer Protocol over Secure Socket Layer ,它是以安全为目标的HTTP通道,其实就是HTTP的“升级”版本,只是它比单纯的HTTP协议更加安全。

      HTTPS的安全基础是SSL,即在HTTP下加入SSL层。HTTPS=HTTP+SSL

      两者的区别主要如下

      ①HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议。

      ②HTTP和HTTPS使用的连接方式不同,HTTP使用80端口,HTTPS使用443端口。

  • 相关阅读:
    org.apache.xerces.dom.ElementNSImpl.setUserData(Ljava/lang/String;Ljava/lang
    case when then 中判断null的方法
    Oracle 傻瓜式数据归档
    Object type TYPE failed to create with error
    导出表结构到Excel 生成代码用
    Intellij 高亮显示与选中字符串相同的内容
    自定义命令杀死 java 进程 alias kjava
    R语言包_dplyr_1
    dplyr包
    在天河二号上对比Julia,Python和R语言
  • 原文地址:https://www.cnblogs.com/bulrushlw/p/13036390.html
Copyright © 2011-2022 走看看