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

    一、HTTP协议:

    1、介绍:

      HTTP,超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广泛的 一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。

      HTTP是无状态协议,不对之前发送的请求和响应的状态进行管理。不可否认无状态协议当然也有它自己的优点。由于不保存状态,自然可减少服务器的CPU及内存资源的消耗。保留无状态协议这个特征的同时又要解决类似的矛盾问题,于是引入了Cookie技术。Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。

    2、组成:

      Http协议由Http请求和Http响应组成,当在浏览器中输入网址访问某个网站时, 你的浏览器会将你的请求封装成一个Http请求发送给服务器站点,服务器接收到请 求后会组织响应数据封装成一个Http响应返回给浏览器。即没有请求就没有响应。

    二、HTTP请求:

    1、请求行:

    请求方式:POST、GET

    请求的资源:/DemoEE/form.html

    协议版本:HTTP/1.1

    HTTP/1.0,发送请求,创建一次连接,获得一个web资源,连接断开。

    HTTP/1.1,发送请求,创建一次连接,获得多个web资源,保持连接。

    2、请求头:

    请求头是客户端发送给服务器端的一些信息,使用键值对表示key:value。

     3、请求体:(get请求没有请求体)

    当请求方式是post的时,请求体会有请求的参数,格式如下:

    username=zhangsan&password=123

    如果请求方式为get,那么请求参数不会出现在请求体中,会拼接在url地址后面

    三、HTTP响应:

    1、响应行:

    Http协议

    状态码:

      常用的状态码如下:

        200 :请求成功。

        302 :请求重定向。(跳转到了其他的页面)

        304 :请求资源没有改变,访问本地缓存。

        404 :请求资源不存在。通常是用户路径编写错误,也可能是服务器资源已删除。

        500 :服务器内部错误。通常程序抛异常(控制台代码错误!)。

    状态信息:状态信息是根据状态码变化而变化的

    2、响应头:

    响应也都是键值对形式,服务器端将信息以键值对的形式返回给客户端。

    3、响应体:

    响应体是服务器回写给客户端的页面正文,浏览器将正文加载到内存,然后解析渲染 显示页面内容

    四、与HTTP协作的Web服务器

    1、用单台虚拟主机实现多个域名

    一台Web服务器可搭建多个独立域名的Web网站,也可作为通信路径上的中转服务器提升传输效率。如果我们在一台服务器上托管了两个域名,当收到请求时就需要弄清楚究竟要访问哪个域名,因此必须在Host首部内完整指定主机名或域名的URI。

    2、通信数据转发程序:代理、网关、隧道

    HTTP通信时,除客户端和服务器以外,还有一些用于通信数据转发的 应用程序和服务器,例如代理、网关和隧道,它们可以配合服务器工作。这些应用程序和服务器可以将请求转发给通信线路上的下一站服务器,并且能接收服务器返回的响应并转发给客户端。

    3、代理: 是一种有转发功能的应用程序

      代理服务器的基本行为就是接收客户端发送的请求后转发给其他服务器。代理不改变请求URI,会直接转发给前方持有资源的目标服务器。使用代理服务器的理由:利用缓存技术减少网络带宽的流量。

      代理有多种使用方法,按两种基准分类。一类是 是否使用缓存 ,另一种是 是否会修改报文 。

    缓存代理:代理转发响应时,缓存代理会预先将资源的副本保存在代理服务器上,下次请求相同的资源时,则将之前缓存的资源作为响应返回。
    透明代理:转发请求或响应时,不对报文做任何加工的代理类型被称为透明代理,否则称为非透明代理。

    4、网关: 是转发其他服务器通信数据的服务器,利用网关可以由HTTP请求转化为其他协议通信。

    网关的工作机制和代理十分相似,而网关能使通信线路上的服务器提供非HTTP协议服务。

    5、隧道: 是在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序。
    隧道可按要求建立起一条与其他服务器的通信线路,届时使用SSL等加密手段进行通信。

    隧道的目的是确保确保能与服务器进行安全通信,隧道本身不会解析HTTP请求,请求保持原样中转给之后的服务器。

    6、保存资源的缓存:

    利用缓存可减少对源服务器的访问,可以节省通信流量和通信时间。
    使用缓存的时候,要注意缓存的有效期限,确保我们发起请求获取的是最新的数据资源。

  • 相关阅读:
    codeforces 455B A Lot of Games(博弈,字典树)
    HDU 4825 Xor Sum(二进制的字典树,数组模拟)
    hdu 1800 Flying to the Mars(简单模拟,string,字符串)
    codeforces 425A Sereja and Swaps(模拟,vector,枚举区间)
    codeforces 425B Sereja and Table(状态压缩,也可以数组模拟)
    HDU 4148 Length of S(n)(字符串)
    codeforces 439D Devu and Partitioning of the Array(有深度的模拟)
    浅谈sass
    京东楼层案例思维逻辑分析
    浅谈localStorage和sessionStorage
  • 原文地址:https://www.cnblogs.com/zqy6666/p/12354758.html
Copyright © 2011-2022 走看看