• HTTP工作原理


    

    HTTP工作过程

    HTTP协议定义Webclient怎样从Webserver请求Web页面,以及server怎样把Web页面传送给client。HTTP协议採用了请求/响应模型。

    client向server发送一个请求报文。请求报文包括请求的方法、URL、协议版本号、请求头部和请求数据。

    server以一个状态行作为响应。响应的内容包括协议的版本号、成功或者错误代码、server信息、响应头部和响应数据。下表明了这样的请求/响应模型。

     

    HTTP工作原理

     

    下面是HTTP请求/响应的步骤:

    1)client连接到Webserver

    一个HTTPclient。一般是浏览器,与Webserver的HTTPport(默觉得80)建立一个TCP套接字连接。比如,http://www.oakcms.cn

    2)发送HTTP请求

    通过TCP套接字,client向Webserver发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。

    3)server接受请求并返回HTTP响应

    Webserver解析请求,定位请求资源。

    server将资源复本写到TCP套接字。由client读取。

    一个响应由状态行、响应头部、空行和响应数据4部分组成。

    4)释放连接TCP连接

    Webserver主动关闭TCP套接字,释放TCP连接。client被动关闭TCP套接字,释放TCP连接。

    5)client浏览器解析HTML内容

    client浏览器首先解析状态行,查看表明请求是否成功的状态代码。

    然后解析每个响应头,响应头告知下面为若干字节的HTML文档和文档的字符集。client浏览器读取响应数据HTML,依据HTML的语法对其进行格式化,并在浏览器窗体中显示。

    HTTP协议的无状态性

    HTTP协议是无状态的(stateless)。

    也就是说,同一个client第二次訪问同一个server上的页面时,server无法知道这个client以前訪问过,server也无法分辨不同的client。

    HTTP的无状态特性简化了server的设计,使server更easy支持大量并发的HTTP请求。

    持久连接

    HTTP1.0使用的是非持久连接,client必须为每个待请求的对象建立并维护一个新的连接。由于同一个页面可能存在多个对象,所以非持久连接可能使一个页面的下载变得十分缓慢。并且这样的短连接添加了网络传输的负担。HTTP1.1引入了持久连接,同意在同一个连接中存在多次数据请求和响应。即在持久连接情况下,server在发送完响应后并不关闭TCP连接,而client它可以继续通过此连接请求其他对象。

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    glusterfs 术语
    python 随便
    ubuntu glusterfs 配置调试
    源码生成deb包
    常用apt cli
    unexpected error ConnectionError object has no attribute
    [MFC]透明图展示
    菜鸟的mongoDB学习---(六)MongoDB 索引
    Keyboard的显示与隐藏
    HDU 4268 Alice and Bob(贪心+Multiset的应用)
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4886151.html
Copyright © 2020-2023  润新知