首页 > 编程知识 正文

web服务器登录(服务器运行原理)

时间:2023-05-05 19:23:52 阅读:93213 作者:2466

哈罗,你好。

最近,据很多同学说,在前端面试的过程中,有特别容易被提及的知识点。 也就是说,是服务器的问题。

因为不喜欢一些同学的回答,和自己心目中的报价失去了交往。

所以,今天在这里,sdlm给大家讲讲服务器的事。 我希望对大家有帮助。

01

网络服务器

web服务器一般是指网站服务器,是驻留在互联网上的计算机程序,主要作用是为浏览器等web客户端提供文档信息。 也可以永久保存浏览器的文档信息。 目前市场上主流的web服务器有以下几种。

1、Apache服务器

照片是Apache服务器的标志

2、Tomcat服务器

图为Tomcat服务器的徽标

3、Node.js服务器

图为Node.js服务器的徽标

上面是现在主流的几个服务器。 当然,作为后发秀,Node.js是最适合前端工程师使用的服务器。 同样,这也是大家面试中经常被问到的一点。

02

服务器的结构

图为服务器的工作原理

上图是web服务器的工作原理图。 可能有同学很惊讶,这张图和前面说的HTTP请求图一样啊

其实,在软件开发和使用的过程中,web服务器和HTTP服务器是一样的。 不同的web服务器有细节上的差异,但基础原理相同。 下面,让我们根据上图逐一分析。

Step1)用户在地址栏中输入网址,点击回车键;

Step2)浏览器与服务器建立TCP连接;

Step3)浏览器将用户的事件以HTTP协议所要求的形式打包成数据包。 该过程的本质是在发送缓冲器中有该HTTP协议形式的字节流。

Step4)浏览器确认服务器是可写入的,将该分组推入互联网,最终将该分组交给服务器端;

Step5)服务器接收到这个分组后,用相同的格式进行分析,取得客户机的意图;

Step6)获取客户机意图后,服务器进行分类处理,提供某个文件,处理相关数据;

步骤7 )将处理结果加载到缓冲区、文档或其他内容中;

步骤8 :服务器以HTTP协议格式打包步骤7中的数据。

Step9)服务器确认可以进行端到端的写入,并将数据包推送到互联网上。 该数据包经过网络处理,最终返回客户机。

Step10 )客户端在接收到数据包后,以HTTP协议形式对数据包进行解压缩,并对数据进行分析;

Step11 :客户机处理相关数据,显示在页面上。

以上11个步骤是web服务器最基本的工作原理。 通过整理,你会发现这是一个简单的网络通信过程。 也就是简单地发送数据、接收数据、处理数据的过程。 更高级的web服务只不过是对上述三个基本内容进行更详细的分类。

03

静态文件的结构

对于web服务,除了一些数据功能之外,还有一个主要功能是提供静态文件。

图实现了web服务器的静态文件服务

上图以GET请求方式为模板

的流程图,通过对图的观察,我们不难发现,整个静态文件处理过程与之前的动态数据处理基本保持一致,变化之处就在于红色&蓝色标注的位置。

Step1:当用户点击一个网页链接或者需要加载一些静态资源时(比如css文件、JPEG图片等)产生;

Step2:服务程序解包之后,优先判断其请求方式,确定是GET请求,并且是对该服务器上某一特定资源的请求;

Step3:服务器需要先确定路径是否存在,如果路径真实存在,在确定文件是否可以获取;

Step4:确定了该路径合法、可获取之后,服务程序将根据该文件类型的不同,进行不同的装载过程,记录其类型作为Step8(上文有描述)中HTTP协议中对应的返回类型,并且加入响应头。

图为一个简易静态资源传输过程

04

web服务器数据提交原理

如果只是网页浏览的功能,是无法真正实现网站功能的。要想更好实现网站功能,那么客户端与服务端之间,进行数据交互必不可少。什么叫做数据交互呢?比如我们注册/登录、资源上传、远程指令等等,都可以叫做客户端与服务器的数据交互。

图为客户端与服务器数据交互示意

通过观察上图,我们可以发现,用户提交数据时,往往是通过单击一个功能按钮来实现。那么单击这个功能按钮之后,又做了什么呢?

首先,程序会将用户需要提交的数据以POST格式要求进行写入,并填入服务端需要提交到服务端的可执行程序路径;

其次,服务端将参数与CGI进行绑定,复制进程,用管道传递参数、接收结果;

最后,子进程执行CGI,接收父进程传来的参数,运算并返回结果,父进程将结果装入静态模板文件,放入缓冲区。

05

动态技术

通过上述内容的基本描述,我们可以得出一个结论,就是web服务器都是以短连接为主的,并且,获取到的数据在到达客户端的时候,一定是静态不变的。这好像与我们所说的动态数据又有一些出入,这是因为所谓的动态实际上指的是这两种情况——

情况一:

用户POST提交数据到某个程序,程序根据该数据作为运行参数,得出的结果装入静态的模板页中,返回该静态页。但是从用户的角度来看,同样一个页面,完成了一个操作后页面数据不一样,就会认为这是动态页面。

情况二:

用户GET请求一个JavaScript文件,服务端不做任何处理,直接返回该文件,由负责解析该文件的浏览器负责执行,在本地刷新页面。

用户POST请求提交数据到服务端,服务端根据提交的数据返回静态文件,浏览器接收执行。


德云IT学院

因为专注,所以专业!

德云致力于为互联网行业提供人才

打通了企业招聘和人才就业的双向渠道

对标一线互联网大厂岗位需求

培养高端IT技能紧缺型人才

是学员和企业信赖的IT职业教育机构

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。