zoukankan      html  css  js  c++  java
  • 一.web服务机制

    web服务机制

    这里写图片描述

    我们先跟着**(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封包 ⇒ 发送数据
    高级的服务器无非就是将这三个部分更加细致的设计了。

    一.通信协议

    1.HTTP/HTTPS 端口号80 / 443

    HTTPS就是在tcp层上增加一个ssl/tls层

    2.HTTP请求响应模型

    3.解析HTTP报文:请求行,请求头部,请求体,响应行,响应头部,响应体

    二.套接字通信

    socket是位于应用层和传输层之间的中间抽象层,应用层通过调用这些接口来发送和接收数据

    2.1单播通信:一对一

    2.2组播通信:一对多

    组播通信主要在于维护主机与路由器之前的关系,负责组成员的加入和退出等。

    任意一端向路由器,交换机发送消息,由路由器来转发消息到每个节点。

    具有步骤:指定组播地址和端口,加入组播组,所有节点都在一个组,每个节点都有发送和接收组内成员信息的功能。

    2.3广播通信

    广播通信在于向所有连接路由器的主机发送信息,而不再关注你是否想要,不用维护组内关系。

    三.服务器模型

    1.单线程阻塞io:只有一个线程处理请求,阻塞io,服务器在读写数据时是阻塞的。

    2.多线程阻塞io:支持并发响应,处理能力得到提高,但是对服务器资源消耗大,线程上下文切换成本高。

    3.单线程非阻塞io:在调用读写接口后立即返回,不会阻塞

    4.多线程非阻塞io:充分利用多核cpu,处理能力得到很大提高。

    四.Apache与Tomcat

    Apache与Tomcat都是Apache开源组织开发的用于处理HTTP服务的项目,两者都是免费的,都可以做为独立的Web服务器运行。Apache是Web服务器而Tomcat是Java应用服务器。

    Apache服务器 只处理 静态HTML;tomcat服务器 静态HTML 动态 JSP Servlet 都能处理。
    一般是把 Apache服务器与tomcat服务器 搭配在一起用。 Apache服务器负责处理所有 静态的页面/图片等信息。Tomcat只处理动态的部分。

    Apache:是C语言实现的,专门用来提供HTTP服务。

    特性:简单、速度快、性能稳定、可配置(代理)

    1、主要用于解析静态文本,并发性能高,侧重于HTTP服务;

    2、支持静态页(HTML),不支持动态请求如:CGI、Servlet/JSP、PHP、ASP等;

    3、具有很强的可扩展性,可以通过插件支持PHP,还可以单向Apache连接Tomcat实现连通;

    4、Apache是世界使用排名第一的Web服务器。

    Tomcat:是Java开发的一个符合JavaEE的Servlet规范的JSP服务器(Servlet容器),是 Apache 的扩展。

    特性:免费的Java应用服务器

    1、主要用于解析JSP/Servlet,侧重于Servlet引擎;

    2、支持静态页,但效率没有Apache高;支持Servlet、JSP请求;

    3、Tomcat本身也内置了一个HTTP服务器用于支持静态内容,可以通过Tomcat的配置管理工具实现与Apache整合。

    Apache + Tomcat:

    两者整合后优点:如果请求是静态网页则由Apache处理,并将结果返回;如果是动态请求,Apache会将解析工作转发给Tomcat处理,Tomcat处理后将结果通过Apache返回。这样可以达到分工合作,实现负载远衡,提高系统的性能。

    apache是web服务器,tomcat是应用(java)服务器,它只是一个servlet容器,可以认为是apache的扩展,但是可以独立于apache运行。

    换句话说,apache是一辆卡车,上面可以装一些东西如html等。但是不能装水,要装水必须要有容器(桶),而这个桶也可以不放在卡车上。


    参考:https://blog.csdn.net/qq_36359022/article/details/81666221
            http://m.blog.csdn.net/uniquewonderq/article/details/46428999

  • 相关阅读:
    jQuery中deferred对象的使用(一)
    css中calc()的使用
    网络协议学习笔记1
    iOS: 类目里动态关联对象
    [转载] 2016 app 上线流程
    iOS:集成环信3.0循环掉坑。(学习笔记一)
    iOS 实现条件选择框
    iOS : 定义项目中接口文档
    iOS:消除项目中的警告⚠️
    iOS 一个简洁的条件筛选界面
  • 原文地址:https://www.cnblogs.com/xwzp/p/10437998.html
Copyright © 2011-2022 走看看