关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

网站服务器工作原理详解

发布时间:2019-04-08 10:32:45

    网站服务器的概念相当广泛。我们经常把web服务器称为网站服务器,它是建立在互联网上并驻留在某台计算机上的程序。web服务器可以向web客户端(如浏览器)提供文档或其他服务,任何根据Http协议设计的网络应用程序都可以是web客户端。


    Web服务器和Http服务器可以说是一回事。如果非要细分的话,当然Http server是基于Http协议提供文档浏览的服务器,更多的是提供静态文件。web服务器覆盖Http服务器(这个可以用百度百科来做)。web服务器不仅可以存储信息,还可以根据用户通过web浏览器提供的信息运行脚本和程序。


    Web服务器大约等于Http服务器+其他服务。


    目前有很多知名的web服务器,其中最主流的是Apache、nginx和IIS。


    每个大web服务器的实现细节都不一样,都是针对某一种情况而设计开发的。但是,它们的web服务器的基本工作原理是相同的,这就是这篇基础文章所解释的。


    一、web服务器工作原理说明


    首先,我们暂时不考虑Http协议的各种请求方式。让我们按照* *(web服务器01工作原理的一般描述)的示意图,走一遍一个web服务的工作流程。我们假设浏览器是客户端。


    (1)用户进行一个操作,可以是填写网址和回车、点击链接、点击按键等。,然后浏览器获取该事件。


    (2)浏览器与对等服务程序建立tcp连接。


    (3)浏览器将用户的事件按照Http协议格式* *封装成一个数据包,本质上是一个缓冲区中带有Http协议格式的字节流进行发送。


    (4)浏览器确认对等体可写,将数据包推送到互联网。数据包最终通过网络提交给对等服务程序。


    (5)服务器程序得到数据包后,以Http协议格式解包,然后分析客户端的意图。


    (6)了解客户意图后,进行分类,或提供某种文件或流程数据。


    (7)将结果加载到一个缓冲区,或者一个HtmL文件,或者一个图像等。


    (8)按照Http协议格式封装(7)中的数据。


    (9)服务器确认对等体可写,将数据包推送至互联网,最终通过网络提交给客户端。


    (10)浏览器拿到包后,以Http协议格式解包,然后解析数据,假设是HtmL文件。


    (11)浏览器在页面上显示HtmL文件。


    以上是web服务器的工作原理。其实不难发现,这只是一个简单的网络通讯。我们应该确信,作为服务器,基本工作不超过三项。


    1.接收数据; 2.发送数据; 3.数据处理


    web服务器的本质是接收数据,HTTP解析逻辑处理HTTP数据包发送数据。


    高级服务器无非是对这三个部分进行更细致的设计。


    二。web服务器提供静态文件的工作原理说明


    web服务器的主要功能是提供静态文件。日常上网浏览大部分是网页浏览,只有少数时候会有一些数据提交操作。因此,我们将结合前面的图示重点介绍get请求下web服务器的工作原理。


    其他工艺基本不变,重点是红蓝部分。


    当用户点击网页链接或者浏览器加载一些资源(css,jpg …)时生成。


    服务程序解包后,确定是get请求,是对服务器上资源的请求。首先,服务程序将确认路径是否存在,然后确定是否可以获得路径的文件。


    如果请求的路径错误,或者用户无法获得资源,则返回错误提示页面。很多服务器的错误页面只有404。对错误进行分类并返回相应的错误码页更专业。


    如果路径合法,可以获取文件,服务程序会根据文件类型执行不同的加载过程,将其类型记录为(8)中Http协议对应的返回类型,并添加响应头。


    假设你点击一个页面链接为例,浏览器首先请求HtmL文件,然后通过同样的流程依次请求HtmL文件中包含的资源文件路径。


    三。web服务器数据提交工作原理图


    仅仅浏览网页并不能满足所有人的需求。客户端和服务器之间应该有数据交互。


    即使是单方面的资源请求,依然是网络的主力。


    我们要清楚的知道数据提交对于用户的作用。


    (1)资源上传;(2)登录验证;(3) Api接口调用;(4)远程指令等。


    数据提交在用户的可操作性上有了质的飞跃,将Http短连接获取静态文件的方式提升到了动态交互的层面。这个属性也催化了各种编程语言和框架。比如pHp,Javaweb。


    如果你关注目前主流的大型服务器,你会发现最先进最牛逼的东西其实都是由最基础的东西搭建而成的。那么我们也可以顺便学习一下最古老的动态技术cgi。


    其他工艺基本不变,重点是红蓝部分。


    用户提交数据,假设用户点击一个按钮提交填写好的信息。在(3)中,将以post格式编写,并填写提交给服务器的可执行程序的路径。


    服务器将参数绑定到cgi,复制流程,并通过管道传输参数和接收结果。


    子进程执行cgi,从(6)父进程接收参数,操作完成后返回结果。


    最后,父进程将结果加载到静态模板文件中,并将其放入缓冲区。


    四。动态技术


    我们要明白,web服务器主要是短连接,获取的数据在到达浏览器的那一刻必须是静态的、不可改变的。那么所谓的动态现实是指两种情况。


    服务器生成:


    (1)用户通过post向一个程序提交数据,程序根据数据作为参数运行,得到结果并加载到静态模板页面,返回静态页面。但是对于用户来说,同一个页面在一次操作之后,数据是不一样的。好了,这就是动态页面。(cgi原理)


    (2)php的原理是用户得到一个带php后缀的文件,服务器先执行pHp后缀文件中的pHp代码,在代码所在的位置填充结果,然后返回。当然也可以提交数据参与操作然后返回。


    客户生成:


    (1)用户get请求一个Javascript文件,服务器不做任何操作返回静态文件。浏览器接收Js文件,在本地执行它并更新页面。


    (2)用户post向服务器提交数据,服务器根据提交的数据指令返回静态文件,浏览器收到后执行并更新。



/template/Home/Zkeys/PC/Static