zoukankan      html  css  js  c++  java
  • Web服务器的工作原理

    Web服务器的工作原理

    1.Tomcat Server处理一个HTTP请求的过程

    1、用户点击网页内容,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得。
    2、Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的回应。
    3、Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host。
    4、Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机),
    名为localhost的Host获得请求/test/index.jsp,匹配它所拥有的所有的Context。
    Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为“ ”的Context去处理)。
    5、path=“/test”的Context获得请求/index.jsp,在它的mapping table中寻找出对应的Servlet。
    Context匹配到URL PATTERN为*.jsp的Servlet,对应于JspServlet类。
    6、构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet()或doPost().执行业务逻辑、
    数据存储等程序。
    7、Context把执行完之后的HttpServletResponse对象返回给Host。
    8、Host把HttpServletResponse对象返回给Engine。
    9、Engine把HttpServletResponse对象返回Connector。
    10、Connector把HttpServletResponse对象返回给客户Browser
    

    2.WEB服务器

    web服务器是可以向发出请求的浏览器提供文档的程序

    它是一种被动程序,只有当Internet上运行在其他电脑上的浏览器发出请求时,

    服务器才会响应,WEB服务器主要功能是提供网上信息浏览服务

    常用的web服务器有两个 微软的信息服务器IIS,Apache的Tomcat

    3.Web服务器工作原理图解

    ---------------------

    首先我们暂时不考虑HTTP协议的各种请求方式,我们先跟着(Web服务器工作原理总体描述01)这张图,将一次Web服务的工作流程过一遍,我们假设以浏览器作为客户端
    (1) 用户做出了一个操作,可以是填写网址敲回车,可以是点击链接,可以是点击按键等,接着浏览器获取了该事件。
    (2) 浏览器与对端服务程序建立TCP连接。
    (3) 浏览器将用户的事件按照HTTP协议格式
    打包成一个数据包,其实质就是在待发送缓冲区中的一段有着HTTP协议格式的字节流。
    (4) 浏览器确认对端可写,并将该数据包推入Internet,该包经过网络最终递交到对端服务程序。
    (5) 服务端程序拿到该数据包后,同样以HTTP协议格式解包,然后解析客户端的意图。
    (6) 得知客户端意图后,进行分类处理,或是提供某种文件、或是处理数据。
    (7) 将结果装入缓冲区,或是HTML文件、或是一张图片等。
    (8) 按照HTTP协议格式将(7)中的数据打包
    (9) 服务器确认对端可写,并将该数据包推入Internet,该包经过网络最终递交到客户端。
    (10) 浏览器拿到包后,以HTTP协议格式解包,然后解析数据,假设是HTML文件。
    (11) 浏览器将HTML文件展示在页面
    以上为Web服务器工作基本原理。其实不难发现,这仅仅只是一个简单的网络通信。我们应该深信,作为一个服务器,其根本的工作无非有三个

    接收数据 2. 发送数据 3. 数据处理
    而Web服务器的本质就是 接收数据 ⇒ HTTP解析 ⇒ 逻辑处理 ⇒ HTTP封包 ⇒ 发送数据
    高级的服务器无非就是将这三个部分更加细致的设计了。

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利
  • 相关阅读:
    位运算的简单简要
    Date()函数详细参数
    Android画图之Matrix(二)
    图像渐变特效的简单介绍
    Android MotionEvent中getX()和getRawX()的区别
    Timer计时器
    android中raw文件夹和asset文件夹的共同点和区别
    Selector、shape详解
    select语句后以for update结尾
    Openfire(原来的Wildfire) 在 Web 2.0 中的作用
  • 原文地址:https://www.cnblogs.com/hhddd-1024/p/15216976.html
Copyright © 2011-2022 走看看