zoukankan      html  css  js  c++  java
  • HTTP协议

    一、HTTP协议用于客户端和服务器之间的通信

    HTTP协议和TCP/IP协议族内的其他众多协议相同,用于客户端和服务器端之间的通信。

    通过请求和响应的交换达成通信:

    HTTP协议规定,请求从客户端发出,最后服务器响应该请求并返回。换句话说,肯定是先从客户端开始建立通信的,服务器端在没有接收到请求之前不会发送响应。

    请求报文:起始行开头的GET表示请求服务器的类型,称为方法。随后的字符串/index.html指明了请求访问的资源对象,也叫做请求URI。最后的HTTP/1.1,即HTTP的版本号,用来提示客户端使用的HTTP协议功能。

    综合来看,这段请求的内容是:请求访问某台HTTP服务器上的/index.html页面资源。

    请求报文是由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成的。也就是俗称的请求行、请求头、请求体。

    响应报文:

    在起始行开头的HTTP/1.1,表示服务器对应的HTTP版本。

    紧挨着的200 OK表示请求的处理结果的状态码和原因短语。下一行显示了创建响应的日期时间,是首部字段内的一个属性。

    紧挨着以一个空行分隔,之后的内容称为资称为体的主体。

    响应报文基本是由协议版本、状态码、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。也可以简单理解为响应行、响应头、响应体。

     

    二、HTTP协议是不保存状态的协议

    HTTP协议是一种无状态协议。HTTP协议自身不对请求和响应之间的通信状态进行保存。

    使用HTTP协议,每当有新的请求发送时,就会有对应的新响应产生。这是为了更快的处理大量事务,确保协议的可伸缩性,而特意把HTTP协议设计成如此简单的。

    HTTP/1.1虽然是无状态协议,但为了实现期望的保存状态功能,于是引入了Cookie技术。有了Cookie再用HTTP协议通信,就可以管理状态了

    四、告知服务器意图的HTTP方法

    ①GET:获取资源。

    ②POST:传输实体主体。

    ③PUT:传输文件。

    ④HEAD:获得报文首部。

    ⑤DELETE:删除文件。

    ⑥OPTIONS:询问支持的方法。

    ⑦TRACE:追踪路径。

    ⑧CONNECT:要求用隧道协议连接代理。

    五、使用方法下达命令

    向请求URI指定的资源发送请求报文时,采用称为方法的命令。

    方法的作用在于,可以指定请求的资源按期望产生某种行为。方法中GET、POST、HEAD等。

    注意:方法名区分大小写,要用大写字母。

    下表列出了HTTP/1.0和HTTP/1.1支持的方法:

    六、持久连接节省资源

    HTTP协议的初始版本中,每进行一次HTTP通信就要断开一次TCP连接。

    但是此种设计在使用浏览器浏览一个包含多张图片的HTML页面时就会造成无畏的TCP连接建立和断开,因为在发送该请求方法HTML页面资源是同时,也就请求该HTML页面里包含的其他资源。

    持久连接:

    为了解决TCP连接的问题,HTTP/1.1和一部分的HTTP/1.0想出了持久连接(也称HTTP keep-alive)的方法。持久连接的特定是,只要任意一端没有明确提出断开连接,则保持TCP连接状态。

    持久连接的好处在于减少了TCP连接的重复建立和断开造成的额外开销,减轻了服务器端的负载。另外,减少开销的那部分十几件,使HTTP请求和响应能够更早地结束,这样web页面的显示速度也就相应提高了。

    在HTTP/1.1中,所有的连接默认都是持久连接。

    管线化:

    持久连接使得多数请求以管线化方法发送称为可能。

    从前发送请求后需等待并接收响应,才能发送下一个请求。管线化技术出现后,不用等待响应就可以直接发送下一个请求。这样就能够做到同时并行发送多个请求,而不需要一个接一个的等待响应了。

    七、使用Cookie的状态管理

    假设要求登录认证的web页面本身无法进行状态的管理,那么每次跳转新页面而不需要再次登录,就是要在每次请求报文中附加参数来管理登录状态。

    保留无状态协议这个特征 的同时又要解决类似的矛盾,于是引入了Cookie技术。Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。

    Cookie会根据从服务器端发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端再往该服务器发送请求时,客户端自动在请求报文中加入Cookie值后发送出去。

    服务端发现客户端发送过来的Cookie后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。

  • 相关阅读:
    ci框架与smarty的整合
    jQuery 1.3.2 简单实现select二级联动
    Nginx配置https
    tp5.1最新的类库使用规则
    Linux指令大全
    Redis锁机制处理高并发
    Nginx配置https站点
    vue的入门
    HTTP 请求头中的 X-Forwarded-For,X-Real-IP
    Composer包制作以及发布!
  • 原文地址:https://www.cnblogs.com/qiuqiunile/p/8683918.html
Copyright © 2011-2022 走看看