zoukankan      html  css  js  c++  java
  • 应用层之web和http

    • 什么是web

      20世纪90年代初期,一个主要的新兴应用world wide web登上了舞台,这就是web。web是一个因特网应用。

      也正是因为web,因特网才从众多数据网中脱颖而出。

    • http概况

      http(HyperText Transfer Protocol)是web的应用层协议,它是web的核心。

      http由两个程序实现:一个是客户端程序,一个是服务器端程序。两个程序运行在不同的端系统中。

      回顾一些web术语:

    1. web页面(web page)是由对象组成的。一个对象只是一个文件,诸如html文件、一个jpeg图形、一个java小程序
    2. web浏览器(web browser),实现了http的客户端(如:Internet Explorer 和 Firfox)
    3. web服务器(web server),实现了http的服务器端,它用于存储web对象。

      http定义了web客户端向web服务器端请求web页面的方式。http的下一层协议是tcp。

    • http是一个无状态协议(stateless protocol),即服务器并不保存关于客户的任何信息。(当然随之时间的推移后面出现了cookie和session,前者在客户端保存了访问某个服务器端所必须的信息,后者在服务器端保存了辨别某个客户锁必须的信息,http相当于演化成了一个“有状态的协议”)
    • 一般而言当前http默认为流水线式的持续连接方式(或叫长连接)。一般来说,如果一条连接经过一定时间间隔(服务器端设置的timeout)仍未被使用,服务器就会关闭该连接。具体相关科参考https://www.cnblogs.com/cswuyg/p/3653263.html
    • http请求报文格式:

          

        请求报文的第一行叫做请求行(request line),后继的叫做首部行(header line),最下面的是请求实体(request body),具体例子如下图所示:

        http请求报文(post方式)

        上图是post方法,如果是get方法request body是空的。

    • http响应报文格式

      

      第一行叫做状态行,红色区域的是首部行,最后就是响应正文实体体(entity body)。

      常见的状态码:

        200:请求成功

        400:通用代码差错,服务器不能理解请求

        404:请求的文档(web page)不在服务器上

        505:服务器不支持请求报文使用的http协议版本

    • cookie

       cookie技术由四个组件:

      ①:http响应报文中的一个cookie首部行

      ②:在http请求报文中的一个cookie首部行

      ③:在用户端系统中保留有一个cookie文件,并由用户的浏览器进行管理

      ④:位于web站点的一个后端数据库(服务器端记录的cookie信息)

      交互过程

      例:小明第一次访问taobao.com时,当请求报文到达taobao Web服务器时,该web站点将产生一个唯一的识别码,并以此作为索引在它的后端数据库中产生一个表项(就是一条记录)。接下来taobao Web服务器用一个包含Set-cookie首部的http响应报文对小明的浏览器进行响应,其中首部行set-cookie含有前面web站点产生的唯一识别码。例如,该首部行可能是: Set-cookie: 1234。当小明浏览器收到了该http响应报文的时候会看到set-cookie。该浏览器在它管理的特定cookie文件中添加一行。以后小明访问taobao.com的时候其发送的每个http请求报文可以包括首部行:Cookie:1234。在这种方式下,taobao服务器可以追踪小明在taobao站点的活动并记录。

    • web缓存

      web缓存器(Web cache)也叫代理服务器(proxy server),它是能够代表初始web服务器来满足http请求的实体。web缓存器有自己的磁盘存储空间,并在存储空间中保存最近请求的副本。其基本作用如下:

      ①web缓存器可以大大减少客户请求的响应时间

      ②web缓存器能够大大减少一个机构的接入链路到因特网的通信量

    • 条件GET方法

      尽管web缓存器能减少用户感受到的响应时间,但也引入了一个新问题,即存放在缓存器的对象副本可能是陈旧的。

      http协议有一种机制可以保证缓存器的被请求对象是最新的。这种机制就是条件GET方法

      请求报文使用GET方法,并在首部行包含一个“If-Modified-Since:”,那么这个请求报文就是一个条件GET方法。

       工作原理: 

      ①代理缓存器(proxy cache)发送请求报文给Web服务器。 

      ②Web服务器发送具有被请求对象的响应报文给缓存器,报文带有Last-Modified:最后修改时间;缓存器存储被请求对象和最后修改时间。 

      ③当用户经过该缓存器请求同一个对象时,缓存器发送一个条件GET执行最新检查,该报文包含首部行“If-Modified-Since:最后修改时间”。 

      ④Web服务器向缓存器发送响应报文。如果该对象没有更新,则返回一个带有304状态码 Not Modified的报文,没有包含对象;如果对象已更新,则返回一个带有被请求对象的报文。

  • 相关阅读:
    正则表达式30分钟入门教程
    Literal控件用法
    用asp.net 2.0实现网站二级域名
    IIS7 asp.net URL重写配置
    用VS2008开发Ajax网站需要注意
    C#中的equals与==的比较,赋加compareto
    nvchar(50)与Substring(0,50)的理解
    利用Mircosoft URLRewriter.dll实现asp.net页面伪静态
    .NET命名规范中文版
    iframe动态改变src的测试
  • 原文地址:https://www.cnblogs.com/chen-jack/p/9953975.html
Copyright © 2011-2022 走看看