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

  • 相关阅读:
    UVA 1513
    《ArcGIS Runtime SDK for Android开发笔记》——问题集:.geodatabase创建,创建时内容缺失问题总结
    《ArcGIS Runtime SDK for Android开发笔记》——问题集:使用TextSymbol做标注显示乱码
    《ArcGIS Runtime SDK for Android开发笔记》——(7)、示例代码arcgis-runtime-samples-android的使用
    《ArcGIS Runtime SDK for Android开发笔记》——(6)、基于Android Studio的ArcGIS Android工程结构解析
    《ArcGIS Runtime SDK for Android开发笔记》——(5)、基于Android Studio构建ArcGIS Android开发环境(离线部署)
    《ArcGIS Runtime SDK for Android开发笔记》——(4)、基于Android Studio构建ArcGIS Android开发环境
    《ArcGIS Runtime SDK for Android开发笔记》——(3)、ArcGIS Runtime SDK概述
    《ArcGIS Runtime SDK for Android开发笔记》——(2)、Android Studio基本配置与使用
    《ArcGIS Runtime SDK for Android开发笔记》——(1)、Android Studio下载与安装
  • 原文地址:https://www.cnblogs.com/xwzp/p/10437998.html
Copyright © 2011-2022 走看看