请使用支持JavaScript的浏览器! 工作原理电子发烧友网_蚂蚁淘,【正品极速】生物医学科研用品轻松购|ebiomall -蚂蚁淘商城
当前位置: > 首页 > 技术文章 >
工作原理电子发烧友网
来自 : 蚂蚁淘

概述 Web服务器概念较为广泛 我们最常说的Web服务器指的是网站服务器 它是建立在Internet之上并且驻留在某种计算机上的程序。Web服务器可以向Web客户端(如浏览器)提供文档或其他服务 只要是遵循HTTP协议而设计的网络应用程序都可以是Web客户端。 Web服务器和HTTP服务器可以说是同一个东西 当然非得细分的话 HTTP服务器是建立在HTTP协议之上的提供文档浏览的服务器 更多的是提供静态的文件。而Web服务器涵盖了HTTP服务器(这一点可以自行百度百科), Web服务器不仅能够存储信息 还能在用户通过Web浏览器提供的信息的基础上运行脚本和程序。 Web服务器 约等于 HTTP服务器 其他服务 目前所熟知的Web服务器有很多 其最主流的是 Apache, Nginx, IIS 各大Web服务器的实现细节都不同 是为了某种情形而设计开发的。但是它们的基础工作原理是相同的 这也是本次基础篇所讲解的内容。 一、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封包 ⇒ 发送数据 高级的服务器无非就是将这三个部分更加细致的设计了。 二、Web服务器之提供静态文件工作原理图解 Web服务器最主要的功能是提供静态的文件。日常的上网浏览大多是网页浏览 少数时候才会有一些数据的提交操作。因此 我们结合上一张图示来重点讲解在GET请求下的Web服务器工作原理。 其他流程基本不变 着重在于红色与蓝色部分。 (1) 当用户点击一个网页链接或浏览器加载一些资源(css,jpg …)时产生。 (6) 服务程序解包后 确定其为GET请求 并且是对该服务器上的某一资源的请求。首先服务程序会去确认该路径是否存在 再确定该路径的文件是否可以获取。 (7-1) 如果请求的路径有误 或者该资源不能被用户获取 则返回错误提示页面。很多服务器的错误页面只有404 更专业的应该是将错误分类并返回对应的错误代码页面。 (7-2) 如果该路径合法且文件可以被获取 那么服务程序将根据该文件类型进行不同的装载过程 记录其类型作为(8)中HTTP协议中对应的返回类型 并加入响应头。 假设以点击一个页面链接为例 浏览器首先将HTML文件请求过来 再以同样的流程对HTML文件中包含的资源文件路径进行依次请求。 三、Web服务器之数据提交工作原理图解 仅仅只是网页的浏览并不能满足所有人的需求 客户端与服务器应当是有数据交互的。 即使单方面的资源请求任然是网络的主力军。 我们应该清楚的知道 数据提交对于用户来说有什么作用。 (1) 资源上传 (2) 登陆验证 (3) API接口调用 (4) 远程指令等 数据提交使得用户的操作性有了质的飞跃 它使得HTTP短连接获取静态文件的方式提升到了动态交互的层次上。该性质也催化出各式各样的编程语言、框架。例如PHP JavaWeb。 如果你留意目前主流的那些大型服务器 你会发现再高级再牛逼的东西实际是也是最基础的东西建造的。那么我们还可以顺便学习一下最古老的动态技术CGI 其他流程基本不变 着重在于红色与蓝色部分。 (1) 用户提交数据 假设用户点击一个按键提交填好的信息。在(3)中将以POST格式写入 并填入提交至服务端的可执行程序的路径。 (6) 服务端将参数与该CGI绑定 复制进程 用管道传递参数和接收结果 (7) 子进程执行CGI 接收(6)父进程传来的参数 运算完成返回结果。 最后父进程将结果装入静态模板文件 放入缓冲区 四、动态技术 我们得明白 Web服务器是以短连接为主 并且获取的数据到达浏览器的那一刻一定是静态的不变的。那么所谓动态实际是指两种情况 服务端产生 (1) 用户POST提交数据到某个程序 程序根据该数据作为参数运行 得出结果并装入静态的模板页面中 返回该静态页面。但对于用户来说 同一个页面 做了一个操作后数据不一样了。好了 这就是动态页面。(CGI原理) (2) PHP的原理是 用户GET请求一个php后缀的文件 服务器先执行该php后缀文件中的PHP代码 将结果填入代码的位置 再返回。当然也可以提交数据参与运算再返回。客户端产生 (1) 用户GET请求一个JavaScript文件 服务端不做任何运算返回该静态文件。浏览器收到该JS文件 在本地执行并更新页面。 (2) 用户POST提交数据到服务端 服务端根据该提交的数据指令返回静态文件 浏览器收到后执行并更新。 抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

免责声明 本文仅代表作者个人观点,与本网无关。其创作性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不做任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
版权声明 未经蚂蚁淘授权不得转载、摘编或利用其他方式使用上述作品。已经经本网授权使用作品的,应该授权范围内使用,并注明“来源:蚂蚁淘”。违反上述声明者,本网将追究其相关法律责任。
相关文章