找回密码
 注册
关于网站域名变更的通知
查看: 480|回复: 1
打印 上一主题 下一主题

HTTP协议及请求/响应模型介绍

[复制链接]
  • TA的每日心情
    开心
    2020-8-5 15:09
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2020-10-28 11:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    HTTP协议及请求/响应模型
    1、上网的整个过程
      假设我们点击了某网页上的一个链接,指向清华大学院系设置 。我们来分析一下整个过程:
    浏览器分析链接指向页面的URL
    浏览器向DNS请求解析 IP地址
    DNS系统解析出清华大学服务器的地址是166.111.4.100
    浏览器与服务器建立TCP连接
    浏览器发出取文件命令:GET /chn/yxsz/index.html
    服务器 给出响应,把文件index.html返回给浏览器
    释放TCP连接
    浏览器解析并显示“清华大学院系设置”文件index.html中的内容
    2、HTTP协议
      Internet的基本协议是TCP/IP协议,目前广泛使用的FTP、HTTP协议都是基于TCP/IP的,HTTP是Web应用使用最主要的协议。

      HTTP基于请求响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户端信息和内容的类似MIME的消息结果。服务器则返回一个状态行作为响应,内容包括消息协议的版本、成功或失败编码加上包含服务器信息、实体元信息以及可能的实体内容。

      HTTP协议是无状态的,也就是说同一用户在第二次访问同一台服务器上的页面时,服务器的响应与第一次被访问时相同。

      HTTP是无连接的,虽然HTTP是基于TCP的,但是HTTP本身是无连接的。客户端和服务器的链接是基于一种请求应答模式。及客户端和服务器建立一个链接,客户端提交一个请求,服务器端收到请求后返回一个响应,然后二者就断开链接。

    3、请求/响应过程


    上面这个模型比较简单,它描述的是HTTP1.0中的请求/响应过程。我们分析一下,整个过程中花费的时间包括:建立TCP三次握手的时间、客户端发送请求的时间、服务器返回响应的时间。

    这样一次成功的请求/响应就要花费2*RTT+传输文档的时间,另外还要考虑客户端和服务器为每一次建立TCP连接分配缓存和变量的开销,如果每次请求都这样,显然开销太大。特别是当有很多用户访问同一台服务器时,这种非持续的连接会使得服务器负担很重。HTTP1.1通过引入持续连接较好的解决了这个问题。



      所谓持续连接就是服务器在发送一次响应后不是立即断开TCP连接,而是在一段时间内仍然保持连接,使同一用户和该服务器可以继续在这条连接上传送后续的请求和响应。持续连接有两种工作方式:非流水线式和流水线式。

    非流水线式:客户在收到一个响应后才能发送下一个请求
    流水线式:客户在收到HTTP的响应报文之前能够接着发送新的请求报文。于是一个接一个的请求到达服务器后,服务器就可以连续的返回响应报文。
    4、代理服务器
      代理服务器是一种网络实体,它又称为万维网高速缓存。代理服务器把最近的一些请求和响应暂存在本地磁盘中。若一个网络中使用了代理服务器,该网络中的主机浏览器向因特网的服务器请求服务时,就先和代理服务器建立TCP连接,并向代理服务器发出HTTP请求报文。若代理服务器中已经存放了所请求的对象,则把这个对象放入HTTP响应报文中返回给客户浏览器;否则,代理服务器就代表客户浏览器与因特网上的源点服务器建立TCP连接,并发送HTTP请求报文。源点服务器把所请求的对象放在HTTP响应报文中返回给代理服务器。代理服务器收到这个对象后,先复制在自己的本地存储器中,然后再把这个对象放在HTTP响应报文中,通过已经建立的TCP连接返回给客户浏览器。

    5、报文
    HTTP有两类报文:

    请求报文:从客户向服务器发送请求报文。
    响应报文:从服务器到客户的回答。
    由于HTTP是面向文本的,因此在报文中的每一个字段都是一些ASCII码串,因而各个字段的长度都是不确定的。HTTP请求报文和响应报文都是由三个部分组成。这两种报文格式的区别就是开始行不同。

    开始行:用于区分是请求报文还是响应报文。在请求报文中的开始行叫做请求行,而在响应报文中的开始行叫做状态行。
    首部行:用来说明浏览器、服务器或报文主体的一些信息。首部可以有好几行,但也可以不使用。
    实体主体:在请求报文中一般都不用这个字段,而在响应报文中也可能没有这个字段。
      

    请求:

    GET/sample.jspHTTP/1.1
    Accept:image/gif.image/jpeg,/
    Accept-Language:zh-cn
    Connection:Keep-Alive
    Host:localhost
    User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
    Accept-Encoding:gzip,deflate

    上面是一个请求的例子。

    6、请求方法和状态码
    请求方法  
    客户端和服务器之间交互会使用不同的方法。下表列出了HTTP请求报文的几种方法:

    方法(操作)        意义
    OPTIOON        请求一些选项的信息
    GET        请求读取由URL所标记的信息
    HEAD        请求读取由URL所标记的信息的首部
    POST        向服务器提交信息
    PUT        在指明的URL下存储一个文档
    DELETE        删除指明的URL所标记的资源
    TRACE        用来进行环回测试的请求报文
    CONNECT        用于代理服务器
    状态码
    状态码都是三位数字的:

    1xx 表示通知信息,如请求收到或正在进行处理
    2xx 表示成功,如接受或知道了
    3xx 表示重定向,如要完成请求还必须采取进一步的行动
    4xx 表示客户的差错,如请求中有错误的语法或不能完成
    5xx 表示服务器的差错,如服务器失效无法完成请求

  • TA的每日心情
    慵懒
    2020-8-28 15:16
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-10-28 13:11 | 只看该作者
    Internet的基本协议是TCP/IP协议
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-6-20 07:44 , Processed in 0.078125 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表